@braidlabs/core 0.6.0 → 0.7.0
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/package.json +1 -1
- package/src/adapters/adapter.d.ts +11 -0
- package/src/adapters/adapter.js.map +1 -1
- package/src/adapters/compat-adapter.js +2 -2
- package/src/adapters/compat-adapter.js.map +1 -1
- package/src/compat/born-inert-scripts.d.ts +2 -0
- package/src/compat/born-inert-scripts.js +39 -0
- package/src/compat/born-inert-scripts.js.map +1 -1
- package/src/compat/cookie-partition.d.ts +25 -0
- package/src/compat/cookie-partition.js +79 -0
- package/src/compat/cookie-partition.js.map +1 -0
- package/src/compat/document-member-classification.js +3 -2
- package/src/compat/document-member-classification.js.map +1 -1
- package/src/compat/document-overrides.d.ts +6 -6
- package/src/compat/document-overrides.js +23 -0
- package/src/compat/document-overrides.js.map +1 -1
- package/src/compat/fragment-boundary.d.ts +5 -0
- package/src/compat/fragment-boundary.js +159 -12
- package/src/compat/fragment-boundary.js.map +1 -1
- package/src/compat/html-policy.d.ts +50 -0
- package/src/compat/html-policy.js +155 -0
- package/src/compat/html-policy.js.map +1 -0
- package/src/compat/realm-patches.d.ts +2 -1
- package/src/compat/realm-patches.js +117 -3
- package/src/compat/realm-patches.js.map +1 -1
- package/src/compat/script-execution.d.ts +24 -0
- package/src/compat/script-execution.js +177 -10
- package/src/compat/script-execution.js.map +1 -1
- package/src/compat/storage-partition.d.ts +47 -0
- package/src/compat/storage-partition.js +291 -0
- package/src/compat/storage-partition.js.map +1 -0
- package/src/compat/subresource-urls.d.ts +41 -0
- package/src/compat/subresource-urls.js +133 -0
- package/src/compat/subresource-urls.js.map +1 -0
- package/src/config.d.ts +28 -0
- package/src/config.js +24 -0
- package/src/config.js.map +1 -1
- package/src/elements/boot-gate.d.ts +47 -0
- package/src/elements/boot-gate.js +207 -0
- package/src/elements/boot-gate.js.map +1 -0
- package/src/elements/fragment-slot.d.ts +34 -0
- package/src/elements/fragment-slot.js +282 -24
- package/src/elements/fragment-slot.js.map +1 -1
- package/src/elements/late-content.d.ts +44 -0
- package/src/elements/late-content.js +107 -0
- package/src/elements/late-content.js.map +1 -0
- package/src/elements/prefetch.d.ts +27 -0
- package/src/elements/prefetch.js +100 -0
- package/src/elements/prefetch.js.map +1 -0
- package/src/elements/prerequisites.d.ts +42 -0
- package/src/elements/prerequisites.js +133 -0
- package/src/elements/prerequisites.js.map +1 -0
- package/src/elements/recovery.d.ts +46 -0
- package/src/elements/recovery.js +59 -0
- package/src/elements/recovery.js.map +1 -0
- package/src/errors.d.ts +4 -1
- package/src/errors.js +2 -0
- package/src/errors.js.map +1 -1
- package/src/index.d.ts +4 -1
- package/src/index.js +10 -1
- package/src/index.js.map +1 -1
- package/src/realm/realm-manager.js +23 -0
- package/src/realm/realm-manager.js.map +1 -1
- package/src/weave/capabilities.d.ts +35 -7
- package/src/weave/capabilities.js +17 -0
- package/src/weave/capabilities.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script-execution.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/script-execution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"script-execution.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/script-execution.ts"],"names":[],"mappings":"AAAA;;iDAEiD;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;GAIG;AAEH,MAAM,UAAU,kBAAkB,CAChC,YAAe,EACf,eAAyB,EACzB,aAAwB;IAExB,gGAAgG;IAChG,iGAAiG;IACjG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,YAAY,YAAY,WAAW,IAAI,YAAY,YAAY,gBAAgB,CAAC,EAAE,CAAC;QACzG,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,kHAAkH;IAClH,IAAI,YAAY,YAAY,WAAW,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;QACzG,uBAAuB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,+EAA+E;IAC/E,IAAI,YAAY,YAAY,iBAAiB,EAAE,CAAC;QAC9C,gIAAgI;QAChI,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1G,6BAA6B,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAC3D,OAAO,eAAe,EAAE,CAAC;QAC3B,CAAC;QAED,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAEzC,2FAA2F;QAC3F,+EAA+E;QAC/E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,8BAA8B,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAClF,OAAO,eAAe,EAAE,CAAC;QAC3B,CAAC;QAED,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAChC,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0HAA0H;IAC1H,IACE,YAAY,YAAY,eAAe;QACvC,CAAC,YAAY,CAAC,GAAG,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,KAAK,UAAU,IAAI,YAAY,CAAC,GAAG,KAAK,eAAe,CAAC,EAC3G,CAAC;QACD,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,uBAAuB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,qBAAqB,GAAoD,YAAY,CAAC,gBAAgB,EAAE,CAC5G,qEAAqE,CACtE,CAAC;IAEF,4EAA4E;IAC5E,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,qFAAqF;IACrF,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACzC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,qBAAqB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAwB,EACxB,gBAA4B,EAC5B,aAAwB;IAExB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,eAAe,GAA4C,EAAE,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,YAAY,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC9I,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CACV,kKAAkK,EAClK,IAAI,CACL,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,IAAI,YAAY,WAAW,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,CAAC;YACzF,uBAAuB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,YAAY,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1E,6BAA6B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,IACL,IAAI,YAAY,eAAe;YAC/B,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,GAAG,KAAK,eAAe,CAAC,EACnF,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChG,MAAM,MAAM,GACV,IACD,CAAC,gBAAgB,EAAE,CAAC,qEAAqE,CAAC,CAAC;YAC5F,MAAM,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,gBAAgB,EAAE,CAAC;IACnB,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA4C;IACpE,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;QACzC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAA4C;IAClE,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;QACzC,yFAAyF;QACzF,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,mFAAmF;IACrF,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAA4C,EAAE,aAAuB;IAC3F,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;QACzC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,WAAuB,EAAE,aAAuB;IAC9F,6FAA6F;IAC7F,gDAAgD;IAChD,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1F,uBAAuB,CAAC,OAAO,EAAE,aAAa,CAAC,CAChD,CAAC;IAEF,MAAM,eAAe,GAAG;QACtB,GAAG,WAAW,CAAC,gBAAgB,CAC7B,uFAAuF,CACxF;KACyC,CAAC;IAE7C,eAAe,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACvC,IAAI,YAAY,YAAY,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,kBAAkB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAwC,CAAC;AACxF,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,OAAO,EAAuC,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA8B,EAAE,aAAuB;IACxF,2FAA2F;IAC3F,6FAA6F;IAC7F,IAAI,8BAA8B,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iFAAiF;IACjF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6FAA6F;IAC7F,+CAA+C;IAC/C,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,kDAAkD,CAAC,CAAC;IAE3G,mBAAmB,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IAEpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAA0B,EAAE,aAAuB;IACzF,yFAAyF;IACzF,mDAAmD;IACnD,IAAI,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAElC,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEzB,4CAA4C;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,WAAY,CAAC,KAAK,CAAC;IAE/C,oEAAoE;IACpE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QACrC,SAAS,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACtC,SAAS,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClE,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,WAAW,EACX,UAAU,EACV,aAAa,GAKd;IACC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,yFAAyF;QACzF,wFAAwF;QACxF,qEAAqE;QACrE,EAAE;QACF,gFAAgF;QAChF,oFAAoF;QACpF,oEAAoE;QACpE,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAsB,CAAC;QACjG,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC/C,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IACnD,CAAC;IAED,oEAAoE;IACpE,0FAA0F;IAC1F,uGAAuG;IACvG,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAElD,sEAAsE;IACtE,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;QACvC,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACxC,WAAW,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACpE,8BAA8B,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,IAAI,OAAO,EAAmB,CAAC;AAEvD,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAEpC,wEAAwE;AACxE,MAAM,CAAC,MAAM,cAAc,GACzB,2GAA2G,CAAC;AAE9G;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,MAAM,KAAK,GAAiB,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC7B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAA2B,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAuB,CAAC,CAAC,CAAC;QAC/G,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAE,QAAgC,CAAC,OAAO,CAAC,CAAC,CAAC;IACpH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,kFAAkF;IAClF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAC/B,4FAA4F;IAC5F,yFAAyF;IACzF,IAAI,UAAU,EAAE,CAAC;QACf,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzD,CAAC;IACD,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,2GAA2G;AAC3G,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,wBAAwB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,0BAA0B;IAC1G,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB;IACtG,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,iBAAiB;IACnG,mBAAmB,EAAE,mBAAmB;CACzC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,kBAAkB,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnJ,CAAC;AAED;;;;;;;;;GASG;AACH,IAAI,eAAqC,CAAC;AAC1C,MAAM,aAAa,GAAG,IAAI,OAAO,EAAqB,CAAC;AAEvD,SAAS,SAAS,CAAC,IAAU;IAC3B,IAAI,IAAI,YAAY,iBAAiB;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,YAAY,OAAO,IAAI,IAAI,YAAY,gBAAgB;QAAE,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7G,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gGAAgG;AAChG,SAAS,eAAe,CAAC,OAA4B;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,EAAE,CAAC;QACzE,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC3D,IAAI,OAAO;YAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;YAC9C,IAAI,IAAI,KAAK,IAAI;gBAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;gBACzD,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,OAAO;gBAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;YACrC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,eAAe,KAAK,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACnE,OAAO,eAAe,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,0BAA0B,CAAC,IAAU;IACnD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;QACrC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;YACnD,YAAY,CAAC,IAAI,CAAC,IAAiB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAA2B,CAAC,CAAwB,CAAC;IAChJ,IAAI,IAAI,YAAY,iBAAiB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM;YAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;;YACrD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AACvD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACvE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACvD,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AAC1D,MAAM,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAqB;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC9B,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAqB;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,4BAA4B;QAC5B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,6BAA6B,CAAC,MAAyB,EAAE,aAAuB;IACvF,gGAAgG;IAChG,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC;IAE3B,0EAA0E;IAC1E,WAAW,CAAC,WAAW,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,WAAW,CAAC,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,UAAW,CAAC,MAAM,EAAE,CAAC;IAEjC,6EAA6E;IAC7E,8DAA8D;IAC9D,mBAAmB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IAEhE,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,CAAC;IACtD,WAAW,CAAC,WAAW,GAAG,UAAU,IAAI;QACtC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9E,8EAA8E;QAC9E,WAAW,CAAC,WAAW,GAAG,qBAAqB,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,IAAI,uBAAyD,CAAC;AAE9D,SAAS,sBAAsB;IAC7B,uBAAuB,KAAK,IAAI,GAAG,CAAC;QAClC,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC;QACxC,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC7B,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAa,EAAE,aAAuB;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;IACrC,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;YAC5B,WAAW,EAAE;gBACX,GAAG;oBACD,OAAO,aAAa,CAAC,WAAW,CAAC;gBACnC,CAAC;aACF;YACD,YAAY,EAAE;gBACZ,GAAG;oBACD,OAAO,aAAa,CAAC,YAAY,CAAC;gBACpC,CAAC;aACF;YACD,QAAQ,EAAE;gBACR,GAAG;oBACD,OAAO,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACjD,CAAC;aACF;YACD,OAAO,EAAE;gBACP,GAAG;oBACD,OAAO,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACjD,CAAC;aACF;SACF,CAAC,CAAC;QAEH,yCAAyC;QACzC,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,6FAA6F;QAC7F,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;IAC/D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-fragment Web Storage for trusted fragments.
|
|
3
|
+
*
|
|
4
|
+
* A compat realm is a same-origin iframe, so its `localStorage` and `sessionStorage` *are* the
|
|
5
|
+
* host's. Two fragments whose libraries keep state under the same fixed key — an OIDC client's
|
|
6
|
+
* `okta-token-storage`, a PKCE transaction — overwrite each other, and the `storage` events those
|
|
7
|
+
* writes raise reach every other realm on the page, where a sync listener dutifully copies the
|
|
8
|
+
* wrong value back. A partition gives the fragment a view over the native store in which every key
|
|
9
|
+
* it sees is its own, and events for anyone else's keys never arrive.
|
|
10
|
+
*
|
|
11
|
+
* It is an accident barrier, not a security boundary: same-origin code can still reach
|
|
12
|
+
* `top.localStorage`. See docs/braid-boundary.md.
|
|
13
|
+
*
|
|
14
|
+
* Storage keys are prefixed `braid:storage:<partition>:`. A partition is the fragment's id by
|
|
15
|
+
* default (`storage: 'partitioned'`), or a name several fragments share
|
|
16
|
+
* (`storage: { partition: 'kcd' }`), which is how two fragments using one issuer keep one login.
|
|
17
|
+
*/
|
|
18
|
+
/** The native-store key prefix for a partition. Encoded so a name can never reach into another's. */
|
|
19
|
+
export declare function storagePartitionPrefix(partition: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* A `Storage` that reads and writes only the keys under `prefix`, with the prefix out of sight.
|
|
22
|
+
*
|
|
23
|
+
* A Proxy rather than a subclass, because `Storage` exposes its entries as named properties —
|
|
24
|
+
* `localStorage.token = 'x'`, `Object.keys(localStorage)` — and only a Proxy can answer those.
|
|
25
|
+
* Members (`getItem`, `length`…) come from the realm's own `Storage.prototype`, patched to route a
|
|
26
|
+
* view to its own entries.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createStorageView(native: Storage, prefix: string, storagePrototype: object,
|
|
29
|
+
/** Told of every write that changes the store, which is every write that raises a `storage` event. */
|
|
30
|
+
onChange?: (nativeKey: string, newValue: string | null) => void): Storage;
|
|
31
|
+
/** What a `storage` event looks like from inside the partition, or `null` if it is not its event. */
|
|
32
|
+
export interface PartitionedStorageEvent {
|
|
33
|
+
key: string | null;
|
|
34
|
+
storageArea: Storage;
|
|
35
|
+
}
|
|
36
|
+
export interface StoragePartition {
|
|
37
|
+
/** Translates a `storage` event raised on the host window into the partition's terms. */
|
|
38
|
+
adaptEvent(event: StorageEvent): PartitionedStorageEvent | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Replaces the realm window's `localStorage` and `sessionStorage` with views on `partition`.
|
|
42
|
+
*
|
|
43
|
+
* Must run before any fragment script, which the compat boot guarantees: the realm stub has no
|
|
44
|
+
* scripts of its own, and the fragment's are activated only after the patches are in place.
|
|
45
|
+
* Reaching for a store that the browser refuses (some privacy modes throw) throws, as natively.
|
|
46
|
+
*/
|
|
47
|
+
export declare function installStoragePartition(realmWindow: Window, mainWindow: Window, partition: string, signal?: AbortSignal): StoragePartition;
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-fragment Web Storage for trusted fragments.
|
|
3
|
+
*
|
|
4
|
+
* A compat realm is a same-origin iframe, so its `localStorage` and `sessionStorage` *are* the
|
|
5
|
+
* host's. Two fragments whose libraries keep state under the same fixed key — an OIDC client's
|
|
6
|
+
* `okta-token-storage`, a PKCE transaction — overwrite each other, and the `storage` events those
|
|
7
|
+
* writes raise reach every other realm on the page, where a sync listener dutifully copies the
|
|
8
|
+
* wrong value back. A partition gives the fragment a view over the native store in which every key
|
|
9
|
+
* it sees is its own, and events for anyone else's keys never arrive.
|
|
10
|
+
*
|
|
11
|
+
* It is an accident barrier, not a security boundary: same-origin code can still reach
|
|
12
|
+
* `top.localStorage`. See docs/braid-boundary.md.
|
|
13
|
+
*
|
|
14
|
+
* Storage keys are prefixed `braid:storage:<partition>:`. A partition is the fragment's id by
|
|
15
|
+
* default (`storage: 'partitioned'`), or a name several fragments share
|
|
16
|
+
* (`storage: { partition: 'kcd' }`), which is how two fragments using one issuer keep one login.
|
|
17
|
+
*/
|
|
18
|
+
const PREFIX = 'braid:storage:';
|
|
19
|
+
/** The native-store key prefix for a partition. Encoded so a name can never reach into another's. */
|
|
20
|
+
export function storagePartitionPrefix(partition) {
|
|
21
|
+
return `${PREFIX}${encodeURIComponent(partition)}:`;
|
|
22
|
+
}
|
|
23
|
+
const METHODS = ['getItem', 'setItem', 'removeItem', 'clear', 'key'];
|
|
24
|
+
/** The argument counts `Storage`'s methods require, for the TypeError a native call throws. */
|
|
25
|
+
const ARITY = { getItem: 1, setItem: 2, removeItem: 1, clear: 0, key: 1 };
|
|
26
|
+
const patched = new WeakMap();
|
|
27
|
+
function requireArguments(method, args) {
|
|
28
|
+
if (args.length < ARITY[method]) {
|
|
29
|
+
throw new TypeError(`Failed to execute '${method}' on 'Storage': ${ARITY[method]} argument${ARITY[method] > 1 ? 's' : ''} required, but only ${args.length} present.`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Makes the realm's own `Storage.prototype` answer for views, once per realm.
|
|
34
|
+
*
|
|
35
|
+
* A view is a Proxy, not a platform object, so the native methods would refuse it
|
|
36
|
+
* (`Storage.prototype.getItem.call(localStorage, k)` is an "Illegal invocation"). Wrapping them —
|
|
37
|
+
* the realm's copy only; the host's `Storage` is never touched — lets every route to a method work:
|
|
38
|
+
* `localStorage.getItem(k)`, `.call(localStorage, …)`, and a library that monkey-patches
|
|
39
|
+
* `Storage.prototype.setItem` sees the fragment's own key names. The views themselves call the
|
|
40
|
+
* captured originals, so such a patch runs once per call, as it would natively.
|
|
41
|
+
*/
|
|
42
|
+
function patchStoragePrototype(storagePrototype) {
|
|
43
|
+
const existing = patched.get(storagePrototype);
|
|
44
|
+
if (existing)
|
|
45
|
+
return existing;
|
|
46
|
+
const descriptor = (name) => Object.getOwnPropertyDescriptor(storagePrototype, name);
|
|
47
|
+
const original = Object.fromEntries(METHODS.map((name) => [name, descriptor(name).value]));
|
|
48
|
+
const originalLength = descriptor('length').get;
|
|
49
|
+
const ops = {
|
|
50
|
+
getItem: (store, key) => original.getItem.call(store, key),
|
|
51
|
+
setItem: (store, key, value) => void original.setItem.call(store, key, value),
|
|
52
|
+
removeItem: (store, key) => void original.removeItem.call(store, key),
|
|
53
|
+
key: (store, index) => original.key.call(store, index),
|
|
54
|
+
length: (store) => originalLength.call(store),
|
|
55
|
+
};
|
|
56
|
+
const views = new WeakMap();
|
|
57
|
+
for (const name of METHODS) {
|
|
58
|
+
// a method definition, so the wrapper keeps the native's name and is not a constructor
|
|
59
|
+
const wrapper = {
|
|
60
|
+
[name](...args) {
|
|
61
|
+
const view = typeof this === 'object' && this !== null ? views.get(this) : undefined;
|
|
62
|
+
return view ? view[name](...args) : original[name].apply(this, args);
|
|
63
|
+
},
|
|
64
|
+
}[name];
|
|
65
|
+
Object.defineProperty(storagePrototype, name, { ...descriptor(name), value: wrapper });
|
|
66
|
+
}
|
|
67
|
+
Object.defineProperty(storagePrototype, 'length', {
|
|
68
|
+
...descriptor('length'),
|
|
69
|
+
get() {
|
|
70
|
+
const view = typeof this === 'object' && this !== null ? views.get(this) : undefined;
|
|
71
|
+
return view ? view.length() : originalLength.call(this);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
const record = { ops, views };
|
|
75
|
+
patched.set(storagePrototype, record);
|
|
76
|
+
return record;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A `Storage` that reads and writes only the keys under `prefix`, with the prefix out of sight.
|
|
80
|
+
*
|
|
81
|
+
* A Proxy rather than a subclass, because `Storage` exposes its entries as named properties —
|
|
82
|
+
* `localStorage.token = 'x'`, `Object.keys(localStorage)` — and only a Proxy can answer those.
|
|
83
|
+
* Members (`getItem`, `length`…) come from the realm's own `Storage.prototype`, patched to route a
|
|
84
|
+
* view to its own entries.
|
|
85
|
+
*/
|
|
86
|
+
export function createStorageView(native, prefix, storagePrototype,
|
|
87
|
+
/** Told of every write that changes the store, which is every write that raises a `storage` event. */
|
|
88
|
+
onChange = () => undefined) {
|
|
89
|
+
const { ops, views } = patchStoragePrototype(storagePrototype);
|
|
90
|
+
/**
|
|
91
|
+
* The partition's keys, scanned once and kept until the next microtask: a loop over `key(i)` up
|
|
92
|
+
* to `length` would otherwise rescan the whole origin store at every step. Nothing can change the
|
|
93
|
+
* store inside one synchronous run except this view, whose writes drop the cache.
|
|
94
|
+
*/
|
|
95
|
+
let cachedKeys = null;
|
|
96
|
+
const ownKeys = () => {
|
|
97
|
+
if (!cachedKeys) {
|
|
98
|
+
const keys = [];
|
|
99
|
+
const total = ops.length(native);
|
|
100
|
+
for (let i = 0; i < total; i++) {
|
|
101
|
+
const key = ops.key(native, i);
|
|
102
|
+
if (key !== null && key.startsWith(prefix))
|
|
103
|
+
keys.push(key.slice(prefix.length));
|
|
104
|
+
}
|
|
105
|
+
cachedKeys = keys;
|
|
106
|
+
queueMicrotask(() => {
|
|
107
|
+
cachedKeys = null;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return cachedKeys;
|
|
111
|
+
};
|
|
112
|
+
const set = (nativeKey, value) => {
|
|
113
|
+
const changed = ops.getItem(native, nativeKey) !== value;
|
|
114
|
+
ops.setItem(native, nativeKey, value);
|
|
115
|
+
cachedKeys = null;
|
|
116
|
+
if (changed)
|
|
117
|
+
onChange(nativeKey, value);
|
|
118
|
+
};
|
|
119
|
+
const remove = (nativeKey) => {
|
|
120
|
+
const existed = ops.getItem(native, nativeKey) !== null;
|
|
121
|
+
ops.removeItem(native, nativeKey);
|
|
122
|
+
cachedKeys = null;
|
|
123
|
+
if (existed)
|
|
124
|
+
onChange(nativeKey, null);
|
|
125
|
+
};
|
|
126
|
+
const members = {
|
|
127
|
+
getItem: (...args) => (requireArguments('getItem', args), ops.getItem(native, prefix + String(args[0]))),
|
|
128
|
+
setItem: (...args) => (requireArguments('setItem', args), set(prefix + String(args[0]), String(args[1]))),
|
|
129
|
+
removeItem: (...args) => (requireArguments('removeItem', args), remove(prefix + String(args[0]))),
|
|
130
|
+
// removes this partition's entries one by one, so other partitions and the host keep theirs
|
|
131
|
+
clear: () => [...ownKeys()].forEach((key) => remove(prefix + key)),
|
|
132
|
+
// WebIDL `unsigned long`: NaN and undefined are 0, negatives wrap past the end
|
|
133
|
+
key: (...args) => (requireArguments('key', args), ownKeys()[Number(args[0]) >>> 0] ?? null),
|
|
134
|
+
length: () => ownKeys().length,
|
|
135
|
+
};
|
|
136
|
+
const isMember = (property) => property in storagePrototype;
|
|
137
|
+
const entry = (property) => ops.getItem(native, prefix + property);
|
|
138
|
+
const view = new Proxy(Object.create(storagePrototype), {
|
|
139
|
+
get(target, property, receiver) {
|
|
140
|
+
if (typeof property === 'symbol')
|
|
141
|
+
return Reflect.get(target, property, receiver);
|
|
142
|
+
if (isMember(property))
|
|
143
|
+
return Reflect.get(storagePrototype, property, receiver);
|
|
144
|
+
// a named property: the entry, or undefined (not null) like a native Storage
|
|
145
|
+
return entry(property) ?? undefined;
|
|
146
|
+
},
|
|
147
|
+
// as natively: assigning any string property stores an entry (WebIDL's named setter wins on
|
|
148
|
+
// [[Set]]), while reading a member name still finds the member
|
|
149
|
+
set(target, property, value) {
|
|
150
|
+
if (typeof property === 'symbol')
|
|
151
|
+
return Reflect.set(target, property, value);
|
|
152
|
+
set(prefix + property, String(value));
|
|
153
|
+
return true;
|
|
154
|
+
},
|
|
155
|
+
has(target, property) {
|
|
156
|
+
if (typeof property === 'symbol')
|
|
157
|
+
return Reflect.has(target, property);
|
|
158
|
+
return isMember(property) || entry(property) !== null;
|
|
159
|
+
},
|
|
160
|
+
deleteProperty(target, property) {
|
|
161
|
+
if (typeof property === 'symbol')
|
|
162
|
+
return Reflect.deleteProperty(target, property);
|
|
163
|
+
remove(prefix + property);
|
|
164
|
+
return true;
|
|
165
|
+
},
|
|
166
|
+
ownKeys(target) {
|
|
167
|
+
return [...ownKeys(), ...Object.getOwnPropertySymbols(target)];
|
|
168
|
+
},
|
|
169
|
+
getOwnPropertyDescriptor(target, property) {
|
|
170
|
+
if (typeof property === 'symbol')
|
|
171
|
+
return Reflect.getOwnPropertyDescriptor(target, property);
|
|
172
|
+
if (isMember(property))
|
|
173
|
+
return undefined;
|
|
174
|
+
const value = entry(property);
|
|
175
|
+
return value === null ? undefined : { value, writable: true, enumerable: true, configurable: true };
|
|
176
|
+
},
|
|
177
|
+
defineProperty(target, property, descriptor) {
|
|
178
|
+
if (typeof property === 'symbol')
|
|
179
|
+
return Reflect.defineProperty(target, property, descriptor);
|
|
180
|
+
// natively a data descriptor stores its value as an entry
|
|
181
|
+
if (!('value' in descriptor))
|
|
182
|
+
return false;
|
|
183
|
+
set(prefix + property, String(descriptor.value));
|
|
184
|
+
return true;
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
views.set(view, members);
|
|
188
|
+
return view;
|
|
189
|
+
}
|
|
190
|
+
/** Finds the getter for a storage attribute wherever the engine defines it (instance or prototype). */
|
|
191
|
+
function nativeStorageGetter(target, name) {
|
|
192
|
+
for (let object = target; object; object = Object.getPrototypeOf(object)) {
|
|
193
|
+
const descriptor = Object.getOwnPropertyDescriptor(object, name);
|
|
194
|
+
if (descriptor?.get)
|
|
195
|
+
return descriptor.get.bind(target);
|
|
196
|
+
if (descriptor)
|
|
197
|
+
return () => descriptor.value;
|
|
198
|
+
}
|
|
199
|
+
throw new Error(`braid: this browser has no ${name}`);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Replaces the realm window's `localStorage` and `sessionStorage` with views on `partition`.
|
|
203
|
+
*
|
|
204
|
+
* Must run before any fragment script, which the compat boot guarantees: the realm stub has no
|
|
205
|
+
* scripts of its own, and the fragment's are activated only after the patches are in place.
|
|
206
|
+
* Reaching for a store that the browser refuses (some privacy modes throw) throws, as natively.
|
|
207
|
+
*/
|
|
208
|
+
export function installStoragePartition(realmWindow, mainWindow, partition, signal) {
|
|
209
|
+
const prefix = storagePartitionPrefix(partition);
|
|
210
|
+
const storagePrototype = realmWindow.Storage.prototype;
|
|
211
|
+
const views = new Map();
|
|
212
|
+
// captured before the accessors below replace them, or the view would find itself
|
|
213
|
+
const native = {
|
|
214
|
+
localStorage: nativeStorageGetter(realmWindow, 'localStorage'),
|
|
215
|
+
sessionStorage: nativeStorageGetter(realmWindow, 'sessionStorage'),
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* A window never hears its own writes, but a realm listens on the host window, where its writes
|
|
219
|
+
* do raise events. Each write this realm makes is recorded, and the host event it raises is
|
|
220
|
+
* marked an echo — by a listener registered here, before any fragment code can add its own, so
|
|
221
|
+
* it always sees the event first.
|
|
222
|
+
*/
|
|
223
|
+
const pending = new Map();
|
|
224
|
+
const echoes = new WeakSet();
|
|
225
|
+
const writeId = (area, nativeKey, newValue) => JSON.stringify([area, nativeKey, newValue]);
|
|
226
|
+
/** An echo arrives within a task or two; one that never comes must not swallow a later event. */
|
|
227
|
+
const ECHO_WINDOW_MS = 2_000;
|
|
228
|
+
const view = (name) => {
|
|
229
|
+
let existing = views.get(name);
|
|
230
|
+
if (!existing) {
|
|
231
|
+
existing = createStorageView(native[name](), prefix, storagePrototype, (nativeKey, newValue) => {
|
|
232
|
+
const id = writeId(name, nativeKey, newValue);
|
|
233
|
+
pending.set(id, [...(pending.get(id) ?? []), Date.now() + ECHO_WINDOW_MS]);
|
|
234
|
+
});
|
|
235
|
+
views.set(name, existing);
|
|
236
|
+
}
|
|
237
|
+
return existing;
|
|
238
|
+
};
|
|
239
|
+
for (const name of ['localStorage', 'sessionStorage']) {
|
|
240
|
+
// the native attributes are enumerable, configurable getters with no setter; so are these
|
|
241
|
+
Object.defineProperty(realmWindow, name, { get: () => view(name), set: undefined, configurable: true, enumerable: true });
|
|
242
|
+
}
|
|
243
|
+
const hostArea = (name) => {
|
|
244
|
+
try {
|
|
245
|
+
return nativeStorageGetter(mainWindow, name)();
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const areaOf = (event) => {
|
|
252
|
+
const area = event.storageArea;
|
|
253
|
+
if (!area)
|
|
254
|
+
return null;
|
|
255
|
+
return area === hostArea('sessionStorage') ? 'sessionStorage' : area === hostArea('localStorage') ? 'localStorage' : null;
|
|
256
|
+
};
|
|
257
|
+
mainWindow.addEventListener('storage', (event) => {
|
|
258
|
+
const name = areaOf(event);
|
|
259
|
+
if (!name || event.key === null)
|
|
260
|
+
return;
|
|
261
|
+
const id = writeId(name, event.key, event.newValue);
|
|
262
|
+
const now = Date.now();
|
|
263
|
+
const live = (pending.get(id) ?? []).filter((expires) => expires > now);
|
|
264
|
+
if (live.length === 0) {
|
|
265
|
+
pending.delete(id);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
live.shift();
|
|
269
|
+
if (live.length > 0)
|
|
270
|
+
pending.set(id, live);
|
|
271
|
+
else
|
|
272
|
+
pending.delete(id);
|
|
273
|
+
echoes.add(event);
|
|
274
|
+
},
|
|
275
|
+
// capture, so it runs before any listener a fragment adds, in either phase
|
|
276
|
+
signal ? { capture: true, signal } : { capture: true });
|
|
277
|
+
return {
|
|
278
|
+
adaptEvent(event) {
|
|
279
|
+
const name = areaOf(event);
|
|
280
|
+
if (!name || echoes.has(event))
|
|
281
|
+
return null;
|
|
282
|
+
// a `clear()` outside the partition wiped this partition's entries too, so it is news here
|
|
283
|
+
if (event.key === null)
|
|
284
|
+
return { key: null, storageArea: view(name) };
|
|
285
|
+
if (!event.key.startsWith(prefix))
|
|
286
|
+
return null;
|
|
287
|
+
return { key: event.key.slice(prefix.length), storageArea: view(name) };
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=storage-partition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-partition.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/storage-partition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subresource URLs that fragment *code* sets, resolved the way the gateway resolves the ones in
|
|
3
|
+
* fragment *markup*.
|
|
4
|
+
*
|
|
5
|
+
* A fragment's elements live in the host page's document, so a relative URL on one resolves
|
|
6
|
+
* against the host page. The gateway re-roots the subresource URLs in a fragment's markup into
|
|
7
|
+
* `/__braid/frag/<id>/…` for exactly that reason (`rewriteSubresourceUrls` in the gateway's
|
|
8
|
+
* `rewriter/transforms.ts`), but a URL set from script — `frame.src = 'silent-renew.html'`,
|
|
9
|
+
* `img.src = 'logo.png'` — arrives after the markup and loaded a host URL instead. This applies the
|
|
10
|
+
* same rule at the moment it is set, so a fragment behaves as it does standalone.
|
|
11
|
+
*
|
|
12
|
+
* The element/attribute table and the rule are duplicated from the gateway: the two packages share
|
|
13
|
+
* no modules. Navigation targets (`a[href]`, `form[action]`) are left alone, as there.
|
|
14
|
+
*/
|
|
15
|
+
/** Attributes that point at a subresource the fragment owns, per element (as in the gateway). */
|
|
16
|
+
export declare const SUBRESOURCE_ATTRIBUTES: Readonly<Record<string, readonly string[]>>;
|
|
17
|
+
/**
|
|
18
|
+
* The fragment's namespace root (`/__braid/frag/<id>`, behind any gateway `basePath`), read off
|
|
19
|
+
* the realm document's base URL, which points into it. `null` when it does not.
|
|
20
|
+
*/
|
|
21
|
+
export declare function fragmentRootOf(realmBaseUrl: string): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* One URL mapped into the fragment's namespace — the gateway's `namespaceUrl`, exactly: resolved
|
|
24
|
+
* against the fragment's own `<base href>` (default `/`) as its document would, then re-rooted.
|
|
25
|
+
* Absolute URLs, protocol-relative ones, pure fragments and URLs already inside the namespace are
|
|
26
|
+
* returned as they are.
|
|
27
|
+
*/
|
|
28
|
+
export declare function fragmentSubresourceUrl(value: string, fragmentRoot: string, fragmentBaseHref?: string): string;
|
|
29
|
+
/** Each candidate of a `srcset`, mapped, with its descriptor kept (split as the gateway splits). */
|
|
30
|
+
export declare function fragmentSrcset(value: string, fragmentRoot: string, fragmentBaseHref?: string): string;
|
|
31
|
+
/** Where a stamped element's URLs resolve: the namespace root, and the fragment's own base href. */
|
|
32
|
+
export interface FragmentUrlBase {
|
|
33
|
+
root: string | null;
|
|
34
|
+
baseHref: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Property descriptors for a stamped element's prototype: the element's subresource properties and
|
|
38
|
+
* `setAttribute`/`setAttributeNS` map relative URLs into the fragment's namespace. Empty for an
|
|
39
|
+
* element with no subresource attributes. Reading returns whatever the native getter does.
|
|
40
|
+
*/
|
|
41
|
+
export declare function subresourceUrlOverrides(proto: object, localName: string, base: () => FragmentUrlBase): PropertyDescriptorMap;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subresource URLs that fragment *code* sets, resolved the way the gateway resolves the ones in
|
|
3
|
+
* fragment *markup*.
|
|
4
|
+
*
|
|
5
|
+
* A fragment's elements live in the host page's document, so a relative URL on one resolves
|
|
6
|
+
* against the host page. The gateway re-roots the subresource URLs in a fragment's markup into
|
|
7
|
+
* `/__braid/frag/<id>/…` for exactly that reason (`rewriteSubresourceUrls` in the gateway's
|
|
8
|
+
* `rewriter/transforms.ts`), but a URL set from script — `frame.src = 'silent-renew.html'`,
|
|
9
|
+
* `img.src = 'logo.png'` — arrives after the markup and loaded a host URL instead. This applies the
|
|
10
|
+
* same rule at the moment it is set, so a fragment behaves as it does standalone.
|
|
11
|
+
*
|
|
12
|
+
* The element/attribute table and the rule are duplicated from the gateway: the two packages share
|
|
13
|
+
* no modules. Navigation targets (`a[href]`, `form[action]`) are left alone, as there.
|
|
14
|
+
*/
|
|
15
|
+
/** Attributes that point at a subresource the fragment owns, per element (as in the gateway). */
|
|
16
|
+
export const SUBRESOURCE_ATTRIBUTES = Object.assign(Object.create(null), {
|
|
17
|
+
audio: ['src'],
|
|
18
|
+
embed: ['src'],
|
|
19
|
+
iframe: ['src'],
|
|
20
|
+
img: ['src', 'srcset'],
|
|
21
|
+
input: ['src'],
|
|
22
|
+
link: ['href'],
|
|
23
|
+
object: ['data'],
|
|
24
|
+
script: ['src'],
|
|
25
|
+
source: ['src', 'srcset'],
|
|
26
|
+
track: ['src'],
|
|
27
|
+
use: ['href'],
|
|
28
|
+
video: ['src', 'poster'],
|
|
29
|
+
});
|
|
30
|
+
const NAMESPACE = /^(.*?\/__braid\/frag\/[^/]+)(\/.*)?$/;
|
|
31
|
+
/**
|
|
32
|
+
* The fragment's namespace root (`/__braid/frag/<id>`, behind any gateway `basePath`), read off
|
|
33
|
+
* the realm document's base URL, which points into it. `null` when it does not.
|
|
34
|
+
*/
|
|
35
|
+
export function fragmentRootOf(realmBaseUrl) {
|
|
36
|
+
try {
|
|
37
|
+
return NAMESPACE.exec(new URL(realmBaseUrl).pathname)?.[1] ?? null;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* One URL mapped into the fragment's namespace — the gateway's `namespaceUrl`, exactly: resolved
|
|
45
|
+
* against the fragment's own `<base href>` (default `/`) as its document would, then re-rooted.
|
|
46
|
+
* Absolute URLs, protocol-relative ones, pure fragments and URLs already inside the namespace are
|
|
47
|
+
* returned as they are.
|
|
48
|
+
*/
|
|
49
|
+
export function fragmentSubresourceUrl(value, fragmentRoot, fragmentBaseHref = '/') {
|
|
50
|
+
const url = value.trim();
|
|
51
|
+
if (!url || url.startsWith('#') || url.startsWith('//') || /^[a-z][a-z0-9+.-]*:/i.test(url))
|
|
52
|
+
return value;
|
|
53
|
+
// already re-rooted — markup the gateway prepared, an attribute read back and set again
|
|
54
|
+
if (url === fragmentRoot || url.startsWith(`${fragmentRoot}/`))
|
|
55
|
+
return value;
|
|
56
|
+
const resolved = new URL(url, `http://braid.invalid${fragmentBaseHref.startsWith('/') ? fragmentBaseHref : `/${fragmentBaseHref}`}`);
|
|
57
|
+
return `${fragmentRoot}${resolved.pathname}${resolved.search}${resolved.hash}`;
|
|
58
|
+
}
|
|
59
|
+
/** Each candidate of a `srcset`, mapped, with its descriptor kept (split as the gateway splits). */
|
|
60
|
+
export function fragmentSrcset(value, fragmentRoot, fragmentBaseHref = '/') {
|
|
61
|
+
return value
|
|
62
|
+
.split(',')
|
|
63
|
+
.map((candidate) => {
|
|
64
|
+
const match = /^(\s*)(\S+)(\s*.*)$/.exec(candidate);
|
|
65
|
+
if (!match)
|
|
66
|
+
return candidate;
|
|
67
|
+
const [, leading, url, descriptor] = match;
|
|
68
|
+
return `${leading}${fragmentSubresourceUrl(url, fragmentRoot, fragmentBaseHref)}${descriptor}`;
|
|
69
|
+
})
|
|
70
|
+
.join(',');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Property descriptors for a stamped element's prototype: the element's subresource properties and
|
|
74
|
+
* `setAttribute`/`setAttributeNS` map relative URLs into the fragment's namespace. Empty for an
|
|
75
|
+
* element with no subresource attributes. Reading returns whatever the native getter does.
|
|
76
|
+
*/
|
|
77
|
+
export function subresourceUrlOverrides(proto, localName, base) {
|
|
78
|
+
const attributes = Object.hasOwn(SUBRESOURCE_ATTRIBUTES, localName) ? SUBRESOURCE_ATTRIBUTES[localName] : undefined;
|
|
79
|
+
if (!attributes)
|
|
80
|
+
return {};
|
|
81
|
+
const rewrite = (name, value) => {
|
|
82
|
+
if (typeof value !== 'string' || !attributes.includes(name))
|
|
83
|
+
return value;
|
|
84
|
+
const { root, baseHref } = base();
|
|
85
|
+
if (root === null)
|
|
86
|
+
return value;
|
|
87
|
+
return name === 'srcset' ? fragmentSrcset(value, root, baseHref) : fragmentSubresourceUrl(value, root, baseHref);
|
|
88
|
+
};
|
|
89
|
+
const overrides = {};
|
|
90
|
+
for (const name of attributes) {
|
|
91
|
+
const descriptor = findDescriptor(proto, name);
|
|
92
|
+
// SVG's `href` is an SVGAnimatedString with no setter; setAttribute covers it
|
|
93
|
+
if (!descriptor?.set)
|
|
94
|
+
continue;
|
|
95
|
+
const { get, set } = descriptor;
|
|
96
|
+
overrides[name] = {
|
|
97
|
+
get,
|
|
98
|
+
set(value) {
|
|
99
|
+
set.call(this, rewrite(name, String(value)));
|
|
100
|
+
},
|
|
101
|
+
configurable: true,
|
|
102
|
+
enumerable: descriptor.enumerable ?? true,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const setAttribute = findDescriptor(proto, 'setAttribute').value;
|
|
106
|
+
const setAttributeNS = findDescriptor(proto, 'setAttributeNS').value;
|
|
107
|
+
overrides['setAttribute'] = {
|
|
108
|
+
value: function (qualifiedName, value) {
|
|
109
|
+
return setAttribute.call(this, qualifiedName, rewrite(String(qualifiedName).toLowerCase(), value));
|
|
110
|
+
},
|
|
111
|
+
writable: true,
|
|
112
|
+
configurable: true,
|
|
113
|
+
};
|
|
114
|
+
overrides['setAttributeNS'] = {
|
|
115
|
+
value: function (namespace, qualifiedName, value) {
|
|
116
|
+
// only un-namespaced attributes are the subresource ones; xlink:href is left as it is
|
|
117
|
+
const mapped = namespace === null || namespace === '' ? rewrite(String(qualifiedName).toLowerCase(), value) : value;
|
|
118
|
+
return setAttributeNS.call(this, namespace, qualifiedName, mapped);
|
|
119
|
+
},
|
|
120
|
+
writable: true,
|
|
121
|
+
configurable: true,
|
|
122
|
+
};
|
|
123
|
+
return overrides;
|
|
124
|
+
}
|
|
125
|
+
function findDescriptor(object, name) {
|
|
126
|
+
for (let current = object; current; current = Object.getPrototypeOf(current)) {
|
|
127
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, name);
|
|
128
|
+
if (descriptor)
|
|
129
|
+
return descriptor;
|
|
130
|
+
}
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=subresource-urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subresource-urls.js","sourceRoot":"","sources":["../../../../../libs/core/src/compat/subresource-urls.ts"],"names":[],"mappings":"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"}
|