@servicetitan/web-components 30.3.1 → 31.0.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.
Files changed (74) hide show
  1. package/dist/__mocks__/test-component.d.ts.map +1 -1
  2. package/dist/common.js +17 -13
  3. package/dist/common.js.map +1 -1
  4. package/dist/contexts/index.js +1 -0
  5. package/dist/contexts/index.js.map +1 -1
  6. package/dist/contexts/mfe-data-context.js +2 -2
  7. package/dist/contexts/mfe-data-context.js.map +1 -1
  8. package/dist/contexts/mfe-metadata-context.js +1 -0
  9. package/dist/contexts/mfe-metadata-context.js.map +1 -1
  10. package/dist/delayed.js +8 -5
  11. package/dist/delayed.js.map +1 -1
  12. package/dist/event-bus.js +79 -97
  13. package/dist/event-bus.js.map +1 -1
  14. package/dist/get-value-for-environment.js +9 -4
  15. package/dist/get-value-for-environment.js.map +1 -1
  16. package/dist/globals.js +7 -7
  17. package/dist/globals.js.map +1 -1
  18. package/dist/history-manager.js +59 -69
  19. package/dist/history-manager.js.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/loader.js +92 -49
  23. package/dist/loader.js.map +1 -1
  24. package/dist/register.js +182 -218
  25. package/dist/register.js.map +1 -1
  26. package/dist/render.js +11 -12
  27. package/dist/render.js.map +1 -1
  28. package/dist/types.js +2 -1
  29. package/dist/types.js.map +1 -1
  30. package/dist/utils/get-bundle-info.js +18 -16
  31. package/dist/utils/get-bundle-info.js.map +1 -1
  32. package/dist/utils/get-element-name.js +1 -0
  33. package/dist/utils/get-element-name.js.map +1 -1
  34. package/dist/utils/get-entry-points.js +11 -4
  35. package/dist/utils/get-entry-points.js.map +1 -1
  36. package/dist/utils/get-ld-service-token.js +3 -3
  37. package/dist/utils/get-ld-service-token.js.map +1 -1
  38. package/dist/utils/get-mfe-has-compatible-launchdarkly-version.js +4 -4
  39. package/dist/utils/get-mfe-has-compatible-launchdarkly-version.js.map +1 -1
  40. package/dist/utils/get-mfe-has-unique-chunk-namespace.js +1 -0
  41. package/dist/utils/get-mfe-has-unique-chunk-namespace.js.map +1 -1
  42. package/dist/utils/get-mfe-supports-rerendering.js +4 -4
  43. package/dist/utils/get-mfe-supports-rerendering.js.map +1 -1
  44. package/dist/utils/get-version-mismatches.js +18 -11
  45. package/dist/utils/get-version-mismatches.js.map +1 -1
  46. package/dist/utils/index.js +1 -0
  47. package/dist/utils/index.js.map +1 -1
  48. package/dist/utils/is-compatible.js +1 -0
  49. package/dist/utils/is-compatible.js.map +1 -1
  50. package/dist/utils/is-versioned-url.js +2 -1
  51. package/dist/utils/is-versioned-url.js.map +1 -1
  52. package/dist/utils/load-scripts.js +7 -6
  53. package/dist/utils/load-scripts.js.map +1 -1
  54. package/dist/utils/ttl-cache.js +26 -27
  55. package/dist/utils/ttl-cache.js.map +1 -1
  56. package/dist/utils/validate-bundle-info.js +13 -10
  57. package/dist/utils/validate-bundle-info.js.map +1 -1
  58. package/dist/utils/web-component.js +46 -22
  59. package/dist/utils/web-component.js.map +1 -1
  60. package/package.json +11 -11
  61. package/src/__mocks__/test-component.tsx +2 -0
  62. package/src/__tests__/loader.test.tsx +3 -3
  63. package/dist/__mocks__/expect-styles-in-dom.js +0 -9
  64. package/dist/__mocks__/expect-styles-in-dom.js.map +0 -1
  65. package/dist/__mocks__/index.js +0 -4
  66. package/dist/__mocks__/index.js.map +0 -1
  67. package/dist/__mocks__/register-component.js +0 -14
  68. package/dist/__mocks__/register-component.js.map +0 -1
  69. package/dist/__mocks__/test-component.js +0 -15
  70. package/dist/__mocks__/test-component.js.map +0 -1
  71. package/dist/contexts/tests/mfe-data-context.test.js +0 -24
  72. package/dist/contexts/tests/mfe-data-context.test.js.map +0 -1
  73. package/dist/contexts/tests/mfe-metadata-context.test.js +0 -26
  74. package/dist/contexts/tests/mfe-metadata-context.test.js.map +0 -1
@@ -7,14 +7,14 @@ import { getVersionMismatches } from './get-version-mismatches';
7
7
  import { isVersionedUrl } from './is-versioned-url';
8
8
  import { getMFEHasCompatibleLaunchDarklyVersion } from './get-mfe-has-compatible-launchdarkly-version';
9
9
  import { getMFEHasUniqueChunkNamespace } from './get-mfe-has-unique-chunk-namespace';
