@lwrjs/config 0.9.0-alpha.8 → 0.9.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 (36) hide show
  1. package/build/cjs/defaults.cjs +40 -10
  2. package/build/cjs/{env-config.cjs → global-config.cjs} +75 -22
  3. package/build/cjs/hooks.cjs +69 -0
  4. package/build/cjs/index.cjs +11 -3
  5. package/build/cjs/modules.cjs +92 -0
  6. package/build/cjs/runtime-config.cjs +22 -3
  7. package/build/cjs/utils/global-data.cjs +54 -0
  8. package/build/cjs/utils/merge.cjs +22 -8
  9. package/build/cjs/utils/routes.cjs +30 -12
  10. package/build/cjs/validation/app-config-context.cjs +6 -2
  11. package/build/cjs/validation/app-config.cjs +18 -7
  12. package/build/es/defaults.d.ts +7 -2
  13. package/build/es/defaults.js +41 -9
  14. package/build/es/global-config.d.ts +65 -0
  15. package/build/es/{env-config.js → global-config.js} +96 -16
  16. package/build/es/hooks.d.ts +32 -0
  17. package/build/es/hooks.js +70 -0
  18. package/build/es/index.d.ts +5 -4
  19. package/build/es/index.js +5 -5
  20. package/build/es/modules.d.ts +32 -0
  21. package/build/es/modules.js +92 -0
  22. package/build/es/runtime-config.d.ts +12 -5
  23. package/build/es/runtime-config.js +30 -6
  24. package/build/es/utils/global-data.d.ts +3 -0
  25. package/build/es/utils/global-data.js +29 -0
  26. package/build/es/utils/merge.d.ts +1 -1
  27. package/build/es/utils/merge.js +28 -9
  28. package/build/es/utils/routes.d.ts +3 -2
  29. package/build/es/utils/routes.js +33 -16
  30. package/build/es/validation/app-config-context.d.ts +4 -3
  31. package/build/es/validation/app-config-context.js +5 -1
  32. package/build/es/validation/app-config.d.ts +2 -2
  33. package/build/es/validation/app-config.js +25 -9
  34. package/package.cjs +21 -2
  35. package/package.json +16 -9
  36. package/build/es/env-config.d.ts +0 -22
