@lwrjs/router 0.24.2 → 0.24.3

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 (40) hide show
  1. package/build/cjs/modules/lwr/contextProvider/contextProvider.cjs +25 -22
  2. package/build/cjs/modules/lwr/contextUtils/contextInfo.cjs +59 -8
  3. package/build/cjs/modules/lwr/contextUtils/contextUtils.cjs +57 -22
  4. package/build/cjs/modules/lwr/contextUtils/navigationApiStore.cjs +16 -19
  5. package/build/cjs/modules/lwr/currentPageReference/currentPageReference.cjs +18 -19
  6. package/build/cjs/modules/lwr/currentView/currentView.cjs +16 -19
  7. package/build/cjs/modules/lwr/domRouter/domRouter.cjs +175 -54
  8. package/build/cjs/modules/lwr/domRouterUtils/domRouterUtils.cjs +16 -19
  9. package/build/cjs/modules/lwr/domRouterUtils/historyUtils.cjs +17 -4
  10. package/build/cjs/modules/lwr/domRouterUtils/types.cjs +15 -2
  11. package/build/cjs/modules/lwr/domRouterUtils/uriUtils.cjs +16 -18
  12. package/build/cjs/modules/lwr/historyRouter/historyRouter.cjs +37 -20
  13. package/build/cjs/modules/lwr/navigation/constants.cjs +21 -8
  14. package/build/cjs/modules/lwr/navigation/navigation.cjs +20 -23
  15. package/build/cjs/modules/lwr/navigation/navigationApi.cjs +15 -18
  16. package/build/cjs/modules/lwr/navigation/navigationMixin.cjs +30 -29
  17. package/build/cjs/modules/lwr/navigationContext/navigationContext.cjs +15 -18
  18. package/build/cjs/modules/lwr/navigationMixinHacks/navigationMixinHacks.cjs +15 -18
  19. package/build/cjs/modules/lwr/observable/observable.cjs +17 -4
  20. package/build/cjs/modules/lwr/outlet/outlet.cjs +30 -34
  21. package/build/cjs/modules/lwr/router/router.cjs +122 -38
  22. package/build/cjs/modules/lwr/routerBridge/routerBridge.cjs +25 -19
  23. package/build/cjs/modules/lwr/routerContainer/routerContainer.cjs +49 -29
  24. package/build/cjs/modules/lwr/routerContainer/utils.cjs +41 -20
  25. package/build/cjs/modules/lwr/routerErrors/routerErrors.cjs +17 -4
  26. package/build/cjs/modules/lwr/routerUtils/domUtils.cjs +17 -4
  27. package/build/cjs/modules/lwr/routerUtils/filterUtils.cjs +36 -17
  28. package/build/cjs/modules/lwr/routerUtils/parseUtils.cjs +27 -30
  29. package/build/cjs/modules/lwr/routerUtils/pathToRegexp.cjs +64 -52
  30. package/build/cjs/modules/lwr/routerUtils/routeDefUtils.cjs +26 -28
  31. package/build/cjs/modules/lwr/routerUtils/routeUtils.cjs +31 -34
  32. package/build/cjs/modules/lwr/routerUtils/routerUtils.cjs +22 -25
  33. package/build/cjs/modules/lwr/routerUtils/typeUtils.cjs +22 -7
  34. package/build/cjs/modules/lwr/routerUtils/types.cjs +15 -2
  35. package/build/cjs/modules/lwr/routerUtils/uriUtils.cjs +18 -5
  36. package/build/cjs/modules/lwr/serverRouter/serverRouter.cjs +57 -27
  37. package/build/cjs/services/index.cjs +47 -37
  38. package/build/cjs/services/module-provider/index.cjs +36 -29
  39. package/build/cjs/services/module-provider/utils.cjs +38 -31
  40. package/package.json +6 -6
@@ -1,42 +1,40 @@
1
- var __create = Object.create;
1
+ "use strict";
2
2
  var __defProp = Object.defineProperty;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