10
- export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, exposedDependencies = {}, exposedInstanceDependencies = {}, signal, retries, onRequestError, }) {
11
- var _a;
10
+ export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, exposedDependencies = {}, exposedInstanceDependencies = {}, signal, retries, onRequestError }) {
11
+ var _metadata_entrypoints;
12
12
  const { data: metadata, url: packageUrl } = await getMetadata({
13
13
  fallbackPackageUrl,
14
14
  mainPackageUrl,
15
15
  onRequestError,
16
16
  retries,
17
- signal,
17
+ signal
18
18
  });
19
19
  const { bundledWith, name, sharedDependencies } = metadata;
20
20
  const exactPackageUrl = packageUrl.replace('/dist/metadata.json', '');
@@ -22,12 +22,11 @@ export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, expose
22
22
  let dependencies;
23
23
  if (metadata.dependencies) {
24
24
  dependencies = metadata.dependencies;
25
- }
26
- else {
25
+ } else {
27
26
  const { data: packageJson } = await getJson(`${exactPackageUrl}/package.json`, {
28
27
  cache,
29
28
  retries,
30
- signal,
29
+ signal
31
30
  });
32
31
  dependencies = packageJson.dependencies;
33
32
  }
@@ -37,15 +36,14 @@ export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, expose
37
36
  const supportLightBundles = startupVersion && semver.gte(startupVersion, '17.0.0');
38
37
  const embed = !hasMismatch && supportLightBundles;
39
38
  const bundleType = embed ? 'light' : 'full';
40
- const withBaseUrl = (path) => `${exactPackageUrl}/dist/bundle/${bundleType}/${path}`;
39
+ const withBaseUrl = (path)=>`${exactPackageUrl}/dist/bundle/${bundleType}/${path}`;
41
40
  let entrypoints;
42
- if ((_a = metadata.entrypoints) === null || _a === void 0 ? void 0 : _a[bundleType]) {
41
+ if ((_metadata_entrypoints = metadata.entrypoints) === null || _metadata_entrypoints === void 0 ? void 0 : _metadata_entrypoints[bundleType]) {
43
42
  entrypoints = metadata.entrypoints[bundleType];
44
- }
45
- else {
43
+ } else {
46
44
  entrypoints = await getEntrypoints(withBaseUrl('entrypoints.json'), cache);
47
45
  }
48
- const disposer = () => {
46
+ const disposer = ()=>{
49
47
  if (embed) {
50
48
  const path = Object.values(sharedDependencies).shift();
51
49
  if (path) {
@@ -53,7 +51,10 @@ export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, expose
53
51
  }
54
52
  }
55
53
  };
56
- const urls = Object.entries(entrypoints).reduce((result, [key, value]) => ({ ...result, [key]: value.map(withBaseUrl) }), {});
54
+ const urls = Object.entries(entrypoints).reduce((result, [key, value])=>({
55
+ ...result,
56
+ [key]: value.map(withBaseUrl)
57
+ }), {});
57
58
  return {
58
59
  bundledWith,
59
60
  disposer,
@@ -63,7 +64,7 @@ export async function getBundleInfo({ mainPackageUrl, fallbackPackageUrl, expose
63
64
  mismatch: hasMismatch ? mismatch : undefined,
64
65
  urls,
65
66
  WebComponent: name,
66
- version: metadata.version,
67
+ version: metadata.version
67
68
  };
68
69
  }
69
70
  async function getMetadata(props) {
@@ -72,8 +73,8 @@ async function getMetadata(props) {
72
73
  cache: getCacheSetting(mainPackageUrl),
73
74
  retries: fallbackPackageUrl ? 0 : retries,
74
75
  onRequestError,
75
- signal,
76
- }).catch(e => {
76
+ signal
77
+ }).catch((e)=>{
77
78
  if (!fallbackPackageUrl) {
78
79
  throw e;
79
80
  }
@@ -81,11 +82,12 @@ async function getMetadata(props) {
81
82
  retries,
82
83
  onRequestError,
83
84
  cache: getCacheSetting(fallbackPackageUrl),
84
- signal,
85
+ signal
85
86
  });
86
87
  });
87
88
  }
88
89
  function getCacheSetting(url) {
89
90
  return isVersionedUrl(url) ? undefined : 'no-store';
90
91
  }
92
+
91
93
  //# sourceMappingURL=get-bundle-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-bundle-info.js","sourceRoot":"","sources":["../../src/utils/get-bundle-info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/get-bundle-info.ts"],"sourcesContent":["import semver from 'semver';\nimport get from 'lodash.get';\n\nimport { ExposedDependencies, ExposedInstanceDependencies, getJson, GetJsonError } from '../common';\nimport { EntryPoints, getEntrypoints } from './get-entry-points';\nimport { getMFESupportsRerendering } from './get-mfe-supports-rerendering';\nimport { getVersionMismatches } from './get-version-mismatches';\nimport { isVersionedUrl } from './is-versioned-url';\nimport { getMFEHasCompatibleLaunchDarklyVersion } from './get-mfe-has-compatible-launchdarkly-version';\nimport { getMFEHasUniqueChunkNamespace } from './get-mfe-has-unique-chunk-namespace';\n\nexport interface Metadata {\n name: string;\n version?: string;\n bundledWith?: Record<string, string | undefined>;\n sharedDependencies: Record<string, string>;\n dependencies?: Record<string, string>;\n entrypoints?: Record<string, { css: string[]; js: string[] }>;\n}\n\nexport type BundleInfo = Awaited<ReturnType<typeof getBundleInfo>>;\n\ninterface GetBundleInfoProps {\n exposedDependencies?: ExposedDependencies;\n exposedInstanceDependencies?: ExposedInstanceDependencies;\n fallbackPackageUrl?: string;\n mainPackageUrl: string;\n onRequestError?: (error: GetJsonError) => void;\n retries?: number;\n signal?: AbortSignal;\n}\n\nexport async function getBundleInfo({\n mainPackageUrl,\n fallbackPackageUrl,\n exposedDependencies = {},\n exposedInstanceDependencies = {},\n signal,\n retries,\n onRequestError,\n}: GetBundleInfoProps) {\n const { data: metadata, url: packageUrl } = await getMetadata({\n fallbackPackageUrl,\n mainPackageUrl,\n onRequestError,\n retries,\n signal,\n });\n\n const { bundledWith, name, sharedDependencies } = metadata;\n const exactPackageUrl = packageUrl.replace('/dist/metadata.json', '');\n const cache = getCacheSetting(exactPackageUrl);\n\n let dependencies: NonNullable<Metadata['dependencies']>;\n if (metadata.dependencies) {\n dependencies = metadata.dependencies;\n } else {\n const { data: packageJson } = await getJson(`${exactPackageUrl}/package.json`, {\n cache,\n retries,\n signal,\n });\n\n dependencies = packageJson.dependencies;\n }\n\n const mismatch = getVersionMismatches(exposedDependencies, dependencies, sharedDependencies);\n const hasMismatch = !!Object.keys(mismatch).length;\n const startupVersion = bundledWith?.['@servicetitan/startup'];\n const supportLightBundles = startupVersion && semver.gte(startupVersion, '17.0.0');\n const embed = !hasMismatch && supportLightBundles;\n const bundleType = embed ? 'light' : 'full';\n const withBaseUrl = (path: string) => `${exactPackageUrl}/dist/bundle/${bundleType}/${path}`;\n\n let entrypoints: EntryPoints;\n if (metadata.entrypoints?.[bundleType]) {\n entrypoints = metadata.entrypoints[bundleType];\n } else {\n entrypoints = await getEntrypoints(withBaseUrl('entrypoints.json'), cache);\n }\n\n const disposer = () => {\n if (embed) {\n const path = Object.values<string>(sharedDependencies).shift();\n if (path) {\n get(window, path).getStorage().clear(name);\n }\n }\n };\n\n const urls = Object.entries(entrypoints).reduce(\n (result, [key, value]) => ({ ...result, [key]: value.map(withBaseUrl) }),\n {} as EntryPoints\n );\n\n return {\n bundledWith,\n disposer,\n mfeSupportsRerendering: getMFESupportsRerendering(bundledWith, dependencies),\n mfeHasUniqueChunkNamespace: getMFEHasUniqueChunkNamespace(bundledWith),\n mfeHasCompatibleLaunchDarklyVersion: getMFEHasCompatibleLaunchDarklyVersion(\n bundledWith,\n exposedInstanceDependencies\n ),\n mismatch: hasMismatch ? mismatch : undefined,\n urls,\n WebComponent: name,\n version: metadata.version,\n };\n}\n\nasync function getMetadata(props: {\n fallbackPackageUrl?: string;\n mainPackageUrl: string;\n onRequestError?: (error: GetJsonError) => void;\n signal?: AbortSignal;\n retries?: number;\n}) {\n const { fallbackPackageUrl, mainPackageUrl, onRequestError, retries, signal } = props;\n\n return getJson<Metadata>(`${mainPackageUrl}/dist/metadata.json`, {\n cache: getCacheSetting(mainPackageUrl),\n retries: fallbackPackageUrl ? 0 : retries,\n onRequestError,\n signal,\n }).catch(e => {\n if (!fallbackPackageUrl) {\n throw e;\n }\n\n return getJson<Metadata>(`${fallbackPackageUrl}/dist/metadata.json`, {\n retries,\n onRequestError,\n cache: getCacheSetting(fallbackPackageUrl),\n signal,\n });\n });\n}\n\nfunction getCacheSetting(url: string) {\n return isVersionedUrl(url) ? undefined : 'no-store';\n}\n"],"names":["semver","get","getJson","getEntrypoints","getMFESupportsRerendering","getVersionMismatches","isVersionedUrl","getMFEHasCompatibleLaunchDarklyVersion","getMFEHasUniqueChunkNamespace","getBundleInfo","mainPackageUrl","fallbackPackageUrl","exposedDependencies","exposedInstanceDependencies","signal","retries","onRequestError","metadata","data","url","packageUrl","getMetadata","bundledWith","name","sharedDependencies","exactPackageUrl","replace","cache","getCacheSetting","dependencies","packageJson","mismatch","hasMismatch","Object","keys","length","startupVersion","supportLightBundles","gte","embed","bundleType","withBaseUrl","path","entrypoints","disposer","values","shift","window","getStorage","clear","urls","entries","reduce","result","key","value","map","mfeSupportsRerendering","mfeHasUniqueChunkNamespace","mfeHasCompatibleLaunchDarklyVersion","undefined","WebComponent","version","props","catch","e"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export function getElementName({ WebComponent }) {
2
2
  return WebComponent.replace(/-[^-]+$/, '');
3
3
  }
4
+
4
5
  //# sourceMappingURL=get-element-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-element-name.js","sourceRoot":"","sources":["../../src/utils/get-element-name.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,EAAE,YAAY,EAAoC;IAC7E,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-element-name.ts"],"sourcesContent":["import { BundleInfo } from './get-bundle-info';\n\nexport function getElementName({ WebComponent }: Pick<BundleInfo, 'WebComponent'>) {\n return WebComponent.replace(/-[^-]+$/, '');\n}\n"],"names":["getElementName","WebComponent","replace"],"mappings":"AAEA,OAAO,SAASA,eAAe,EAAEC,YAAY,EAAoC;IAC7E,OAAOA,aAAaC,OAAO,CAAC,WAAW;AAC3C"}
@@ -3,11 +3,18 @@ export async function getEntrypoints(url, cache, signal) {
3
3
  try {
4
4
  return (await getJson(url, {
5
5
  cache,
6
- signal,
6
+ signal
7
7
  })).data;
8
- }
9
- catch (_a) {
10
- return { css: ['index.css'], js: ['index.js'] };
8
+ } catch (e) {
9
+ return {
10
+ css: [
11
+ 'index.css'
12
+ ],
13
+ js: [
14
+ 'index.js'
15
+ ]
16
+ };
11
17
  }
12
18
  }
19
+
13
20
  //# sourceMappingURL=get-entry-points.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-entry-points.js","sourceRoot":"","sources":["../../src/utils/get-entry-points.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,CAAC,KAAK,UAAU,cAAc,CAChC,GAAW,EACX,KAA6B,EAC7B,MAAoB;IAEpB,IAAI,CAAC;QACD,OAAO,CACH,MAAM,OAAO,CAAC,GAAG,EAAE;YACf,KAAK;YACL,MAAM;SACT,CAAC,CACL,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACpD,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-entry-points.ts"],"sourcesContent":["import { getJson } from '../common';\n\nexport interface EntryPoints {\n css: string[];\n js: string[];\n}\n\nexport async function getEntrypoints(\n url: string,\n cache: 'no-store' | undefined,\n signal?: AbortSignal\n): Promise<EntryPoints> {\n try {\n return (\n await getJson(url, {\n cache,\n signal,\n })\n ).data;\n } catch {\n return { css: ['index.css'], js: ['index.js'] };\n }\n}\n"],"names":["getJson","getEntrypoints","url","cache","signal","data","css","js"],"mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AAOpC,OAAO,eAAeC,eAClBC,GAAW,EACXC,KAA6B,EAC7BC,MAAoB;IAEpB,IAAI;QACA,OAAO,AACH,CAAA,MAAMJ,QAAQE,KAAK;YACfC;YACAC;QACJ,EAAC,EACHC,IAAI;IACV,EAAE,UAAM;QACJ,OAAO;YAAEC,KAAK;gBAAC;aAAY;YAAEC,IAAI;gBAAC;aAAW;QAAC;IAClD;AACJ"}
@@ -1,11 +1,11 @@
1
1
  let token;
2
2
  try {
3
3
  token = require('@servicetitan/launchdarkly-service').LD_SERVICE_TOKEN;
4
- }
5
- catch (_a) {
6
- // ignore
4
+ } catch (e) {
5
+ // ignore
7
6
  }
8
7
  export function getLDServiceToken() {
9
8
  return token;
10
9
  }
10
+
11
11
  //# sourceMappingURL=get-ld-service-token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-ld-service-token.js","sourceRoot":"","sources":["../../src/utils/get-ld-service-token.ts"],"names":[],"mappings":"AAGA,IAAI,KAA6B,CAAC;AAClC,IAAI,CAAC;IACD,KAAK,GAAG,OAAO,CAAC,oCAAoC,CAAC,CAAC,gBAAgB,CAAC;AAC3E,CAAC;AAAC,WAAM,CAAC;IACL,SAAS;AACb,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-ld-service-token.ts"],"sourcesContent":["import { type LDService } from '@servicetitan/launchdarkly-service';\nimport { SymbolToken } from '@servicetitan/react-ioc';\n\nlet token: SymbolToken<LDService>;\ntry {\n token = require('@servicetitan/launchdarkly-service').LD_SERVICE_TOKEN;\n} catch {\n // ignore\n}\n\nexport function getLDServiceToken() {\n return token;\n}\n"],"names":["token","require","LD_SERVICE_TOKEN","getLDServiceToken"],"mappings":"AAGA,IAAIA;AACJ,IAAI;IACAA,QAAQC,QAAQ,sCAAsCC,gBAAgB;AAC1E,EAAE,UAAM;AACJ,SAAS;AACb;AAEA,OAAO,SAASC;IACZ,OAAOH;AACX"}
@@ -4,13 +4,13 @@
4
4
  * @returns Returns true when host and MFE use compatible version of LaunchDarkly
5
5
  * and returns false when host and MGE use incompatible version.
6
6
  * Returns undefined when either the host or MFE doesn't expose LaunchDarkly.
7
- */
8
- export function getMFEHasCompatibleLaunchDarklyVersion(bundledWith, exposedInstanceDependencies) {
9
- var _a;
7
+ */ export function getMFEHasCompatibleLaunchDarklyVersion(bundledWith, exposedInstanceDependencies) {
8
+ var _exposedInstanceDependencies_launchDarkly;
10
9
  const mfeVersion = bundledWith === null || bundledWith === void 0 ? void 0 : bundledWith['launchdarkly-js-client-sdk'];
11
- const hostVersion = (_a = exposedInstanceDependencies.launchDarkly) === null || _a === void 0 ? void 0 : _a.version;
10
+ const hostVersion = (_exposedInstanceDependencies_launchDarkly = exposedInstanceDependencies.launchDarkly) === null || _exposedInstanceDependencies_launchDarkly === void 0 ? void 0 : _exposedInstanceDependencies_launchDarkly.version;
12
11
  if (hostVersion && mfeVersion) {
13
12
  return hostVersion === mfeVersion;
14
13
  }
15
14
  }
15
+
16
16
  //# sourceMappingURL=get-mfe-has-compatible-launchdarkly-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-mfe-has-compatible-launchdarkly-version.js","sourceRoot":"","sources":["../../src/utils/get-mfe-has-compatible-launchdarkly-version.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CAClD,WAAoC,EACpC,2BAAwD;;IAExD,MAAM,UAAU,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,4BAA4B,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAA,2BAA2B,CAAC,YAAY,0CAAE,OAAO,CAAC;IACtE,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;QAC5B,OAAO,WAAW,KAAK,UAAU,CAAC;IACtC,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-mfe-has-compatible-launchdarkly-version.ts"],"sourcesContent":["import { ExposedInstanceDependencies } from '../common';\nimport { Metadata } from './get-bundle-info';\n\n/**\n * @param bundledWith THe MFE's metadata.bundledWith.\n * @param exposedInstanceDependencies The hosts's EXPOSED_INSTANCE_DEPENDENCIES, if any.\n * @returns Returns true when host and MFE use compatible version of LaunchDarkly\n * and returns false when host and MGE use incompatible version.\n * Returns undefined when either the host or MFE doesn't expose LaunchDarkly.\n */\nexport function getMFEHasCompatibleLaunchDarklyVersion(\n bundledWith: Metadata['bundledWith'],\n exposedInstanceDependencies: ExposedInstanceDependencies\n) {\n const mfeVersion = bundledWith?.['launchdarkly-js-client-sdk'];\n const hostVersion = exposedInstanceDependencies.launchDarkly?.version;\n if (hostVersion && mfeVersion) {\n return hostVersion === mfeVersion;\n }\n}\n"],"names":["getMFEHasCompatibleLaunchDarklyVersion","bundledWith","exposedInstanceDependencies","mfeVersion","hostVersion","launchDarkly","version"],"mappings":"AAGA;;;;;;CAMC,GACD,OAAO,SAASA,uCACZC,WAAoC,EACpCC,2BAAwD;QAGpCA;IADpB,MAAMC,aAAaF,wBAAAA,kCAAAA,WAAa,CAAC,6BAA6B;IAC9D,MAAMG,eAAcF,4CAAAA,4BAA4BG,YAAY,cAAxCH,gEAAAA,0CAA0CI,OAAO;IACrE,IAAIF,eAAeD,YAAY;QAC3B,OAAOC,gBAAgBD;IAC3B;AACJ"}
@@ -9,4 +9,5 @@ function isSupportedVersion(version) {
9
9
  return semver.gte(minVersion, '27.2.0');
10
10
  }
11
11
  }
12
+
12
13
  //# sourceMappingURL=get-mfe-has-unique-chunk-namespace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-mfe-has-unique-chunk-namespace.js","sourceRoot":"","sources":["../../src/utils/get-mfe-has-unique-chunk-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,0EAA0E;AAC1E,MAAM,UAAU,6BAA6B,CAAC,WAAoC;IAC9E,OAAO,CAAC,CAAC,kBAAkB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,uBAAuB,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IACxC,MAAM,UAAU,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-mfe-has-unique-chunk-namespace.ts"],"sourcesContent":["import semver from 'semver';\nimport { Metadata } from './get-bundle-info';\n\n// Check if the MFE loads it's chunks into a unique global chunk namespace\nexport function getMFEHasUniqueChunkNamespace(bundledWith: Metadata['bundledWith']) {\n return !!isSupportedVersion(bundledWith?.['@servicetitan/startup']);\n}\n\nfunction isSupportedVersion(version?: string) {\n const minVersion = version && semver.minVersion(version);\n if (minVersion) {\n return semver.gte(minVersion, '27.2.0');\n }\n}\n"],"names":["semver","getMFEHasUniqueChunkNamespace","bundledWith","isSupportedVersion","version","minVersion","gte"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAG5B,0EAA0E;AAC1E,OAAO,SAASC,8BAA8BC,WAAoC;IAC9E,OAAO,CAAC,CAACC,mBAAmBD,wBAAAA,kCAAAA,WAAa,CAAC,wBAAwB;AACtE;AAEA,SAASC,mBAAmBC,OAAgB;IACxC,MAAMC,aAAaD,WAAWJ,OAAOK,UAAU,CAACD;IAChD,IAAIC,YAAY;QACZ,OAAOL,OAAOM,GAAG,CAACD,YAAY;IAClC;AACJ"}
@@ -8,10 +8,9 @@ import semver from 'semver';
8
8
  * dependency is set in it's own package's package.json instead of the monorepo's root package.json
9
9
  * `bundledWith.@servicetitan/startup` is checked third, with the hope that the startup version
10
10
  * matches web-components
11
- */
12
- export function getMFESupportsRerendering(bundledWith, dependencies) {
13
- var _a, _b;
14
- return !!((_b = (_a = isSupportedVersion(bundledWith === null || bundledWith === void 0 ? void 0 : bundledWith['@servicetitan/web-components'])) !== null && _a !== void 0 ? _a : isSupportedVersion(dependencies === null || dependencies === void 0 ? void 0 : dependencies['@servicetitan/web-components'])) !== null && _b !== void 0 ? _b : isSupportedVersion(bundledWith === null || bundledWith === void 0 ? void 0 : bundledWith['@servicetitan/startup']));
11
+ */ export function getMFESupportsRerendering(bundledWith, dependencies) {
12
+ var _isSupportedVersion, _ref;
13
+ return !!((_ref = (_isSupportedVersion = isSupportedVersion(bundledWith === null || bundledWith === void 0 ? void 0 : bundledWith['@servicetitan/web-components'])) !== null && _isSupportedVersion !== void 0 ? _isSupportedVersion : isSupportedVersion(dependencies === null || dependencies === void 0 ? void 0 : dependencies['@servicetitan/web-components'])) !== null && _ref !== void 0 ? _ref : isSupportedVersion(bundledWith === null || bundledWith === void 0 ? void 0 : bundledWith['@servicetitan/startup']));
15
14
  }
16
15
  function isSupportedVersion(version) {
17
16
  const minVersion = version && semver.minVersion(version);
@@ -19,4 +18,5 @@ function isSupportedVersion(version) {
19
18
  return semver.gte(minVersion, '22.12.0');
20
19
  }
21
20
  }
21
+
22
22
  //# sourceMappingURL=get-mfe-supports-rerendering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-mfe-supports-rerendering.js","sourceRoot":"","sources":["../../src/utils/get-mfe-supports-rerendering.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACrC,WAAoC,EACpC,YAAsC;;IAEtC,OAAO,CAAC,CAAC,CACL,MAAA,MAAA,kBAAkB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,8BAA8B,CAAC,CAAC,mCACjE,kBAAkB,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,8BAA8B,CAAC,CAAC,mCAClE,kBAAkB,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,uBAAuB,CAAC,CAAC,CAC7D,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IACxC,MAAM,UAAU,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-mfe-supports-rerendering.ts"],"sourcesContent":["import semver from 'semver';\nimport { Metadata } from './get-bundle-info';\n\n/*\n * Check if the MFE supports re-rendering itself when data changes\n *\n * `bundledWith.@servicetitan/web-components` is checked first, as that guarantees support\n * `dependencies.@servicetitan/web-components` is checked second, in the case of the MFE's startup\n * hasn't been updated to add web-components to bundledWith yet, and the MFE's web-component\n * dependency is set in it's own package's package.json instead of the monorepo's root package.json\n * `bundledWith.@servicetitan/startup` is checked third, with the hope that the startup version\n * matches web-components\n */\nexport function getMFESupportsRerendering(\n bundledWith: Metadata['bundledWith'],\n dependencies: Metadata['dependencies']\n) {\n return !!(\n isSupportedVersion(bundledWith?.['@servicetitan/web-components']) ??\n isSupportedVersion(dependencies?.['@servicetitan/web-components']) ??\n isSupportedVersion(bundledWith?.['@servicetitan/startup'])\n );\n}\n\nfunction isSupportedVersion(version?: string) {\n const minVersion = version && semver.minVersion(version);\n if (minVersion) {\n return semver.gte(minVersion, '22.12.0');\n }\n}\n"],"names":["semver","getMFESupportsRerendering","bundledWith","dependencies","isSupportedVersion","version","minVersion","gte"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAG5B;;;;;;;;;CASC,GACD,OAAO,SAASC,0BACZC,WAAoC,EACpCC,YAAsC;QAGlCC,qBAAAA;IADJ,OAAO,CAAC,CACJA,CAAAA,CAAAA,OAAAA,CAAAA,sBAAAA,mBAAmBF,wBAAAA,kCAAAA,WAAa,CAAC,+BAA+B,eAAhEE,iCAAAA,sBACAA,mBAAmBD,yBAAAA,mCAAAA,YAAc,CAAC,+BAA+B,eADjEC,kBAAAA,OAEAA,mBAAmBF,wBAAAA,kCAAAA,WAAa,CAAC,wBAAwB,CAAA;AAEjE;AAEA,SAASE,mBAAmBC,OAAgB;IACxC,MAAMC,aAAaD,WAAWL,OAAOM,UAAU,CAACD;IAChD,IAAIC,YAAY;QACZ,OAAON,OAAOO,GAAG,CAACD,YAAY;IAClC;AACJ"}
@@ -1,23 +1,30 @@
1
1
  import { isCompatible } from './is-compatible';
2
- export const getVersionMismatches = (exposedDependencies, dependencies, sharedDependencies) => {
3
- const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }]) => {
2
+ export const getVersionMismatches = (exposedDependencies, dependencies, sharedDependencies)=>{
3
+ const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }])=>{
4
4
  const packageVersion = dependencies[dependency];
5
- if (packageVersion &&
6
- !!sharedDependencies[dependency] &&
7
- !isCompatible(hostVersion, packageVersion)) {
8
- result[dependency] = { host: hostVersion, package: packageVersion };
5
+ if (packageVersion && !!sharedDependencies[dependency] && !isCompatible(hostVersion, packageVersion)) {
6
+ result[dependency] = {
7
+ host: hostVersion,
8
+ package: packageVersion
9
+ };
9
10
  }
10
11
  return result;
11
12
  }, {});