@@ -26,7 +26,6 @@ __markAsModule(exports);
26
26
  __export(exports, {
27
27
  DEFAULT_AMD_LOADER: () => DEFAULT_AMD_LOADER,
28
28
  DEFAULT_AMD_LOADER_LEGACY: () => DEFAULT_AMD_LOADER_LEGACY,
29
- DEFAULT_BUNDLE_EXCLUSIONS: () => DEFAULT_BUNDLE_EXCLUSIONS,
30
29
  DEFAULT_ESM_LOADER: () => DEFAULT_ESM_LOADER,
31
30
  DEFAULT_GENERATOR_CONFIG: () => DEFAULT_GENERATOR_CONFIG,
32
31
  DEFAULT_LWR_CONFIG: () => DEFAULT_LWR_CONFIG,
@@ -34,20 +33,27 @@ __export(exports, {
34
33
  DEFAULT_LWR_MODULES: () => DEFAULT_LWR_MODULES,
35
34
  DEFAULT_ROOT_DIR: () => DEFAULT_ROOT_DIR,
36
35
  DEFAULT_SERVICE_PACKAGE_NAME: () => DEFAULT_SERVICE_PACKAGE_NAME,
37
- LWR_VERSION: () => LWR_VERSION
36
+ LWR_VERSION: () => LWR_VERSION,
37
+ SSR_MODULE_PROVIDER: () => SSR_MODULE_PROVIDER,
38
+ SSR_VIEW_TRANSFORM_PLUGIN: () => SSR_VIEW_TRANSFORM_PLUGIN,
39
+ getDefaultBundleConfig: () => getDefaultBundleConfig
38
40
  });
39
41
  var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
40
42
  var import_package = __toModule(require("@lwrjs/config/package"));
43
+ var import_runtime_config = __toModule(require("./runtime-config.cjs"));
41
44
  var PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : 3e3;
42
- var MODE = process.env.MODE || "dev";
45
+ var MODE = process.env.MODE || "prod";
43
46
  var DEFAULT_BASE_PATH = "";
44
47
  var DEFAULT_API_VERSION = "1";
45
48
  var LWR_VERSION = import_package.version;
46
49
  var DEFAULT_SERVER_TYPE = "express";
47
50
  var DEFAULT_LWR_CONFIG_JSON = "$rootDir/lwr.config.json";
48
51
  var DEFAULT_GENERATOR_CONFIG = {
49
- outputDir: "__generated_site__",
52
+ outputDir: "site",
50
53
  locales: ["en-US"],
54
+ skipCleanOutputDir: false,
55
+ skipBaseDocumentGeneration: false,
56
+ _additionalModules: [],
51
57
  _additionalRoutePaths: []
52
58
  };
53
59
  var DEFAULT_ROOT_DIR = process.cwd();
@@ -58,11 +64,11 @@ var DEFAULT_LAYOUTS_DIR = "$rootDir/src/layouts";
58
64
  var DEFAULT_DATA_DIR = "$rootDir/src/data";
59
65
  var DEFAULT_MODULE_PROVIDERS = [
60
66
  "@lwrjs/app-service/moduleProvider",
61
- "@lwrjs/lwc-ssr/moduleProvider",
62
67
  "@lwrjs/router/module-provider",
63
68
  "@lwrjs/lwc-module-provider",
64
69
  "@lwrjs/npm-module-provider"
65
70
  ];
71
+ var SSR_MODULE_PROVIDER = "@lwrjs/lwc-ssr/moduleProvider";
66
72
  var DEFAULT_RESOURCE_PROVIDERS = ["@lwrjs/loader"];
67
73
  var DEFAULT_VIEW_PROVIDERS = [
68
74
  "@lwrjs/nunjucks-view-provider",
@@ -70,10 +76,14 @@ var DEFAULT_VIEW_PROVIDERS = [
70
76
  "@lwrjs/markdown-view-provider",
71
77
  "@lwrjs/base-view-provider"
72
78
  ];
73
- var DEFAULT_VIEW_TRANSFORM_PLUGINS = ["@lwrjs/base-view-transformer", "@lwrjs/lwc-ssr/viewTransformer"];
79
+ var DEFAULT_BUNDLE_PROVIDERS = [
80
+ "@lwrjs/module-bundler/amd-bundle-provider",
81
+ "@lwrjs/module-bundler/esm-bundle-provider"
82
+ ];
83
+ var DEFAULT_VIEW_TRANSFORM_PLUGINS = ["@lwrjs/base-view-transformer"];
84
+ var SSR_VIEW_TRANSFORM_PLUGIN = "@lwrjs/lwc-ssr/viewTransformer";
74
85
  var DEFAULT_ASSET_PROVIDERS = ["@lwrjs/fs-asset-provider"];
75
86
  var DEFAULT_ASSET_TRANSFORM_PLUGINS = ["@lwrjs/asset-transformer"];
76
- var DEFAULT_TEMPLATE_ENGINE = "@lwrjs/base-template-engine";
77
87
  var DEFAULT_AMD_LOADER = "lwr/loader";
78
88
  var DEFAULT_AMD_LOADER_LEGACY = "lwr/loaderLegacy";
79
89
  var DEFAULT_ESM_LOADER = "lwr/esmLoader";
@@ -86,13 +96,31 @@ var DEFAULT_LWR_MODULES = [
86
96
  {npm: "@lwrjs/router"},
87
97
  {npm: "@lwc/synthetic-shadow"}
88
98
  ];
89
- var DEFAULT_BUNDLE_EXCLUSIONS = [
99
+ var DEFAULT_ESM_BUNDLE_EXCLUSIONS = [
90
100
  "lwc",
91
101
  "@lwc/synthetic-shadow",
92
102
  "lwr/navigation",
93
103
  "lwr/esmLoader",
94
104
  "lwr/profiler"
95
105
  ];
106
+ var DEFAULT_AMD_BUNDLE_EXCLUSIONS = ["lwc", "lwr/navigation"];
107
+ var DEFAULT_ESM_BUNDLE_EXTERNALS = {};
108
+ var DEFAULT_AMD_BUNDLE_EXTERNALS = {
109
+ "lwr/loader": "lwr-loader-shim.bundle.min.js",
110
+ "lwr/profiler": "lwr-loader-shim.bundle.min.js"
111
+ };
112
+ var DEFAULT_AMD_LEGACY_BUNDLE_EXTERNALS = {
113
+ "lwr/loaderLegacy": "lwr-loader-shim-legacy.bundle.min.js",
114
+ "lwr/profiler": "lwr-loader-shim-legacy.bundle.min.js"
115
+ };
116
+ function getDefaultBundleConfig(mode) {
117
+ const format = (0, import_runtime_config.getServerModeConfig)(mode || MODE).format;
118
+ const loaderLegacy = (0, import_shared_utils.getFeatureFlags)().LEGACY_LOADER;
119
+ return {
120
+ exclude: format === "esm" ? DEFAULT_ESM_BUNDLE_EXCLUSIONS : DEFAULT_AMD_BUNDLE_EXCLUSIONS,
121
+ external: format === "esm" ? DEFAULT_ESM_BUNDLE_EXTERNALS : loaderLegacy ? DEFAULT_AMD_LEGACY_BUNDLE_EXTERNALS : DEFAULT_AMD_BUNDLE_EXTERNALS
122
+ };
123
+ }
96
124
  var DEFAULT_LWR_CONFIG = {
97
125
  port: PORT,
98
126
  ignoreLwrConfigFile: false,
@@ -101,6 +129,7 @@ var DEFAULT_LWR_CONFIG = {
101
129
  rootDir: DEFAULT_ROOT_DIR,
102
130
  cacheDir: DEFAULT_CACHE_FOLDER,
103
131
  serverMode: MODE,
132
+ minify: null,
104
133
  apiVersion: DEFAULT_API_VERSION,
105
134
  assets: DEFAULT_ASSETS_DIR,
106
135
  assetProviders: DEFAULT_ASSET_PROVIDERS,
@@ -111,16 +140,17 @@ var DEFAULT_LWR_CONFIG = {
111
140
  globalDataDir: DEFAULT_DATA_DIR,
112
141
  globalData: {},
113
142
  hooks: [],
143
+ bundleProviders: DEFAULT_BUNDLE_PROVIDERS,
114
144
  moduleProviders: DEFAULT_MODULE_PROVIDERS,
115
145
  resourceProviders: DEFAULT_RESOURCE_PROVIDERS,
116
146
  viewProviders: DEFAULT_VIEW_PROVIDERS,
117
147
  viewTransformers: DEFAULT_VIEW_TRANSFORM_PLUGINS,
118
- templateEngine: DEFAULT_TEMPLATE_ENGINE,
119
148
  environment: {},
120
149
  lwc: {modules: []},
121
150
  routes: [],
122
151
  errorRoutes: [],
123
- bundleConfig: {exclude: DEFAULT_BUNDLE_EXCLUSIONS},
152
+ routeHandlers: {},
153
+ bundleConfig: getDefaultBundleConfig(MODE),
124
154
  serverType: DEFAULT_SERVER_TYPE,
125
155
  locker: import_shared_utils.DEFAULT_LWR_LOCKER_CONFIG
126
156
  };
@@ -21,28 +21,38 @@ var __toModule = (module2) => {
21
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);
22
22
  };
23
23
 
24
- // packages/@lwrjs/config/src/env-config.ts
24
+ // packages/@lwrjs/config/src/global-config.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- resolveConfig: () => resolveConfig
27
+ applySsrConfig: () => applySsrConfig,
28
+ applyStaticProviderConfig: () => applyStaticProviderConfig,
29
+ getLwrConfigFromFile: () => getLwrConfigFromFile,
30
+ loadConfig: () => loadConfig,
31
+ resolveGlobalConfig: () => resolveGlobalConfig
28
32
  });
29
33
  var import_fs = __toModule(require("fs"));
30
34
  var import_path = __toModule(require("path"));
35
+ var import_jsonc_parser = __toModule(require("jsonc-parser"));
31
36
  var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
32
37
  var import_defaults = __toModule(require("./defaults.cjs"));
38
+ var import_defaults2 = __toModule(require("./defaults.cjs"));
33
39
  var import_app_config = __toModule(require("./validation/app-config.cjs"));
34
40
  var import_assets = __toModule(require("./utils/assets.cjs"));
35
41
  var import_services = __toModule(require("./utils/services.cjs"));
36
42
  var import_routes = __toModule(require("./utils/routes.cjs"));
37
43
  var import_merge = __toModule(require("./utils/merge.cjs"));
38
44
  var import_lwc = __toModule(require("./utils/lwc.cjs"));
39
- function getLwrConfigFromFile(rootDir, lwrConfigPath = import_defaults.DEFAULT_LWR_CONFIG_JSON) {
45
+ var import_runtime_config = __toModule(require("./runtime-config.cjs"));
46
+ var import_global_data = __toModule(require("./utils/global-data.cjs"));
47
+ function getLwrConfigFromFile(rootDir, lwrConfigPath = import_defaults2.DEFAULT_LWR_CONFIG_JSON) {
40
48
  const resolvedLwrConfigPath = import_path.default.resolve((0, import_shared_utils.normalizeDirectory)(lwrConfigPath, rootDir));
41
49
  if (!import_fs.default.existsSync(resolvedLwrConfigPath)) {
42
50
  import_shared_utils.logger.warn(`LWR Config not found on "${resolvedLwrConfigPath}"`);
43
51
  return void 0;
44
52
  }
45
- return (0, import_app_config.validateLwrAppConfig)((0, import_shared_utils.readFile)(resolvedLwrConfigPath), "file");
53
+ const configSource = (0, import_shared_utils.readFile)(resolvedLwrConfigPath);
54
+ (0, import_app_config.validateLwrAppConfig)(configSource, "file");
55
+ return (0, import_jsonc_parser.parse)(configSource);
46
56
  }
47
57
  function createCacheFolder(cache, rootDir) {
48
58
  const cacheDir = (0, import_shared_utils.normalizeDirectory)(cache, rootDir);
@@ -50,15 +60,15 @@ function createCacheFolder(cache, rootDir) {
50
60
  import_fs.default.mkdirSync(import_path.default.join(absPath, import_shared_utils.ASSETS_CACHE_DIR), {recursive: true});
51
61
  return absPath;
52
62
  }
53
- function loadConfig(configArg) {
63
+ function mergeConfig(configArg) {
54
64
  if (configArg) {
55
65
  configArg = (0, import_merge.trimLwrConfig)(configArg);
56
- (0, import_app_config.validateLwrAppConfig)(JSON.stringify(configArg), "pre");
66
+ (0, import_app_config.validateLwrAppConfig)(configArg, "pre");
57
67
  }
58
- const rootDir = import_path.default.resolve(configArg?.rootDir || import_defaults.DEFAULT_ROOT_DIR);
68
+ const rootDir = import_path.default.resolve(configArg?.rootDir || import_defaults2.DEFAULT_ROOT_DIR);
59
69
  const configFile = !configArg?.ignoreLwrConfigFile ? getLwrConfigFromFile(rootDir, configArg?.lwrConfigFile) : void 0;
60
70
  return {
61
- ...import_defaults.DEFAULT_LWR_CONFIG,
71
+ ...import_defaults2.DEFAULT_LWR_CONFIG,
62
72
  ...configFile,
63
73
  ...configArg,
64
74
  lwc: (0, import_merge.mergeLwcConfig)(configFile, configArg),
@@ -69,27 +79,28 @@ function loadConfig(configArg) {
69
79
  };
70
80
  }
71
81
  function normalizeConfig(config) {
72
- const amdLoader = (0, import_shared_utils.getFeatureFlags)().LEGACY_LOADER ? import_defaults.DEFAULT_AMD_LOADER_LEGACY : import_defaults.DEFAULT_AMD_LOADER;
82
+ const amdLoader = (0, import_shared_utils.getFeatureFlags)().LEGACY_LOADER ? import_defaults2.DEFAULT_AMD_LOADER_LEGACY : import_defaults2.DEFAULT_AMD_LOADER;
73
83
  return {
74
84
  ...config,
75
85
  amdLoader,
76
- esmLoader: import_defaults.DEFAULT_ESM_LOADER,
77
- lwrVersion: import_defaults.LWR_VERSION,
86
+ esmLoader: import_defaults2.DEFAULT_ESM_LOADER,
87
+ lwrVersion: import_defaults2.LWR_VERSION,
78
88
  assets: (0, import_assets.normalizeAssets)(config.assets),
79
89
  lwc: (0, import_lwc.normalizeLwcConfig)(config.lwc),
80
90
  hooks: (0, import_services.normalizeServices)(config.hooks),
91
+ bundleProviders: (0, import_services.normalizeServices)(config.bundleProviders),
81
92
  moduleProviders: (0, import_services.normalizeServices)(config.moduleProviders),
82
93
  assetProviders: (0, import_services.normalizeServices)(config.assetProviders),
83
94
  assetTransformers: (0, import_services.normalizeServices)(config.assetTransformers),
84
95
  resourceProviders: (0, import_services.normalizeServices)(config.resourceProviders),
85
96
  viewProviders: (0, import_services.normalizeServices)(config.viewProviders),
86
97
  viewTransformers: (0, import_services.normalizeServices)(config.viewTransformers),
87
- routes: (0, import_routes.normalizeRoutes)(config.routes),
88
- errorRoutes: (0, import_routes.normalizeRoutes)(config.errorRoutes)
98
+ routes: (0, import_routes.normalizeRoutes)(config.routes, config.routeHandlers),
99
+ errorRoutes: (0, import_routes.normalizeRoutes)(config.errorRoutes, config.routeHandlers)
89
100
  };
90
101
  }
91
102
  function normalizeConfigPaths(config) {
92
- const rootDir = config.rootDir || import_defaults.DEFAULT_ROOT_DIR;
103
+ const rootDir = config.rootDir || import_defaults2.DEFAULT_ROOT_DIR;
93
104
  const resourcePaths = {
94
105
  rootDir,
95
106
  assets: (0, import_assets.normalizeAssetPaths)(config.assets, rootDir),
@@ -114,19 +125,61 @@ function normalizeConfigPaths(config) {
114
125
  viewProviders: (0, import_services.normalizeServicePaths)(config.viewProviders, rootDir),
115
126
  viewTransformers: (0, import_services.normalizeServicePaths)(config.viewTransformers, rootDir),
116
127
  routes: (0, import_routes.normalizeRoutePaths)(config.routes, resourcePaths),
117
- errorRoutes: (0, import_routes.normalizeRoutePaths)(config.errorRoutes, resourcePaths)
128
+ errorRoutes: (0, import_routes.normalizeRoutePaths)(config.errorRoutes, resourcePaths),
129
+ routeHandlers: (0, import_routes.normalizeRouteHandlerPaths)(config.routeHandlers, resourcePaths)
118
130
  };
119
131
  }
120
- function resolveConfig(configArg, options) {
121
- const skipDirNormalization = options?.skipDirNormalization;
122
- const skipCacheDirCreation = options?.skipDirNormalization;
123
- const mergedConfig = loadConfig(configArg);
124
- const normalizedConfig = normalizeConfig(mergedConfig);
125
- if (!skipCacheDirCreation) {
132
+ function applySsrConfig(config) {
133
+ const hasSSR = config.routes.some((r) => r.bootstrap.ssr);
134
+ if (!hasSSR) {
135
+ return config;
136
+ }
137
+ const hasSsrModuleProvider = config.moduleProviders.some(([m]) => m === import_defaults.SSR_MODULE_PROVIDER);
138
+ const hasSsrViewTransformer = config.viewTransformers.some(([v]) => v === import_defaults.SSR_VIEW_TRANSFORM_PLUGIN);
139
+ return {
140
+ ...config,
141
+ moduleProviders: hasSsrModuleProvider ? config.moduleProviders : [[import_defaults.SSR_MODULE_PROVIDER, void 0], ...config.moduleProviders],
142
+ viewTransformers: hasSsrViewTransformer ? config.viewTransformers : [...config.viewTransformers, [import_defaults.SSR_VIEW_TRANSFORM_PLUGIN, void 0]]
143
+ };
144
+ }
145
+ function applyStaticProviderConfig(config) {
146
+ return {
147
+ ...config,
148
+ resourceProviders: [["@lwrjs/lambda/mrt-static-resource-provider", {}]],
149
+ moduleProviders: [["@lwrjs/lambda/mrt-static-module-provider", void 0]],
150
+ assetProviders: [["@lwrjs/lambda/mrt-static-asset-provider", void 0]],
151
+ bundleProviders: [
152
+ ["@lwrjs/lambda/mrt-static-bundle-provider", void 0],
153
+ ["@lwrjs/module-bundler/amd-runtime-bundle-provider", void 0]
154
+ ],
155
+ assetTransformers: []
156
+ };
157
+ }
158
+ function resolveGlobalConfig(configArg, options) {
159
+ const mergedConfig = mergeConfig(configArg);
160
+ let normalizedConfig = normalizeConfig(mergedConfig);
161
+ if (options?.useStaticProviders) {
162
+ normalizedConfig = applyStaticProviderConfig(normalizedConfig);
163
+ }
164
+ normalizedConfig = applySsrConfig(normalizedConfig);
165
+ if (!options?.skipCacheDirCreation) {
126
166
  createCacheFolder(normalizedConfig.cacheDir, normalizedConfig.rootDir);
127
167
  }
128
- if (skipDirNormalization) {
168
+ if (options?.skipDirNormalization) {
129
169
  return normalizedConfig;
130
170
  }
131
171
  return normalizeConfigPaths(normalizedConfig);
132
172
  }
173
+ function loadConfig(config, options) {
174
+ const appConfig = resolveGlobalConfig(config, options);
175
+ const runtimeEnvironment = (0, import_runtime_config.getRuntimeEnvironment)(appConfig);
176
+ const globalData = (0, import_global_data.getGlobalData)(appConfig.globalDataDir, appConfig.globalData);
177
+ if (!appConfig.hooks.length) {
178
+ (0, import_app_config.validateLwrAppConfig)(appConfig, "post");
179
+ }
180
+ return {
181
+ appConfig,
182
+ runtimeEnvironment,
183
+ globalData
184
+ };
185
+ }
@@ -0,0 +1,69 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
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});
17
+ }
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);
22
+ };
23
+
24
+ // packages/@lwrjs/config/src/hooks.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ executeConfigHooks: () => executeConfigHooks,
28
+ executeStartHooks: () => executeStartHooks
29
+ });
30
+ var import_routes = __toModule(require("./utils/routes.cjs"));
31
+ var import_app_config = __toModule(require("./validation/app-config.cjs"));
32
+ var import_global_config = __toModule(require("./global-config.cjs"));
33
+ async function executeConfigHooks(hooks, globalConfig, runtimeEnvironment, globalData, skipValidate = false) {
34
+ if (!hooks.length) {
35
+ return;
36
+ }
37
+ for (const hook of hooks) {
38
+ if (!hook.initConfigs) {
39
+ continue;
40
+ }
41
+ await hook.initConfigs(globalConfig, globalData, runtimeEnvironment);
42
+ }
43
+ globalConfig.routes = (0, import_routes.normalizeRoutes)(globalConfig.routes, globalConfig.routeHandlers);
44
+ globalConfig.errorRoutes = (0, import_routes.normalizeRoutes)(globalConfig.errorRoutes, globalConfig.routeHandlers);
45
+ const ssrConfig = (0, import_global_config.applySsrConfig)(globalConfig);
46
+ globalConfig.moduleProviders = ssrConfig.moduleProviders;
47
+ globalConfig.viewTransformers = ssrConfig.viewTransformers;
48
+ if (!skipValidate) {
49
+ (0, import_app_config.validateLwrAppConfig)(globalConfig, "post");
50
+ }
51
+ }
52
+ function executeStartHooks(hooks, globalConfig, skipValidate = false) {
53
+ if (!hooks.length) {
54
+ return;
55
+ }
56
+ for (const hook of hooks) {
57
+ if (!hook.onStart) {
58
+ continue;
59
+ }
60
+ hook.onStart(globalConfig.routes);
61
+ }
62
+ globalConfig.routes = (0, import_routes.normalizeRoutes)(globalConfig.routes, globalConfig.routeHandlers);
63
+ const ssrConfig = (0, import_global_config.applySsrConfig)(globalConfig);
64
+ globalConfig.moduleProviders = ssrConfig.moduleProviders;
65
+ globalConfig.viewTransformers = ssrConfig.viewTransformers;
66
+ if (!skipValidate) {
67
+ (0, import_app_config.validateLwrAppConfig)(globalConfig, "post");
68
+ }
69
+ }
@@ -24,10 +24,18 @@ var __toModule = (module2) => {
24
24
  // packages/@lwrjs/config/src/index.ts
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
- explodeMode: () => import_runtime_config.getServerModeConfig,
28
- normalizeConfig: () => import_env_config.resolveConfig,
27
+ LWC_VERSION: () => import_package.lwcVersion,
28
+ LWR_VERSION: () => import_package.version,
29
+ executeConfigHooks: () => import_hooks.executeConfigHooks,
30
+ executeStartHooks: () => import_hooks.executeStartHooks,
31
+ getLwrConfigFromFile: () => import_global_config.getLwrConfigFromFile,
32
+ getRuntimeEnvironment: () => import_runtime_config.getRuntimeEnvironment,
33
+ loadConfig: () => import_global_config.loadConfig,
34
+ normalizeConfig: () => import_global_config.resolveGlobalConfig,
29
35
  validateLwrAppConfig: () => import_app_config.validateLwrAppConfig
30
36
  });
31
- var import_env_config = __toModule(require("./env-config.cjs"));
37
+ var import_package = __toModule(require("@lwrjs/config/package"));
38
+ var import_global_config = __toModule(require("./global-config.cjs"));
32
39
  var import_runtime_config = __toModule(require("./runtime-config.cjs"));
40
+ var import_hooks = __toModule(require("./hooks.cjs"));
33
41
  var import_app_config = __toModule(require("./validation/app-config.cjs"));
@@ -0,0 +1,92 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
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});
17
+ }
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);
22
+ };
23
+
24
+ // packages/@lwrjs/config/src/modules.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ loadHooks: () => loadHooks,
28
+ loadRouteHandlers: () => loadRouteHandlers,
29
+ loadServices: () => loadServices
30
+ });
31
+ var import_path = __toModule(require("path"));
32
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
33
+ var import_typescript = __toModule(require("@lwrjs/shared-utils/typescript"));
34
+ async function importModule(filepath, rootDir, cacheDir) {
35
+ let resolvedFilePath = (0, import_shared_utils.normalizeDirectory)(filepath, rootDir);
36
+ const resolvedCacheDir = (0, import_shared_utils.normalizeDirectory)(cacheDir, rootDir);
37
+ try {
38
+ if (resolvedFilePath.endsWith(".ts")) {
39
+ const fullPath = (0, import_shared_utils.resolveFileExtension)(resolvedFilePath);
40
+ resolvedFilePath = await (0, import_typescript.transpileTs)(fullPath, {rootDir, cacheDir: resolvedCacheDir});
41
+ }
42
+ const moduleEntry = await Promise.resolve().then(() => __toModule(require(resolvedFilePath)));
43
+ const output = moduleEntry.default || moduleEntry;
44
+ return output;
45
+ } catch (err) {
46
+ console.log(err);
47
+ throw new Error(`Unable to load configurable module: ${filepath}`);
48
+ }
49
+ }
50
+ async function loadServiceEntries(entries, rootDir, cacheDir) {
51
+ return Promise.all(entries.map(async ([entry, config]) => {
52
+ const ctor = await importModule(entry, rootDir, import_path.default.join(cacheDir, "services"));
53
+ return [ctor, config];
54
+ }));
55
+ }
56
+ async function loadHooks(config) {
57
+ if (!config.hooks) {
58
+ return [];
59
+ }
60
+ const hookCtors = await loadServiceEntries(config.hooks, config.rootDir, config.cacheDir);
61
+ const hooks = hookCtors.map(([hookCtor, hookConfig = {}]) => {
62
+ return new hookCtor(hookConfig);
63
+ });
64
+ return hooks;
65
+ }
66
+ async function loadServices(config) {
67
+ const moduleProviders = await loadServiceEntries(config.moduleProviders, config.rootDir, config.cacheDir);
68
+ const bundleProviders = await loadServiceEntries(config.bundleProviders, config.rootDir, config.cacheDir);
69
+ const assetProviders = await loadServiceEntries(config.assetProviders, config.rootDir, config.cacheDir);
70
+ const assetTransformers = await loadServiceEntries(config.assetTransformers, config.rootDir, config.cacheDir);
71
+ const resourceProviders = await loadServiceEntries(config.resourceProviders, config.rootDir, config.cacheDir);
72
+ const viewProviders = await loadServiceEntries(config.viewProviders, config.rootDir, config.cacheDir);
73
+ const viewTransformers = await loadServiceEntries(config.viewTransformers, config.rootDir, config.cacheDir);
74
+ return {
75
+ moduleProviders,
76
+ bundleProviders,
77
+ assetProviders,
78
+ assetTransformers,
79
+ resourceProviders,
80
+ viewProviders,
81
+ viewTransformers
82
+ };
83
+ }
84
+ async function loadRouteHandlers(config) {
85
+ const routeHandlers = {};
86
+ await Promise.all(Object.keys(config.routeHandlers).map(async (id) => {
87
+ const handlerPath = config.routeHandlers[id];
88
+ const handler = await importModule(handlerPath, config.rootDir, import_path.default.join(config.cacheDir, "routeHandlers"));
89
+ routeHandlers[id] = handler;
90
+ }));
91
+ return routeHandlers;
92
+ }
@@ -25,15 +25,18 @@ var __toModule = (module2) => {
25
25
  __markAsModule(exports);
26
26
  __export(exports, {
27
27
  RUNTIME_CONFIGS: () => RUNTIME_CONFIGS,
28
+ getRuntimeEnvironment: () => getRuntimeEnvironment,
28
29
  getServerModeConfig: () => getServerModeConfig
29
30
  });
30
31
  var import_diagnostics = __toModule(require("@lwrjs/diagnostics"));
32
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
31
33
  var RUNTIME_CONFIGS = {
32
34
  dev: {
33
35
  bundle: false,
34
36
  minify: false,
35
37
  format: "esm",
36
38
  compat: "0",
39
+ debug: false,
37
40
  watchFiles: true,
38
41
  defaultLocale: "en_US",
39
42
  hmrEnabled: true,
@@ -47,6 +50,7 @@ var RUNTIME_CONFIGS = {
47
50
  minify: true,
48
51
  format: "esm",
49
52
  compat: "0",
53
+ debug: false,
50
54
  watchFiles: false,
51
55
  defaultLocale: "en_US",
52
56
  hmrEnabled: false,
@@ -60,6 +64,7 @@ var RUNTIME_CONFIGS = {
60
64
  minify: false,
61
65
  format: "amd",
62
66
  compat: "1",
67
+ debug: false,
63
68
  watchFiles: true,
64
69
  defaultLocale: "en_US",
65
70
  hmrEnabled: false,
@@ -73,6 +78,7 @@ var RUNTIME_CONFIGS = {
73
78
  minify: true,
74
79
  format: "amd",
75
80
  compat: "1",
81
+ debug: false,
76
82
  watchFiles: false,
77
83
  defaultLocale: "en_US",
78
84
  hmrEnabled: false,
@@ -82,10 +88,23 @@ var RUNTIME_CONFIGS = {
82
88
  }
83
89
  }
84
90
  };
85
- function getServerModeConfig(mode) {
86
- const selectedMode = RUNTIME_CONFIGS[mode];
91
+ function getServerModeConfig(serverMode) {
92
+ const selectedMode = RUNTIME_CONFIGS[serverMode];
87
93
  if (!selectedMode) {
88
- throw (0, import_diagnostics.createSingleDiagnosticError)({description: import_diagnostics.descriptions.SERVER.INVALID_MODE(mode)}, import_diagnostics.LwrServerError);
94
+ throw (0, import_diagnostics.createSingleDiagnosticError)({description: import_diagnostics.descriptions.SERVER.INVALID_MODE(serverMode)}, import_diagnostics.LwrServerError);
89
95
  }
90
96
  return selectedMode;
91
97
  }
98
+ function getRuntimeEnvironment(config) {
99
+ const {serverMode, lwrVersion, apiVersion, basePath, minify} = config;
100
+ const serverModeConfig = getServerModeConfig(config.serverMode);
101
+ return {
102
+ ...serverModeConfig,
103
+ minify: minify !== null ? minify : serverModeConfig.minify,
104
+ featureFlags: (0, import_shared_utils.getFeatureFlags)(),
105
+ serverMode,
106
+ lwrVersion,
107
+ apiVersion,
108
+ basePath
109
+ };
110
+ }
@@ -0,0 +1,54 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
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});
17
+ }
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);
22
+ };
23
+
24
+ // packages/@lwrjs/config/src/utils/global-data.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ getGlobalData: () => getGlobalData
28
+ });
29
+ var import_fs = __toModule(require("fs"));
30
+ var import_path = __toModule(require("path"));
31
+ function recursiveJsonCollector(resources, currentPath, collector) {
32
+ for (const resource of resources) {
33
+ const resourcePath = import_path.default.join(currentPath, resource);
34
+ if (resource.endsWith(".json")) {
35
+ const resourceName = import_path.default.basename(resource, ".json");
36
+ const jsonSource = JSON.parse(import_fs.default.readFileSync(resourcePath, "utf-8"));
37
+ collector[resourceName] = jsonSource;
38
+ } else if (import_fs.default.statSync(resourcePath).isDirectory()) {
39
+ const dirContentList = import_fs.default.readdirSync(resourcePath);
40
+ collector[resource] = recursiveJsonCollector(dirContentList, resourcePath, {});
41
+ }
42
+ }
43
+ return collector;
44
+ }
45
+ function getGlobalData(globalDataDir, defaultData = {}) {
46
+ if (!import_fs.default.existsSync(globalDataDir) || !import_fs.default.statSync(globalDataDir).isDirectory()) {
47
+ return defaultData;
48
+ }
49
+ const dirContentList = import_fs.default.readdirSync(globalDataDir);
50
+ return {
51
+ ...recursiveJsonCollector(dirContentList, globalDataDir, {}),
52
+ ...defaultData
53
+ };
54
+ }
@@ -32,6 +32,9 @@ __export(exports, {
32
32
  });
