@softarc/native-federation-orchestrator 4.3.0 → 4.4.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/README.md +3 -2
- package/fesm2022/@softarc/native-federation-orchestrator.mjs +88 -72
- package/fesm2022/@softarc/native-federation-orchestrator.mjs.map +4 -4
- package/fesm2022/module-federation.mjs +56 -0
- package/fesm2022/module-federation.mjs.map +7 -0
- package/fesm2022/node.mjs +84 -76
- package/fesm2022/node.mjs.map +4 -4
- package/fesm2022/options.mjs +4 -2
- package/fesm2022/options.mjs.map +2 -2
- package/package.json +5 -1
- package/quickstart.mjs +11 -11
- package/types/lib/core/2.app/config/mode.contract.d.ts +1 -0
- package/types/lib/core/2.app/driver-ports/init/for-committing-changes.port.d.ts +5 -1
- package/types/lib/core/4.config/import-map/trusted-types.d.ts +5 -1
- package/types/lib/module-federation/get-shared.d.ts +7 -0
- package/types/lib/module-federation/share-infos.contract.d.ts +45 -0
- package/types/lib/module-federation.index.d.ts +2 -0
package/fesm2022/options.mjs
CHANGED
|
@@ -168,7 +168,7 @@ var getTrustedTypesPolicy = (name = "nfo") => {
|
|
|
168
168
|
});
|
|
169
169
|
cachedPolicy = {
|
|
170
170
|
createScript: (input) => native.createScript(input),
|
|
171
|
-
createScriptURL: (input) => native.createScriptURL(input)
|
|
171
|
+
createScriptURL: (input) => String(native.createScriptURL(input))
|
|
172
172
|
};
|
|
173
173
|
return cachedPolicy;
|
|
174
174
|
};
|
|
@@ -192,7 +192,7 @@ var replaceInDOM = (mapType, trustedTypesPolicyName = "nfo") => (importMap, opts
|
|
|
192
192
|
var useShimImportMap = (cfg = { shimMode: false }, trustedTypesPolicyName = "nfo") => ({
|
|
193
193
|
loadModuleFn: (url) => {
|
|
194
194
|
const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);
|
|
195
|
-
return importShim(
|
|
195
|
+
return importShim(trusted);
|
|
196
196
|
},
|
|
197
197
|
setImportMapFn: replaceInDOM(
|
|
198
198
|
cfg.shimMode ? "importmap-shim" : "importmap",
|
|
@@ -221,6 +221,7 @@ var useDefaultImportMap = (trustedTypesPolicyName = "nfo") => ({
|
|
|
221
221
|
// src/lib/core/4.config/mode/default.profile.ts
|
|
222
222
|
var defaultProfile = {
|
|
223
223
|
latestSharedExternal: false,
|
|
224
|
+
skipInvalidExternalVersions: false,
|
|
224
225
|
overrideCachedRemotes: "init-only",
|
|
225
226
|
overrideCachedRemotesIfURLMatches: false
|
|
226
227
|
};
|
|
@@ -228,6 +229,7 @@ var defaultProfile = {
|
|
|
228
229
|
// src/lib/core/4.config/mode/caching.profile.ts
|
|
229
230
|
var cachingProfile = {
|
|
230
231
|
latestSharedExternal: false,
|
|
232
|
+
skipInvalidExternalVersions: false,
|
|
231
233
|
overrideCachedRemotes: "never",
|
|
232
234
|
overrideCachedRemotesIfURLMatches: false
|
|
233
235
|
};
|
package/fesm2022/options.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/lib/core/2.app/config/log.contract.ts", "../../src/lib/core/4.config/logging/console.logger.ts", "../../src/lib/core/4.config/logging/noop.logger.ts", "../../src/lib/core/native-federation.error.ts", "../../src/lib/utils/clone-entry.ts", "../../src/lib/core/4.config/storage/global-this.storage.ts", "../../src/lib/core/4.config/storage/local.storage.ts", "../../src/lib/core/4.config/storage/session.storage.ts", "../../src/lib/core/4.config/import-map/trusted-types.ts", "../../src/lib/core/4.config/import-map/replace-in-dom.ts", "../../src/lib/core/4.config/import-map/use-import-shim.ts", "../../src/lib/core/4.config/import-map/use-default.ts", "../../src/lib/core/4.config/mode/default.profile.ts", "../../src/lib/core/4.config/mode/caching.profile.ts"],
|
|
4
|
-
"sourcesContent": ["export const LogLevel = {\n debug: 0,\n warn: 1,\n error: 2,\n};\n\nexport type LogType = keyof typeof LogLevel;\n\nexport type Logger = {\n error: (step: number, msg: string, details?: unknown) => void;\n warn: (step: number, msg: string, details?: unknown) => void;\n debug: (step: number, msg: string, details?: unknown) => void;\n};\n\nexport type LogHandler = Logger & {\n level: LogType;\n};\n\nexport type LoggingConfig = {\n log: LogHandler;\n sse: boolean;\n};\n\nexport type LoggingOptions = {\n logger?: Logger;\n logLevel?: LogType;\n sse?: boolean;\n};\n", "import type { Logger } from 'lib/core/2.app/config/log.contract';\n\nconst consoleLogger: Logger = {\n /* eslint no-console: \"off\", curly: \"error\" */\n debug: (step: number, msg: string, err) =>\n !!err ? console.log(`[DEBUG][${step}]: ${msg}`, err) : console.log(`[DEBUG][${step}]: ${msg}`),\n error: (step: number, msg: string, err) =>\n !!err ? console.error(`[NF][${step}]: ${msg}`, err) : console.error(`[NF][${step}]: ${msg}`),\n warn: (step: number, msg: string, err) =>\n !!err ? console.warn(`[NF][${step}]: ${msg}`, err) : console.warn(`[NF][${step}]: ${msg}`),\n};\n\nexport { consoleLogger };\n", "import type { Logger } from 'lib/core/2.app/config/log.contract';\n\nconst noopLogger: Logger = {\n debug: () => {},\n error: () => {},\n warn: () => {},\n};\n\nexport { noopLogger };\n", "class NFError extends Error {\n constructor(message: string, cause?: Error) {\n super(message, cause);\n this.name = 'NFError';\n }\n}\n\nexport { NFError };\n", "import type { StorageEntryKey } from 'lib/core/2.app/config/storage.contract';\nimport { NFError } from 'lib/core/native-federation.error';\n\ntype CloneEntry = <T>(name: StorageEntryKey, raw: T) => T;\n\nconst cloneEntry: CloneEntry = <T>(name: StorageEntryKey, raw: T) => {\n try {\n if (typeof structuredClone === 'function') {\n return structuredClone(raw);\n }\n } catch {\n /* structured clone is unavailable */\n }\n try {\n return JSON.parse(JSON.stringify(raw));\n } catch {\n /* object is not stringifyable */\n }\n throw new NFError(`Could not clone entry '${String(name)}'`);\n};\n\nexport { CloneEntry, cloneEntry };\n", "import { cloneEntry } from 'lib/utils/clone-entry';\nimport {\n type StorageEntryCreator,\n type StorageEntry,\n} from 'lib/core/2.app/config/storage.contract';\n\nconst globalThisStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!(globalThis as unknown as { [namespace]: unknown })[namespace]) {\n (globalThis as unknown as { [namespace]: unknown })[namespace] = {};\n }\n\n const storage = (globalThis as unknown as { [namespace]: { [P in typeof key]: TValue } })[\n namespace\n ]!;\n if (!storage[key]) storage[key] = initialValue;\n\n const entry: StorageEntry<TValue> = {\n get(): TValue {\n return cloneEntry(key, storage[key])!;\n },\n set(value: TValue): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, value);\n return entry;\n },\n clear(): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, initialValue);\n return this;\n },\n };\n\n return entry;\n };\n\nexport { globalThisStorageEntry };\n", "import type { StorageEntryCreator, StorageEntry } from 'lib/core/2.app/config/storage.contract';\n\nconst localStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!localStorage.getItem(`${namespace}.${String(key)}`)) {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n }\n const entry: StorageEntry<TValue> = {\n get() {\n const fromCache = localStorage.getItem(`${namespace}.${String(key)}`);\n if (!fromCache) return undefined;\n return JSON.parse(fromCache);\n },\n set(value: TValue): StorageEntry<TValue> {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(value));\n return entry;\n },\n clear(): StorageEntry<TValue> {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n return this;\n },\n };\n return entry;\n };\n\nexport { localStorageEntry };\n", "import type { StorageEntryCreator, StorageEntry } from 'lib/core/2.app/config/storage.contract';\n\nconst sessionStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!sessionStorage.getItem(`${namespace}.${String(key)}`)) {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n }\n const entry: StorageEntry<TValue> = {\n get() {\n const fromCache = sessionStorage.getItem(`${namespace}.${String(key)}`);\n if (!fromCache) return undefined;\n return JSON.parse(fromCache);\n },\n set(value: TValue): StorageEntry<TValue> {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(value));\n return entry;\n },\n clear(): StorageEntry<TValue> {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n return this;\n },\n };\n return entry;\n };\n\nexport { sessionStorageEntry };\n", "type TTCreateScript = (input: string) => string;\ntype TTCreateScriptURL = (input: string) => string;\n\ntype TTPolicyRules = {\n createScript?: TTCreateScript;\n createScriptURL?: TTCreateScriptURL;\n};\n\ntype TTPolicy = {\n createScript: TTCreateScript;\n createScriptURL: TTCreateScriptURL;\n};\n\ntype TTFactory = {\n createPolicy: (name: string, rules: TTPolicyRules) => TTPolicy;\n};\n\nexport type NFTrustedTypesPolicy = {\n createScript: (input: string) => string;\n createScriptURL: (input: string) => string;\n};\n\nconst IMPORT_MAP_KEYS = new Set(['imports', 'scopes', 'integrity']);\n\nconst validateImportMapJSON = (input: string): string => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('[nf-orchestrator] trusted-types: import map is not valid JSON');\n }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new TypeError('[nf-orchestrator] trusted-types: import map must be a plain object');\n }\n for (const key of Object.keys(parsed as Record<string, unknown>)) {\n if (!IMPORT_MAP_KEYS.has(key)) {\n throw new TypeError(`[nf-orchestrator] trusted-types: unexpected key \"${key}\" in import map`);\n }\n }\n return input;\n};\n\nconst validateScriptURL = (input: string): string => {\n const base = typeof location !== 'undefined' ? location.href : 'http://localhost/';\n let url: URL;\n try {\n url = new URL(input, base);\n } catch {\n throw new TypeError(`[nf-orchestrator] trusted-types: invalid script URL \"${input}\"`);\n }\n if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n throw new TypeError(\n `[nf-orchestrator] trusted-types: disallowed protocol \"${url.protocol}\" for script URL`\n );\n }\n return input;\n};\n\nconst passThroughPolicy: NFTrustedTypesPolicy = {\n createScript: input => input,\n createScriptURL: input => input,\n};\n\nlet cachedPolicy: NFTrustedTypesPolicy | null = null;\n\nexport const getTrustedTypesPolicy = (\n name: string | false = 'nfo'\n): NFTrustedTypesPolicy => {\n if (name === false) return passThroughPolicy;\n if (cachedPolicy) return cachedPolicy;\n\n const factory = (globalThis as { trustedTypes?: TTFactory }).trustedTypes;\n if (!factory) {\n cachedPolicy = passThroughPolicy;\n return cachedPolicy;\n }\n\n const native = factory.createPolicy(name, {\n createScript: validateImportMapJSON,\n createScriptURL: validateScriptURL,\n });\n\n cachedPolicy = {\n createScript: input => native.createScript(input) as unknown as string,\n createScriptURL: input => native.createScriptURL(input) as unknown as string,\n };\n return cachedPolicy;\n};\n\nexport const __resetTrustedTypesPolicyForTests = (): void => {\n cachedPolicy = null;\n};\n", "import type { ImportMap } from 'lib/core/1.domain';\nimport type { SetImportMap } from 'lib/core/2.app/config/import-map.contract';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\nexport const replaceInDOM =\n (mapType: string, trustedTypesPolicyName: string | false = 'nfo'): SetImportMap =>\n (importMap: ImportMap, opts = {}) => {\n if (opts?.override) {\n document.head\n .querySelectorAll(`script[type=\"${mapType}\"]`)\n .forEach(importMap => importMap.remove());\n }\n\n const policy = getTrustedTypesPolicy(trustedTypesPolicyName);\n document.head.appendChild(\n Object.assign(document.createElement('script'), {\n type: mapType,\n text: policy.createScript(JSON.stringify(importMap)),\n })\n );\n return Promise.resolve(importMap);\n };\n", "import type { ImportMapConfig } from 'lib/core/2.app/config/import-map.contract';\nimport { replaceInDOM } from './replace-in-dom';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\ndeclare function importShim<T>(url: string): T;\n\nconst useShimImportMap = (\n cfg: { shimMode: boolean } = { shimMode: false },\n trustedTypesPolicyName: string | false = 'nfo'\n): ImportMapConfig => ({\n loadModuleFn: url => {\n const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);\n return importShim(String(trusted));\n },\n setImportMapFn: replaceInDOM(\n cfg.shimMode ? 'importmap-shim' : 'importmap',\n trustedTypesPolicyName\n ),\n reloadBrowserFn: () => {\n window.location.reload();\n },\n});\n\nexport { useShimImportMap };\n", "import type { ImportMapConfig } from 'lib/core/2.app/config/import-map.contract';\nimport { replaceInDOM } from './replace-in-dom';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\nconst useDefaultImportMap = (trustedTypesPolicyName: string | false = 'nfo'): ImportMapConfig => ({\n loadModuleFn: url => {\n const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);\n return import(/* @vite-ignore */ trusted);\n },\n setImportMapFn: replaceInDOM('importmap', trustedTypesPolicyName),\n reloadBrowserFn: () => {\n window.location.reload();\n },\n});\n\nexport { useDefaultImportMap };\n", "import type { ModeProfileConfig } from 'lib/core/2.app/config/mode.contract';\n\nexport const defaultProfile: ModeProfileConfig = {\n latestSharedExternal: false,\n overrideCachedRemotes: 'init-only',\n overrideCachedRemotesIfURLMatches: false,\n};\n", "import type { ModeProfileConfig } from 'lib/core/2.app/config/mode.contract';\n\nexport const cachingProfile: ModeProfileConfig = {\n latestSharedExternal: false,\n overrideCachedRemotes: 'never',\n overrideCachedRemotesIfURLMatches: false,\n};\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["export const LogLevel = {\n debug: 0,\n warn: 1,\n error: 2,\n};\n\nexport type LogType = keyof typeof LogLevel;\n\nexport type Logger = {\n error: (step: number, msg: string, details?: unknown) => void;\n warn: (step: number, msg: string, details?: unknown) => void;\n debug: (step: number, msg: string, details?: unknown) => void;\n};\n\nexport type LogHandler = Logger & {\n level: LogType;\n};\n\nexport type LoggingConfig = {\n log: LogHandler;\n sse: boolean;\n};\n\nexport type LoggingOptions = {\n logger?: Logger;\n logLevel?: LogType;\n sse?: boolean;\n};\n", "import type { Logger } from 'lib/core/2.app/config/log.contract';\n\nconst consoleLogger: Logger = {\n /* eslint no-console: \"off\", curly: \"error\" */\n debug: (step: number, msg: string, err) =>\n !!err ? console.log(`[DEBUG][${step}]: ${msg}`, err) : console.log(`[DEBUG][${step}]: ${msg}`),\n error: (step: number, msg: string, err) =>\n !!err ? console.error(`[NF][${step}]: ${msg}`, err) : console.error(`[NF][${step}]: ${msg}`),\n warn: (step: number, msg: string, err) =>\n !!err ? console.warn(`[NF][${step}]: ${msg}`, err) : console.warn(`[NF][${step}]: ${msg}`),\n};\n\nexport { consoleLogger };\n", "import type { Logger } from 'lib/core/2.app/config/log.contract';\n\nconst noopLogger: Logger = {\n debug: () => {},\n error: () => {},\n warn: () => {},\n};\n\nexport { noopLogger };\n", "class NFError extends Error {\n constructor(message: string, cause?: Error) {\n super(message, cause);\n this.name = 'NFError';\n }\n}\n\nexport { NFError };\n", "import type { StorageEntryKey } from 'lib/core/2.app/config/storage.contract';\nimport { NFError } from 'lib/core/native-federation.error';\n\ntype CloneEntry = <T>(name: StorageEntryKey, raw: T) => T;\n\nconst cloneEntry: CloneEntry = <T>(name: StorageEntryKey, raw: T) => {\n try {\n if (typeof structuredClone === 'function') {\n return structuredClone(raw);\n }\n } catch {\n /* structured clone is unavailable */\n }\n try {\n return JSON.parse(JSON.stringify(raw));\n } catch {\n /* object is not stringifyable */\n }\n throw new NFError(`Could not clone entry '${String(name)}'`);\n};\n\nexport { CloneEntry, cloneEntry };\n", "import { cloneEntry } from 'lib/utils/clone-entry';\nimport {\n type StorageEntryCreator,\n type StorageEntry,\n} from 'lib/core/2.app/config/storage.contract';\n\nconst globalThisStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!(globalThis as unknown as { [namespace]: unknown })[namespace]) {\n (globalThis as unknown as { [namespace]: unknown })[namespace] = {};\n }\n\n const storage = (globalThis as unknown as { [namespace]: { [P in typeof key]: TValue } })[\n namespace\n ]!;\n if (!storage[key]) storage[key] = initialValue;\n\n const entry: StorageEntry<TValue> = {\n get(): TValue {\n return cloneEntry(key, storage[key])!;\n },\n set(value: TValue): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, value);\n return entry;\n },\n clear(): StorageEntry<TValue> {\n storage[key] = cloneEntry(key, initialValue);\n return this;\n },\n };\n\n return entry;\n };\n\nexport { globalThisStorageEntry };\n", "import type { StorageEntryCreator, StorageEntry } from 'lib/core/2.app/config/storage.contract';\n\nconst localStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!localStorage.getItem(`${namespace}.${String(key)}`)) {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n }\n const entry: StorageEntry<TValue> = {\n get() {\n const fromCache = localStorage.getItem(`${namespace}.${String(key)}`);\n if (!fromCache) return undefined;\n return JSON.parse(fromCache);\n },\n set(value: TValue): StorageEntry<TValue> {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(value));\n return entry;\n },\n clear(): StorageEntry<TValue> {\n localStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n return this;\n },\n };\n return entry;\n };\n\nexport { localStorageEntry };\n", "import type { StorageEntryCreator, StorageEntry } from 'lib/core/2.app/config/storage.contract';\n\nconst sessionStorageEntry: StorageEntryCreator =\n (namespace: string) =>\n <TValue>(key: string, initialValue: TValue) => {\n if (!sessionStorage.getItem(`${namespace}.${String(key)}`)) {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n }\n const entry: StorageEntry<TValue> = {\n get() {\n const fromCache = sessionStorage.getItem(`${namespace}.${String(key)}`);\n if (!fromCache) return undefined;\n return JSON.parse(fromCache);\n },\n set(value: TValue): StorageEntry<TValue> {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(value));\n return entry;\n },\n clear(): StorageEntry<TValue> {\n sessionStorage.setItem(`${namespace}.${String(key)}`, JSON.stringify(initialValue));\n return this;\n },\n };\n return entry;\n };\n\nexport { sessionStorageEntry };\n", "type TTCreateScript = (input: string) => string;\ntype TTCreateScriptURL = (input: string) => string;\n\ntype TTPolicyRules = {\n createScript?: TTCreateScript;\n createScriptURL?: TTCreateScriptURL;\n};\n\ntype TrustedValue = { toString(): string };\n\ntype TTPolicy = {\n createScript: (input: string) => TrustedValue;\n createScriptURL: (input: string) => TrustedValue;\n};\n\ntype TTFactory = {\n createPolicy: (name: string, rules: TTPolicyRules) => TTPolicy;\n};\n\nexport type NFTrustedTypesPolicy = {\n // `script.text` is a TrustedScript sink, so this must stay the genuine object.\n createScript: (input: string) => TrustedValue;\n createScriptURL: (input: string) => string;\n};\n\nconst IMPORT_MAP_KEYS = new Set(['imports', 'scopes', 'integrity']);\n\nconst validateImportMapJSON = (input: string): string => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(input);\n } catch {\n throw new TypeError('[nf-orchestrator] trusted-types: import map is not valid JSON');\n }\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n throw new TypeError('[nf-orchestrator] trusted-types: import map must be a plain object');\n }\n for (const key of Object.keys(parsed as Record<string, unknown>)) {\n if (!IMPORT_MAP_KEYS.has(key)) {\n throw new TypeError(`[nf-orchestrator] trusted-types: unexpected key \"${key}\" in import map`);\n }\n }\n return input;\n};\n\nconst validateScriptURL = (input: string): string => {\n const base = typeof location !== 'undefined' ? location.href : 'http://localhost/';\n let url: URL;\n try {\n url = new URL(input, base);\n } catch {\n throw new TypeError(`[nf-orchestrator] trusted-types: invalid script URL \"${input}\"`);\n }\n if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n throw new TypeError(\n `[nf-orchestrator] trusted-types: disallowed protocol \"${url.protocol}\" for script URL`\n );\n }\n return input;\n};\n\nconst passThroughPolicy: NFTrustedTypesPolicy = {\n createScript: input => input,\n createScriptURL: input => input,\n};\n\nlet cachedPolicy: NFTrustedTypesPolicy | null = null;\n\nexport const getTrustedTypesPolicy = (\n name: string | false = 'nfo'\n): NFTrustedTypesPolicy => {\n if (name === false) return passThroughPolicy;\n if (cachedPolicy) return cachedPolicy;\n\n const factory = (globalThis as { trustedTypes?: TTFactory }).trustedTypes;\n if (!factory) {\n cachedPolicy = passThroughPolicy;\n return cachedPolicy;\n }\n\n const native = factory.createPolicy(name, {\n createScript: validateImportMapJSON,\n createScriptURL: validateScriptURL,\n });\n\n cachedPolicy = {\n createScript: input => native.createScript(input),\n createScriptURL: input => String(native.createScriptURL(input)),\n };\n return cachedPolicy;\n};\n\nexport const __resetTrustedTypesPolicyForTests = (): void => {\n cachedPolicy = null;\n};\n", "import type { ImportMap } from 'lib/core/1.domain';\nimport type { SetImportMap } from 'lib/core/2.app/config/import-map.contract';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\nexport const replaceInDOM =\n (mapType: string, trustedTypesPolicyName: string | false = 'nfo'): SetImportMap =>\n (importMap: ImportMap, opts = {}) => {\n if (opts?.override) {\n document.head\n .querySelectorAll(`script[type=\"${mapType}\"]`)\n .forEach(importMap => importMap.remove());\n }\n\n const policy = getTrustedTypesPolicy(trustedTypesPolicyName);\n document.head.appendChild(\n Object.assign(document.createElement('script'), {\n type: mapType,\n text: policy.createScript(JSON.stringify(importMap)),\n })\n );\n return Promise.resolve(importMap);\n };\n", "import type { ImportMapConfig } from 'lib/core/2.app/config/import-map.contract';\nimport { replaceInDOM } from './replace-in-dom';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\ndeclare function importShim<T>(url: string): T;\n\nconst useShimImportMap = (\n cfg: { shimMode: boolean } = { shimMode: false },\n trustedTypesPolicyName: string | false = 'nfo'\n): ImportMapConfig => ({\n loadModuleFn: url => {\n const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);\n return importShim(trusted);\n },\n setImportMapFn: replaceInDOM(\n cfg.shimMode ? 'importmap-shim' : 'importmap',\n trustedTypesPolicyName\n ),\n reloadBrowserFn: () => {\n window.location.reload();\n },\n});\n\nexport { useShimImportMap };\n", "import type { ImportMapConfig } from 'lib/core/2.app/config/import-map.contract';\nimport { replaceInDOM } from './replace-in-dom';\nimport { getTrustedTypesPolicy } from './trusted-types';\n\nconst useDefaultImportMap = (trustedTypesPolicyName: string | false = 'nfo'): ImportMapConfig => ({\n loadModuleFn: url => {\n const trusted = getTrustedTypesPolicy(trustedTypesPolicyName).createScriptURL(url);\n return import(/* @vite-ignore */ trusted);\n },\n setImportMapFn: replaceInDOM('importmap', trustedTypesPolicyName),\n reloadBrowserFn: () => {\n window.location.reload();\n },\n});\n\nexport { useDefaultImportMap };\n", "import type { ModeProfileConfig } from 'lib/core/2.app/config/mode.contract';\n\nexport const defaultProfile: ModeProfileConfig = {\n latestSharedExternal: false,\n skipInvalidExternalVersions: false,\n overrideCachedRemotes: 'init-only',\n overrideCachedRemotesIfURLMatches: false,\n};\n", "import type { ModeProfileConfig } from 'lib/core/2.app/config/mode.contract';\n\nexport const cachingProfile: ModeProfileConfig = {\n latestSharedExternal: false,\n skipInvalidExternalVersions: false,\n overrideCachedRemotes: 'never',\n overrideCachedRemotesIfURLMatches: false,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["importMap"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "4.
|
|
2
|
+
"version": "4.4.0",
|
|
3
3
|
"name": "@softarc/native-federation-orchestrator",
|
|
4
4
|
"author": "Aukevanoost",
|
|
5
5
|
"keywords": [
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
"types": "./types/lib/audit.index.d.ts",
|
|
50
50
|
"default": "./fesm2022/audit.mjs"
|
|
51
51
|
},
|
|
52
|
+
"./module-federation": {
|
|
53
|
+
"types": "./types/lib/module-federation.index.d.ts",
|
|
54
|
+
"default": "./fesm2022/module-federation.mjs"
|
|
55
|
+
},
|
|
52
56
|
"./node": {
|
|
53
57
|
"types": "./types/lib/node.index.d.ts",
|
|
54
58
|
"default": "./fesm2022/node.mjs"
|