12
- for (const [dependency, variable] of Object.entries(sharedDependencies)) {
13
+ for (const [dependency, variable] of Object.entries(sharedDependencies)){
13
14
  const packageVersion = dependencies[dependency];
14
15
  if (!exposedDependencies[dependency]) {
15
- mismatch[dependency] = { host: 'missing', package: packageVersion };
16
- }
17
- else if (exposedDependencies[dependency].variable !== variable) {
18
- mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };
16
+ mismatch[dependency] = {
17
+ host: 'missing',
18
+ package: packageVersion
19
+ };
20
+ } else if (exposedDependencies[dependency].variable !== variable) {
21
+ mismatch[dependency] = {
22
+ host: 'wrong global variable',
23
+ package: packageVersion
24
+ };
19
25
  }
20
26
  }
21
27
  return mismatch;
22
28
  };
29
+
23
30
  //# sourceMappingURL=get-version-mismatches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-version-mismatches.js","sourceRoot":"","sources":["../../src/utils/get-version-mismatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,mBAAwC,EACxC,YAAoC,EACpC,kBAA0C,EAC5C,EAAE;IACA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,CACvD,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAChD,IACI,cAAc;YACd,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAChC,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,EAC5C,CAAC;YACC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,EACD,EAAuD,CAC1D,CAAC;IAEF,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtE,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACxE,CAAC;aAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/D,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACtF,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/get-version-mismatches.ts"],"sourcesContent":["import { ExposedDependencies } from '../common';\nimport { isCompatible } from './is-compatible';\n\nexport const getVersionMismatches = (\n exposedDependencies: ExposedDependencies,\n dependencies: Record<string, string>,\n sharedDependencies: Record<string, string>\n) => {\n const mismatch = Object.entries(exposedDependencies).reduce(\n (result, [dependency, { version: hostVersion }]) => {\n const packageVersion = dependencies[dependency];\n if (\n packageVersion &&\n !!sharedDependencies[dependency] &&\n !isCompatible(hostVersion, packageVersion)\n ) {\n result[dependency] = { host: hostVersion, package: packageVersion };\n }\n\n return result;\n },\n {} as Record<string, { host: string; package: string }>\n );\n\n for (const [dependency, variable] of Object.entries(sharedDependencies)) {\n const packageVersion = dependencies[dependency];\n\n if (!exposedDependencies[dependency]) {\n mismatch[dependency] = { host: 'missing', package: packageVersion };\n } else if (exposedDependencies[dependency].variable !== variable) {\n mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };\n }\n }\n\n return mismatch;\n};\n"],"names":["isCompatible","getVersionMismatches","exposedDependencies","dependencies","sharedDependencies","mismatch","Object","entries","reduce","result","dependency","version","hostVersion","packageVersion","host","package","variable"],"mappings":"AACA,SAASA,YAAY,QAAQ,kBAAkB;AAE/C,OAAO,MAAMC,uBAAuB,CAChCC,qBACAC,cACAC;IAEA,MAAMC,WAAWC,OAAOC,OAAO,CAACL,qBAAqBM,MAAM,CACvD,CAACC,QAAQ,CAACC,YAAY,EAAEC,SAASC,WAAW,EAAE,CAAC;QAC3C,MAAMC,iBAAiBV,YAAY,CAACO,WAAW;QAC/C,IACIG,kBACA,CAAC,CAACT,kBAAkB,CAACM,WAAW,IAChC,CAACV,aAAaY,aAAaC,iBAC7B;YACEJ,MAAM,CAACC,WAAW,GAAG;gBAAEI,MAAMF;gBAAaG,SAASF;YAAe;QACtE;QAEA,OAAOJ;IACX,GACA,CAAC;IAGL,KAAK,MAAM,CAACC,YAAYM,SAAS,IAAIV,OAAOC,OAAO,CAACH,oBAAqB;QACrE,MAAMS,iBAAiBV,YAAY,CAACO,WAAW;QAE/C,IAAI,CAACR,mBAAmB,CAACQ,WAAW,EAAE;YAClCL,QAAQ,CAACK,WAAW,GAAG;gBAAEI,MAAM;gBAAWC,SAASF;YAAe;QACtE,OAAO,IAAIX,mBAAmB,CAACQ,WAAW,CAACM,QAAQ,KAAKA,UAAU;YAC9DX,QAAQ,CAACK,WAAW,GAAG;gBAAEI,MAAM;gBAAyBC,SAASF;YAAe;QACpF;IACJ;IAEA,OAAOR;AACX,EAAE"}
