@floegence/redevplugin-ui 0.7.22 → 0.7.23

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.
Files changed (2) hide show
  1. package/dist/surface.js +23 -5
  2. package/package.json +2 -2
package/dist/surface.js CHANGED
@@ -1883,6 +1883,10 @@ export function createOpaquePluginBootstrapHTML(options = {}) {
1883
1883
  'const __rpHasOwn = Object.prototype.hasOwnProperty;',
1884
1884
  'const __rpObjectKeys = Object.keys;',
1885
1885
  'const __rpApply = Reflect.apply;',
1886
+ 'const __rpAddEventListener = addEventListener.bind(globalThis);',
1887
+ 'const __rpRemoveEventListener = removeEventListener.bind(globalThis);',
1888
+ 'const __rpSetTimeout = setTimeout.bind(globalThis);',
1889
+ 'const __rpClearTimeout = clearTimeout.bind(globalThis);',
1886
1890
  'const __rpNumberIsSafeInteger = Number.isSafeInteger.bind(Number);',
1887
1891
  'const __rpOffscreenCanvas = globalThis.OffscreenCanvas;',
1888
1892
  'const __rpCanvasPrototype = __rpOffscreenCanvas && __rpOffscreenCanvas.prototype;',
@@ -1963,15 +1967,29 @@ export function createOpaquePluginBootstrapHTML(options = {}) {
1963
1967
  ' close();',
1964
1968
  ' return;',
1965
1969
  '}',
1966
- 'const __rpVerifyDynamicImportBlocked = async () => {',
1970
+ 'const __rpVerifyDynamicImportBlocked = () => new Promise((resolve, reject) => {',
1967
1971
  ' const specifier = "data:text/javascript,export default 1";',
1972
+ ' let settled = false;',
1973
+ ' let timeout;',
1974
+ ' const cleanup = () => { __rpRemoveEventListener("securitypolicyviolation", onViolation, true); if (timeout !== undefined) __rpClearTimeout(timeout); };',
1975
+ ' const finishBlocked = () => { if (settled) return; settled = true; cleanup(); resolve(true); };',
1976
+ ' const finishEscaped = () => {',
1977
+ ' if (settled) { __rpReportFailure(new TypeError("Dynamic import escaped the ReDevPlugin worker sandbox")); return; }',
1978
+ ' settled = true; cleanup(); resolve(false);',
1979
+ ' };',
1980
+ ' const onViolation = (event) => {',
1981
+ ' const directive = String(event && (event.effectiveDirective || event.violatedDirective) || "");',
1982
+ ' const blockedURI = String(event && event.blockedURI || "");',
1983
+ ' if ((directive === "script-src" || directive === "script-src-elem") && (blockedURI === "data" || blockedURI.startsWith("data:"))) finishBlocked();',
1984
+ ' };',
1985
+ ' __rpAddEventListener("securitypolicyviolation", onViolation, true);',
1986
+ ' timeout = __rpSetTimeout(() => { if (settled) return; settled = true; cleanup(); reject(new TypeError("Dynamic import sandbox verification timed out")); }, 1000);',
1968
1987
  ' try {',
1969
- ' await import(specifier);',
1970
- ' return false;',
1988
+ ' import(specifier).then(finishEscaped, finishBlocked);',
1971
1989
  ' } catch {',
1972
- ' return true;',
1990
+ ' finishBlocked();',
1973
1991
  ' }',
1974
- '};',
1992
+ '});',
1975
1993
  'let __rpClaimed = false;',
1976
1994
  'const __rpBridge = Object.freeze({ claim() { if (__rpClaimed) return undefined; __rpClaimed = true; return Object.freeze({ surfaceHandle: __rpSurfaceHandle, port: __rpPort }); } });',
1977
1995
  'Object.defineProperty(globalThis, ' + JSON.stringify(workerGlobalKey) + ', { configurable: false, enumerable: false, writable: false, value: __rpBridge });',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/redevplugin-ui",
3
- "version": "0.7.22",
3
+ "version": "0.7.23",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -40,7 +40,7 @@
40
40
  "dist"
41
41
  ],
42
42
  "dependencies": {
43
- "@floegence/redevplugin-contracts": "0.7.22"
43
+ "@floegence/redevplugin-contracts": "0.7.23"
44
44
  },
45
45
  "publishConfig": {
46
46
  "access": "public"