@lwrjs/core 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 (79) hide show
  1. package/build/cjs/context/provider.cjs +9 -5
  2. package/build/cjs/context/server.cjs +6 -6
  3. package/build/cjs/index.cjs +66 -41
  4. package/build/cjs/middleware/asset-middleware.cjs +70 -0
  5. package/build/cjs/middleware/bundle-middleware.cjs +113 -0
  6. package/build/cjs/{middlewares → middleware}/hmr-middleware.cjs +6 -6
  7. package/build/cjs/{middlewares → middleware}/locale-middleware.cjs +2 -2
  8. package/build/cjs/middleware/mapping-middleware.cjs +61 -0
  9. package/build/cjs/middleware/module-middleware.cjs +88 -0
  10. package/build/cjs/middleware/redirects/unsigned-module-redirect.cjs +37 -0
  11. package/build/cjs/middleware/resource-middleware.cjs +64 -0
  12. package/build/cjs/{context/global-data.cjs → middleware/utils/error-handling.cjs} +26 -24
  13. package/build/cjs/middleware/utils/identity.cjs +92 -0
  14. package/build/cjs/{context/services.cjs → middleware/utils/metadata.cjs} +19 -20
  15. package/build/cjs/{middlewares/utils.cjs → middleware/utils/request.cjs} +17 -16
  16. package/build/cjs/middleware/view-middleware.cjs +151 -0
  17. package/build/cjs/middleware.cjs +16 -9
  18. package/build/cjs/tools/server-warmup.cjs +2 -9
  19. package/build/cjs/tools/static-generation.cjs +190 -62
  20. package/build/es/context/provider.js +5 -3
  21. package/build/es/context/server.d.ts +1 -1
  22. package/build/es/context/server.js +6 -5
  23. package/build/es/index.d.ts +3 -2
  24. package/build/es/index.js +85 -49
  25. package/build/es/middleware/asset-middleware.d.ts +3 -0
  26. package/build/es/middleware/asset-middleware.js +42 -0
  27. package/build/es/middleware/bundle-middleware.d.ts +3 -0
  28. package/build/es/middleware/bundle-middleware.js +88 -0
  29. package/build/es/middleware/hmr-middleware.d.ts +5 -0
  30. package/build/es/{middlewares → middleware}/hmr-middleware.js +4 -4
  31. package/build/es/middleware/locale-middleware.d.ts +3 -0
  32. package/build/es/{middlewares → middleware}/locale-middleware.js +2 -1
  33. package/build/es/middleware/mapping-middleware.d.ts +3 -0
  34. package/build/es/middleware/mapping-middleware.js +34 -0
  35. package/build/es/middleware/module-middleware.d.ts +3 -0
  36. package/build/es/middleware/module-middleware.js +64 -0
  37. package/build/es/middleware/redirects/unsigned-module-redirect.d.ts +6 -0
  38. package/build/es/middleware/redirects/unsigned-module-redirect.js +25 -0
  39. package/build/es/middleware/resource-middleware.d.ts +3 -0
  40. package/build/es/middleware/resource-middleware.js +37 -0
  41. package/build/es/middleware/utils/error-handling.d.ts +3 -0
  42. package/build/es/middleware/utils/error-handling.js +32 -0
  43. package/build/es/middleware/utils/identity.d.ts +6 -0
  44. package/build/es/middleware/utils/identity.js +62 -0
  45. package/build/es/middleware/utils/metadata.d.ts +3 -0
  46. package/build/es/middleware/utils/metadata.js +24 -0
  47. package/build/es/middleware/utils/request.d.ts +15 -0
  48. package/build/es/{middlewares/utils.js → middleware/utils/request.js} +15 -23
  49. package/build/es/middleware/view-middleware.d.ts +3 -0
  50. package/build/es/middleware/view-middleware.js +136 -0
  51. package/build/es/middleware.d.ts +8 -14
  52. package/build/es/middleware.js +12 -20
  53. package/build/es/tools/server-warmup.js +3 -10
  54. package/build/es/tools/static-generation.d.ts +11 -1
  55. package/build/es/tools/static-generation.js +230 -79
  56. package/build/es/tools/types.d.ts +3 -2
  57. package/package.json +33 -34
  58. package/build/cjs/context/configurations.cjs +0 -82
  59. package/build/cjs/middlewares/api-middleware.cjs +0 -359
  60. package/build/cjs/middlewares/base-middleware.cjs +0 -15
  61. package/build/cjs/middlewares/ui-middleware.cjs +0 -183
  62. package/build/cjs/tools/server-build.cjs +0 -182
  63. package/build/es/context/configurations.d.ts +0 -9
  64. package/build/es/context/configurations.js +0 -53
  65. package/build/es/context/global-data.d.ts +0 -3
  66. package/build/es/context/global-data.js +0 -29
  67. package/build/es/context/services.d.ts +0 -3
  68. package/build/es/context/services.js +0 -27
  69. package/build/es/middlewares/api-middleware.d.ts +0 -3
  70. package/build/es/middlewares/api-middleware.js +0 -410
  71. package/build/es/middlewares/base-middleware.d.ts +0 -3
  72. package/build/es/middlewares/base-middleware.js +0 -4
  73. package/build/es/middlewares/hmr-middleware.d.ts +0 -5
  74. package/build/es/middlewares/locale-middleware.d.ts +0 -3
  75. package/build/es/middlewares/ui-middleware.d.ts +0 -3
  76. package/build/es/middlewares/ui-middleware.js +0 -186
  77. package/build/es/middlewares/utils.d.ts +0 -22
  78. package/build/es/tools/server-build.d.ts +0 -14
  79. package/build/es/tools/server-build.js +0 -182
