@metamask/snaps-execution-environments 10.4.1 → 11.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -2
- package/dist/common/BaseSnapExecutor.cjs +129 -189
- package/dist/common/BaseSnapExecutor.cjs.map +1 -1
- package/dist/common/BaseSnapExecutor.d.cts +0 -57
- package/dist/common/BaseSnapExecutor.d.cts.map +1 -1
- package/dist/common/BaseSnapExecutor.d.mts +0 -57
- package/dist/common/BaseSnapExecutor.d.mts.map +1 -1
- package/dist/common/BaseSnapExecutor.mjs +133 -193
- package/dist/common/BaseSnapExecutor.mjs.map +1 -1
- package/dist/common/commands.cjs +23 -29
- package/dist/common/commands.cjs.map +1 -1
- package/dist/common/commands.d.cts +12 -20
- package/dist/common/commands.d.cts.map +1 -1
- package/dist/common/commands.d.mts +12 -20
- package/dist/common/commands.d.mts.map +1 -1
- package/dist/common/commands.mjs +21 -27
- package/dist/common/commands.mjs.map +1 -1
- package/dist/common/validation.cjs +13 -25
- package/dist/common/validation.cjs.map +1 -1
- package/dist/common/validation.d.cts +69 -42
- package/dist/common/validation.d.cts.map +1 -1
- package/dist/common/validation.d.mts +69 -42
- package/dist/common/validation.d.mts.map +1 -1
- package/dist/common/validation.mjs +15 -27
- package/dist/common/validation.mjs.map +1 -1
- package/dist/webpack/iframe/bundle.js +1 -1
- package/dist/webpack/iframe/index.html +416 -269
- package/dist/webpack/node-process/bundle.js +1 -1
- package/dist/webpack/node-thread/bundle.js +1 -1
- package/dist/webpack/webview/index.html +417 -270
- package/package.json +10 -10
- package/dist/common/lockdown/lockdown.cjs +0 -29
- package/dist/common/lockdown/lockdown.cjs.map +0 -1
- package/dist/common/lockdown/lockdown.d.cts +0 -7
- package/dist/common/lockdown/lockdown.d.cts.map +0 -1
- package/dist/common/lockdown/lockdown.d.mts +0 -7
- package/dist/common/lockdown/lockdown.d.mts.map +0 -1
- package/dist/common/lockdown/lockdown.mjs +0 -25
- package/dist/common/lockdown/lockdown.mjs.map +0 -1
- package/dist/common/sortParams.cjs +0 -35
- package/dist/common/sortParams.cjs.map +0 -1
- package/dist/common/sortParams.d.cts +0 -17
- package/dist/common/sortParams.d.cts.map +0 -1
- package/dist/common/sortParams.d.mts +0 -17
- package/dist/common/sortParams.d.mts.map +0 -1
- package/dist/common/sortParams.mjs +0 -31
- package/dist/common/sortParams.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html><head><meta charset="utf-8"/><title>MetaMask Snaps Execution Environment</title><script>// ses@1.
|
|
1
|
+
<!doctype html><html><head><meta charset="utf-8"/><title>MetaMask Snaps Execution Environment</title><script>// ses@1.15.0
|
|
2
2
|
(functors => options => {
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
@@ -95,11 +95,11 @@
|
|
|
95
95
|
setPrototypeOf: cell("setPrototypeOf"),
|
|
96
96
|
values: cell("values"),
|
|
97
97
|
fromEntries: cell("fromEntries"),
|
|
98
|
-
hasOwn: cell("hasOwn"),
|
|
99
98
|
speciesSymbol: cell("speciesSymbol"),
|
|
100
99
|
toStringTagSymbol: cell("toStringTagSymbol"),
|
|
101
100
|
iteratorSymbol: cell("iteratorSymbol"),
|
|
102
101
|
matchAllSymbol: cell("matchAllSymbol"),
|
|
102
|
+
replaceSymbol: cell("replaceSymbol"),
|
|
103
103
|
unscopablesSymbol: cell("unscopablesSymbol"),
|
|
104
104
|
symbolKeyFor: cell("symbolKeyFor"),
|
|
105
105
|
symbolFor: cell("symbolFor"),
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
iteratorPrototype: cell("iteratorPrototype"),
|
|
132
132
|
typedArrayPrototype: cell("typedArrayPrototype"),
|
|
133
133
|
uncurryThis: cell("uncurryThis"),
|
|
134
|
-
|
|
134
|
+
hasOwn: cell("hasOwn"),
|
|
135
135
|
arrayFilter: cell("arrayFilter"),
|
|
136
136
|
arrayForEach: cell("arrayForEach"),
|
|
137
137
|
arrayIncludes: cell("arrayIncludes"),
|
|
@@ -158,16 +158,14 @@
|
|
|
158
158
|
setForEach: cell("setForEach"),
|
|
159
159
|
setHas: cell("setHas"),
|
|
160
160
|
iterateSet: cell("iterateSet"),
|
|
161
|
-
regexpTest: cell("regexpTest"),
|
|
162
161
|
regexpExec: cell("regexpExec"),
|
|
162
|
+
regexpReplace: cell("regexpReplace"),
|
|
163
163
|
matchAllRegExp: cell("matchAllRegExp"),
|
|
164
|
+
sealRegexp: cell("sealRegexp"),
|
|
164
165
|
stringEndsWith: cell("stringEndsWith"),
|
|
165
166
|
stringIncludes: cell("stringIncludes"),
|
|
166
167
|
stringIndexOf: cell("stringIndexOf"),
|
|
167
168
|
stringMatch: cell("stringMatch"),
|
|
168
|
-
generatorNext: cell("generatorNext"),
|
|
169
|
-
generatorThrow: cell("generatorThrow"),
|
|
170
|
-
stringReplace: cell("stringReplace"),
|
|
171
169
|
stringSearch: cell("stringSearch"),
|
|
172
170
|
stringSlice: cell("stringSlice"),
|
|
173
171
|
stringSplit: cell("stringSplit"),
|
|
@@ -181,12 +179,13 @@
|
|
|
181
179
|
weaksetHas: cell("weaksetHas"),
|
|
182
180
|
functionToString: cell("functionToString"),
|
|
183
181
|
functionBind: cell("functionBind"),
|
|
182
|
+
generatorNext: cell("generatorNext"),
|
|
183
|
+
generatorThrow: cell("generatorThrow"),
|
|
184
184
|
promiseAll: cell("promiseAll"),
|
|
185
185
|
promiseCatch: cell("promiseCatch"),
|
|
186
186
|
promiseThen: cell("promiseThen"),
|
|
187
187
|
finalizationRegistryRegister: cell("finalizationRegistryRegister"),
|
|
188
188
|
finalizationRegistryUnregister: cell("finalizationRegistryUnregister"),
|
|
189
|
-
getConstructorOf: cell("getConstructorOf"),
|
|
190
189
|
isPrimitive: cell("isPrimitive"),
|
|
191
190
|
isError: cell("isError"),
|
|
192
191
|
identity: cell("identity"),
|
|
@@ -242,10 +241,10 @@
|
|
|
242
241
|
makeError: cell("makeError"),
|
|
243
242
|
annotateError: cell("annotateError"),
|
|
244
243
|
loggedErrorHandler: cell("loggedErrorHandler"),
|
|
245
|
-
makeAssert: cell("makeAssert"),
|
|
246
244
|
assert: cell("assert"),
|
|
247
245
|
assertEqual: cell("assertEqual"),
|
|
248
246
|
sanitizeError: cell("sanitizeError"),
|
|
247
|
+
makeAssert: cell("makeAssert"),
|
|
249
248
|
},
|
|
250
249
|
{
|
|
251
250
|
isTypedArray: cell("isTypedArray"),
|
|
@@ -524,11 +523,11 @@ function observeImports(map, importName, importIndex) {
|
|
|
524
523
|
setPrototypeOf: cells[0].setPrototypeOf.set,
|
|
525
524
|
values: cells[0].values.set,
|
|
526
525
|
fromEntries: cells[0].fromEntries.set,
|
|
527
|
-
hasOwn: cells[0].hasOwn.set,
|
|
528
526
|
speciesSymbol: cells[0].speciesSymbol.set,
|
|
529
527
|
toStringTagSymbol: cells[0].toStringTagSymbol.set,
|
|
530
528
|
iteratorSymbol: cells[0].iteratorSymbol.set,
|
|
531
529
|
matchAllSymbol: cells[0].matchAllSymbol.set,
|
|
530
|
+
replaceSymbol: cells[0].replaceSymbol.set,
|
|
532
531
|
unscopablesSymbol: cells[0].unscopablesSymbol.set,
|
|
533
532
|
symbolKeyFor: cells[0].symbolKeyFor.set,
|
|
534
533
|
symbolFor: cells[0].symbolFor.set,
|
|
@@ -560,7 +559,7 @@ function observeImports(map, importName, importIndex) {
|
|
|
560
559
|
iteratorPrototype: cells[0].iteratorPrototype.set,
|
|
561
560
|
typedArrayPrototype: cells[0].typedArrayPrototype.set,
|
|
562
561
|
uncurryThis: cells[0].uncurryThis.set,
|
|
563
|
-
|
|
562
|
+
hasOwn: cells[0].hasOwn.set,
|
|
564
563
|
arrayFilter: cells[0].arrayFilter.set,
|
|
565
564
|
arrayForEach: cells[0].arrayForEach.set,
|
|
566
565
|
arrayIncludes: cells[0].arrayIncludes.set,
|
|
@@ -587,16 +586,14 @@ function observeImports(map, importName, importIndex) {
|
|
|
587
586
|
setForEach: cells[0].setForEach.set,
|
|
588
587
|
setHas: cells[0].setHas.set,
|
|
589
588
|
iterateSet: cells[0].iterateSet.set,
|
|
590
|
-
regexpTest: cells[0].regexpTest.set,
|
|
591
589
|
regexpExec: cells[0].regexpExec.set,
|
|
590
|
+
regexpReplace: cells[0].regexpReplace.set,
|
|
592
591
|
matchAllRegExp: cells[0].matchAllRegExp.set,
|
|
592
|
+
sealRegexp: cells[0].sealRegexp.set,
|
|
593
593
|
stringEndsWith: cells[0].stringEndsWith.set,
|
|
594
594
|
stringIncludes: cells[0].stringIncludes.set,
|
|
595
595
|
stringIndexOf: cells[0].stringIndexOf.set,
|
|
596
596
|
stringMatch: cells[0].stringMatch.set,
|
|
597
|
-
generatorNext: cells[0].generatorNext.set,
|
|
598
|
-
generatorThrow: cells[0].generatorThrow.set,
|
|
599
|
-
stringReplace: cells[0].stringReplace.set,
|
|
600
597
|
stringSearch: cells[0].stringSearch.set,
|
|
601
598
|
stringSlice: cells[0].stringSlice.set,
|
|
602
599
|
stringSplit: cells[0].stringSplit.set,
|
|
@@ -610,12 +607,13 @@ function observeImports(map, importName, importIndex) {
|
|
|
610
607
|
weaksetHas: cells[0].weaksetHas.set,
|
|
611
608
|
functionToString: cells[0].functionToString.set,
|
|
612
609
|
functionBind: cells[0].functionBind.set,
|
|
610
|
+
generatorNext: cells[0].generatorNext.set,
|
|
611
|
+
generatorThrow: cells[0].generatorThrow.set,
|
|
613
612
|
promiseAll: cells[0].promiseAll.set,
|
|
614
613
|
promiseCatch: cells[0].promiseCatch.set,
|
|
615
614
|
promiseThen: cells[0].promiseThen.set,
|
|
616
615
|
finalizationRegistryRegister: cells[0].finalizationRegistryRegister.set,
|
|
617
616
|
finalizationRegistryUnregister: cells[0].finalizationRegistryUnregister.set,
|
|
618
|
-
getConstructorOf: cells[0].getConstructorOf.set,
|
|
619
617
|
isPrimitive: cells[0].isPrimitive.set,
|
|
620
618
|
isError: cells[0].isError.set,
|
|
621
619
|
identity: cells[0].identity.set,
|
|
@@ -786,10 +784,10 @@ function observeImports(map, importName, importIndex) {
|
|
|
786
784
|
makeError: cells[13].makeError.set,
|
|
787
785
|
note: cells[13].annotateError.set,
|
|
788
786
|
loggedErrorHandler: cells[13].loggedErrorHandler.set,
|
|
789
|
-
makeAssert: cells[13].makeAssert.set,
|
|
790
787
|
assert: cells[13].assert.set,
|
|
791
788
|
assertEqual: cells[13].assertEqual.set,
|
|
792
789
|
sanitizeError: cells[13].sanitizeError.set,
|
|
790
|
+
makeAssert: cells[13].makeAssert.set,
|
|
793
791
|
},
|
|
794
792
|
importMeta: {},
|
|
795
793
|
});
|
|
@@ -1603,18 +1601,18 @@ const universalThis = globalThis;$h͏_once.universalThis(universalThis);
|
|
|
1603
1601
|
setPrototypeOf,
|
|
1604
1602
|
values,
|
|
1605
1603
|
fromEntries,
|
|
1606
|
-
|
|
1607
|
-
} = Object;$h͏_once.assign(assign);$h͏_once.create(create);$h͏_once.defineProperties(defineProperties);$h͏_once.entries(entries);$h͏_once.freeze(freeze);$h͏_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor);$h͏_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors);$h͏_once.getOwnPropertyNames(getOwnPropertyNames);$h͏_once.getPrototypeOf(getPrototypeOf);$h͏_once.is(is);$h͏_once.isFrozen(isFrozen);$h͏_once.isSealed(isSealed);$h͏_once.isExtensible(isExtensible);$h͏_once.keys(keys);$h͏_once.objectPrototype(objectPrototype);$h͏_once.seal(seal);$h͏_once.preventExtensions(preventExtensions);$h͏_once.setPrototypeOf(setPrototypeOf);$h͏_once.values(values);$h͏_once.fromEntries(fromEntries);$h͏_once.hasOwn(hasOwn);
|
|
1604
|
+
} = Object;$h͏_once.assign(assign);$h͏_once.create(create);$h͏_once.defineProperties(defineProperties);$h͏_once.entries(entries);$h͏_once.freeze(freeze);$h͏_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor);$h͏_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors);$h͏_once.getOwnPropertyNames(getOwnPropertyNames);$h͏_once.getPrototypeOf(getPrototypeOf);$h͏_once.is(is);$h͏_once.isFrozen(isFrozen);$h͏_once.isSealed(isSealed);$h͏_once.isExtensible(isExtensible);$h͏_once.keys(keys);$h͏_once.objectPrototype(objectPrototype);$h͏_once.seal(seal);$h͏_once.preventExtensions(preventExtensions);$h͏_once.setPrototypeOf(setPrototypeOf);$h͏_once.values(values);$h͏_once.fromEntries(fromEntries);
|
|
1608
1605
|
|
|
1609
1606
|
const {
|
|
1610
1607
|
species: speciesSymbol,
|
|
1611
1608
|
toStringTag: toStringTagSymbol,
|
|
1612
1609
|
iterator: iteratorSymbol,
|
|
1613
1610
|
matchAll: matchAllSymbol,
|
|
1611
|
+
replace: replaceSymbol,
|
|
1614
1612
|
unscopables: unscopablesSymbol,
|
|
1615
1613
|
keyFor: symbolKeyFor,
|
|
1616
1614
|
for: symbolFor,
|
|
1617
|
-
} = Symbol;$h͏_once.speciesSymbol(speciesSymbol);$h͏_once.toStringTagSymbol(toStringTagSymbol);$h͏_once.iteratorSymbol(iteratorSymbol);$h͏_once.matchAllSymbol(matchAllSymbol);$h͏_once.unscopablesSymbol(unscopablesSymbol);$h͏_once.symbolKeyFor(symbolKeyFor);$h͏_once.symbolFor(symbolFor);
|
|
1615
|
+
} = Symbol;$h͏_once.speciesSymbol(speciesSymbol);$h͏_once.toStringTagSymbol(toStringTagSymbol);$h͏_once.iteratorSymbol(iteratorSymbol);$h͏_once.matchAllSymbol(matchAllSymbol);$h͏_once.replaceSymbol(replaceSymbol);$h͏_once.unscopablesSymbol(unscopablesSymbol);$h͏_once.symbolKeyFor(symbolKeyFor);$h͏_once.symbolFor(symbolFor);
|
|
1618
1616
|
|
|
1619
1617
|
const { isInteger } = Number;$h͏_once.isInteger(isInteger);
|
|
1620
1618
|
|
|
@@ -1693,12 +1691,29 @@ const { bind } = functionPrototype;
|
|
|
1693
1691
|
*/
|
|
1694
1692
|
const uncurryThis = bind.bind(bind.call); // eslint-disable-line @endo/no-polymorphic-call
|
|
1695
1693
|
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1694
|
+
// See https://github.com/endojs/endo/issues/2930
|
|
1695
|
+
$h͏_once.uncurryThis(uncurryThis);if(!('hasOwn'in Object)){
|
|
1696
|
+
const ObjectPrototypeHasOwnProperty = objectPrototype.hasOwnProperty;
|
|
1697
|
+
const hasOwnShim = (obj, key) => {
|
|
1698
|
+
if (obj === undefined || obj === null) {
|
|
1699
|
+
// We need to add this extra test because of differences in
|
|
1700
|
+
// the order in which `hasOwn` vs `hasOwnProperty` validates
|
|
1701
|
+
// arguments.
|
|
1702
|
+
throw TypeError('Cannot convert undefined or null to object');
|
|
1703
|
+
}
|
|
1704
|
+
return apply(ObjectPrototypeHasOwnProperty, obj, [key]);
|
|
1705
|
+
};
|
|
1706
|
+
defineProperty(Object, 'hasOwn', {
|
|
1707
|
+
value: hasOwnShim,
|
|
1708
|
+
writable: true,
|
|
1709
|
+
enumerable: false,
|
|
1710
|
+
configurable: true,
|
|
1711
|
+
});
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
const { hasOwn } = Object;
|
|
1700
1715
|
//
|
|
1701
|
-
$h͏_once.
|
|
1716
|
+
$h͏_once.hasOwn(hasOwn);const arrayFilter=uncurryThis(arrayPrototype.filter);$h͏_once.arrayFilter(arrayFilter);
|
|
1702
1717
|
const arrayForEach = uncurryThis(arrayPrototype.forEach);$h͏_once.arrayForEach(arrayForEach);
|
|
1703
1718
|
const arrayIncludes = uncurryThis(arrayPrototype.includes);$h͏_once.arrayIncludes(arrayIncludes);
|
|
1704
1719
|
const arrayJoin = uncurryThis(arrayPrototype.join);
|
|
@@ -1737,32 +1752,53 @@ $h͏_once.iterateMap(iterateMap);const setAdd=uncurryThis(setPrototype.add);$h͏
|
|
|
1737
1752
|
const setHas = uncurryThis(setPrototype.has);$h͏_once.setHas(setHas);
|
|
1738
1753
|
const iterateSet = uncurryThis(setPrototype[iteratorSymbol]);
|
|
1739
1754
|
//
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
const stringIncludes = uncurryThis(stringPrototype.includes);$h͏_once.stringIncludes(stringIncludes);
|
|
1746
|
-
const stringIndexOf = uncurryThis(stringPrototype.indexOf);$h͏_once.stringIndexOf(stringIndexOf);
|
|
1747
|
-
const stringMatch = uncurryThis(stringPrototype.match);$h͏_once.stringMatch(stringMatch);
|
|
1748
|
-
const generatorNext = uncurryThis(generatorPrototype.next);$h͏_once.generatorNext(generatorNext);
|
|
1749
|
-
const generatorThrow = uncurryThis(generatorPrototype.throw);
|
|
1750
|
-
|
|
1755
|
+
/**
|
|
1756
|
+
* `regexpExec` is provided in exclusion of `regexpTest`, which would be
|
|
1757
|
+
* vulnerable to RegExp.prototype poisoning.
|
|
1758
|
+
*/$h͏_once.iterateSet(iterateSet);
|
|
1759
|
+
const regexpExec = uncurryThis(regexpPrototype.exec);
|
|
1751
1760
|
/**
|
|
1752
1761
|
* @type { &
|
|
1753
|
-
* ((thisArg:
|
|
1754
|
-
* ((thisArg:
|
|
1762
|
+
* ((thisArg: RegExp, string: string, replaceValue: string) => string) &
|
|
1763
|
+
* ((thisArg: RegExp, string: string, replacer: (substring: string, ...args: any[]) => string) => string)
|
|
1755
1764
|
* }
|
|
1756
|
-
*/$h͏_once.
|
|
1757
|
-
const
|
|
1758
|
-
uncurryThis(
|
|
1759
|
-
);$h͏_once.
|
|
1760
|
-
const
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1765
|
+
*/$h͏_once.regexpExec(regexpExec);
|
|
1766
|
+
const regexpReplace = /** @type {any} */ (
|
|
1767
|
+
uncurryThis(regexpPrototype[replaceSymbol])
|
|
1768
|
+
);$h͏_once.regexpReplace(regexpReplace);
|
|
1769
|
+
const matchAllRegExp = uncurryThis(regexpPrototype[matchAllSymbol]);$h͏_once.matchAllRegExp(matchAllRegExp);
|
|
1770
|
+
const { _regexpConstructor, ...regexpDescriptors } =
|
|
1771
|
+
getOwnPropertyDescriptors(regexpPrototype);
|
|
1772
|
+
arrayForEach(ownKeys(regexpDescriptors), key => {
|
|
1773
|
+
const desc = regexpDescriptors[/** @type {any} */ (key)];
|
|
1774
|
+
desc.configurable = false;
|
|
1775
|
+
if (desc.writable) desc.writable = false;
|
|
1776
|
+
});
|
|
1777
|
+
/**
|
|
1778
|
+
* Protect a RegExp instance against RegExp.prototype poisoning ("exec",
|
|
1779
|
+
* "flags", Symbol.replace, etc.).
|
|
1780
|
+
* @type {<T extends RegExp>(regexp: T) => T}
|
|
1781
|
+
*/
|
|
1782
|
+
const sealRegexp = regexp =>
|
|
1783
|
+
seal(defineProperties(regexp, regexpDescriptors));
|
|
1784
|
+
//
|
|
1785
|
+
$h͏_once.sealRegexp(sealRegexp);const stringEndsWith=uncurryThis(stringPrototype.endsWith);$h͏_once.stringEndsWith(stringEndsWith);
|
|
1786
|
+
const stringIncludes = uncurryThis(stringPrototype.includes);$h͏_once.stringIncludes(stringIncludes);
|
|
1787
|
+
const stringIndexOf = uncurryThis(stringPrototype.indexOf);$h͏_once.stringIndexOf(stringIndexOf);
|
|
1788
|
+
const stringMatch = uncurryThis(stringPrototype.match);
|
|
1789
|
+
// `stringReplace` is intentionally omitted because it would be vulnerable to
|
|
1790
|
+
// RegExp.prototype poisoning; use `regexpReplace(re, str, replacer)` instead
|
|
1791
|
+
// (and `sealRegexp` on its regular expressions).
|
|
1792
|
+
$h͏_once.stringMatch(stringMatch);const stringSearch=uncurryThis(stringPrototype.search);$h͏_once.stringSearch(stringSearch);
|
|
1793
|
+
const stringSlice = uncurryThis(stringPrototype.slice);
|
|
1794
|
+
/**
|
|
1795
|
+
* `stringSplit` should only be used with a string separator; regular
|
|
1796
|
+
* expressions are vulnerable to RegExp.prototype poisoning.
|
|
1797
|
+
* @type {(thisArg: string, separator: string, limit?: number) => string[]}
|
|
1798
|
+
*/$h͏_once.stringSlice(stringSlice);
|
|
1799
|
+
const stringSplit = /** @type {any} */ (
|
|
1800
|
+
uncurryThis(stringPrototype.split)
|
|
1801
|
+
);$h͏_once.stringSplit(stringSplit);
|
|
1766
1802
|
const stringStartsWith = uncurryThis(stringPrototype.startsWith);$h͏_once.stringStartsWith(stringStartsWith);
|
|
1767
1803
|
const iterateString = uncurryThis(stringPrototype[iteratorSymbol]);
|
|
1768
1804
|
//
|
|
@@ -1778,7 +1814,10 @@ $h͏_once.weakmapSet(weakmapSet);const weaksetAdd=uncurryThis(weaksetPrototype.a
|
|
|
1778
1814
|
$h͏_once.weaksetHas(weaksetHas);const functionToString=uncurryThis(functionPrototype.toString);$h͏_once.functionToString(functionToString);
|
|
1779
1815
|
const functionBind = uncurryThis(bind);
|
|
1780
1816
|
//
|
|
1781
|
-
$h͏_once.functionBind(functionBind);const
|
|
1817
|
+
$h͏_once.functionBind(functionBind);const generatorNext=uncurryThis(generatorPrototype.next);$h͏_once.generatorNext(generatorNext);
|
|
1818
|
+
const generatorThrow = uncurryThis(generatorPrototype.throw);
|
|
1819
|
+
//
|
|
1820
|
+
$h͏_once.generatorThrow(generatorThrow);const{all}=Promise;
|
|
1782
1821
|
const promiseAll = promises => apply(all, Promise, [promises]);$h͏_once.promiseAll(promiseAll);
|
|
1783
1822
|
const promiseCatch = uncurryThis(promisePrototype.catch);
|
|
1784
1823
|
/** @type {<T, TResult1 = T, TResult2 = never>(thisArg: T, onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null) => Promise<TResult1 | TResult2>} */$h͏_once.promiseCatch(promiseCatch);
|
|
@@ -1792,15 +1831,6 @@ $h͏_once.promiseThen(promiseThen);const finalizationRegistryRegister=
|
|
|
1792
1831
|
FinalizationRegistry &&
|
|
1793
1832
|
uncurryThis(FinalizationRegistry.prototype.unregister);
|
|
1794
1833
|
|
|
1795
|
-
/**
|
|
1796
|
-
* getConstructorOf()
|
|
1797
|
-
* Return the constructor from an instance.
|
|
1798
|
-
*
|
|
1799
|
-
* @param {Function} fn
|
|
1800
|
-
*/$h͏_once.finalizationRegistryUnregister(finalizationRegistryUnregister);
|
|
1801
|
-
const getConstructorOf = fn =>
|
|
1802
|
-
reflectGet(getPrototypeOf(fn), 'constructor');
|
|
1803
|
-
|
|
1804
1834
|
/**
|
|
1805
1835
|
* TODO Consolidate with `isPrimitive` that's currently in `@endo/pass-style`.
|
|
1806
1836
|
* Layering constraints make this tricky, which is why we haven't yet figured
|
|
@@ -1813,7 +1843,7 @@ $h͏_once.promiseThen(promiseThen);const finalizationRegistryRegister=
|
|
|
1813
1843
|
* | bigint
|
|
1814
1844
|
* | string
|
|
1815
1845
|
* | symbol)}
|
|
1816
|
-
*/$h͏_once.
|
|
1846
|
+
*/$h͏_once.finalizationRegistryUnregister(finalizationRegistryUnregister);
|
|
1817
1847
|
const isPrimitive = val =>
|
|
1818
1848
|
!val || (typeof val !== 'object' && typeof val !== 'function');
|
|
1819
1849
|
|
|
@@ -1853,13 +1883,40 @@ $h͏_once.FERAL_EVAL(FERAL_EVAL);const FERAL_FUNCTION=Function;$h͏_once.FERAL_F
|
|
|
1853
1883
|
};
|
|
1854
1884
|
|
|
1855
1885
|
// ////////////////// FERAL_STACK_GETTER FERAL_STACK_SETTER ////////////////////
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1886
|
+
|
|
1887
|
+
// The error repair mechanism is very similar to code in
|
|
1888
|
+
// pass-style/src/error.js and these implementations should be kept in sync.
|
|
1889
|
+
|
|
1890
|
+
/**
|
|
1891
|
+
* We gratuitiously construct a TypeError instance using syntax in order to
|
|
1892
|
+
* obviate the possibility that code that ran before SES (for which we are
|
|
1893
|
+
* irreducable vulnerable) may have replaced the global TypeError constructor.
|
|
1894
|
+
* We treat the nature of this error instance as the source of truth for the
|
|
1895
|
+
* nature of runtime constructed errors on the platform, particularly whether
|
|
1896
|
+
* such errors will have an own "stack" property with getters and setters.
|
|
1897
|
+
* At time of writing (2025) we know of no comparable mechanism for obtaining a
|
|
1898
|
+
* host-generated base Error instance, but we corroborate the nature of the
|
|
1899
|
+
* global Error constructor's instances and refuse to initialize SES in an
|
|
1900
|
+
* environment where the syntactic TypeError and global Error produce
|
|
1901
|
+
* inconsistent "stack" properties.
|
|
1902
|
+
* @returns {TypeError}
|
|
1903
|
+
*/$h͏_once.noEvalEvaluate(noEvalEvaluate);
|
|
1904
|
+
const makeTypeError = () => {
|
|
1905
|
+
try {
|
|
1906
|
+
// @ts-expect-error deliberate TypeError
|
|
1907
|
+
null.null;
|
|
1908
|
+
throw TypeError('obligatory'); // To convince the type flow inferrence.
|
|
1909
|
+
} catch (error) {
|
|
1910
|
+
return error;
|
|
1911
|
+
}
|
|
1912
|
+
};
|
|
1913
|
+
|
|
1914
|
+
const errorStackDesc = getOwnPropertyDescriptor(Error('obligatory'), 'stack');
|
|
1915
|
+
const typeErrorStackDesc = getOwnPropertyDescriptor(makeTypeError(), 'stack');
|
|
1859
1916
|
|
|
1860
1917
|
let feralStackGetter;
|
|
1861
1918
|
let feralStackSetter;
|
|
1862
|
-
if (
|
|
1919
|
+
if (typeErrorStackDesc && typeErrorStackDesc.get) {
|
|
1863
1920
|
// We should only encounter this case on v8 because of its problematic
|
|
1864
1921
|
// error own stack accessor behavior.
|
|
1865
1922
|
// Note that FF/SpiderMonkey, Moddable/XS, and the error stack proposal
|
|
@@ -1870,16 +1927,17 @@ if (er1StackDesc && er2StackDesc && er1StackDesc.get) {
|
|
|
1870
1927
|
// accessor property, but within the same realm, all these accessor
|
|
1871
1928
|
// properties have the same getter and have the same setter.
|
|
1872
1929
|
// This is therefore the case that we repair.
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1930
|
+
errorStackDesc &&
|
|
1931
|
+
typeof typeErrorStackDesc.get === 'function' &&
|
|
1932
|
+
typeErrorStackDesc.get === errorStackDesc.get &&
|
|
1933
|
+
typeof typeErrorStackDesc.set === 'function' &&
|
|
1934
|
+
typeErrorStackDesc.set === errorStackDesc.set
|
|
1877
1935
|
) {
|
|
1878
1936
|
// Otherwise, we have own stack accessor properties that are outside
|
|
1879
1937
|
// our expectations, that therefore need to be understood better
|
|
1880
1938
|
// before we know how to repair them.
|
|
1881
|
-
feralStackGetter = freeze(
|
|
1882
|
-
feralStackSetter = freeze(
|
|
1939
|
+
feralStackGetter = freeze(typeErrorStackDesc.get);
|
|
1940
|
+
feralStackSetter = freeze(typeErrorStackDesc.set);
|
|
1883
1941
|
} else {
|
|
1884
1942
|
// See https://github.com/endojs/endo/blob/master/packages/ses/error-codes/SES_UNEXPECTED_ERROR_OWN_STACK_ACCESSOR.md
|
|
1885
1943
|
throw TypeError(
|
|
@@ -2428,11 +2486,11 @@ const arrayBufferMethods = {
|
|
|
2428
2486
|
...(optTransferBufferToImmutable
|
|
2429
2487
|
? {
|
|
2430
2488
|
/**
|
|
2431
|
-
* Transfer the contents to a new
|
|
2489
|
+
* Transfer the contents to a new immutable ArrayBuffer
|
|
2432
2490
|
*
|
|
2433
2491
|
* @this {ArrayBuffer} buffer The original buffer.
|
|
2434
2492
|
* @param {number} [newLength] The start index.
|
|
2435
|
-
* @returns {ArrayBuffer} The
|
|
2493
|
+
* @returns {ArrayBuffer} The new immutable ArrayBuffer.
|
|
2436
2494
|
*/
|
|
2437
2495
|
transferToImmutable(newLength = undefined) {
|
|
2438
2496
|
return optTransferBufferToImmutable(this, newLength);
|
|
@@ -2505,12 +2563,12 @@ defineProperties(
|
|
|
2505
2563
|
|
|
2506
2564
|
|
|
2507
2565
|
|
|
2508
|
-
/** @import {
|
|
2566
|
+
/** @import {Stringable} from '../../types.js' */
|
|
2509
2567
|
|
|
2510
2568
|
/**
|
|
2511
2569
|
* Joins English terms with commas and an optional conjunction.
|
|
2512
2570
|
*
|
|
2513
|
-
* @param {(string |
|
|
2571
|
+
* @param {(string | Stringable)[]} terms
|
|
2514
2572
|
* @param {"and" | "or"} conjunction
|
|
2515
2573
|
*/
|
|
2516
2574
|
const enJoin = (terms, conjunction) => {
|
|
@@ -2681,7 +2739,7 @@ freeze(bestEffortStringify);
|
|
|
2681
2739
|
// === 8. ses ./src/error/types.js ===
|
|
2682
2740
|
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';$h͏_imports([]);// @ts-check
|
|
2683
2741
|
|
|
2684
|
-
/** @import {GenericErrorConstructor, AssertMakeErrorOptions, DetailsToken,
|
|
2742
|
+
/** @import {GenericErrorConstructor, AssertMakeErrorOptions, DetailsToken, Stringable} from '../../types.js' */
|
|
2685
2743
|
|
|
2686
2744
|
/**
|
|
2687
2745
|
* @typedef {object} VirtualConsole
|
|
@@ -3246,7 +3304,8 @@ freeze(makeNoteLogArgsArrayKit);
|
|
|
3246
3304
|
})()
|
|
3247
3305
|
,
|
|
3248
3306
|
// === 13. ses ./src/error/assert.js ===
|
|
3249
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,defineProperty,globalThis,is,isError,
|
|
3307
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,defineProperty,globalThis,is,isError,regexpExec,regexpReplace,sealRegexp,stringIndexOf,stringSlice,stringStartsWith,weakmapDelete,weakmapGet,weakmapHas,weakmapSet,AggregateError,getOwnPropertyDescriptors,ownKeys,create,objectPrototype,hasOwn,an,bestEffortStringify,makeNoteLogArgsArrayKit;$h͏_imports([["../commons.js", [["RangeError",[$h͏_a => (RangeError = $h͏_a)]],["TypeError",[$h͏_a => (TypeError = $h͏_a)]],["WeakMap",[$h͏_a => (WeakMap = $h͏_a)]],["arrayJoin",[$h͏_a => (arrayJoin = $h͏_a)]],["arrayMap",[$h͏_a => (arrayMap = $h͏_a)]],["arrayPop",[$h͏_a => (arrayPop = $h͏_a)]],["arrayPush",[$h͏_a => (arrayPush = $h͏_a)]],["assign",[$h͏_a => (assign = $h͏_a)]],["freeze",[$h͏_a => (freeze = $h͏_a)]],["defineProperty",[$h͏_a => (defineProperty = $h͏_a)]],["globalThis",[$h͏_a => (globalThis = $h͏_a)]],["is",[$h͏_a => (is = $h͏_a)]],["isError",[$h͏_a => (isError = $h͏_a)]],["regexpExec",[$h͏_a => (regexpExec = $h͏_a)]],["regexpReplace",[$h͏_a => (regexpReplace = $h͏_a)]],["sealRegexp",[$h͏_a => (sealRegexp = $h͏_a)]],["stringIndexOf",[$h͏_a => (stringIndexOf = $h͏_a)]],["stringSlice",[$h͏_a => (stringSlice = $h͏_a)]],["stringStartsWith",[$h͏_a => (stringStartsWith = $h͏_a)]],["weakmapDelete",[$h͏_a => (weakmapDelete = $h͏_a)]],["weakmapGet",[$h͏_a => (weakmapGet = $h͏_a)]],["weakmapHas",[$h͏_a => (weakmapHas = $h͏_a)]],["weakmapSet",[$h͏_a => (weakmapSet = $h͏_a)]],["AggregateError",[$h͏_a => (AggregateError = $h͏_a)]],["getOwnPropertyDescriptors",[$h͏_a => (getOwnPropertyDescriptors = $h͏_a)]],["ownKeys",[$h͏_a => (ownKeys = $h͏_a)]],["create",[$h͏_a => (create = $h͏_a)]],["objectPrototype",[$h͏_a => (objectPrototype = $h͏_a)]],["hasOwn",[$h͏_a => (hasOwn = $h͏_a)]]]],["./stringify-utils.js", [["an",[$h͏_a => (an = $h͏_a)]],["bestEffortStringify",[$h͏_a => (bestEffortStringify = $h͏_a)]]]],["./types.js", []],["./internal-types.js", []],["./note-log-args.js", [["makeNoteLogArgsArrayKit",[$h͏_a => (makeNoteLogArgsArrayKit = $h͏_a)]]]]]);
|
|
3308
|
+
|
|
3250
3309
|
|
|
3251
3310
|
|
|
3252
3311
|
|
|
@@ -3295,24 +3354,28 @@ freeze(makeNoteLogArgsArrayKit);
|
|
|
3295
3354
|
|
|
3296
3355
|
|
|
3297
3356
|
/**
|
|
3298
|
-
* @import {BaseAssert, Assert, AssertionFunctions, AssertionUtilities,
|
|
3299
|
-
* @import {LogArgs, NoteCallback, LoggedErrorHandler} from
|
|
3357
|
+
* @import {BaseAssert, Assert, AssertionFunctions, AssertionUtilities, DeprecatedAssertionUtilities, Stringable, DetailsToken, MakeAssert} from '../../types.js';
|
|
3358
|
+
* @import {LogArgs, NoteCallback, LoggedErrorHandler} from './internal-types.js';
|
|
3300
3359
|
*/
|
|
3301
3360
|
|
|
3302
|
-
// For
|
|
3361
|
+
// For internal debugging purposes, uncomment
|
|
3303
3362
|
// const internalDebugConsole = console;
|
|
3304
3363
|
|
|
3305
3364
|
// /////////////////////////////////////////////////////////////////////////////
|
|
3306
3365
|
|
|
3307
|
-
/**
|
|
3366
|
+
/**
|
|
3367
|
+
* Maps the result of a `quote` or `bare` call back to its input value.
|
|
3368
|
+
*
|
|
3369
|
+
* @type {WeakMap<Stringable, any>}
|
|
3370
|
+
*/
|
|
3308
3371
|
const declassifiers = new WeakMap();
|
|
3309
3372
|
|
|
3310
3373
|
/** @type {AssertionUtilities['quote']} */
|
|
3311
|
-
const quote = (
|
|
3374
|
+
const quote = (value, spaces = undefined) => {
|
|
3312
3375
|
const result = freeze({
|
|
3313
|
-
toString: freeze(() => bestEffortStringify(
|
|
3376
|
+
toString: freeze(() => bestEffortStringify(value, spaces)),
|
|
3314
3377
|
});
|
|
3315
|
-
weakmapSet(declassifiers, result,
|
|
3378
|
+
weakmapSet(declassifiers, result, value);
|
|
3316
3379
|
return result;
|
|
3317
3380
|
};$h͏_once.quote(quote);
|
|
3318
3381
|
freeze(quote);
|
|
@@ -3322,14 +3385,14 @@ const canBeBare = freeze(/^[\w:-]( ?[\w:-])*$/);
|
|
|
3322
3385
|
/**
|
|
3323
3386
|
* @type {AssertionUtilities['bare']}
|
|
3324
3387
|
*/
|
|
3325
|
-
const bare = (
|
|
3326
|
-
if (typeof
|
|
3327
|
-
return quote(
|
|
3388
|
+
const bare = (text, spaces = undefined) => {
|
|
3389
|
+
if (typeof text !== 'string' || !regexpExec(canBeBare, text)) {
|
|
3390
|
+
return quote(text, spaces);
|
|
3328
3391
|
}
|
|
3329
3392
|
const result = freeze({
|
|
3330
|
-
toString: freeze(() =>
|
|
3393
|
+
toString: freeze(() => text),
|
|
3331
3394
|
});
|
|
3332
|
-
weakmapSet(declassifiers, result,
|
|
3395
|
+
weakmapSet(declassifiers, result, text);
|
|
3333
3396
|
return result;
|
|
3334
3397
|
};$h͏_once.bare(bare);
|
|
3335
3398
|
freeze(bare);
|
|
@@ -3337,24 +3400,28 @@ freeze(bare);
|
|
|
3337
3400
|
// /////////////////////////////////////////////////////////////////////////////
|
|
3338
3401
|
|
|
3339
3402
|
/**
|
|
3340
|
-
* @typedef {
|
|
3403
|
+
* @typedef {{ template: TemplateStringsArray | string[], args: any[] }} DetailsParts
|
|
3341
3404
|
*
|
|
3342
|
-
*
|
|
3405
|
+
* The contents of a `details` template literal tag: literal strings (always at
|
|
3406
|
+
* least one) and arbitrary substitution values from in between them.
|
|
3343
3407
|
*
|
|
3344
|
-
*
|
|
3345
|
-
*
|
|
3408
|
+
* Unquoted substitution values are sensitive (and are redacted in error
|
|
3409
|
+
* `message` strings), so a DetailsPart must not leak outside of this file.
|
|
3346
3410
|
*/
|
|
3347
3411
|
|
|
3348
3412
|
/**
|
|
3349
|
-
*
|
|
3413
|
+
* Maps the result of a `details` tagged template literal back to a record of
|
|
3414
|
+
* that template literal's contents.
|
|
3350
3415
|
*
|
|
3351
|
-
*
|
|
3352
|
-
* to a record of the contents of that template literal expression.
|
|
3416
|
+
* @type {WeakMap<DetailsToken, DetailsParts>}
|
|
3353
3417
|
*/
|
|
3354
3418
|
const hiddenDetailsMap = new WeakMap();
|
|
3355
3419
|
|
|
3356
3420
|
/**
|
|
3357
|
-
*
|
|
3421
|
+
* Construct an error message string from `details` template literal contents,
|
|
3422
|
+
* replacing unquoted substitution values with redactions.
|
|
3423
|
+
*
|
|
3424
|
+
* @param {DetailsParts} hiddenDetails
|
|
3358
3425
|
* @returns {string}
|
|
3359
3426
|
*/
|
|
3360
3427
|
const getMessageString = ({ template, args }) => {
|
|
@@ -3375,16 +3442,14 @@ const getMessageString = ({ template, args }) => {
|
|
|
3375
3442
|
};
|
|
3376
3443
|
|
|
3377
3444
|
/**
|
|
3378
|
-
*
|
|
3379
|
-
* creating new
|
|
3380
|
-
*
|
|
3381
|
-
*
|
|
3382
|
-
* `
|
|
3383
|
-
* registered in `redactedDetails`, which should be exactly the detailsTokens.
|
|
3445
|
+
* Define `toString` behavior for DetailsToken. To minimize the overhead of
|
|
3446
|
+
* creating new instances, we do this with an inherited `this`-sensitive method,
|
|
3447
|
+
* even though we normally avoid such sensitivity. To protect the method from
|
|
3448
|
+
* inappropriate application, it verifies that `this` is registered in
|
|
3449
|
+
* `redactedDetails` before doing interesting work.
|
|
3384
3450
|
*
|
|
3385
|
-
* The
|
|
3386
|
-
* the same
|
|
3387
|
-
* string for a thrown assertion error.
|
|
3451
|
+
* The behavior must not reveal anything redacted, so we use `getMessageString`
|
|
3452
|
+
* to return the same value as the message for a thrown assertion-failure error.
|
|
3388
3453
|
*/
|
|
3389
3454
|
const DetailsTokenProto = freeze({
|
|
3390
3455
|
toString() {
|
|
@@ -3404,16 +3469,15 @@ freeze(DetailsTokenProto.toString);
|
|
|
3404
3469
|
* given to `lockdown`, then `unredactedDetails` is used instead.
|
|
3405
3470
|
*
|
|
3406
3471
|
* There are some unconditional uses of `redactedDetails` in this module. All
|
|
3407
|
-
* of them should be uses where the template literal has no redacted
|
|
3408
|
-
* substitution values. In those cases,
|
|
3472
|
+
* of them should be uses where the template literal has no redacted (unquoted)
|
|
3473
|
+
* substitution values. In those cases, `redactedDetails` is equivalent to
|
|
3474
|
+
* `unredactedDetails`.
|
|
3409
3475
|
*
|
|
3410
3476
|
* @type {AssertionUtilities['details']}
|
|
3411
3477
|
*/
|
|
3412
3478
|
const redactedDetails = (template, ...args) => {
|
|
3413
|
-
//
|
|
3414
|
-
//
|
|
3415
|
-
// possible. Hence we store what we've got with little processing, postponing
|
|
3416
|
-
// all the work to happen only if needed, for example, if an assertion fails.
|
|
3479
|
+
// In case the result of this call is never used, perform as little processing
|
|
3480
|
+
// as possible here to keep things fast.
|
|
3417
3481
|
const detailsToken = freeze({ __proto__: DetailsTokenProto });
|
|
3418
3482
|
weakmapSet(hiddenDetailsMap, detailsToken, { template, args });
|
|
3419
3483
|
return /** @type {DetailsToken} */ (/** @type {unknown} */ (detailsToken));
|
|
@@ -3443,8 +3507,15 @@ const unredactedDetails = (template, ...args) => {
|
|
|
3443
3507
|
freeze(unredactedDetails);
|
|
3444
3508
|
|
|
3445
3509
|
|
|
3510
|
+
const leadingSpacePattern = sealRegexp(/^ /);
|
|
3511
|
+
const trailingSpacePattern = sealRegexp(/ $/);
|
|
3512
|
+
|
|
3446
3513
|
/**
|
|
3447
|
-
*
|
|
3514
|
+
* Get arguments suitable for a console logger function (e.g., `console.error`)
|
|
3515
|
+
* from `details` template literal contents, unquoting quoted substitution
|
|
3516
|
+
* values.
|
|
3517
|
+
*
|
|
3518
|
+
* @param {DetailsParts} hiddenDetails
|
|
3448
3519
|
* @returns {LogArgs}
|
|
3449
3520
|
*/
|
|
3450
3521
|
const getLogArgs = ({ template, args }) => {
|
|
@@ -3454,14 +3525,22 @@ const getLogArgs = ({ template, args }) => {
|
|
|
3454
3525
|
if (weakmapHas(declassifiers, arg)) {
|
|
3455
3526
|
arg = weakmapGet(declassifiers, arg);
|
|
3456
3527
|
}
|
|
3457
|
-
// Remove
|
|
3458
|
-
//
|
|
3459
|
-
const
|
|
3460
|
-
|
|
3461
|
-
|
|
3528
|
+
// Remove substitution-adjacent spaces from template fixed-string parts
|
|
3529
|
+
// (since console logging inserts its own argument-separating spaces).
|
|
3530
|
+
const prevLiteralPart = regexpReplace(
|
|
3531
|
+
trailingSpacePattern,
|
|
3532
|
+
arrayPop(logArgs) || '',
|
|
3533
|
+
'',
|
|
3534
|
+
);
|
|
3535
|
+
if (prevLiteralPart !== '') {
|
|
3536
|
+
arrayPush(logArgs, prevLiteralPart);
|
|
3462
3537
|
}
|
|
3463
|
-
const
|
|
3464
|
-
|
|
3538
|
+
const nextLiteralPart = regexpReplace(
|
|
3539
|
+
leadingSpacePattern,
|
|
3540
|
+
template[i + 1],
|
|
3541
|
+
'',
|
|
3542
|
+
);
|
|
3543
|
+
arrayPush(logArgs, arg, nextLiteralPart);
|
|
3465
3544
|
}
|
|
3466
3545
|
if (logArgs[logArgs.length - 1] === '') {
|
|
3467
3546
|
arrayPop(logArgs);
|
|
@@ -3470,11 +3549,11 @@ const getLogArgs = ({ template, args }) => {
|
|
|
3470
3549
|
};
|
|
3471
3550
|
|
|
3472
3551
|
/**
|
|
3473
|
-
*
|
|
3552
|
+
* Maps from an error object to arguments suitable for a privileged console
|
|
3553
|
+
* logger function such as `console.error`, including values that may be
|
|
3554
|
+
* redacted in the error's `message`.
|
|
3474
3555
|
*
|
|
3475
|
-
*
|
|
3476
|
-
* alternative message for that error. When logging the error, these
|
|
3477
|
-
* log args should be preferred to `error.message`.
|
|
3556
|
+
* @type {WeakMap<Error, LogArgs>}
|
|
3478
3557
|
*/
|
|
3479
3558
|
const hiddenMessageLogArgs = new WeakMap();
|
|
3480
3559
|
|
|
@@ -3545,27 +3624,24 @@ const tagError = (err, optErrorName = err.name) => {
|
|
|
3545
3624
|
for (const name of restNames) {
|
|
3546
3625
|
delete error[name];
|
|
3547
3626
|
}
|
|
3548
|
-
const
|
|
3627
|
+
const dropped = create(objectPrototype, restDescs);
|
|
3628
|
+
const droppedDetails = redactedDetails`originally with properties ${quote(dropped)}`;
|
|
3549
3629
|
// eslint-disable-next-line no-use-before-define
|
|
3550
|
-
note(
|
|
3551
|
-
error,
|
|
3552
|
-
redactedDetails`originally with properties ${quote(droppedNote)}`,
|
|
3553
|
-
);
|
|
3630
|
+
note(error, droppedDetails);
|
|
3554
3631
|
}
|
|
3555
3632
|
for (const name of ownKeys(error)) {
|
|
3556
|
-
// @ts-expect-error
|
|
3633
|
+
// @ts-expect-error TypeScript is still confused by symbols as property keys
|
|
3557
3634
|
const desc = descs[name];
|
|
3558
3635
|
if (desc && hasOwn(desc, 'get')) {
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
});
|
|
3636
|
+
const value = error[name]; // invokes the getter
|
|
3637
|
+
defineProperty(error, name, { value });
|
|
3562
3638
|
}
|
|
3563
3639
|
}
|
|
3564
3640
|
freeze(error);
|
|
3565
3641
|
};
|
|
3566
3642
|
|
|
3567
3643
|
/**
|
|
3568
|
-
* @type {AssertionUtilities['
|
|
3644
|
+
* @type {AssertionUtilities['makeError']}
|
|
3569
3645
|
*/$h͏_once.sanitizeError(sanitizeError);
|
|
3570
3646
|
const makeError = (
|
|
3571
3647
|
optDetails = redactedDetails`Assert failed`,
|
|
@@ -3577,9 +3653,9 @@ const makeError = (
|
|
|
3577
3653
|
sanitize = true,
|
|
3578
3654
|
} = {},
|
|
3579
3655
|
) => {
|
|
3656
|
+
// Promote string-valued `optDetails` into a minimal DetailsParts
|
|
3657
|
+
// consisting of that string as the sole literal part with no substitutions.
|
|
3580
3658
|
if (typeof optDetails === 'string') {
|
|
3581
|
-
// If it is a string, use it as the literal part of the template so
|
|
3582
|
-
// it doesn't get quoted.
|
|
3583
3659
|
optDetails = redactedDetails([optDetails]);
|
|
3584
3660
|
}
|
|
3585
3661
|
const hiddenDetails = weakmapGet(hiddenDetailsMap, optDetails);
|
|
@@ -3595,13 +3671,11 @@ const makeError = (
|
|
|
3595
3671
|
) {
|
|
3596
3672
|
error = AggregateError(errors || [], messageString, opts);
|
|
3597
3673
|
} else {
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3674
|
+
const ErrorCtor = /** @type {ErrorConstructor} */ (errConstructor);
|
|
3675
|
+
error = ErrorCtor(messageString, opts);
|
|
3676
|
+
// Since we need to tolerate `errors` on an AggregateError, we may as well
|
|
3677
|
+
// tolerate it on all errors.
|
|
3602
3678
|
if (errors !== undefined) {
|
|
3603
|
-
// Since we need to tolerate `errors` on an AggregateError, may as
|
|
3604
|
-
// well tolerate it on all errors.
|
|
3605
3679
|
defineProperty(error, 'errors', {
|
|
3606
3680
|
value: errors,
|
|
3607
3681
|
writable: true,
|
|
@@ -3624,11 +3698,10 @@ freeze(makeError);
|
|
|
3624
3698
|
|
|
3625
3699
|
// /////////////////////////////////////////////////////////////////////////////
|
|
3626
3700
|
|
|
3627
|
-
const { addLogArgs, takeLogArgsArray } =
|
|
3701
|
+
const { addLogArgs: addNoteLogArgs, takeLogArgsArray: takeAllNoteLogArgs } =
|
|
3702
|
+
makeNoteLogArgsArrayKit();
|
|
3628
3703
|
|
|
3629
3704
|
/**
|
|
3630
|
-
* @type {WeakMap<Error, NoteCallback[]>}
|
|
3631
|
-
*
|
|
3632
3705
|
* An augmented console will normally only take the hidden noteArgs array once,
|
|
3633
3706
|
* when it logs the error being annotated. Once that happens, further
|
|
3634
3707
|
* annotations of that error should go to the console immediately. We arrange
|
|
@@ -3637,14 +3710,16 @@ const { addLogArgs, takeLogArgsArray } = makeNoteLogArgsArrayKit();
|
|
|
3637
3710
|
* callback per error, but that depends on console behavior which we should not
|
|
3638
3711
|
* assume. We make this an array of callbacks so multiple registrations
|
|
3639
3712
|
* are independent.
|
|
3713
|
+
*
|
|
3714
|
+
* @type {WeakMap<Error, NoteCallback[]>}
|
|
3640
3715
|
*/
|
|
3641
|
-
const
|
|
3716
|
+
const hiddenNoteCallbacks = new WeakMap();
|
|
3642
3717
|
|
|
3643
3718
|
/** @type {AssertionUtilities['note']} */
|
|
3644
3719
|
const note = (error, detailsNote) => {
|
|
3720
|
+
// Promote string-valued `detailsNote` into a minimal DetailsParts consisting
|
|
3721
|
+
// of that string as the sole literal part with no substitutions.
|
|
3645
3722
|
if (typeof detailsNote === 'string') {
|
|
3646
|
-
// If it is a string, use it as the literal part of the template so
|
|
3647
|
-
// it doesn't get quoted.
|
|
3648
3723
|
detailsNote = redactedDetails([detailsNote]);
|
|
3649
3724
|
}
|
|
3650
3725
|
const hiddenDetails = weakmapGet(hiddenDetailsMap, detailsNote);
|
|
@@ -3652,13 +3727,13 @@ const note = (error, detailsNote) => {
|
|
|
3652
3727
|
throw TypeError(`unrecognized details ${quote(detailsNote)}`);
|
|
3653
3728
|
}
|
|
3654
3729
|
const logArgs = getLogArgs(hiddenDetails);
|
|
3655
|
-
const callbacks = weakmapGet(
|
|
3730
|
+
const callbacks = weakmapGet(hiddenNoteCallbacks, error);
|
|
3656
3731
|
if (callbacks !== undefined) {
|
|
3657
3732
|
for (const callback of callbacks) {
|
|
3658
3733
|
callback(error, logArgs);
|
|
3659
3734
|
}
|
|
3660
3735
|
} else {
|
|
3661
|
-
|
|
3736
|
+
addNoteLogArgs(error, logArgs);
|
|
3662
3737
|
}
|
|
3663
3738
|
};$h͏_once.note(note);
|
|
3664
3739
|
freeze(note);
|
|
@@ -3692,21 +3767,21 @@ const loggedErrorHandler = {
|
|
|
3692
3767
|
},
|
|
3693
3768
|
getMessageLogArgs: error => weakmapGet(hiddenMessageLogArgs, error),
|
|
3694
3769
|
takeMessageLogArgs: error => {
|
|
3695
|
-
const
|
|
3770
|
+
const logArgs = weakmapGet(hiddenMessageLogArgs, error);
|
|
3696
3771
|
weakmapDelete(hiddenMessageLogArgs, error);
|
|
3697
|
-
return
|
|
3772
|
+
return logArgs;
|
|
3698
3773
|
},
|
|
3699
3774
|
takeNoteLogArgsArray: (error, callback) => {
|
|
3700
|
-
const
|
|
3775
|
+
const logArgsArray = takeAllNoteLogArgs(error);
|
|
3701
3776
|
if (callback !== undefined) {
|
|
3702
|
-
const callbacks = weakmapGet(
|
|
3777
|
+
const callbacks = weakmapGet(hiddenNoteCallbacks, error);
|
|
3703
3778
|
if (callbacks) {
|
|
3704
3779
|
arrayPush(callbacks, callback);
|
|
3705
3780
|
} else {
|
|
3706
|
-
weakmapSet(
|
|
3781
|
+
weakmapSet(hiddenNoteCallbacks, error, [callback]);
|
|
3707
3782
|
}
|
|
3708
3783
|
}
|
|
3709
|
-
return
|
|
3784
|
+
return logArgsArray || [];
|
|
3710
3785
|
},
|
|
3711
3786
|
};$h͏_once.loggedErrorHandler(loggedErrorHandler);
|
|
3712
3787
|
freeze(loggedErrorHandler);
|
|
@@ -3717,7 +3792,7 @@ freeze(loggedErrorHandler);
|
|
|
3717
3792
|
/**
|
|
3718
3793
|
* @type {MakeAssert}
|
|
3719
3794
|
*/
|
|
3720
|
-
const makeAssert = (optRaise = undefined, unredacted = false) => {
|
|
3795
|
+
const makeAssert = (optRaise = undefined, unredacted = false) => {
|
|
3721
3796
|
const details = unredacted ? unredactedDetails : redactedDetails;
|
|
3722
3797
|
const assertFailedDetails = details`Check failed`;
|
|
3723
3798
|
|
|
@@ -3729,7 +3804,6 @@ const makeAssert = (optRaise = undefined, unredacted = false) => {
|
|
|
3729
3804
|
) => {
|
|
3730
3805
|
const reason = makeError(optDetails, errConstructor, options);
|
|
3731
3806
|
if (optRaise !== undefined) {
|
|
3732
|
-
// @ts-ignore returns `never` doesn't mean it isn't callable
|
|
3733
3807
|
optRaise(reason);
|
|
3734
3808
|
}
|
|
3735
3809
|
throw reason;
|
|
@@ -3739,18 +3813,16 @@ const makeAssert = (optRaise = undefined, unredacted = false) => {
|
|
|
3739
3813
|
/** @type {AssertionUtilities['Fail']} */
|
|
3740
3814
|
const Fail = (template, ...args) => fail(details(template, ...args));
|
|
3741
3815
|
|
|
3742
|
-
// Don't freeze or export `
|
|
3743
|
-
// TODO If I change this from a `function` function to an arrow
|
|
3744
|
-
// function, I seem to get type errors from TypeScript. Why?
|
|
3816
|
+
// Don't freeze or export `assert` until we add methods.
|
|
3745
3817
|
/** @type {BaseAssert} */
|
|
3746
|
-
|
|
3747
|
-
|
|
3818
|
+
const assert = (
|
|
3819
|
+
condition,
|
|
3748
3820
|
optDetails = undefined,
|
|
3749
3821
|
errConstructor = undefined,
|
|
3750
3822
|
options = undefined,
|
|
3751
|
-
) {
|
|
3752
|
-
|
|
3753
|
-
}
|
|
3823
|
+
) => {
|
|
3824
|
+
condition || fail(optDetails, errConstructor, options);
|
|
3825
|
+
};
|
|
3754
3826
|
|
|
3755
3827
|
/** @type {AssertionFunctions['equal']} */
|
|
3756
3828
|
const equal = (
|
|
@@ -3792,26 +3864,37 @@ const makeAssert = (optRaise = undefined, unredacted = false) => {
|
|
|
3792
3864
|
const assertString = (specimen, optDetails = undefined) =>
|
|
3793
3865
|
assertTypeof(specimen, 'string', optDetails);
|
|
3794
3866
|
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
const assert = assign(baseAssert, {
|
|
3798
|
-
error: makeError,
|
|
3799
|
-
fail,
|
|
3867
|
+
/** @type {Pick<AssertionFunctions, keyof AssertionFunctions>} */
|
|
3868
|
+
const assertionFunctions = {
|
|
3800
3869
|
equal,
|
|
3801
3870
|
typeof: assertTypeof,
|
|
3802
3871
|
string: assertString,
|
|
3872
|
+
fail,
|
|
3873
|
+
};
|
|
3874
|
+
|
|
3875
|
+
/** @type {AssertionUtilities} */
|
|
3876
|
+
const assertionUtilities = {
|
|
3877
|
+
makeError,
|
|
3803
3878
|
note,
|
|
3804
3879
|
details,
|
|
3805
3880
|
Fail,
|
|
3806
3881
|
quote,
|
|
3807
3882
|
bare,
|
|
3808
|
-
|
|
3883
|
+
};
|
|
3884
|
+
|
|
3885
|
+
/** @type {DeprecatedAssertionUtilities} */
|
|
3886
|
+
const deprecated = { error: makeError, makeAssert };
|
|
3887
|
+
|
|
3888
|
+
/** @type {Assert} */
|
|
3889
|
+
const finishedAssert = assign(assert, {
|
|
3890
|
+
...assertionFunctions,
|
|
3891
|
+
...assertionUtilities,
|
|
3892
|
+
...deprecated,
|
|
3809
3893
|
});
|
|
3810
|
-
return freeze(
|
|
3894
|
+
return freeze(finishedAssert);
|
|
3811
3895
|
};$h͏_once.makeAssert(makeAssert);
|
|
3812
3896
|
freeze(makeAssert);
|
|
3813
3897
|
|
|
3814
|
-
|
|
3815
3898
|
/** @type {Assert} */
|
|
3816
3899
|
const assert = makeAssert();$h͏_once.assert(assert);
|
|
3817
3900
|
|
|
@@ -4683,6 +4766,11 @@ const CommonMath = {
|
|
|
4683
4766
|
seal: fn,
|
|
4684
4767
|
setPrototypeOf: fn,
|
|
4685
4768
|
values: fn,
|
|
4769
|
+
'RegisteredSymbol(harden)': {
|
|
4770
|
+
...fn,
|
|
4771
|
+
// Installed with hardenTaming: 'unsafe'
|
|
4772
|
+
isFake: 'boolean',
|
|
4773
|
+
},
|
|
4686
4774
|
// https://github.com/tc39/proposal-accessible-object-hasownproperty
|
|
4687
4775
|
hasOwn: fn,
|
|
4688
4776
|
// https://github.com/tc39/proposal-array-grouping
|
|
@@ -6892,6 +6980,7 @@ function sampleGlobals(globalObject, newPropertyNames) {
|
|
|
6892
6980
|
'%ErrorPrototype%': {
|
|
6893
6981
|
name: true // set by "precond", "ava", "node-fetch"
|
|
6894
6982
|
},
|
|
6983
|
+
|
|
6895
6984
|
'%IteratorPrototype%': {
|
|
6896
6985
|
toString: true,
|
|
6897
6986
|
// https://github.com/tc39/proposal-iterator-helpers
|
|
@@ -6905,6 +6994,8 @@ function sampleGlobals(globalObject, newPropertyNames) {
|
|
|
6905
6994
|
* Moderate enablements are usually good enough for legacy compat.
|
|
6906
6995
|
*/$h͏_once.minEnablements(minEnablements);
|
|
6907
6996
|
const moderateEnablements = {
|
|
6997
|
+
...minEnablements,
|
|
6998
|
+
|
|
6908
6999
|
'%ObjectPrototype%': {
|
|
6909
7000
|
toString: true,
|
|
6910
7001
|
valueOf: true,
|
|
@@ -6917,6 +7008,10 @@ function sampleGlobals(globalObject, newPropertyNames) {
|
|
|
6917
7008
|
[iteratorSymbol]: true // set by mobx generated code (old TS compiler?)
|
|
6918
7009
|
},
|
|
6919
7010
|
|
|
7011
|
+
'%IteratorPrototype%': {
|
|
7012
|
+
[iteratorSymbol]: true // is sometimes used in custom iterators and generators implementations eg. @rive-app/canvas
|
|
7013
|
+
},
|
|
7014
|
+
|
|
6920
7015
|
// Function.prototype has no 'prototype' property to enable.
|
|
6921
7016
|
// Function instances have their own 'name' and 'length' properties
|
|
6922
7017
|
// which are configurable and non-writable. Thus, they are already
|
|
@@ -6982,14 +7077,6 @@ function sampleGlobals(globalObject, newPropertyNames) {
|
|
|
6982
7077
|
name: true,
|
|
6983
7078
|
toString: true,
|
|
6984
7079
|
},
|
|
6985
|
-
|
|
6986
|
-
'%IteratorPrototype%': {
|
|
6987
|
-
toString: true,
|
|
6988
|
-
// https://github.com/tc39/proposal-iterator-helpers
|
|
6989
|
-
constructor: true,
|
|
6990
|
-
// https://github.com/tc39/proposal-iterator-helpers
|
|
6991
|
-
[toStringTagSymbol]: true,
|
|
6992
|
-
},
|
|
6993
7080
|
};
|
|
6994
7081
|
|
|
6995
7082
|
/**
|
|
@@ -7956,7 +8043,8 @@ const sourceMetaEntriesRegExp = new FERAL_REG_EXP(
|
|
|
7956
8043
|
})()
|
|
7957
8044
|
,
|
|
7958
8045
|
// === 33. ses ./src/transforms.js ===
|
|
7959
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let FERAL_REG_EXP,SyntaxError,
|
|
8046
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let FERAL_REG_EXP,SyntaxError,regexpReplace,sealRegexp,stringSearch,stringSlice,stringSplit,freeze,getSourceURL;$h͏_imports([["./commons.js", [["FERAL_REG_EXP",[$h͏_a => (FERAL_REG_EXP = $h͏_a)]],["SyntaxError",[$h͏_a => (SyntaxError = $h͏_a)]],["regexpReplace",[$h͏_a => (regexpReplace = $h͏_a)]],["sealRegexp",[$h͏_a => (sealRegexp = $h͏_a)]],["stringSearch",[$h͏_a => (stringSearch = $h͏_a)]],["stringSlice",[$h͏_a => (stringSlice = $h͏_a)]],["stringSplit",[$h͏_a => (stringSplit = $h͏_a)]],["freeze",[$h͏_a => (freeze = $h͏_a)]]]],["./get-source-url.js", [["getSourceURL",[$h͏_a => (getSourceURL = $h͏_a)]]]]]);
|
|
8047
|
+
|
|
7960
8048
|
|
|
7961
8049
|
|
|
7962
8050
|
|
|
@@ -7993,7 +8081,9 @@ function getLineNumber(src, pattern) {
|
|
|
7993
8081
|
|
|
7994
8082
|
// /////////////////////////////////////////////////////////////////////////////
|
|
7995
8083
|
|
|
7996
|
-
const htmlCommentPattern =
|
|
8084
|
+
const htmlCommentPattern = sealRegexp(
|
|
8085
|
+
new FERAL_REG_EXP(`(?:${'<'}!--|--${'>'})`, 'g'),
|
|
8086
|
+
);
|
|
7997
8087
|
|
|
7998
8088
|
/**
|
|
7999
8089
|
* Conservatively reject the source text if it may contain text that some
|
|
@@ -8058,14 +8148,13 @@ const htmlCommentPattern = new FERAL_REG_EXP(`(?:${'<'}!--|--${'>'})`, 'g');
|
|
|
8058
8148
|
*/$h͏_once.rejectHtmlComments(rejectHtmlComments);
|
|
8059
8149
|
const evadeHtmlCommentTest = src => {
|
|
8060
8150
|
const replaceFn = match => (match[0] === '<' ? '< ! --' : '-- >');
|
|
8061
|
-
return
|
|
8151
|
+
return regexpReplace(htmlCommentPattern, src, replaceFn);
|
|
8062
8152
|
};
|
|
8063
8153
|
|
|
8064
8154
|
// /////////////////////////////////////////////////////////////////////////////
|
|
8065
8155
|
$h͏_once.evadeHtmlCommentTest(evadeHtmlCommentTest);
|
|
8066
|
-
const importPattern =
|
|
8067
|
-
'(^|[^.]|\\.\\.\\.)\\bimport(\\s*(?:\\(|/[/*]))',
|
|
8068
|
-
'g',
|
|
8156
|
+
const importPattern = sealRegexp(
|
|
8157
|
+
new FERAL_REG_EXP('(^|[^.]|\\.\\.\\.)\\bimport(\\s*(?:\\(|/[/*]))', 'g'),
|
|
8069
8158
|
);
|
|
8070
8159
|
|
|
8071
8160
|
/**
|
|
@@ -8128,7 +8217,7 @@ const importPattern = new FERAL_REG_EXP(
|
|
|
8128
8217
|
*/$h͏_once.rejectImportExpressions(rejectImportExpressions);
|
|
8129
8218
|
const evadeImportExpressionTest = src => {
|
|
8130
8219
|
const replaceFn = (_, p1, p2) => `${p1}__import__${p2}`;
|
|
8131
|
-
return
|
|
8220
|
+
return regexpReplace(importPattern, src, replaceFn);
|
|
8132
8221
|
};
|
|
8133
8222
|
|
|
8134
8223
|
// /////////////////////////////////////////////////////////////////////////////
|
|
@@ -8226,7 +8315,9 @@ $h͏_once.applyTransforms(applyTransforms);const transforms=freeze({
|
|
|
8226
8315
|
})()
|
|
8227
8316
|
,
|
|
8228
8317
|
// === 34. ses ./src/scope-constants.js ===
|
|
8229
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,hasOwn,
|
|
8318
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,hasOwn,regexpExec,Set,setHas;$h͏_imports([["./commons.js", [["arrayFilter",[$h͏_a => (arrayFilter = $h͏_a)]],["arrayIncludes",[$h͏_a => (arrayIncludes = $h͏_a)]],["getOwnPropertyDescriptor",[$h͏_a => (getOwnPropertyDescriptor = $h͏_a)]],["getOwnPropertyNames",[$h͏_a => (getOwnPropertyNames = $h͏_a)]],["hasOwn",[$h͏_a => (hasOwn = $h͏_a)]],["regexpExec",[$h͏_a => (regexpExec = $h͏_a)]],["Set",[$h͏_a => (Set = $h͏_a)]],["setHas",[$h͏_a => (setHas = $h͏_a)]]]]]);
|
|
8319
|
+
|
|
8320
|
+
|
|
8230
8321
|
|
|
8231
8322
|
|
|
8232
8323
|
|
|
@@ -8236,11 +8327,12 @@ $h͏_once.applyTransforms(applyTransforms);const transforms=freeze({
|
|
|
8236
8327
|
|
|
8237
8328
|
|
|
8238
8329
|
/**
|
|
8239
|
-
*
|
|
8240
|
-
* In JavaScript you cannot use
|
|
8241
|
-
*
|
|
8330
|
+
* reservedNames
|
|
8331
|
+
* In JavaScript you cannot use reserved words as variable names (except for
|
|
8332
|
+
* "eval", which is specially reserved to prevent shadowing).
|
|
8333
|
+
* https://tc39.es/ecma262/multipage/ecmascript-language-lexical-grammar.html#sec-identifier-names
|
|
8242
8334
|
*/
|
|
8243
|
-
const
|
|
8335
|
+
const reservedNames = new Set([
|
|
8244
8336
|
// 11.6.2.1 Keywords
|
|
8245
8337
|
'await',
|
|
8246
8338
|
'break',
|
|
@@ -8301,7 +8393,10 @@ const keywords = [
|
|
|
8301
8393
|
|
|
8302
8394
|
'this',
|
|
8303
8395
|
'arguments',
|
|
8304
|
-
|
|
8396
|
+
|
|
8397
|
+
// Reserved by us
|
|
8398
|
+
'eval',
|
|
8399
|
+
]);
|
|
8305
8400
|
|
|
8306
8401
|
/**
|
|
8307
8402
|
* identifierPattern
|
|
@@ -8317,24 +8412,12 @@ const identifierPattern = /^[a-zA-Z_$][\w$]*$/;
|
|
|
8317
8412
|
|
|
8318
8413
|
/**
|
|
8319
8414
|
* isValidIdentifierName()
|
|
8320
|
-
*
|
|
8321
|
-
* property names which can be variable names, including the names
|
|
8322
|
-
* of inherited properties. It excludes symbols and names which are
|
|
8323
|
-
* keywords. We drop symbols safely. Currently, this shim refuses
|
|
8324
|
-
* service if any of the names are keywords or keyword-like. This is
|
|
8325
|
-
* safe and only prevent performance optimization.
|
|
8415
|
+
* Is a value allowed as an arbitrary identifier name?
|
|
8326
8416
|
*
|
|
8327
8417
|
* @param {string} name
|
|
8328
8418
|
*/
|
|
8329
|
-
const isValidIdentifierName = name =>
|
|
8330
|
-
|
|
8331
|
-
// /../.test() to guard against the case where RegExp has been poisoned.
|
|
8332
|
-
return (
|
|
8333
|
-
name !== 'eval' &&
|
|
8334
|
-
!arrayIncludes(keywords, name) &&
|
|
8335
|
-
regexpTest(identifierPattern, name)
|
|
8336
|
-
);
|
|
8337
|
-
};
|
|
8419
|
+
const isValidIdentifierName = name =>
|
|
8420
|
+
!setHas(reservedNames, name) && !!regexpExec(identifierPattern, name);
|
|
8338
8421
|
|
|
8339
8422
|
/*
|
|
8340
8423
|
* isImmutableDataProperty
|
|
@@ -8365,12 +8448,12 @@ function isImmutableDataProperty(obj, name) {
|
|
|
8365
8448
|
|
|
8366
8449
|
/**
|
|
8367
8450
|
* getScopeConstants()
|
|
8368
|
-
* What variable names might
|
|
8451
|
+
* What variable names might be brought into scope? These include all
|
|
8369
8452
|
* property names which can be variable names, including the names
|
|
8370
8453
|
* of inherited properties. It excludes symbols and names which are
|
|
8371
8454
|
* keywords. We drop symbols safely. Currently, this shim refuses
|
|
8372
8455
|
* service if any of the names are keywords or keyword-like. This is
|
|
8373
|
-
* safe and only
|
|
8456
|
+
* safe and only affects performance optimization.
|
|
8374
8457
|
*
|
|
8375
8458
|
* @param {object} globalObject
|
|
8376
8459
|
* @param {object} moduleLexicals
|
|
@@ -9657,8 +9740,7 @@ const wrapLogger = (logger, thisArg) =>
|
|
|
9657
9740
|
})()
|
|
9658
9741
|
,
|
|
9659
9742
|
// === 43. ses ./src/error/tame-v8-error-constructor.js ===
|
|
9660
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,
|
|
9661
|
-
|
|
9743
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,weakmapGet,weakmapSet,weaksetAdd,weaksetHas,TypeError;$h͏_imports([["../commons.js", [["WeakMap",[$h͏_a => (WeakMap = $h͏_a)]],["WeakSet",[$h͏_a => (WeakSet = $h͏_a)]],["apply",[$h͏_a => (apply = $h͏_a)]],["arrayFilter",[$h͏_a => (arrayFilter = $h͏_a)]],["arrayJoin",[$h͏_a => (arrayJoin = $h͏_a)]],["arrayMap",[$h͏_a => (arrayMap = $h͏_a)]],["arraySlice",[$h͏_a => (arraySlice = $h͏_a)]],["create",[$h͏_a => (create = $h͏_a)]],["defineProperties",[$h͏_a => (defineProperties = $h͏_a)]],["fromEntries",[$h͏_a => (fromEntries = $h͏_a)]],["reflectSet",[$h͏_a => (reflectSet = $h͏_a)]],["regexpExec",[$h͏_a => (regexpExec = $h͏_a)]],["weakmapGet",[$h͏_a => (weakmapGet = $h͏_a)]],["weakmapSet",[$h͏_a => (weakmapSet = $h͏_a)]],["weaksetAdd",[$h͏_a => (weaksetAdd = $h͏_a)]],["weaksetHas",[$h͏_a => (weaksetHas = $h͏_a)]],["TypeError",[$h͏_a => (TypeError = $h͏_a)]]]]]);
|
|
9662
9744
|
|
|
9663
9745
|
|
|
9664
9746
|
|
|
@@ -9761,12 +9843,12 @@ const FILENAME_CENSORS = [
|
|
|
9761
9843
|
// Exported only so it can be unit tested.
|
|
9762
9844
|
// TODO Move so that it applies not just to v8.
|
|
9763
9845
|
const filterFileName = fileName => {
|
|
9764
|
-
if (
|
|
9765
|
-
//
|
|
9766
|
-
return
|
|
9846
|
+
if (fileName === null) {
|
|
9847
|
+
// Seems to suppress builtins like `Array.every (<anonymous>)`
|
|
9848
|
+
return false;
|
|
9767
9849
|
}
|
|
9768
9850
|
for (const filter of FILENAME_CENSORS) {
|
|
9769
|
-
if (
|
|
9851
|
+
if (regexpExec(filter, fileName)) {
|
|
9770
9852
|
return false;
|
|
9771
9853
|
}
|
|
9772
9854
|
}
|
|
@@ -9777,9 +9859,9 @@ const FILENAME_CENSORS = [
|
|
|
9777
9859
|
// likely url-path prefix, ending in a `/.../` should get dropped.
|
|
9778
9860
|
// Anything to the left of the likely path text is kept.
|
|
9779
9861
|
// Everything to the right of `/.../` is kept. Thus
|
|
9780
|
-
// `'Object.bar (/vat-v1/.../
|
|
9862
|
+
// `'Object.bar (/vat-v1/.../errors/test/deep-send.test.js:13:21)'`
|
|
9781
9863
|
// simplifies to
|
|
9782
|
-
// `'Object.bar (
|
|
9864
|
+
// `'Object.bar (errors/test/deep-send.test.js:13:21)'`.
|
|
9783
9865
|
//
|
|
9784
9866
|
// See thread starting at
|
|
9785
9867
|
// https://github.com/Agoric/agoric-sdk/issues/2326#issuecomment-773020389
|
|
@@ -9789,9 +9871,9 @@ $h͏_once.filterFileName(filterFileName);const CALLSITE_ELLIPSIS_PATTERN1=/^((?:
|
|
|
9789
9871
|
// likely url-path prefix consisting of `.../` should get dropped.
|
|
9790
9872
|
// Anything to the left of the likely path text is kept.
|
|
9791
9873
|
// Everything to the right of `.../` is kept. Thus
|
|
9792
|
-
// `'Object.bar (.../
|
|
9874
|
+
// `'Object.bar (.../errors/test/deep-send.test.js:13:21)'`
|
|
9793
9875
|
// simplifies to
|
|
9794
|
-
// `'Object.bar (
|
|
9876
|
+
// `'Object.bar (errors/test/deep-send.test.js:13:21)'`.
|
|
9795
9877
|
//
|
|
9796
9878
|
// See thread starting at
|
|
9797
9879
|
// https://github.com/Agoric/agoric-sdk/issues/2326#issuecomment-773020389
|
|
@@ -9802,9 +9884,9 @@ const CALLSITE_ELLIPSIS_PATTERN2 = /^((?:.*[( ])?)\.\.\.\/(.+)$/;
|
|
|
9802
9884
|
// dropped.
|
|
9803
9885
|
// Anything to the left of the likely path prefix text is kept. `package/` and
|
|
9804
9886
|
// everything to its right is kept. Thus
|
|
9805
|
-
// `'Object.bar (/Users/markmiller/src/ongithub/agoric/agoric-sdk/packages/
|
|
9887
|
+
// `'Object.bar (/Users/markmiller/src/ongithub/agoric/agoric-sdk/packages/errors/test/deep-send.test.js:13:21)'`
|
|
9806
9888
|
// simplifies to
|
|
9807
|
-
// `'Object.bar (packages/
|
|
9889
|
+
// `'Object.bar (packages/errors/test/deep-send.test.js:13:21)'`.
|
|
9808
9890
|
// Note that `/packages/` is a convention for monorepos encouraged by
|
|
9809
9891
|
// lerna.
|
|
9810
9892
|
const CALLSITE_PACKAGES_PATTERN = /^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/;
|
|
@@ -9814,7 +9896,7 @@ const CALLSITE_PACKAGES_PATTERN = /^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/;
|
|
|
9814
9896
|
// dropped.
|
|
9815
9897
|
// Anything to the left of the likely path prefix text is kept. Everything to
|
|
9816
9898
|
// the right of `file://` is kept. Thus
|
|
9817
|
-
// `'Object.bar (file:///Users/markmiller/src/ongithub/endojs/endo/packages/
|
|
9899
|
+
// `'Object.bar (file:///Users/markmiller/src/ongithub/endojs/endo/packages/errors/test/deep-send.test.js:13:21)'` is unchanged but
|
|
9818
9900
|
// `'Object.bar (file://test/deep-send.test.js:13:21)'`
|
|
9819
9901
|
|
|
9820
9902
|
// simplifies to
|
|
@@ -9880,6 +9962,10 @@ const CALLSITE_PATTERNS = [
|
|
|
9880
9962
|
// const callSiteFilter = _callSite => true;
|
|
9881
9963
|
const callSiteFilter = callSite => {
|
|
9882
9964
|
if (omitFrames) {
|
|
9965
|
+
// eslint-disable-next-line @endo/no-polymorphic-call
|
|
9966
|
+
if (callSite.getFunctionName()?.startsWith('__HIDE_')) {
|
|
9967
|
+
return false;
|
|
9968
|
+
}
|
|
9883
9969
|
// eslint-disable-next-line @endo/no-polymorphic-call
|
|
9884
9970
|
return filterFileName(callSite.getFileName());
|
|
9885
9971
|
}
|
|
@@ -11710,6 +11796,25 @@ $h͏_once.makeVirtualModuleInstance(makeVirtualModuleInstance);const makeModuleI
|
|
|
11710
11796
|
};
|
|
11711
11797
|
notifiers['*'] = notifyStar;
|
|
11712
11798
|
|
|
11799
|
+
const wireUpExportNotifier = (exportName, notify) => {
|
|
11800
|
+
if (!notifiers[exportName] && notify !== false) {
|
|
11801
|
+
notifiers[exportName] = notify;
|
|
11802
|
+
|
|
11803
|
+
// exported live binding state
|
|
11804
|
+
let value;
|
|
11805
|
+
const update = newValue => (value = newValue);
|
|
11806
|
+
notify(update);
|
|
11807
|
+
exportsProps[exportName] = {
|
|
11808
|
+
get() {
|
|
11809
|
+
return value;
|
|
11810
|
+
},
|
|
11811
|
+
set: undefined,
|
|
11812
|
+
enumerable: true,
|
|
11813
|
+
configurable: false,
|
|
11814
|
+
};
|
|
11815
|
+
}
|
|
11816
|
+
};
|
|
11817
|
+
|
|
11713
11818
|
// Per the calling convention for the moduleFunctor generated from
|
|
11714
11819
|
// an ESM, the `imports` function gets called once up front
|
|
11715
11820
|
// to populate or arrange the population of imports and reexports.
|
|
@@ -11763,30 +11868,15 @@ $h͏_once.makeVirtualModuleInstance(makeVirtualModuleInstance);const makeModuleI
|
|
|
11763
11868
|
}
|
|
11764
11869
|
}
|
|
11765
11870
|
if (reexportMap[specifier]) {
|
|
11766
|
-
//
|
|
11871
|
+
// Set up reexport notifiers instantly so they are available in cycles.
|
|
11767
11872
|
for (const [localName, exportedName] of reexportMap[specifier]) {
|
|
11768
|
-
|
|
11873
|
+
wireUpExportNotifier(exportedName, importNotifiers[localName]);
|
|
11769
11874
|
}
|
|
11770
11875
|
}
|
|
11771
11876
|
}
|
|
11772
11877
|
|
|
11773
11878
|
for (const [exportName, notify] of entries(candidateAll)) {
|
|
11774
|
-
|
|
11775
|
-
notifiers[exportName] = notify;
|
|
11776
|
-
|
|
11777
|
-
// exported live binding state
|
|
11778
|
-
let value;
|
|
11779
|
-
const update = newValue => (value = newValue);
|
|
11780
|
-
notify(update);
|
|
11781
|
-
exportsProps[exportName] = {
|
|
11782
|
-
get() {
|
|
11783
|
-
return value;
|
|
11784
|
-
},
|
|
11785
|
-
set: undefined,
|
|
11786
|
-
enumerable: true,
|
|
11787
|
-
configurable: false,
|
|
11788
|
-
};
|
|
11789
|
-
}
|
|
11879
|
+
wireUpExportNotifier(exportName, notify);
|
|
11790
11880
|
}
|
|
11791
11881
|
|
|
11792
11882
|
// Sort the module exports namespace as per spec.
|
|
@@ -12666,7 +12756,6 @@ function makeArguments() {
|
|
|
12666
12756
|
}
|
|
12667
12757
|
|
|
12668
12758
|
const ab = new ArrayBuffer(0);
|
|
12669
|
-
// @ts-expect-error TODO How do I add sliceToImmutable to ArrayBuffer type?
|
|
12670
12759
|
// eslint-disable-next-line @endo/no-polymorphic-call
|
|
12671
12760
|
const iab = ab.sliceToImmutable();
|
|
12672
12761
|
const iabProto = getPrototypeOf(iab);
|
|
@@ -13112,16 +13201,48 @@ const throws = thunk => {
|
|
|
13112
13201
|
})()
|
|
13113
13202
|
,
|
|
13114
13203
|
// === 57. ses ./src/reporting.js ===
|
|
13115
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let
|
|
13204
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let globalThis,assert;$h͏_imports([["./commons.js", [["globalThis",[$h͏_a => (globalThis = $h͏_a)]]]],["./error/assert.js", [["assert",[$h͏_a => (assert = $h͏_a)]]]]]);
|
|
13116
13205
|
|
|
13117
13206
|
|
|
13118
13207
|
/**
|
|
13119
13208
|
* @import {Reporter, GroupReporter} from './reporting-types.js'
|
|
13120
13209
|
*/
|
|
13121
13210
|
|
|
13211
|
+
/* eslint-disable @endo/no-polymorphic-call */
|
|
13212
|
+
/**
|
|
13213
|
+
* To address https://github.com/endojs/endo/issues/2908,
|
|
13214
|
+
* the `consoleReporter` uses the current `console` rather
|
|
13215
|
+
* than the original one.
|
|
13216
|
+
*
|
|
13217
|
+
* @type {GroupReporter}
|
|
13218
|
+
*/
|
|
13219
|
+
const consoleReporter = {
|
|
13220
|
+
warn(...args) {
|
|
13221
|
+
globalThis.console.warn(...args);
|
|
13222
|
+
},
|
|
13223
|
+
error(...args) {
|
|
13224
|
+
globalThis.console.error(...args);
|
|
13225
|
+
},
|
|
13226
|
+
...(globalThis.console?.groupCollapsed
|
|
13227
|
+
? {
|
|
13228
|
+
groupCollapsed(...args) {
|
|
13229
|
+
globalThis.console.groupCollapsed(...args);
|
|
13230
|
+
},
|
|
13231
|
+
}
|
|
13232
|
+
: undefined),
|
|
13233
|
+
...(globalThis.console?.groupEnd
|
|
13234
|
+
? {
|
|
13235
|
+
groupEnd() {
|
|
13236
|
+
globalThis.console.groupEnd();
|
|
13237
|
+
},
|
|
13238
|
+
}
|
|
13239
|
+
: undefined),
|
|
13240
|
+
};
|
|
13241
|
+
/* eslint-enable @endo/no-polymorphic-call */
|
|
13242
|
+
|
|
13122
13243
|
/**
|
|
13123
13244
|
* Creates a suitable reporter for internal errors and warnings out of the
|
|
13124
|
-
* Node.js console.error to ensure all messages to
|
|
13245
|
+
* Node.js console.error to ensure all messages go to stderr, including the
|
|
13125
13246
|
* group label.
|
|
13126
13247
|
* Accounts for the extra space introduced by console.error as a delimiter
|
|
13127
13248
|
* between the indent and subsequent arguments.
|
|
@@ -13165,18 +13286,22 @@ const mute = () => {};
|
|
|
13165
13286
|
if (reporting === 'none') {
|
|
13166
13287
|
return makeReportPrinter(mute);
|
|
13167
13288
|
}
|
|
13168
|
-
if (
|
|
13169
|
-
reporting === 'console' ||
|
|
13170
|
-
globalThis.window === globalThis ||
|
|
13171
|
-
globalThis.importScripts !== undefined
|
|
13172
|
-
) {
|
|
13173
|
-
return console;
|
|
13174
|
-
}
|
|
13175
13289
|
if (globalThis.console !== undefined) {
|
|
13290
|
+
if (
|
|
13291
|
+
reporting === 'console' || // asks for console explicitly
|
|
13292
|
+
globalThis.window === globalThis || // likely on browser
|
|
13293
|
+
globalThis.importScripts !== undefined // likely on worker
|
|
13294
|
+
) {
|
|
13295
|
+
// reporter just delegates directly to the current console
|
|
13296
|
+
return consoleReporter;
|
|
13297
|
+
}
|
|
13298
|
+
assert(reporting === 'platform');
|
|
13176
13299
|
// On Node.js, we send all feedback to stderr, regardless of purported level.
|
|
13177
|
-
|
|
13178
|
-
|
|
13179
|
-
|
|
13300
|
+
// This uses `consoleReporter.error` instead of `console.error` because we
|
|
13301
|
+
// want the constructed reporter to use the `console.error` of the current
|
|
13302
|
+
// `console`, not the `console` that was installed when the reporter
|
|
13303
|
+
// was created.
|
|
13304
|
+
return makeReportPrinter(consoleReporter.error);
|
|
13180
13305
|
}
|
|
13181
13306
|
if (globalThis.print !== undefined) {
|
|
13182
13307
|
return makeReportPrinter(globalThis.print);
|
|
@@ -13220,7 +13345,8 @@ const mute = () => {};
|
|
|
13220
13345
|
})()
|
|
13221
13346
|
,
|
|
13222
13347
|
// === 58. ses ./src/lockdown.js ===
|
|
13223
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let getenv,FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,getOwnPropertyNames,getPrototypeOf,makeHardener,makeIntrinsicsCollector,removeUnpermittedIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameModuleSource,tameConsole,tameErrorConstructor,assert,makeAssert,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor,tameFauxDataProperties,tameRegeneratorRuntime,shimArrayBufferTransfer,reportInGroup,chooseReporter;$h͏_imports([["@endo/env-options", [["getEnvironmentOption",[$h͏_a => (getenv = $h͏_a)]]]],["@endo/immutable-arraybuffer/shim.js", []],["./commons.js", [["FERAL_FUNCTION",[$h͏_a => (FERAL_FUNCTION = $h͏_a)]],["FERAL_EVAL",[$h͏_a => (FERAL_EVAL = $h͏_a)]],["TypeError",[$h͏_a => (TypeError = $h͏_a)]],["arrayFilter",[$h͏_a => (arrayFilter = $h͏_a)]],["globalThis",[$h͏_a => (globalThis = $h͏_a)]],["is",[$h͏_a => (is = $h͏_a)]],["ownKeys",[$h͏_a => (ownKeys = $h͏_a)]],["stringSplit",[$h͏_a => (stringSplit = $h͏_a)]],["noEvalEvaluate",[$h͏_a => (noEvalEvaluate = $h͏_a)]],["getOwnPropertyNames",[$h͏_a => (getOwnPropertyNames = $h͏_a)]],["getPrototypeOf",[$h͏_a => (getPrototypeOf = $h͏_a)]]]],["./make-hardener.js", [["makeHardener",[$h͏_a => (makeHardener = $h͏_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector",[$h͏_a => (makeIntrinsicsCollector = $h͏_a)]]]],["./permits-intrinsics.js", [["default",[$h͏_a => (removeUnpermittedIntrinsics = $h͏_a)]]]],["./tame-function-constructors.js", [["default",[$h͏_a => (tameFunctionConstructors = $h͏_a)]]]],["./tame-date-constructor.js", [["default",[$h͏_a => (tameDateConstructor = $h͏_a)]]]],["./tame-math-object.js", [["default",[$h͏_a => (tameMathObject = $h͏_a)]]]],["./tame-regexp-constructor.js", [["default",[$h͏_a => (tameRegExpConstructor = $h͏_a)]]]],["./enable-property-overrides.js", [["default",[$h͏_a => (enablePropertyOverrides = $h͏_a)]]]],["./tame-locale-methods.js", [["default",[$h͏_a => (tameLocaleMethods = $h͏_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties",[$h͏_a => (setGlobalObjectConstantProperties = $h͏_a)]],["setGlobalObjectMutableProperties",[$h͏_a => (setGlobalObjectMutableProperties = $h͏_a)]],["setGlobalObjectEvaluators",[$h͏_a => (setGlobalObjectEvaluators = $h͏_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator",[$h͏_a => (makeSafeEvaluator = $h͏_a)]]]],["./permits.js", [["initialGlobalPropertyNames",[$h͏_a => (initialGlobalPropertyNames = $h͏_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString",[$h͏_a => (tameFunctionToString = $h͏_a)]]]],["./tame-domains.js", [["tameDomains",[$h͏_a => (tameDomains = $h͏_a)]]]],["./tame-module-source.js", [["tameModuleSource",[$h͏_a => (tameModuleSource = $h͏_a)]]]],["./error/tame-console.js", [["tameConsole",[$h͏_a => (tameConsole = $h͏_a)]]]],["./error/tame-error-constructor.js", [["default",[$h͏_a => (tameErrorConstructor = $h͏_a)]]]],["./error/assert.js", [["assert",[$h͏_a => (assert = $h͏_a)]],["makeAssert",[$h͏_a => (makeAssert = $h͏_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics",[$h͏_a => (getAnonymousIntrinsics = $h͏_a)]]]],["./compartment.js", [["makeCompartmentConstructor",[$h͏_a => (makeCompartmentConstructor = $h͏_a)]]]],["./tame-harden.js", [["tameHarden",[$h͏_a => (tameHarden = $h͏_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor",[$h͏_a => (tameSymbolConstructor = $h͏_a)]]]],["./tame-faux-data-properties.js", [["tameFauxDataProperties",[$h͏_a => (tameFauxDataProperties = $h͏_a)]]]],["./tame-regenerator-runtime.js", [["tameRegeneratorRuntime",[$h͏_a => (tameRegeneratorRuntime = $h͏_a)]]]],["./shim-arraybuffer-transfer.js", [["shimArrayBufferTransfer",[$h͏_a => (shimArrayBufferTransfer = $h͏_a)]]]],["./reporting.js", [["reportInGroup",[$h͏_a => (reportInGroup = $h͏_a)]],["chooseReporter",[$h͏_a => (chooseReporter = $h͏_a)]]]]]);
|
|
13348
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let getenv,FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,globalThis,is,ownKeys,stringSplit,symbolFor,noEvalEvaluate,getOwnPropertyNames,getPrototypeOf,makeHardener,makeIntrinsicsCollector,removeUnpermittedIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameModuleSource,tameConsole,tameErrorConstructor,assert,makeAssert,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor,tameFauxDataProperties,tameRegeneratorRuntime,shimArrayBufferTransfer,reportInGroup,chooseReporter;$h͏_imports([["@endo/env-options", [["getEnvironmentOption",[$h͏_a => (getenv = $h͏_a)]]]],["@endo/immutable-arraybuffer/shim.js", []],["./commons.js", [["FERAL_FUNCTION",[$h͏_a => (FERAL_FUNCTION = $h͏_a)]],["FERAL_EVAL",[$h͏_a => (FERAL_EVAL = $h͏_a)]],["TypeError",[$h͏_a => (TypeError = $h͏_a)]],["arrayFilter",[$h͏_a => (arrayFilter = $h͏_a)]],["globalThis",[$h͏_a => (globalThis = $h͏_a)]],["is",[$h͏_a => (is = $h͏_a)]],["ownKeys",[$h͏_a => (ownKeys = $h͏_a)]],["stringSplit",[$h͏_a => (stringSplit = $h͏_a)]],["symbolFor",[$h͏_a => (symbolFor = $h͏_a)]],["noEvalEvaluate",[$h͏_a => (noEvalEvaluate = $h͏_a)]],["getOwnPropertyNames",[$h͏_a => (getOwnPropertyNames = $h͏_a)]],["getPrototypeOf",[$h͏_a => (getPrototypeOf = $h͏_a)]]]],["./make-hardener.js", [["makeHardener",[$h͏_a => (makeHardener = $h͏_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector",[$h͏_a => (makeIntrinsicsCollector = $h͏_a)]]]],["./permits-intrinsics.js", [["default",[$h͏_a => (removeUnpermittedIntrinsics = $h͏_a)]]]],["./tame-function-constructors.js", [["default",[$h͏_a => (tameFunctionConstructors = $h͏_a)]]]],["./tame-date-constructor.js", [["default",[$h͏_a => (tameDateConstructor = $h͏_a)]]]],["./tame-math-object.js", [["default",[$h͏_a => (tameMathObject = $h͏_a)]]]],["./tame-regexp-constructor.js", [["default",[$h͏_a => (tameRegExpConstructor = $h͏_a)]]]],["./enable-property-overrides.js", [["default",[$h͏_a => (enablePropertyOverrides = $h͏_a)]]]],["./tame-locale-methods.js", [["default",[$h͏_a => (tameLocaleMethods = $h͏_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties",[$h͏_a => (setGlobalObjectConstantProperties = $h͏_a)]],["setGlobalObjectMutableProperties",[$h͏_a => (setGlobalObjectMutableProperties = $h͏_a)]],["setGlobalObjectEvaluators",[$h͏_a => (setGlobalObjectEvaluators = $h͏_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator",[$h͏_a => (makeSafeEvaluator = $h͏_a)]]]],["./permits.js", [["initialGlobalPropertyNames",[$h͏_a => (initialGlobalPropertyNames = $h͏_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString",[$h͏_a => (tameFunctionToString = $h͏_a)]]]],["./tame-domains.js", [["tameDomains",[$h͏_a => (tameDomains = $h͏_a)]]]],["./tame-module-source.js", [["tameModuleSource",[$h͏_a => (tameModuleSource = $h͏_a)]]]],["./error/tame-console.js", [["tameConsole",[$h͏_a => (tameConsole = $h͏_a)]]]],["./error/tame-error-constructor.js", [["default",[$h͏_a => (tameErrorConstructor = $h͏_a)]]]],["./error/assert.js", [["assert",[$h͏_a => (assert = $h͏_a)]],["makeAssert",[$h͏_a => (makeAssert = $h͏_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics",[$h͏_a => (getAnonymousIntrinsics = $h͏_a)]]]],["./compartment.js", [["makeCompartmentConstructor",[$h͏_a => (makeCompartmentConstructor = $h͏_a)]]]],["./tame-harden.js", [["tameHarden",[$h͏_a => (tameHarden = $h͏_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor",[$h͏_a => (tameSymbolConstructor = $h͏_a)]]]],["./tame-faux-data-properties.js", [["tameFauxDataProperties",[$h͏_a => (tameFauxDataProperties = $h͏_a)]]]],["./tame-regenerator-runtime.js", [["tameRegeneratorRuntime",[$h͏_a => (tameRegeneratorRuntime = $h͏_a)]]]],["./shim-arraybuffer-transfer.js", [["shimArrayBufferTransfer",[$h͏_a => (shimArrayBufferTransfer = $h͏_a)]]]],["./reporting.js", [["reportInGroup",[$h͏_a => (reportInGroup = $h͏_a)]],["chooseReporter",[$h͏_a => (chooseReporter = $h͏_a)]]]]]);
|
|
13349
|
+
|
|
13224
13350
|
|
|
13225
13351
|
|
|
13226
13352
|
|
|
@@ -13585,6 +13711,30 @@ const probeHostEvaluators = () => {
|
|
|
13585
13711
|
|
|
13586
13712
|
const intrinsics = finalIntrinsics();
|
|
13587
13713
|
|
|
13714
|
+
// Install Object[@harden] or abort.
|
|
13715
|
+
const symbolForHarden = symbolFor('harden');
|
|
13716
|
+
const priorHarden = intrinsics.Object[symbolForHarden];
|
|
13717
|
+
if (priorHarden) {
|
|
13718
|
+
// By convention, if a module like @endo/harden gets used before lockdown,
|
|
13719
|
+
// it will install itself as a non-configurable, non-writable property over
|
|
13720
|
+
// Object[@harden] so that versions of SES predating the introduction of
|
|
13721
|
+
// Object[@harden] will fail to lockdown because they cannot remove an
|
|
13722
|
+
// unknown intrinsic.
|
|
13723
|
+
// All newer versions explicitly check for Object[@harden] (here).
|
|
13724
|
+
// The @endo/harden implementation additionally captures a stack trace
|
|
13725
|
+
// where harden was first used to assist developers in tracking down the
|
|
13726
|
+
// hardened module that was initialized before lockdown.
|
|
13727
|
+
if (priorHarden.lockdownError) {
|
|
13728
|
+
throw priorHarden.lockdownError;
|
|
13729
|
+
}
|
|
13730
|
+
// And in the event a library installs Object[@harden] without leaving a
|
|
13731
|
+
// hint, we fall back to a generic lockdown error.
|
|
13732
|
+
throw new TypeError(
|
|
13733
|
+
'Cannot lockdown (repairIntrinsics) if a prior harden implementation has been used and installed. Check for libraries using @endo/harden before lockdown.',
|
|
13734
|
+
);
|
|
13735
|
+
}
|
|
13736
|
+
intrinsics.Object[symbolForHarden] = tamedHarden;
|
|
13737
|
+
|
|
13588
13738
|
const hostIntrinsics = { __proto__: null };
|
|
13589
13739
|
|
|
13590
13740
|
// The Node.js Buffer is a derived class of Uint8Array, and as such is often
|
|
@@ -13626,19 +13776,16 @@ const probeHostEvaluators = () => {
|
|
|
13626
13776
|
);
|
|
13627
13777
|
}
|
|
13628
13778
|
|
|
13779
|
+
// The default `assert` installed by `assert-shim.js` does not redact errors,
|
|
13780
|
+
// leaving `lockdown` or `repairIntrinsics` with the obligation to replace it
|
|
13781
|
+
// with a redacting version, unless the caller opts-out with errorTaming set
|
|
13782
|
+
// to `unsafe` or `unsafe-debug`.
|
|
13783
|
+
// The inverse was true through version 1.13.0, except the configuration
|
|
13784
|
+
// was disregarded and the redacting `assert` left in place if lexical
|
|
13785
|
+
// `assert` differed from `globalThis.assert`.
|
|
13629
13786
|
// @ts-ignore assert is absent on globalThis type def.
|
|
13630
|
-
if (
|
|
13631
|
-
|
|
13632
|
-
globalThis.assert === assert
|
|
13633
|
-
) {
|
|
13634
|
-
// If errorTaming is 'unsafe' or 'unsafe-debug' we replace the
|
|
13635
|
-
// global assert with
|
|
13636
|
-
// one whose `details` template literal tag does not redact
|
|
13637
|
-
// unmarked substitution values. IOW, it blabs information that
|
|
13638
|
-
// was supposed to be secret from callers, as an aid to debugging
|
|
13639
|
-
// at a further cost in safety.
|
|
13640
|
-
// @ts-ignore assert is absent on globalThis type def.
|
|
13641
|
-
globalThis.assert = makeAssert(undefined, true);
|
|
13787
|
+
if (errorTaming !== 'unsafe' && errorTaming !== 'unsafe-debug') {
|
|
13788
|
+
globalThis.assert = makeAssert();
|
|
13642
13789
|
}
|
|
13643
13790
|
|
|
13644
13791
|
// Replace *Locale* methods with their non-locale equivalents
|
|
@@ -13846,10 +13993,10 @@ globalThis.Compartment = makeCompartmentConstructor(
|
|
|
13846
13993
|
})()
|
|
13847
13994
|
,
|
|
13848
13995
|
// === 61. ses ./src/assert-shim.js ===
|
|
13849
|
-
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let globalThis,
|
|
13996
|
+
({imports:$h͏_imports,liveVar:$h͏_live,onceVar:$h͏_once,import:$h͏_import,importMeta:$h͏____meta})=>(function(){'use strict';let globalThis,makeAssert;$h͏_imports([["./commons.js", [["globalThis",[$h͏_a => (globalThis = $h͏_a)]]]],["./error/assert.js", [["makeAssert",[$h͏_a => (makeAssert = $h͏_a)]]]]]);
|
|
13850
13997
|
|
|
13851
13998
|
|
|
13852
|
-
globalThis.assert =
|
|
13999
|
+
globalThis.assert = makeAssert(undefined, true);
|
|
13853
14000
|
})()
|
|
13854
14001
|
,
|
|
13855
14002
|
// === 62. ses ./src/console-shim.js ===
|