10
- __defProp(target, name, {get: all[name], enumerable: true});
8
+ __defProp(target, name, { get: all[name], enumerable: true });
11
9
  };
12
- var __exportStar = (target, module2, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && key !== "default")
16
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
15
  }
18
- return target;
19
- };
20
- var __toModule = (module2) => {
21
- return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
16
+ return to;
22
17
  };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
19
 
24
20
  // packages/@lwrjs/router/src/services/module-provider/index.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- default: () => module_provider_default
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ default: () => RouterModuleProvider
28
24
  });
29
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
- var import_utils = __toModule(require("./utils.cjs"));
31
- var import__ = __toModule(require("../index.cjs"));
25
+ module.exports = __toCommonJS(index_exports);
26
+ var import_shared_utils = require("@lwrjs/shared-utils");
27
+ var import_utils = require("./utils.cjs");
28
+ var import__ = require("../index.cjs");
32
29
  var DEFAULT_DIR = "$rootDir/src/routes";
33
30
  var RouterModuleProvider = class {
34
- constructor({routesDir = DEFAULT_DIR}, context) {
31
+ // <config path, module id>
32
+ constructor({ routesDir = DEFAULT_DIR }, context) {
35
33
  this.name = "router-module-provider";
36
- this.watchedFileSet = new Set();
34
+ this.watchedFileSet = /* @__PURE__ */ new Set();
37
35
  const {
38
- config: {rootDir, contentDir, i18n, layoutsDir},
39
- runtimeEnvironment: {lwrVersion, watchFiles},
36
+ config: { rootDir, contentDir, i18n, layoutsDir },
37
+ runtimeEnvironment: { lwrVersion, watchFiles },
40
38
  watcherFactory
41
39
  } = context;
42
40
  this.version = lwrVersion;
@@ -49,9 +47,14 @@ var RouterModuleProvider = class {
49
47
  }).replace(/\/$/, "");
50
48
  this.routerWatcher = watchFiles && watcherFactory ? (0, import_utils.setUpWatcher)(watcherFactory, this.onRouterModuleChange.bind(this)) : void 0;
51
49
  }
50
+ // When Router Metadata changes on the file system:
51
+ // 1. delete the config data from the routerConfigJsonCache (in ../index)
52
52
  async onRouterModuleChange(configPath) {
53
53
  (0, import__.deleteRouterConfigJsonCacheEntry)(configPath);
54
54
  }
55
+ // Watch Router Config files:
56
+ // 1. Add files to the watcher
57
+ // 2. Track watched files in the watchedFileSet
55
58
  watchConfigs(configPath) {
56
59
  if (this.routerWatcher) {
57
60
  if (!this.watchedFileSet.has(configPath)) {
@@ -60,6 +63,9 @@ var RouterModuleProvider = class {
60
63
  }
61
64
  }
62
65
  }
66
+ // 1. Check that:
67
+ // a. the specifier is in the correct format: "@lwrjs/router/{routerId}"
68
+ // b. the config JSON addressed by "routerId" is available on the file system
63
69
  getRouterConfig(specifier) {
64
70
  let config;
65
71
  const routerId = (0, import_utils.parseSpecifier)(specifier);
@@ -70,12 +76,14 @@ var RouterModuleProvider = class {
70
76
  }
71
77
  return config;
72
78
  }
73
- async getModuleEntry({specifier}, runtimeParams) {
79
+ async getModuleEntry({ specifier }, runtimeParams) {
74
80
  const config = this.getRouterConfig(specifier);
75
81
  if (config) {
76
82
  return {
77
83
  id: `${specifier}|${this.version}|${runtimeParams.basePath}|${runtimeParams.locale}`,
84
+ // used as part of the cache key for this module by the LWR Module Registry
78
85
  virtual: true,
86
+ // ...because this is a server-generated module
79
87
  entry: `<virtual>/${specifier}.js`,
80
88
  specifier,
81
89
  version: this.version
@@ -83,8 +91,8 @@ var RouterModuleProvider = class {
83
91
  }
84
92
  }
85
93
  async getModule(moduleId, runtimeParams) {
86
- const {specifier, namespace, name = specifier} = moduleId;
87
- const moduleEntry = await this.getModuleEntry({specifier}, runtimeParams);
94
+ const { specifier, namespace, name = specifier } = moduleId;
95
+ const moduleEntry = await this.getModuleEntry({ specifier }, runtimeParams);
88
96
  if (!moduleEntry) {
89
97
  return;
90
98
  }
@@ -104,4 +112,3 @@ var RouterModuleProvider = class {
104
112
  return moduleCompiled;
105
113
  }
106
114
  };
107
- var module_provider_default = RouterModuleProvider;
@@ -1,37 +1,34 @@
1
- var __create = Object.create;
1
+ "use strict";
2
2
  var __defProp = Object.defineProperty;
3
- var __getProtoOf = Object.getPrototypeOf;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
10
- __defProp(target, name, {get: all[name], enumerable: true});
8
+ __defProp(target, name, { get: all[name], enumerable: true });
11
9
  };
12
- var __exportStar = (target, module2, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && key !== "default")
16
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
15
  }
18
- return target;
19
- };
20
- var __toModule = (module2) => {
21
- return __exportStar(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
16
+ return to;
22
17
  };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
19
 
24
20
  // packages/@lwrjs/router/src/services/module-provider/utils.ts
25
- __markAsModule(exports);
26
- __export(exports, {
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
27
23
  SPECIFIER_PREFIX: () => SPECIFIER_PREFIX,
28
24
  generateModule: () => generateModule,
29
25
  getRouterConfigPath: () => getRouterConfigPath,
30
26
  parseSpecifier: () => parseSpecifier,
31
27
  setUpWatcher: () => setUpWatcher
32
28
  });
33
- var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
34
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
29
+ module.exports = __toCommonJS(utils_exports);
30
+ var import_diagnostics = require("@lwrjs/diagnostics");
31
+ var import_shared_utils = require("@lwrjs/shared-utils");
35
32
  var SPECIFIER_PREFIX = "@lwrjs/router/";
36
33
  function parseSpecifier(specifier) {
37
34
  return specifier.startsWith(SPECIFIER_PREFIX) ? specifier.replace(SPECIFIER_PREFIX, "") : void 0;
@@ -42,9 +39,18 @@ function getRouterConfigPath(dir, specifier) {
42
39
  }
43
40
  function setUpWatcher(factory, onModuleChange) {
44
41
  const watcher = factory.createFileWatcher();
45
- watcher.on("change", (0, import_shared_utils.debounce)((file) => onModuleChange(file), 500));
46
- watcher.on("unlink", (0, import_shared_utils.debounce)((file) => onModuleChange(file, true), 500));
47
- watcher.on("add", (file) => import_diagnostics.logger.info({label: `@lwrjs/router`, message: `Watching Router Config file at "${file}"`}));
42
+ watcher.on(
43
+ "change",
44
+ (0, import_shared_utils.debounce)((file) => onModuleChange(file), 500)
45
+ );
46
+ watcher.on(
47
+ "unlink",
48
+ (0, import_shared_utils.debounce)((file) => onModuleChange(file, true), 500)
49
+ );
50
+ watcher.on(
51
+ "add",
52
+ (file) => import_diagnostics.logger.info({ label: `@lwrjs/router`, message: `Watching Router Config file at "${file}"` })
53
+ );
48
54
  return watcher;
49
55
  }
50
56
  function getHandlerClassName(specifier) {
@@ -52,10 +58,9 @@ function getHandlerClassName(specifier) {
52
58
  }
53
59
  function generateHandlerClasses(routes) {
54
60
  let handlerClasses = "";
55
- const seenComponents = new Set();
61
+ const seenComponents = /* @__PURE__ */ new Set();
56
62
  const filteredAndDeDupedArray = routes.filter((item) => {
57
- if (!item.component)
58
- return false;
63
+ if (!item.component) return false;
59
64
  if (!seenComponents.has(item.component)) {
60
65
  seenComponents.add(item.component);
61
66
  return true;
@@ -88,25 +93,27 @@ function generateHandlerClasses(routes) {
88
93
  function generateRouteDefinitions(routes) {
89
94
  let routeDefs = "[\n";
90
95
  routes.forEach((r) => {
91
- const {handler, component, ...routeDef} = r;
96
+ const { handler, component, ...routeDef } = r;
92
97
  const portableProps = JSON.stringify(routeDef);
93
98
  if (handler) {
94
- routeDefs += portableProps.slice(0, portableProps.length - 1) + `, handler: () => import('${handler}') },
99
+ routeDefs += // translate the handler specifier => a handler dynamic import
100
+ portableProps.slice(0, portableProps.length - 1) + `, handler: () => import('${handler}') },
95
101
  `;
96
102
  } else if (component) {
97
- routeDefs += portableProps.slice(0, portableProps.length - 1) + `, handler: () => Promise.resolve({ default: ${getHandlerClassName(component)} }) },
103
+ routeDefs += // translate the component specifier => a resolved handler class
104
+ portableProps.slice(0, portableProps.length - 1) + `, handler: () => Promise.resolve({ default: ${getHandlerClassName(component)} }) },
98
105
  `;
99
106
  }
100
107
  });
101
108
  return `${routeDefs} ]`;
102
109
  }
103
- function generateModule(config = {routes: []}, {defaultLocale, uriPattern}, runtimeParams) {
104
- const {caseSensitive, routes: jsonRoutes} = config;
110
+ function generateModule(config = { routes: [] }, { defaultLocale, uriPattern }, runtimeParams) {
111
+ const { caseSensitive, routes: jsonRoutes } = config;
105
112
  const csString = caseSensitive ? "true" : "false";
106
113
  const routes = generateRouteDefinitions(jsonRoutes);
107
114
  const handlers = generateHandlerClasses(jsonRoutes);
108
115
  const basePath = runtimeParams?.basePath || "";
109
- const i18nRouterConfig = uriPattern === "path-prefix" ? `${JSON.stringify({locale: runtimeParams?.locale, defaultLocale})}` : void 0;
116
+ const i18nRouterConfig = uriPattern === "path-prefix" ? `${JSON.stringify({ locale: runtimeParams?.locale, defaultLocale })}` : void 0;
110
117
  return `import { createRouter as createLwrRouter } from 'lwr/router';
111
118
  ${handlers}
112
119
  export function createRouter({ basePath = '${basePath}', caseSensitive = ${csString}, DEPRECATED_getRouteFromUrl, DEPRECATED_getUrlFromRoute } = {}) {
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.24.2",
8
+ "version": "0.24.3",
9
9
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
10
10
  "repository": {
11
11
  "type": "git",
@@ -53,14 +53,14 @@
53
53
  "test:server": "jest --config ./jest.server.config.cjs"
54
54
  },
55
55
  "dependencies": {
56
- "@lwrjs/client-modules": "0.24.2",
57
- "@lwrjs/diagnostics": "0.24.2",
58
- "@lwrjs/shared-utils": "0.24.2",
56
+ "@lwrjs/client-modules": "0.24.3",
57
+ "@lwrjs/diagnostics": "0.24.3",
58
+ "@lwrjs/shared-utils": "0.24.3",
59
59
  "ajv": "8.18.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@lwc/jest-preset": "^19.6.1",
63
- "@lwrjs/fs-watch": "0.24.2",
63
+ "@lwrjs/fs-watch": "0.24.3",
64
64
  "@rollup/plugin-typescript": "^11.1.6",
65
65
  "jest": "29.7.0",
66
66
  "memfs": "^4.13.0",
@@ -100,5 +100,5 @@
100
100
  "volta": {
101
101
  "extends": "../../../package.json"
102
102
  },
103
- "gitHead": "7492ce779f3b7e91617c4644a1aa567eff01db58"
103
+ "gitHead": "ed415a8f04d5558cac756fbc2a0e454a373e31c1"
104
104
  }