@@ -1,182 +0,0 @@
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/core/src/tools/server-build.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- buildServer: () => buildServer
28
- });
29
- var import_path = __toModule(require("path"));
30
- var import_fs_extra = __toModule(require("fs-extra"));
31
- var import_esbuild = __toModule(require("esbuild"));
32
- var import_config = __toModule(require("@lwrjs/config"));
33
- var import_configurations = __toModule(require("../context/configurations.cjs"));
34
- var import_provider = __toModule(require("../context/provider.cjs"));
35
- var import_server = __toModule(require("../context/server.cjs"));
36
- function getBuildMetadata(appConfig) {
37
- const moduleProviders = processServiceEntries("moduleProvider", appConfig.moduleProviders);
38
- const resourceProviders = processServiceEntries("resourceProvider", appConfig.resourceProviders);
39
- const viewProviders = processServiceEntries("viewProvider", appConfig.viewProviders);
40
- const viewTransformers = processServiceEntries("viewTransformer", appConfig.viewTransformers);
41
- const assetProviders = processServiceEntries("assetProvider", appConfig.assetProviders);
42
- const assetTransformers = processServiceEntries("assetTransformer", appConfig.assetTransformers);
43
- const imports = [
44
- ...moduleProviders.imports,
45
- ...resourceProviders.imports,
46
- ...viewProviders.imports,
47
- ...viewTransformers.imports,
48
- ...assetProviders.imports,
49
- ...assetTransformers.imports
50
- ];
51
- return {
52
- imports,
53
- moduleProviders: moduleProviders.services,
54
- resourceProviders: resourceProviders.services,
55
- viewProviders: viewProviders.services,
56
- viewTransformers: viewTransformers.services,
57
- assetProviders: assetProviders.services,
58
- assetTransformers: assetTransformers.services
59
- };
60
- }
61
- function processServiceEntries(serviceType, entries) {
62
- const imports = [];
63
- const services = [];
64
- for (const [index, [pkg, config]] of entries.entries()) {
65
- const name = serviceType + index;
66
- imports.push(`import ${name} from '${pkg}';`);
67
- services.push(`[${name}, ${JSON.stringify(config)}]`);
68
- }
69
- return {
70
- imports,
71
- services
72
- };
73
- }
74
- function generateServices(providerContext) {
75
- return ([ServiceCtor, serviceConfig = {}]) => new ServiceCtor(serviceConfig, providerContext);
76
- }
77
- function isRemote() {
78
- return process.env.AWS_LAMBDA_FUNCTION_NAME !== void 0;
79
- }
80
- function generateServerContextModule(appConfig, runtimeEnvironment, globalData, metadata) {
81
- const {
82
- imports,
83
- moduleProviders,
84
- resourceProviders,
85
- viewProviders,
86
- viewTransformers,
87
- assetProviders,
88
- assetTransformers
89
- } = metadata;
90
- const config = {
91
- ...appConfig,
92
- rootDir: void 0,
93
- ignoreLwrConfigFile: true
94
- };
95
- return [
96
- `/* This module is generated */`,
97
- `import { LwrCompiler } from '@lwrjs/compiler';`,
98
- `import { LwrModuleBundler } from '@lwrjs/module-bundler';`,
99
- `import { LwrModuleRegistry } from '@lwrjs/module-registry';`,
100
- `import { LwrResourceRegistry } from '@lwrjs/resource-registry';`,
101
- `import { LwrAssetRegistry } from '@lwrjs/asset-registry';`,
102
- `import { LwrViewRegistry } from '@lwrjs/view-registry';`,
103
- `import { LwrApplicationObserver, deepFreeze } from '@lwrjs/shared-utils';`,
104
- `import { normalizeConfig } from '@lwrjs/config';`,
105
- ...imports,
106
- import_server.createServerContext.toString(),
107
- import_provider.createProviderContext.toString(),
108
- generateServices.toString(),
109
- isRemote.toString(),
110
- `const config = ${JSON.stringify(config, null, 4)}`,
111
- `const runtimeEnvironment = ${JSON.stringify(runtimeEnvironment, null, 4)}`,
112
- `const globalData = ${JSON.stringify(globalData, null, 4)}`,
113
- `isRemote() && process.chdir(__dirname);`,
114
- `isRemote() && (config.rootDir = __dirname);`,
115
- `isRemote() && (config.cacheDir = '/tmp/__lwr_cache__');`,
116
- `const normalizedConfig = normalizeConfig(config);`,
117
- `const serverContext = createServerContext(normalizedConfig, runtimeEnvironment, globalData);`,
118
- `const providerContext = createProviderContext(serverContext);`,
119
- `const generate = generateServices(providerContext);`,
120
- `const moduleProviders = [${moduleProviders}].map(generate);`,
121
- `const resourceProviders = [${resourceProviders}].map(generate);`,
122
- `const viewProviders = [${viewProviders}].map(generate);`,
123
- `const viewTransformers = [${viewTransformers}].map(generate);`,
124
- `const assetProviders = [${assetProviders}].map(generate);`,
125
- `const assetTransformers = [${assetTransformers}].map(generate);`,
126
- `serverContext.moduleRegistry.addModuleProviders(moduleProviders);`,
127
- `serverContext.resourceRegistry.addResourceProviders(resourceProviders);`,
128
- `serverContext.viewRegistry.addViewProviders(viewProviders);`,
129
- `serverContext.viewRegistry.addViewTransformers(viewTransformers);`,
130
- `serverContext.assetRegistry.addAssetProviders(assetProviders);`,
131
- `serverContext.assetRegistry.addAssetTransformers(assetTransformers);`,
132
- `export default serverContext;`
133
- ].join("\n");
134
- }
135
- function generateServerSource(target) {
136
- if (target !== "lambda") {
137
- throw `Unsupported server build target: ${target}`;
138
- }
139
- return [
140
- `/* This module is generated */`,
141
- `import { createHandler } from '@lwrjs/lambda';`,
142
- `import build from './lwr.build.js';`,
143
- `const handler = createHandler(build);`,
144
- `export { handler as get };`
145
- ].join("\n");
146
- }
147
- async function bundleServer(entryPoint, outputPath) {
148
- await import_esbuild.default.build({
149
- entryPoints: [entryPoint],
150
- bundle: true,
151
- sourcemap: true,
152
- logLevel: "silent",
153
- external: [
154
- "node:*",
155
- "fsevents",
156
- "iltorb",
157
- "esbuild*",
158
- "esinstall",
159
- "jsonc-parser",
160
- "node-fetch",
161
- "rollup",
162
- "rollup-plugin-node-polyfills",
163
- "@lwrjs/config",
164
- "@lwrjs/loader"
165
- ],
166
- format: "cjs",
167
- platform: "node",
168
- outfile: outputPath
169
- });
170
- }
171
- async function buildServer(configArg, options) {
172
- const config = (0, import_config.normalizeConfig)(configArg, {skipDirNormalization: true, skipCacheDirCreation: true});
173
- const {appConfig, runtimeEnvironment, globalData} = await (0, import_configurations.resolveConfigurations)(config);
174
- const metadata = getBuildMetadata(appConfig);
175
- const serverContext = generateServerContextModule(appConfig, runtimeEnvironment, globalData, metadata);
176
- const outputDir = import_path.default.join(appConfig.rootDir, options?.outputDir || "/build");
177
- const serverSource = generateServerSource(options?.target || "lambda");
178
- await import_fs_extra.default.ensureDir(outputDir);
179
- await import_fs_extra.default.writeFile(import_path.default.join(outputDir, "lwr.build.js"), serverContext);
180
- await import_fs_extra.default.writeFile(import_path.default.join(outputDir, "entry.js"), serverSource);
181
- await bundleServer(import_path.default.join(outputDir, "entry.js"), import_path.default.join(outputDir, "ssr.js"));
182
- }
@@ -1,9 +0,0 @@
1
- import { NormalizedLwrGlobalConfig, RuntimeEnvironment, GlobalData } from '@lwrjs/types';
2
- interface Configurations {
3
- appConfig: NormalizedLwrGlobalConfig;
4
- globalData: GlobalData;
5
- runtimeEnvironment: RuntimeEnvironment;
6
- }
7
- export declare function resolveConfigurations(config: NormalizedLwrGlobalConfig): Promise<Configurations>;
8
- export {};
9
- //# sourceMappingURL=configurations.d.ts.map
@@ -1,53 +0,0 @@
1
- import { DEFAULT_LWR_BOOTSTRAP_CONFIG, getFeatureFlags, logger } from '@lwrjs/shared-utils';
2
- import { explodeMode, validateLwrAppConfig } from '@lwrjs/config';
3
- import { getGlobalData } from './global-data.js';
4
- import { getServices } from './services.js';
5
- // Add missing bootstrap objects to routes
6
- function normalizeRoutesBootstrap({ routes, errorRoutes }) {
7
- [...routes, ...errorRoutes].forEach((route) => {
8
- if (!route.bootstrap) {
9
- route.bootstrap = { ...DEFAULT_LWR_BOOTSTRAP_CONFIG };
10
- }
11
- });
12
- }
13
- async function runConfigurationsHook(hookPlugins, appConfig, globalData, runtimeEnvironment) {
14
- for (const hookPlugin of hookPlugins) {
15
- // eslint-disable-next-line no-await-in-loop
16
- await hookPlugin.initConfigs(appConfig, globalData, runtimeEnvironment);
17
- }
18
- try {
19
- validateLwrAppConfig(JSON.stringify(appConfig), 'post');
20
- }
21
- catch (e) {
22
- // TODO: temporary workaround for https://github.com/salesforce/lwr/issues/825
23
- if (process.env.UNSAFE_IGNORE_CONFIG_VALIDATION === 'true') {
24
- logger.warn('ignoring config validation errors due to UNSAFE_IGNORE_CONFIG_VALIDATION flag...proceed with caution');
25
- console.dir(e, { depth: null });
26
- }
27
- else {
28
- throw e;
29
- }
30
- }
31
- normalizeRoutesBootstrap(appConfig);
32
- return {
33
- appConfig,
34
- globalData,
35
- runtimeEnvironment,
36
- };
37
- }
38
- export async function resolveConfigurations(config) {
39
- const { apiVersion, basePath, lwrVersion, serverMode, globalDataDir, globalData: globalDataConfig, } = config;
40
- const globalData = getGlobalData(globalDataDir, globalDataConfig);
41
- const runtimeEnvironment = {
42
- ...explodeMode(serverMode),
43
- apiVersion,
44
- basePath,
45
- lwrVersion,
46
- debug: false,
47
- serverMode,
48
- featureFlags: getFeatureFlags(),
49
- };
50
- const hookProviders = await getServices(config.hooks, undefined, config);
51
- return runConfigurationsHook(hookProviders, config, globalData, runtimeEnvironment);
52
- }
53
- //# sourceMappingURL=configurations.js.map
@@ -1,3 +0,0 @@
1
- import { GlobalData } from '@lwrjs/types';
2
- export declare function getGlobalData(globalDataDir: string, defaultData?: GlobalData): GlobalData;
3
- //# sourceMappingURL=global-data.d.ts.map
@@ -1,29 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- function recursiveJsonCollector(resources, currentPath, collector) {
5
- for (const resource of resources) {
6
- const resourcePath = path.join(currentPath, resource);
7
- if (resource.endsWith('.json')) {
8
- const resourceName = path.basename(resource, '.json');
9
- const jsonSource = JSON.parse(fs.readFileSync(resourcePath, 'utf-8'));
10
- collector[resourceName] = jsonSource;
11
- }
12
- else if (fs.statSync(resourcePath).isDirectory()) {
13
- const dirContentList = fs.readdirSync(resourcePath);
14
- collector[resource] = recursiveJsonCollector(dirContentList, resourcePath, {});
15
- }
16
- }
17
- return collector;
18
- }
19
- export function getGlobalData(globalDataDir, defaultData = {}) {
20
- if (!fs.existsSync(globalDataDir) || !fs.statSync(globalDataDir).isDirectory()) {
21
- return defaultData;
22
- }
23
- const dirContentList = fs.readdirSync(globalDataDir);
24
- return {
25
- ...recursiveJsonCollector(dirContentList, globalDataDir, {}),
26
- ...defaultData,
27
- };
28
- }
29
- //# sourceMappingURL=global-data.js.map
@@ -1,3 +0,0 @@
1
- import { LwrService, NormalizedLwrGlobalConfig, ProviderContext, ServiceConfig } from '@lwrjs/types';
2
- export declare function getServices<T extends LwrService>(services: ServiceConfig[], providerContext: ProviderContext | undefined, lwrConfig: NormalizedLwrGlobalConfig): Promise<T[]>;
3
- //# sourceMappingURL=services.d.ts.map
@@ -1,27 +0,0 @@
1
- import libPath from 'path';
2
- import { resolveFileExtension, transpileTs } from '@lwrjs/shared-utils';
3
- async function getServiceModule(path, { cacheDir, rootDir }) {
4
- try {
5
- if (path.endsWith('.ts')) {
6
- const fullPath = resolveFileExtension(path);
7
- path = await transpileTs(fullPath, { rootDir, cacheDir: libPath.join(cacheDir, 'services') });
8
- }
9
- const moduleEntry = await import(path);
10
- return moduleEntry.default || moduleEntry;
11
- }
12
- catch (err) {
13
- console.log(err);
14
- throw new Error(`Unable to get Service: ${path}`);
15
- }
16
- }
17
- // Parse the service constructors and instantiate them
18
- export async function getServices(services, providerContext, lwrConfig) {
19
- return Promise.all(services.map(async (serviceEntry) => {
20
- const [serviceName, serviceConfig = {}] = Array.isArray(serviceEntry)
21
- ? serviceEntry
22
- : [serviceEntry];
23
- const ServiceCtor = await getServiceModule(serviceName, lwrConfig);
24
- return new ServiceCtor(serviceConfig, providerContext);
25
- }));
26
- }
27
- //# sourceMappingURL=services.js.map
@@ -1,3 +0,0 @@
1
- import { ServerContext, InternalAppServer, ServerTypes } from '@lwrjs/types';
2
- export default function apiMiddleware<T extends ServerTypes>(app: InternalAppServer<T>, context: ServerContext): void;
3
- //# sourceMappingURL=api-middleware.d.ts.map