@@ -9,4 +9,5 @@ export * from './load-scripts';
9
9
  export * from './ttl-cache';
10
10
  export * from './validate-bundle-info';
11
11
  export * from './web-component';
12
+
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './get-bundle-info';\nexport * from './get-element-name';\nexport * from './get-entry-points';\nexport * from './get-ld-service-token';\nexport * from './get-mfe-supports-rerendering';\nexport * from './get-version-mismatches';\nexport * from './is-versioned-url';\nexport * from './load-scripts';\nexport * from './ttl-cache';\nexport * from './validate-bundle-info';\nexport * from './web-component';\n"],"names":[],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,qBAAqB;AACnC,cAAc,qBAAqB;AACnC,cAAc,yBAAyB;AACvC,cAAc,iCAAiC;AAC/C,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,iBAAiB;AAC/B,cAAc,cAAc;AAC5B,cAAc,yBAAyB;AACvC,cAAc,kBAAkB"}
@@ -27,4 +27,5 @@ export function isCompatible(hostVersion, packageVersion) {
27
27
  }
28
28
  return false;
29
29
  }
30
+
30
31
  //# sourceMappingURL=is-compatible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-compatible.js","sourceRoot":"","sources":["../../src/utils/is-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,cAAsB;IACpE,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,cAAc,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iDAAiD;IACjD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/is-compatible.ts"],"sourcesContent":["import semver from 'semver';\n\nexport function isCompatible(hostVersion: string, packageVersion: string) {\n if (hostVersion === packageVersion) {\n return true;\n }\n\n if (hostVersion === '*') {\n return false;\n }\n\n if (packageVersion === '*') {\n return true;\n }\n\n // host and package have exact non-equal versions\n if (semver.valid(hostVersion) && semver.valid(packageVersion)) {\n return false;\n }\n\n // exact package version couldn't be compatible with host range\n if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {\n return false;\n }\n\n // exact host version must be in package range\n if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {\n return semver.satisfies(hostVersion, packageVersion);\n }\n\n // host range must be fully included in package range\n if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {\n return semver.subset(hostVersion, packageVersion);\n }\n\n return false;\n}\n"],"names":["semver","isCompatible","hostVersion","packageVersion","valid","validRange","satisfies","subset"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAE5B,OAAO,SAASC,aAAaC,WAAmB,EAAEC,cAAsB;IACpE,IAAID,gBAAgBC,gBAAgB;QAChC,OAAO;IACX;IAEA,IAAID,gBAAgB,KAAK;QACrB,OAAO;IACX;IAEA,IAAIC,mBAAmB,KAAK;QACxB,OAAO;IACX;IAEA,iDAAiD;IACjD,IAAIH,OAAOI,KAAK,CAACF,gBAAgBF,OAAOI,KAAK,CAACD,iBAAiB;QAC3D,OAAO;IACX;IAEA,+DAA+D;IAC/D,IAAIH,OAAOK,UAAU,CAACH,gBAAgBF,OAAOI,KAAK,CAACD,iBAAiB;QAChE,OAAO;IACX;IAEA,8CAA8C;IAC9C,IAAIH,OAAOI,KAAK,CAACF,gBAAgBF,OAAOK,UAAU,CAACF,iBAAiB;QAChE,OAAOH,OAAOM,SAAS,CAACJ,aAAaC;IACzC;IAEA,qDAAqD;IACrD,IAAIH,OAAOK,UAAU,CAACH,gBAAgBF,OAAOK,UAAU,CAACF,iBAAiB;QACrE,OAAOH,OAAOO,MAAM,CAACL,aAAaC;IACtC;IAEA,OAAO;AACX"}