33
33
  var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
34
34
  var import_defaults = __toModule(require("../defaults.cjs"));
35
+ function isNormalizedLwrGlobalConfig(config) {
36
+ return config?.lwrVersion !== void 0;
37
+ }
35
38
  function trimLwrConfig(config) {
36
39
  Object.keys(config).forEach((k) => {
37
40
  if (config[k] === void 0)
@@ -40,6 +43,7 @@ function trimLwrConfig(config) {
40
43
  return config;
41
44
  }
42
45
  function mergeLwcConfig(config1, config2) {
46
+ const defaultModules = !isNormalizedLwrGlobalConfig(config1) && !isNormalizedLwrGlobalConfig(config2) ? import_defaults.DEFAULT_LWR_MODULES : [];
43
47
  const modules1 = config1?.lwc?.modules || [];
44
48
  const modules2 = config2?.lwc?.modules || [];
45
49
  const interchangeable1 = config1?.lwc?.interchangeable || [];
@@ -49,18 +53,22 @@ function mergeLwcConfig(config1, config2) {
49
53
  const interchangeableModules2 = config2?.lwc?.interchangeableModules || [];
50
54
  const mergedInterchangeableModules = [...interchangeableModules1, ...interchangeableModules2];
51
55
  return {
52
- modules: [...import_defaults.DEFAULT_LWR_MODULES, ...modules1, ...modules2],
56
+ modules: [...defaultModules, ...modules1, ...modules2],
53
57
  interchangeable: mergedInterchangeable.length ? mergedInterchangeable : void 0,
54
58
  interchangeableModules: mergedInterchangeableModules.length ? mergedInterchangeableModules : void 0
55
59
  };
56
60
  }
57
- function mergeBundleConfig(jsonConfig, config) {
58
- const defaultExclusions = config?.bundleConfig?.UNSAFE_lwrDefaultExclude || jsonConfig?.bundleConfig?.UNSAFE_lwrDefaultExclude || import_defaults.DEFAULT_BUNDLE_EXCLUSIONS;
59
- const configExclusions = config?.bundleConfig?.exclude || jsonConfig?.bundleConfig?.exclude || [];
61
+ function mergeBundleConfig(config1, config2) {
62
+ const mode = config2?.serverMode || config1?.serverMode;
63
+ const DEFAULT_BUNDLE_CONFIG = (0, import_defaults.getDefaultBundleConfig)(mode);
64
+ const defaultExclusions = config2?.bundleConfig?.UNSAFE_lwrDefaultExclude || config1?.bundleConfig?.UNSAFE_lwrDefaultExclude || DEFAULT_BUNDLE_CONFIG.exclude || [];
65
+ const configExclusions = config2?.bundleConfig?.exclude || config1?.bundleConfig?.exclude || [];
66
+ const configExternals = config2?.bundleConfig?.external || config1?.bundleConfig?.external || {};
60
67
  return {
61
- ...jsonConfig?.bundleConfig,
62
- ...config?.bundleConfig,
63
- exclude: [...new Set([...defaultExclusions, ...configExclusions])]
68
+ ...config1?.bundleConfig,
69
+ ...config2?.bundleConfig,
70
+ exclude: [...new Set([...defaultExclusions, ...configExclusions])],
71
+ external: {...DEFAULT_BUNDLE_CONFIG.external, ...configExternals}
64
72
  };
65
73
  }
66
74
  function mergeLockerConfig(jsonConfig, config) {
@@ -74,9 +82,15 @@ function mergeLockerConfig(jsonConfig, config) {
74
82
  };
75
83
  }
76
84
  function mergeStaticGenerationConfig(configFile, configArg) {
85
+ const fileAdditionalModules = configFile?.staticSiteGenerator?._additionalModules || [];
86
+ const argAdditionalModules = configArg?.staticSiteGenerator?._additionalModules || [];
87
+ const fileAdditionalPaths = configFile?.staticSiteGenerator?._additionalRoutePaths || [];
88
+ const argAdditionalPaths = configArg?.staticSiteGenerator?._additionalRoutePaths || [];
77
89
  return {
78
90
  ...import_defaults.DEFAULT_GENERATOR_CONFIG,
79
91
  ...configFile?.staticSiteGenerator,
80
- ...configArg?.staticSiteGenerator
92
+ ...configArg?.staticSiteGenerator,
93
+ _additionalModules: [...new Set([...fileAdditionalModules, ...argAdditionalModules])],
94
+ _additionalRoutePaths: [...new Set([...fileAdditionalPaths, ...argAdditionalPaths])]
81
95
  };
82
96
  }