@lwrjs/shared-utils 0.6.0-alpha.9 → 0.6.2

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.
@@ -184,18 +184,18 @@ function slugify(name) {
184
184
  lower: true
185
185
  });
186
186
  }
187
- function getModuleUriPrefix({apiVersion, bundle, format, compat}, {locale, environment} = {}) {
187
+ function getModuleUriPrefix({apiVersion, bundle, format, compat, basePath}, {locale, environment} = {}) {
188
188
  const localePart = locale ? `/${LOCALE_SIGIL}/${locale}` : "";
189
189
  const environmentPart = environment ? `/${ENVIRONMENT_SIGIL}/${environment}` : "";
190
190
  if (bundle) {
191
- return `/${apiVersion}/bundle/${format}${localePart}${environmentPart}/bi/0/module/mi/`;
191
+ return `${basePath}/${apiVersion}/bundle/${format}${localePart}${environmentPart}/bi/0/module/mi/`;
192
192
  } else {
193
- return `/${apiVersion}/module/${format}/${compat}${localePart}${environmentPart}/mi/`;
193
+ return `${basePath}/${apiVersion}/module/${format}/${compat}${localePart}${environmentPart}/mi/`;
194
194
  }
195
195
  }
196
- function getMappingUriPrefix({apiVersion, format, compat}, {locale} = {}) {
196
+ function getMappingUriPrefix({apiVersion, format, compat, basePath}, {locale} = {}) {
197
197
  const localePart = locale ? `/${LOCALE_SIGIL}/${locale}` : "";
198
- return `/${apiVersion}/mapping/${format}/${compat}${localePart}/mp/`;
198
+ return `${basePath}/${apiVersion}/mapping/${format}/${compat}${localePart}/mp/`;
199
199
  }
200
200
  var REGEX_URL_SCHEMA_PREFIX = /^(https?|\/\/)/;
201
201
  function isExternalUrl(url) {
@@ -31,6 +31,5 @@ __exportStar(exports, __toModule(require("./typescript.cjs")));
31
31
  __exportStar(exports, __toModule(require("./import-metadata.cjs")));
32
32
  __exportStar(exports, __toModule(require("./graph.cjs")));
33
33
  __exportStar(exports, __toModule(require("./mappings.cjs")));
34
- __exportStar(exports, __toModule(require("./metrics.cjs")));
35
34
  __exportStar(exports, __toModule(require("./urls.cjs")));
36
35
  __exportStar(exports, __toModule(require("./env.cjs")));
@@ -38,7 +38,10 @@ async function getImportMetadataMappings(moduleIds, runtimeEnvironment, runtimeP
38
38
  for (const moduleId of moduleIds) {
39
39
  const specifier = (0, import_identity.getSpecifier)(moduleId);
40
40
  if (!visitedCache.has(specifier)) {
41
- const depth = {static: import_graph.GraphDepth.ALL, dynamic: 0};
41
+ const depth = {
42
+ static: runtimeEnvironment.format === "esm" ? import_graph.GraphDepth.NONE : import_graph.GraphDepth.ALL,
43
+ dynamic: runtimeEnvironment.format === "esm" ? 1 : 0
44
+ };
42
45
  const moduleGraph = await (0, import_graph.getModuleGraphs)(specifier, {includeUris: true, includeLinkedDefinitions: true, depth}, moduleRegistry, runtimeEnvironment.bundle ? moduleBundler : moduleRegistry, runtimeEnvironment, runtimeParams, visitedCache);
43
46
  importMetadata = await toImportMetadata(moduleGraph, importMetadata, moduleRegistry, runtimeEnvironment, runtimeParams);
44
47
  }
@@ -57,15 +60,20 @@ async function toImportMetadata(moduleGraph, existingImportMetadata = {imports:
57
60
  }
58
61
  const rootMetadata = await normalizeImportMetadata(specifier, uri, definition, moduleRegistry, runtimeEnvironment, runtimeParams);
59
62
  let importMetadata = mergeImportMetadata(existingImportMetadata, rootMetadata);
60
- const depSpecifiers = moduleGraph.graphs[0].static;
63
+ const depSpecifiers = runtimeEnvironment.format === "esm" ? moduleGraph.graphs[0].dynamicRefs : moduleGraph.graphs[0].static;
61
64
  for (const depSpecifier of depSpecifiers) {
62
65
  const depUri = moduleGraph.uriMap[depSpecifier];
63
66
  const depDef = moduleGraph.linkedDefinitions[depSpecifier];
64
- if (!depUri) {
65
- throw new Error("URI was not included in the graph for dependent: " + depSpecifier);
66
- }
67
- if (!depDef) {
68
- throw new Error("Linked dependent module definition was not included in the graph: " + depSpecifier);
67
+ const depMissing = !depUri || !depDef;
68
+ if (depMissing && runtimeEnvironment.format !== "esm") {
69
+ if (!depUri) {
70
+ throw new Error("URI was not included in the graph for dependent: " + depSpecifier);
71
+ }
72
+ if (!depDef) {
73
+ throw new Error("Linked dependent module definition was not included in the graph: " + depSpecifier);
74
+ }
75
+ } else if (depMissing) {
76
+ continue;
69
77
  }
70
78
  if (!importMetadata.imports[depUri]) {
71
79
  const depMetadata = await normalizeImportMetadata((0, import_identity.getSpecifier)(depDef), depUri, depDef, moduleRegistry, runtimeEnvironment, runtimeParams);
@@ -32,24 +32,26 @@ __export(exports, {
32
32
  });
33
33
  var import_path_to_regexp = __toModule(require("path-to-regexp"));
34
34
  var CONFIG_SUFFIX = "/config.js";
35
- function getClientBootstrapConfigurationUri(routeInfo, runtimeEnvironment, runtimeParams) {
35
+ var SIGNATURE_SIGIL = "s";
36
+ function getClientBootstrapConfigurationUri(routeInfo, runtimeEnvironment, runtimeParams, signature) {
36
37
  const encodeUrl = encodeURIComponent(routeInfo.url);
37
38
  const configUrlPrefix = getClientBootstrapConfigurationUriPrefix(routeInfo, runtimeEnvironment, runtimeParams);
38
- return `${configUrlPrefix}/${encodeUrl}${CONFIG_SUFFIX}`;
39
+ const signatureSegment = signature ? `/${SIGNATURE_SIGIL}/${signature}` : "";
40
+ return `${configUrlPrefix}/${encodeUrl}${signatureSegment}${CONFIG_SUFFIX}`;
39
41
  }
40
42
  function getClientBootstrapConfigurationUriPrefix(routeInfo, runtimeEnvironment, runtimeParams) {
41
- const {apiVersion, format} = runtimeEnvironment;
43
+ const {apiVersion, format, basePath} = runtimeEnvironment;
42
44
  const {id} = routeInfo;
43
45
  const locale = runtimeParams?.locale;
44
46
  const environment = runtimeParams?.environment;
45
47
  if (locale && environment) {
46
- return `/${apiVersion}/application/${format}/l/${locale}/e/${environment}/ai/${id}/configuration/ci`;
48
+ return `${basePath}/${apiVersion}/application/${format}/l/${locale}/e/${environment}/ai/${id}/configuration/ci`;
47
49
  } else if (locale) {
48
- return `/${apiVersion}/application/${format}/l/${locale}/ai/${id}/configuration/ci`;
50
+ return `${basePath}/${apiVersion}/application/${format}/l/${locale}/ai/${id}/configuration/ci`;
49
51
  } else if (environment) {
50
- return `/${apiVersion}/application/${format}/e/${environment}/ai/${id}/configuration/ci`;
52
+ return `${basePath}/${apiVersion}/application/${format}/e/${environment}/ai/${id}/configuration/ci`;
51
53
  } else {
52
- return `/${apiVersion}/application/${format}/ai/${id}/configuration/ci`;
54
+ return `${basePath}/${apiVersion}/application/${format}/ai/${id}/configuration/ci`;
53
55
  }
54
56
  }
55
57
  function removeClientBootstrapConfigurationSuffix(url) {
@@ -64,7 +66,11 @@ function getClientBootstrapConfigurationRoutes() {
64
66
  `/:apiVersion/application/:format/l/:locale/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
65
67
  `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
66
68
  `/:apiVersion/application/:format/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
67
- `/:apiVersion/application/:format/e/:environment/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`
69
+ `/:apiVersion/application/:format/e/:environment/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
70
+ `/:apiVersion/application/:format/l/:locale/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
71
+ `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
72
+ `/:apiVersion/application/:format/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
73
+ `/:apiVersion/application/:format/e/:environment/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`
68
74
  ];
69
75
  }
70
76
  function extractRequestParams(parameterizedRoute, resolvedUrl, existingParams) {
@@ -148,13 +148,13 @@ export declare function slugify(name: string): string;
148
148
  * @param param0 - URI props from the Runtime Environment
149
149
  * @param param1 - URI props from the Runtime Params
150
150
  */
151
- export declare function getModuleUriPrefix({ apiVersion, bundle, format, compat }: RuntimeEnvironment, { locale, environment }?: RuntimeParams): string;
151
+ export declare function getModuleUriPrefix({ apiVersion, bundle, format, compat, basePath }: RuntimeEnvironment, { locale, environment }?: RuntimeParams): string;
152
152
  /**
153
153
  * Create a URI Mapping API URI prefix, stopping where the specifiers would be (at "mp/")
154
154
  * @param param0 - URI props from the Runtime Environment
155
155
  * @param param1 - URI props from the Runtime Params
156
156
  */
157
- export declare function getMappingUriPrefix({ apiVersion, format, compat }: RuntimeEnvironment, { locale }?: RuntimeParams): string;
157
+ export declare function getMappingUriPrefix({ apiVersion, format, compat, basePath }: RuntimeEnvironment, { locale }?: RuntimeParams): string;
158
158
  export { getCacheKeyFromJson };
159
159
  export declare function isExternalUrl(url: string): boolean;
160
160
  export declare function isBundleDefinition(definition: ModuleDefinition | BundleDefinition): definition is BundleDefinition;
@@ -240,14 +240,14 @@ export function slugify(name) {
240
240
  * @param param0 - URI props from the Runtime Environment
241
241
  * @param param1 - URI props from the Runtime Params
242
242
  */
243
- export function getModuleUriPrefix({ apiVersion, bundle, format, compat }, { locale, environment } = {}) {
243
+ export function getModuleUriPrefix({ apiVersion, bundle, format, compat, basePath }, { locale, environment } = {}) {
244
244
  const localePart = locale ? `/${LOCALE_SIGIL}/${locale}` : '';
245
245
  const environmentPart = environment ? `/${ENVIRONMENT_SIGIL}/${environment}` : '';
246
246
  if (bundle) {
247
- return `/${apiVersion}/bundle/${format}${localePart}${environmentPart}/bi/0/module/mi/`;
247
+ return `${basePath}/${apiVersion}/bundle/${format}${localePart}${environmentPart}/bi/0/module/mi/`;
248
248
  }
249
249
  else {
250
- return `/${apiVersion}/module/${format}/${compat}${localePart}${environmentPart}/mi/`;
250
+ return `${basePath}/${apiVersion}/module/${format}/${compat}${localePart}${environmentPart}/mi/`;
251
251
  }
252
252
  }
253
253
  /**
@@ -255,9 +255,9 @@ export function getModuleUriPrefix({ apiVersion, bundle, format, compat }, { loc
255
255
  * @param param0 - URI props from the Runtime Environment
256
256
  * @param param1 - URI props from the Runtime Params
257
257
  */
258
- export function getMappingUriPrefix({ apiVersion, format, compat }, { locale } = {}) {
258
+ export function getMappingUriPrefix({ apiVersion, format, compat, basePath }, { locale } = {}) {
259
259
  const localePart = locale ? `/${LOCALE_SIGIL}/${locale}` : '';
260
- return `/${apiVersion}/mapping/${format}/${compat}${localePart}/mp/`;
260
+ return `${basePath}/${apiVersion}/mapping/${format}/${compat}${localePart}/mp/`;
261
261
  }
262
262
  export { getCacheKeyFromJson };
263
263
  const REGEX_URL_SCHEMA_PREFIX = /^(https?|\/\/)/;
@@ -10,7 +10,6 @@ export * from './typescript.js';
10
10
  export * from './import-metadata.js';
11
11
  export * from './graph.js';
12
12
  export * from './mappings.js';
13
- export * from './metrics.js';
14
13
  export * from './urls.js';
15
14
  export * from './env.js';
16
15
  //# sourceMappingURL=index.d.ts.map
package/build/es/index.js CHANGED
@@ -10,7 +10,6 @@ export * from './typescript.js';
10
10
  export * from './import-metadata.js';
11
11
  export * from './graph.js';
12
12
  export * from './mappings.js';
13
- export * from './metrics.js';
14
13
  export * from './urls.js';
15
14
  export * from './env.js';
16
15
  //# sourceMappingURL=index.js.map
@@ -13,8 +13,12 @@ export async function getImportMetadataMappings(moduleIds, runtimeEnvironment, r
13
13
  const specifier = getSpecifier(moduleId);
14
14
  // Check if we have already visited
15
15
  if (!visitedCache.has(specifier)) {
16
- // Traversal of the Module Graph is done to get all the URLS for discoverable static dependencies.
17
- const depth = { static: GraphDepth.ALL, dynamic: 0 };
16
+ // Traversal of the Module Graph is done to get all the URLs for discoverable dependencies.
17
+ // AMD gathers static imports while ESM gathers dynamic imports
18
+ const depth = {
19
+ static: runtimeEnvironment.format === 'esm' ? GraphDepth.NONE : GraphDepth.ALL,
20
+ dynamic: runtimeEnvironment.format === 'esm' ? 1 : 0,
21
+ };
18
22
  // eslint-disable-next-line no-await-in-loop
19
23
  const moduleGraph = await getModuleGraphs(specifier,
20
24
  // include uris and linked definitions
@@ -52,16 +56,27 @@ export async function toImportMetadata(moduleGraph, existingImportMetadata = { i
52
56
  // Merge in the existing metadata with imports for the root specifier
53
57
  const rootMetadata = await normalizeImportMetadata(specifier, uri, definition, moduleRegistry, runtimeEnvironment, runtimeParams);
54
58
  let importMetadata = mergeImportMetadata(existingImportMetadata, rootMetadata);
55
- // root module dependencies
56
- const depSpecifiers = moduleGraph.graphs[0].static;
59
+ // root module dependencies:
60
+ // - static for AMD; dynamic dependencies require a new mapping request
61
+ // - dynamic for ESM; static dependencies are imported via fully qualified URLs
62
+ const depSpecifiers = runtimeEnvironment.format === 'esm'
63
+ ? moduleGraph.graphs[0].dynamicRefs
64
+ : moduleGraph.graphs[0].static;
57
65
  for (const depSpecifier of depSpecifiers) {
58
66
  const depUri = moduleGraph.uriMap[depSpecifier];
59
67
  const depDef = moduleGraph.linkedDefinitions[depSpecifier];
60
- if (!depUri) {
61
- throw new Error('URI was not included in the graph for dependent: ' + depSpecifier);
68
+ const depMissing = !depUri || !depDef;
69
+ if (depMissing && runtimeEnvironment.format !== 'esm') {
70
+ if (!depUri) {
71
+ throw new Error('URI was not included in the graph for dependent: ' + depSpecifier);
72
+ }
73
+ if (!depDef) {
74
+ throw new Error('Linked dependent module definition was not included in the graph: ' + depSpecifier);
75
+ }
62
76
  }
63
- if (!depDef) {
64
- throw new Error('Linked dependent module definition was not included in the graph: ' + depSpecifier);
77
+ else if (depMissing) {
78
+ // Ignore variable dynamic imports
79
+ continue;
65
80
  }
66
81
  if (!importMetadata.imports[depUri]) {
67
82
  // eslint-disable-next-line no-await-in-loop
@@ -2,10 +2,10 @@ import { RuntimeEnvironment, RuntimeParams } from '@lwrjs/types';
2
2
  export declare function getClientBootstrapConfigurationUri(routeInfo: {
3
3
  id: string;
4
4
  url: string;
5
- }, runtimeEnvironment: Required<Pick<RuntimeEnvironment, 'apiVersion' | 'format'>>, runtimeParams?: RuntimeParams): string;
5
+ }, runtimeEnvironment: RuntimeEnvironment, runtimeParams?: RuntimeParams, signature?: string): string;
6
6
  export declare function getClientBootstrapConfigurationUriPrefix(routeInfo: {
7
7
  id: string;
8
- }, runtimeEnvironment: Required<Pick<RuntimeEnvironment, 'apiVersion' | 'format'>>, runtimeParams?: RuntimeParams): string;
8
+ }, runtimeEnvironment: RuntimeEnvironment, runtimeParams?: RuntimeParams): string;
9
9
  /**
10
10
  * Remove the suffix from config
11
11
  */
package/build/es/urls.js CHANGED
@@ -1,26 +1,28 @@
1
1
  import { pathToRegexp } from 'path-to-regexp';
2
2
  const CONFIG_SUFFIX = '/config.js';
3
- export function getClientBootstrapConfigurationUri(routeInfo, runtimeEnvironment, runtimeParams) {
3
+ const SIGNATURE_SIGIL = 's';
4
+ export function getClientBootstrapConfigurationUri(routeInfo, runtimeEnvironment, runtimeParams, signature) {
4
5
  const encodeUrl = encodeURIComponent(routeInfo.url);
5
6
  const configUrlPrefix = getClientBootstrapConfigurationUriPrefix(routeInfo, runtimeEnvironment, runtimeParams);
6
- return `${configUrlPrefix}/${encodeUrl}${CONFIG_SUFFIX}`;
7
+ const signatureSegment = signature ? `/${SIGNATURE_SIGIL}/${signature}` : '';
8
+ return `${configUrlPrefix}/${encodeUrl}${signatureSegment}${CONFIG_SUFFIX}`;
7
9
  }
8
10
  export function getClientBootstrapConfigurationUriPrefix(routeInfo, runtimeEnvironment, runtimeParams) {
9
- const { apiVersion, format } = runtimeEnvironment;
11
+ const { apiVersion, format, basePath } = runtimeEnvironment;
10
12
  const { id } = routeInfo;
11
13
  const locale = runtimeParams?.locale;
12
14
  const environment = runtimeParams?.environment;
13
15
  if (locale && environment) {
14
- return `/${apiVersion}/application/${format}/l/${locale}/e/${environment}/ai/${id}/configuration/ci`;
16
+ return `${basePath}/${apiVersion}/application/${format}/l/${locale}/e/${environment}/ai/${id}/configuration/ci`;
15
17
  }
16
18
  else if (locale) {
17
- return `/${apiVersion}/application/${format}/l/${locale}/ai/${id}/configuration/ci`;
19
+ return `${basePath}/${apiVersion}/application/${format}/l/${locale}/ai/${id}/configuration/ci`;
18
20
  }
19
21
  else if (environment) {
20
- return `/${apiVersion}/application/${format}/e/${environment}/ai/${id}/configuration/ci`;
22
+ return `${basePath}/${apiVersion}/application/${format}/e/${environment}/ai/${id}/configuration/ci`;
21
23
  }
22
24
  else {
23
- return `/${apiVersion}/application/${format}/ai/${id}/configuration/ci`;
25
+ return `${basePath}/${apiVersion}/application/${format}/ai/${id}/configuration/ci`;
24
26
  }
25
27
  }
26
28
  /**
@@ -42,6 +44,11 @@ export function getClientBootstrapConfigurationRoutes() {
42
44
  `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
43
45
  `/:apiVersion/application/:format/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
44
46
  `/:apiVersion/application/:format/e/:environment/ai/:appId/configuration/ci/:encodedViewPath${CONFIG_SUFFIX}`,
47
+ // with signature
48
+ `/:apiVersion/application/:format/l/:locale/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
49
+ `/:apiVersion/application/:format/l/:locale/e/:environment/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
50
+ `/:apiVersion/application/:format/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
51
+ `/:apiVersion/application/:format/e/:environment/ai/:appId/configuration/ci/:encodedViewPath/s/:signature${CONFIG_SUFFIX}`,
45
52
  ];
46
53
  }
47
54
  /**
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.6.0-alpha.9",
7
+ "version": "0.6.2",
8
8
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
9
  "repository": {
10
10
  "type": "git",
@@ -43,13 +43,13 @@
43
43
  "slugify": "^1.4.5"
44
44
  },
45
45
  "devDependencies": {
46
- "@lwrjs/diagnostics": "0.6.0-alpha.9",
47
- "@lwrjs/types": "0.6.0-alpha.9",
46
+ "@lwrjs/diagnostics": "0.6.2",
47
+ "@lwrjs/types": "0.6.2",
48
48
  "@types/mime-types": "2.1.1",
49
49
  "@types/path-to-regexp": "^1.7.0"
50
50
  },
51
51
  "engines": {
52
52
  "node": ">=14.15.4 <17"
53
53
  },
54
- "gitHead": "9cb371a5d01ef345660138a48fe0b3f0119d0799"
54
+ "gitHead": "ef85bdc48adde58b7c648561d67acbb408bbe189"
55
55
  }
@@ -1,15 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
3
- var __export = (target, all) => {
4
- for (var name in all)
5
- __defProp(target, name, {get: all[name], enumerable: true});
6
- };
7
-
8
- // packages/@lwrjs/shared-utils/src/metrics.ts
9
- __markAsModule(exports);
10
- __export(exports, {
11
- ON_APP_INIT: () => ON_APP_INIT,
12
- ON_APP_LOAD: () => ON_APP_LOAD
13
- });
14
- var ON_APP_LOAD = "lwr-bootstrap-on-app-load";
15
- var ON_APP_INIT = "lwr-bootstrap-on-app-init";
@@ -1,5 +0,0 @@
1
- import { LWRBootstrapMetrics } from '@lwrjs/types';
2
- declare const ON_APP_LOAD: LWRBootstrapMetrics;
3
- declare const ON_APP_INIT: LWRBootstrapMetrics;
4
- export { ON_APP_LOAD, ON_APP_INIT };
5
- //# sourceMappingURL=metrics.d.ts.map
@@ -1,6 +0,0 @@
1
- // Measure the point just before the app is requested
2
- const ON_APP_LOAD = 'lwr-bootstrap-on-app-load';
3
- // Measure the point where the app has been defined via customElements.define
4
- const ON_APP_INIT = 'lwr-bootstrap-on-app-init';
5
- export { ON_APP_LOAD, ON_APP_INIT };
6
- //# sourceMappingURL=metrics.js.map