@@ -1,9 +1,10 @@
1
1
  import semver from 'semver';
2
- export const isVersionedUrl = (url) => {
2
+ export const isVersionedUrl = (url)=>{
3
3
  if (!url.includes('unpkg.')) {
4
4
  return false;
5
5
  }
6
6
  const parts = url.split('@');
7
7
  return !!semver.clean(parts[parts.length - 1]);
8
8
  };
9
+
9
10
  //# sourceMappingURL=is-versioned-url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"is-versioned-url.js","sourceRoot":"","sources":["../../src/utils/is-versioned-url.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAW,EAAE;IACnD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7B,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/is-versioned-url.ts"],"sourcesContent":["import semver from 'semver';\n\nexport const isVersionedUrl = (url: string): boolean => {\n if (!url.includes('unpkg.')) {\n return false;\n }\n\n const parts = url.split('@');\n\n return !!semver.clean(parts[parts.length - 1]);\n};\n"],"names":["semver","isVersionedUrl","url","includes","parts","split","clean","length"],"mappings":"AAAA,OAAOA,YAAY,SAAS;AAE5B,OAAO,MAAMC,iBAAiB,CAACC;IAC3B,IAAI,CAACA,IAAIC,QAAQ,CAAC,WAAW;QACzB,OAAO;IACX;IAEA,MAAMC,QAAQF,IAAIG,KAAK,CAAC;IAExB,OAAO,CAAC,CAACL,OAAOM,KAAK,CAACF,KAAK,CAACA,MAAMG,MAAM,GAAG,EAAE;AACjD,EAAE"}
@@ -1,11 +1,11 @@
1
1
  export function loadScripts({ urls, WebComponent }) {
2
- return Promise.all(urls.js.map(url => {
3
- const script = Array.from(document.scripts).find(({ src }) => src === url);
2
+ return Promise.all(urls.js.map((url)=>{
3
+ const script = Array.from(document.scripts).find(({ src })=>src === url);
4
4
  if (!script) {
5
- return new Promise(resolve => {
5
+ return new Promise((resolve)=>{
6
6
  const script = document.createElement('script');
7
7
  script.crossOrigin = 'anonymous';
8
- script.onload = () => {
8
+ script.onload = ()=>{
9
9
  script.dataset.webComponent = WebComponent;
10
10
  script.onload = null;
11
11
  resolve();
@@ -16,9 +16,9 @@ export function loadScripts({ urls, WebComponent }) {
16
16
  });
17
17
  }
18
18
  if (!script.dataset.webComponent) {
19
- return new Promise(resolve => {
19
+ return new Promise((resolve)=>{
20
20
  const originalOnload = script.onload;
21
- script.onload = (...args) => {
21
+ script.onload = (...args)=>{
22
22
  originalOnload === null || originalOnload === void 0 ? void 0 : originalOnload.call(script, ...args);
23
23
  script.onload = null;
24
24
  resolve();
@@ -28,4 +28,5 @@ export function loadScripts({ urls, WebComponent }) {
28
28
  return Promise.resolve();
29
29
  }));
30
30
  }
31
+
31
32
  //# sourceMappingURL=load-scripts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-scripts.js","sourceRoot":"","sources":["../../src/utils/load-scripts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,YAAY,EAAc;IAC1D,OAAO,OAAO,CAAC,GAAG,CACd,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACd,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAEhD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;gBACjC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;oBACjB,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;oBAC3C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;oBACrB,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;gBACF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;gBACpB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;gBAEjB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/B,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAC/B,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;gBACrC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;oBACxB,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;oBACtC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;oBACrB,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC,CACL,CAAC;AACN,CAAC"}
1
+ {"version":3,"sources":["../../src/utils/load-scripts.ts"],"sourcesContent":["import { BundleInfo } from './get-bundle-info';\n\nexport function loadScripts({ urls, WebComponent }: BundleInfo) {\n return Promise.all(\n urls.js.map(url => {\n const script = Array.from(document.scripts).find(({ src }) => src === url);\n if (!script) {\n return new Promise<void>(resolve => {\n const script = document.createElement('script');\n\n script.crossOrigin = 'anonymous';\n script.onload = () => {\n script.dataset.webComponent = WebComponent;\n script.onload = null;\n resolve();\n };\n script.async = true;\n script.src = url;\n\n document.body.append(script);\n });\n }\n\n if (!script.dataset.webComponent) {\n return new Promise<void>(resolve => {\n const originalOnload = script.onload;\n script.onload = (...args) => {\n originalOnload?.call(script, ...args);\n script.onload = null;\n resolve();\n };\n });\n }\n\n return Promise.resolve();\n })\n );\n}\n"],"names":["loadScripts","urls","WebComponent","Promise","all","js","map","url","script","Array","from","document","scripts","find","src","resolve","createElement","crossOrigin","onload","dataset","webComponent","async","body","append","originalOnload","args","call"],"mappings":"AAEA,OAAO,SAASA,YAAY,EAAEC,IAAI,EAAEC,YAAY,EAAc;IAC1D,OAAOC,QAAQC,GAAG,CACdH,KAAKI,EAAE,CAACC,GAAG,CAACC,CAAAA;QACR,MAAMC,SAASC,MAAMC,IAAI,CAACC,SAASC,OAAO,EAAEC,IAAI,CAAC,CAAC,EAAEC,GAAG,EAAE,GAAKA,QAAQP;QACtE,IAAI,CAACC,QAAQ;YACT,OAAO,IAAIL,QAAcY,CAAAA;gBACrB,MAAMP,SAASG,SAASK,aAAa,CAAC;gBAEtCR,OAAOS,WAAW,GAAG;gBACrBT,OAAOU,MAAM,GAAG;oBACZV,OAAOW,OAAO,CAACC,YAAY,GAAGlB;oBAC9BM,OAAOU,MAAM,GAAG;oBAChBH;gBACJ;gBACAP,OAAOa,KAAK,GAAG;gBACfb,OAAOM,GAAG,GAAGP;gBAEbI,SAASW,IAAI,CAACC,MAAM,CAACf;YACzB;QACJ;QAEA,IAAI,CAACA,OAAOW,OAAO,CAACC,YAAY,EAAE;YAC9B,OAAO,IAAIjB,QAAcY,CAAAA;gBACrB,MAAMS,iBAAiBhB,OAAOU,MAAM;gBACpCV,OAAOU,MAAM,GAAG,CAAC,GAAGO;oBAChBD,2BAAAA,qCAAAA,eAAgBE,IAAI,CAAClB,WAAWiB;oBAChCjB,OAAOU,MAAM,GAAG;oBAChBH;gBACJ;YACJ;QACJ;QAEA,OAAOZ,QAAQY,OAAO;IAC1B;AAER"}
@@ -1,32 +1,19 @@
1
- const MINUTE = 1000 * 60;
2
- const DEFAULT_TTL = 5 * MINUTE;
3
- export class TtlCache {
4
- constructor({ ttlMs = DEFAULT_TTL } = {}) {
5
- Object.defineProperty(this, "data", {
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
6
5
  enumerable: true,
7
6
  configurable: true,
8
- writable: true,
9
- value: void 0
7
+ writable: true
10
8
  });
11
- Object.defineProperty(this, "timers", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "ttl", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: void 0
22
- });
23
- if (ttlMs < 0) {
24
- throw new Error('default TTL must be zero or greater');
25
- }
26
- this.data = new Map();
27
- this.timers = new Map();
28
- this.ttl = ttlMs;
9
+ } else {
10
+ obj[key] = value;
29
11
  }
12
+ return obj;
13
+ }
14
+ const MINUTE = 1000 * 60;
15
+ const DEFAULT_TTL = 5 * MINUTE;
16
+ export class TtlCache {
30
17
  set(key, value, ttl) {
31
18
  this.setTimeout(key, ttl !== null && ttl !== void 0 ? ttl : this.ttl);
32
19
  this.data.set(key, value);
@@ -43,7 +30,7 @@ export class TtlCache {
43
30
  }
44
31
  clear() {
45
32
  this.data.clear();
46
- this.timers.forEach(value => clearTimeout(value));
33
+ this.timers.forEach((value)=>clearTimeout(value));
47
34
  this.timers.clear();
48
35
  }
49
36
  cancelTimeout(key) {
@@ -58,8 +45,20 @@ export class TtlCache {
58
45
  if (ttl < 0) {
59
46
  return;
60
47
  }
61
- const id = setTimeout(() => this.delete(key), ttl);
48
+ const id = setTimeout(()=>this.delete(key), ttl);
62
49
  this.timers.set(key, id);
63
50
  }
51
+ constructor({ ttlMs = DEFAULT_TTL } = {}){
52
+ _define_property(this, "data", void 0);
53
+ _define_property(this, "timers", void 0);
54
+ _define_property(this, "ttl", void 0);
55
+ if (ttlMs < 0) {
56
+ throw new Error('default TTL must be zero or greater');
57
+ }
58
+ this.data = new Map();
59
+ this.timers = new Map();
60
+ this.ttl = ttlMs;
61
+ }
64
62
  }
63
+
65
64
  //# sourceMappingURL=ttl-cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ttl-cache.js","sourceRoot":"","sources":["../../src/utils/ttl-cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC;AAM/B,MAAM,OAAO,QAAQ;IAKjB,YAAY,EAAE,KAAK,GAAG,WAAW,KAAsB,EAAE;QAJjD;;;;;WAAqB;QACrB;;;;;WAAmD;QACnD;;;;;WAAY;QAGhB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAQ,EAAE,GAAY;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,GAAW;QACd,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,aAAa,CAAC,GAAW;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,EAAE,CAAC;YACL,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,GAAW;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;CACJ"}
1
+ {"version":3,"sources":["../../src/utils/ttl-cache.ts"],"sourcesContent":["const MINUTE = 1000 * 60;\nconst DEFAULT_TTL = 5 * MINUTE;\n\nexport interface TtlCacheOptions {\n ttlMs?: number;\n}\n\nexport class TtlCache<T = any> {\n private data: Map<string, T>;\n private timers: Map<string, ReturnType<typeof setTimeout>>;\n private ttl: number;\n\n constructor({ ttlMs = DEFAULT_TTL }: TtlCacheOptions = {}) {\n if (ttlMs < 0) {\n throw new Error('default TTL must be zero or greater');\n }\n\n this.data = new Map();\n this.timers = new Map();\n this.ttl = ttlMs;\n }\n\n set(key: string, value: T, ttl?: number) {\n this.setTimeout(key, ttl ?? this.ttl);\n this.data.set(key, value);\n }\n\n get(key: string) {\n return this.data.get(key);\n }\n\n has(key: string) {\n return this.data.has(key);\n }\n\n delete(key: string) {\n this.cancelTimeout(key);\n this.data.delete(key);\n }\n\n clear() {\n this.data.clear();\n this.timers.forEach(value => clearTimeout(value));\n this.timers.clear();\n }\n\n private cancelTimeout(key: string) {\n const id = this.timers.get(key);\n if (id) {\n clearTimeout(id);\n this.timers.delete(key);\n }\n }\n\n private setTimeout(key: string, ttl: number) {\n this.cancelTimeout(key);\n if (ttl < 0) {\n return;\n }\n\n const id = setTimeout(() => this.delete(key), ttl);\n this.timers.set(key, id);\n }\n}\n"],"names":["MINUTE","DEFAULT_TTL","TtlCache","set","key","value","ttl","setTimeout","data","get","has","delete","cancelTimeout","clear","timers","forEach","clearTimeout","id","constructor","ttlMs","Error","Map"],"mappings":";;;;;;;;;;;;;AAAA,MAAMA,SAAS,OAAO;AACtB,MAAMC,cAAc,IAAID;AAMxB,OAAO,MAAME;IAeTC,IAAIC,GAAW,EAAEC,KAAQ,EAAEC,GAAY,EAAE;QACrC,IAAI,CAACC,UAAU,CAACH,KAAKE,gBAAAA,iBAAAA,MAAO,IAAI,CAACA,GAAG;QACpC,IAAI,CAACE,IAAI,CAACL,GAAG,CAACC,KAAKC;IACvB;IAEAI,IAAIL,GAAW,EAAE;QACb,OAAO,IAAI,CAACI,IAAI,CAACC,GAAG,CAACL;IACzB;IAEAM,IAAIN,GAAW,EAAE;QACb,OAAO,IAAI,CAACI,IAAI,CAACE,GAAG,CAACN;IACzB;IAEAO,OAAOP,GAAW,EAAE;QAChB,IAAI,CAACQ,aAAa,CAACR;QACnB,IAAI,CAACI,IAAI,CAACG,MAAM,CAACP;IACrB;IAEAS,QAAQ;QACJ,IAAI,CAACL,IAAI,CAACK,KAAK;QACf,IAAI,CAACC,MAAM,CAACC,OAAO,CAACV,CAAAA,QAASW,aAAaX;QAC1C,IAAI,CAACS,MAAM,CAACD,KAAK;IACrB;IAEQD,cAAcR,GAAW,EAAE;QAC/B,MAAMa,KAAK,IAAI,CAACH,MAAM,CAACL,GAAG,CAACL;QAC3B,IAAIa,IAAI;YACJD,aAAaC;YACb,IAAI,CAACH,MAAM,CAACH,MAAM,CAACP;QACvB;IACJ;IAEQG,WAAWH,GAAW,EAAEE,GAAW,EAAE;QACzC,IAAI,CAACM,aAAa,CAACR;QACnB,IAAIE,MAAM,GAAG;YACT;QACJ;QAEA,MAAMW,KAAKV,WAAW,IAAM,IAAI,CAACI,MAAM,CAACP,MAAME;QAC9C,IAAI,CAACQ,MAAM,CAACX,GAAG,CAACC,KAAKa;IACzB;IAlDAC,YAAY,EAAEC,QAAQlB,WAAW,EAAmB,GAAG,CAAC,CAAC,CAAE;QAJ3D,uBAAQO,QAAR,KAAA;QACA,uBAAQM,UAAR,KAAA;QACA,uBAAQR,OAAR,KAAA;QAGI,IAAIa,QAAQ,GAAG;YACX,MAAM,IAAIC,MAAM;QACpB;QAEA,IAAI,CAACZ,IAAI,GAAG,IAAIa;QAChB,IAAI,CAACP,MAAM,GAAG,IAAIO;QAClB,IAAI,CAACf,GAAG,GAAGa;IACf;AA2CJ"}