1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 19:26:13 +02:00
metamask-extension/patches/typescript+4.4.4.patch

251 lines
14 KiB
Diff
Raw Normal View History

diff --git a/node_modules/typescript/lib/typescript.js b/node_modules/typescript/lib/typescript.js
index 323de6f..367063a 100644
--- a/node_modules/typescript/lib/typescript.js
+++ b/node_modules/typescript/lib/typescript.js
@@ -24,11 +24,58 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
return to.concat(ar || Array.prototype.slice.call(from));
};
var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
+ __assign = function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p)) {
+ /**
+ * In the original version of this package, this was:
+ *
+ * t[p] = s[p]
+ *
+ * Unfortunately LavaMoat trips up on this, so we have to change
+ * it.
+ *
+ * Internally LavaMoat uses `lockdown` (part of SES, which is
+ * part of Endo) to freeze modifications to "intrinsics" — core
+ * things like `Object.prototype`, `Function.prototype`, etc.
+ * This will cause code which is responsible for said
+ * modifications to fail at runtime, because it makes the
+ * properties of these intrinsics non-writable.
+ *
+ * The reason we have to change *this* code is that later on,
+ * this `__assign` function is used to merge two objects, and
+ * one of those objects contains a `constructor` property. As we
+ * know, `constructor` is a special property, as it's a property
+ * on `Object.prototype` that stores the constructor used to
+ * create that object. But when used in this context, there is
+ * nothing inherently special about it it's just a property on
+ * an object we're setting. Unfortunately, that's not how it's
+ * being treated. Because `lockdown` freezes `Object.prototype`,
+ * `Object.prototype.constructor` is non-writable, and due to a
+ * "mistake" in the ES5 spec [1], that means `constructor` on
+ * *any* object is non-writable too. So an error is thrown when
+ * this code is executed.
+ *
+ * There is a way to get around this, which is to configure
+ * `lockdown` with the option `overrideTaming: 'severe'`.
+ * The mechanics of this option, as well as more information
+ * about the "mistake" this option solves, are explained here
+ * [2]. Unfortunately, we cannot enable this option because
+ * LavaMoat is the one running `lockdown` here [3]. So to work
+ * around this, we use `Object.defineProperty` to define the
+ * property we want. As this does not use property assignment
+ * (`object[key] = value`) but rather defines the property more
+ * directly, this bypasses the "override mistake".
+ *
+ * [1]: https://web.archive.org/web/20141230041441/http://wiki.ecmascript.org/doku.php?id=strawman:fixing_override_mistake
+ * [2]: https://github.com/endojs/endo/blob/864f086f87e1e7ef78a401a7550ff0aeb664bba0/packages/ses/src/enable-property-overrides.js#L28
+ * [3]: https://github.com/LavaMoat/LavaMoat/blob/7c15bf8ba34ba1a9ceb3ffe591b1b2bfb084bead/packages/core/src/kernelTemplate.js#L32-L43
+ */
+ Object.defineProperty(t, p, Object.getOwnPropertyDescriptor(s, p))
+ }
+ }
}
return t;
};
@@ -9820,87 +9867,94 @@ var ts;
}
ts.tokenIsIdentifierOrKeywordOrGreaterThan = tokenIsIdentifierOrKeywordOrGreaterThan;
/** @internal */
- ts.textToKeywordObj = (_a = {
- abstract: 126 /* AbstractKeyword */,
- any: 129 /* AnyKeyword */,
- as: 127 /* AsKeyword */,
- asserts: 128 /* AssertsKeyword */,
- bigint: 156 /* BigIntKeyword */,
- boolean: 132 /* BooleanKeyword */,
- break: 81 /* BreakKeyword */,
- case: 82 /* CaseKeyword */,
- catch: 83 /* CatchKeyword */,
- class: 84 /* ClassKeyword */,
- continue: 86 /* ContinueKeyword */,
- const: 85 /* ConstKeyword */
- },
- _a["" + "constructor"] = 133 /* ConstructorKeyword */,
- _a.debugger = 87 /* DebuggerKeyword */,
- _a.declare = 134 /* DeclareKeyword */,
- _a.default = 88 /* DefaultKeyword */,
- _a.delete = 89 /* DeleteKeyword */,
- _a.do = 90 /* DoKeyword */,
- _a.else = 91 /* ElseKeyword */,
- _a.enum = 92 /* EnumKeyword */,
- _a.export = 93 /* ExportKeyword */,
- _a.extends = 94 /* ExtendsKeyword */,
- _a.false = 95 /* FalseKeyword */,
- _a.finally = 96 /* FinallyKeyword */,
- _a.for = 97 /* ForKeyword */,
- _a.from = 154 /* FromKeyword */,
- _a.function = 98 /* FunctionKeyword */,
- _a.get = 135 /* GetKeyword */,
- _a.if = 99 /* IfKeyword */,
- _a.implements = 117 /* ImplementsKeyword */,
- _a.import = 100 /* ImportKeyword */,
- _a.in = 101 /* InKeyword */,
- _a.infer = 136 /* InferKeyword */,
- _a.instanceof = 102 /* InstanceOfKeyword */,
- _a.interface = 118 /* InterfaceKeyword */,
- _a.intrinsic = 137 /* IntrinsicKeyword */,
- _a.is = 138 /* IsKeyword */,
- _a.keyof = 139 /* KeyOfKeyword */,
- _a.let = 119 /* LetKeyword */,
- _a.module = 140 /* ModuleKeyword */,
- _a.namespace = 141 /* NamespaceKeyword */,
- _a.never = 142 /* NeverKeyword */,
- _a.new = 103 /* NewKeyword */,
- _a.null = 104 /* NullKeyword */,
- _a.number = 145 /* NumberKeyword */,
- _a.object = 146 /* ObjectKeyword */,
- _a.package = 120 /* PackageKeyword */,
- _a.private = 121 /* PrivateKeyword */,
- _a.protected = 122 /* ProtectedKeyword */,
- _a.public = 123 /* PublicKeyword */,
- _a.override = 157 /* OverrideKeyword */,
- _a.readonly = 143 /* ReadonlyKeyword */,
- _a.require = 144 /* RequireKeyword */,
- _a.global = 155 /* GlobalKeyword */,
- _a.return = 105 /* ReturnKeyword */,
- _a.set = 147 /* SetKeyword */,
- _a.static = 124 /* StaticKeyword */,
- _a.string = 148 /* StringKeyword */,
- _a.super = 106 /* SuperKeyword */,
- _a.switch = 107 /* SwitchKeyword */,
- _a.symbol = 149 /* SymbolKeyword */,
- _a.this = 108 /* ThisKeyword */,
- _a.throw = 109 /* ThrowKeyword */,
- _a.true = 110 /* TrueKeyword */,
- _a.try = 111 /* TryKeyword */,
- _a.type = 150 /* TypeKeyword */,
- _a.typeof = 112 /* TypeOfKeyword */,
- _a.undefined = 151 /* UndefinedKeyword */,
- _a.unique = 152 /* UniqueKeyword */,
- _a.unknown = 153 /* UnknownKeyword */,
- _a.var = 113 /* VarKeyword */,
- _a.void = 114 /* VoidKeyword */,
- _a.while = 115 /* WhileKeyword */,
- _a.with = 116 /* WithKeyword */,
- _a.yield = 125 /* YieldKeyword */,
- _a.async = 130 /* AsyncKeyword */,
- _a.await = 131 /* AwaitKeyword */,
- _a.of = 158 /* OfKeyword */,
- _a);
+ /**
+ * In the original version of this package, this object was built by
+ * initializing one object and then adding more properties to that object.
+ * This ends up throwing an error when this code is executed due to
+ * the same issue as explained at the top of this file: essentially,
+ * the `constructor` property of any object cannot be set due to the
+ * "override mistake". The fix for this is to just build one big object.
+ */
+ ts.textToKeywordObj = {
+ abstract: 126 /* AbstractKeyword */,
+ any: 129 /* AnyKeyword */,
+ as: 127 /* AsKeyword */,
+ asserts: 128 /* AssertsKeyword */,
+ bigint: 156 /* BigIntKeyword */,
+ boolean: 132 /* BooleanKeyword */,
+ break: 81 /* BreakKeyword */,
+ case: 82 /* CaseKeyword */,
+ catch: 83 /* CatchKeyword */,
+ class: 84 /* ClassKeyword */,
+ continue: 86 /* ContinueKeyword */,
+ const: 85 /* ConstKeyword */,
+ ["constructor"]: 133 /* ConstructorKeyword */,
+ debugger: 87 /* DebuggerKeyword */,
+ declare: 134 /* DeclareKeyword */,
+ default: 88 /* DefaultKeyword */,
+ delete: 89 /* DeleteKeyword */,
+ do: 90 /* DoKeyword */,
+ else: 91 /* ElseKeyword */,
+ enum: 92 /* EnumKeyword */,
+ export: 93 /* ExportKeyword */,
+ extends: 94 /* ExtendsKeyword */,
+ false: 95 /* FalseKeyword */,
+ finally: 96 /* FinallyKeyword */,
+ for: 97 /* ForKeyword */,
+ from: 154 /* FromKeyword */,
+ function: 98 /* FunctionKeyword */,
+ get: 135 /* GetKeyword */,
+ if: 99 /* IfKeyword */,
+ implements: 117 /* ImplementsKeyword */,
+ import: 100 /* ImportKeyword */,
+ in: 101 /* InKeyword */,
+ infer: 136 /* InferKeyword */,
+ instanceof: 102 /* InstanceOfKeyword */,
+ interface: 118 /* InterfaceKeyword */,
+ intrinsic: 137 /* IntrinsicKeyword */,
+ is: 138 /* IsKeyword */,
+ keyof: 139 /* KeyOfKeyword */,
+ let: 119 /* LetKeyword */,
+ module: 140 /* ModuleKeyword */,
+ namespace: 141 /* NamespaceKeyword */,
+ never: 142 /* NeverKeyword */,
+ new: 103 /* NewKeyword */,
+ null: 104 /* NullKeyword */,
+ number: 145 /* NumberKeyword */,
+ object: 146 /* ObjectKeyword */,
+ package: 120 /* PackageKeyword */,
+ private: 121 /* PrivateKeyword */,
+ protected: 122 /* ProtectedKeyword */,
+ public: 123 /* PublicKeyword */,
+ override: 157 /* OverrideKeyword */,
+ readonly: 143 /* ReadonlyKeyword */,
+ require: 144 /* RequireKeyword */,
+ global: 155 /* GlobalKeyword */,
+ return: 105 /* ReturnKeyword */,
+ set: 147 /* SetKeyword */,
+ static: 124 /* StaticKeyword */,
+ string: 148 /* StringKeyword */,
+ super: 106 /* SuperKeyword */,
+ switch: 107 /* SwitchKeyword */,
+ symbol: 149 /* SymbolKeyword */,
+ this: 108 /* ThisKeyword */,
+ throw: 109 /* ThrowKeyword */,
+ true: 110 /* TrueKeyword */,
+ try: 111 /* TryKeyword */,
+ type: 150 /* TypeKeyword */,
+ typeof: 112 /* TypeOfKeyword */,
+ undefined: 151 /* UndefinedKeyword */,
+ unique: 152 /* UniqueKeyword */,
+ unknown: 153 /* UnknownKeyword */,
+ var: 113 /* VarKeyword */,
+ void: 114 /* VoidKeyword */,
+ while: 115 /* WhileKeyword */,
+ with: 116 /* WithKeyword */,
+ yield: 125 /* YieldKeyword */,
+ async: 130 /* AsyncKeyword */,
+ await: 131 /* AwaitKeyword */,
+ of: 158 /* OfKeyword */
+ };
var textToKeyword = new ts.Map(ts.getEntries(ts.textToKeywordObj));
var textToToken = new ts.Map(ts.getEntries(__assign(__assign({}, ts.textToKeywordObj), { "{": 18 /* OpenBraceToken */, "}": 19 /* CloseBraceToken */, "(": 20 /* OpenParenToken */, ")": 21 /* CloseParenToken */, "[": 22 /* OpenBracketToken */, "]": 23 /* CloseBracketToken */, ".": 24 /* DotToken */, "...": 25 /* DotDotDotToken */, ";": 26 /* SemicolonToken */, ",": 27 /* CommaToken */, "<": 29 /* LessThanToken */, ">": 31 /* GreaterThanToken */, "<=": 32 /* LessThanEqualsToken */, ">=": 33 /* GreaterThanEqualsToken */, "==": 34 /* EqualsEqualsToken */, "!=": 35 /* ExclamationEqualsToken */, "===": 36 /* EqualsEqualsEqualsToken */, "!==": 37 /* ExclamationEqualsEqualsToken */, "=>": 38 /* EqualsGreaterThanToken */, "+": 39 /* PlusToken */, "-": 40 /* MinusToken */, "**": 42 /* AsteriskAsteriskToken */, "*": 41 /* AsteriskToken */, "/": 43 /* SlashToken */, "%": 44 /* PercentToken */, "++": 45 /* PlusPlusToken */, "--": 46 /* MinusMinusToken */, "<<": 47 /* LessThanLessThanToken */, "</": 30 /* LessThanSlashToken */, ">>": 48 /* GreaterThanGreaterThanToken */, ">>>": 49 /* GreaterThanGreaterThanGreaterThanToken */, "&": 50 /* AmpersandToken */, "|": 51 /* BarToken */, "^": 52 /* CaretToken */, "!": 53 /* ExclamationToken */, "~": 54 /* TildeToken */, "&&": 55 /* AmpersandAmpersandToken */, "||": 56 /* BarBarToken */, "?": 57 /* QuestionToken */, "??": 60 /* QuestionQuestionToken */, "?.": 28 /* QuestionDotToken */, ":": 58 /* ColonToken */, "=": 63 /* EqualsToken */, "+=": 64 /* PlusEqualsToken */, "-=": 65 /* MinusEqualsToken */, "*=": 66 /* AsteriskEqualsToken */, "**=": 67 /* AsteriskAsteriskEqualsToken */, "/=": 68 /* SlashEqualsToken */, "%=": 69 /* PercentEqualsToken */, "<<=": 70 /* LessThanLessThanEqualsToken */, ">>=": 71 /* GreaterThanGreaterThanEqualsToken */, ">>>=": 72 /* GreaterThanGreaterThanGreaterThanEqualsToken */, "&=": 73 /* AmpersandEqualsToken */, "|=": 74 /* BarEqualsToken */, "^=": 78 /* CaretEqualsToken */, "||=": 75 /* BarBarEqualsToken */, "&&=": 76 /* AmpersandAmpersandEqualsToken */, "??=": 77 /* QuestionQuestionEqualsToken */, "@": 59 /* AtToken */, "#": 62 /* HashToken */, "`": 61 /* BacktickToken */ })));
/*
@@ -159858,6 +159912,7 @@ var ts;
delete Object.prototype.__magic__;
}
catch (error) {
+ throw error;
// In IE8, Object.defineProperty only works on DOM objects.
// If we hit this code path, assume `window` exists.
//@ts-ignore