@lwrjs/core 0.9.0-alpha.13 → 0.9.0-alpha.15

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 (31) hide show
  1. package/build/cjs/context/provider.cjs +5 -4
  2. package/build/cjs/context/server.cjs +1 -5
  3. package/build/cjs/index.cjs +8 -8
  4. package/build/cjs/middleware/bundle-middleware.cjs +2 -2
  5. package/build/cjs/middleware/module-middleware.cjs +1 -1
  6. package/build/cjs/middleware/redirects/unsigned-module-redirect.cjs +2 -2
  7. package/build/cjs/middleware/utils/metadata.cjs +3 -3
  8. package/build/cjs/tools/static-generation.cjs +102 -18
  9. package/build/es/context/provider.js +3 -3
  10. package/build/es/context/server.js +1 -5
  11. package/build/es/index.d.ts +0 -1
  12. package/build/es/index.js +9 -7
  13. package/build/es/middleware/bundle-middleware.js +2 -2
  14. package/build/es/middleware/module-middleware.js +1 -1
  15. package/build/es/middleware/redirects/unsigned-module-redirect.d.ts +2 -2
  16. package/build/es/middleware/redirects/unsigned-module-redirect.js +2 -2
  17. package/build/es/middleware/utils/metadata.d.ts +2 -2
  18. package/build/es/middleware/utils/metadata.js +3 -7
  19. package/build/es/tools/static-generation.d.ts +8 -1
  20. package/build/es/tools/static-generation.js +118 -19
  21. package/build/es/tools/types.d.ts +2 -2
  22. package/package.json +28 -27
  23. package/build/cjs/tools/plugins/build-server-plugin.cjs +0 -137
  24. package/build/cjs/tools/plugins/generate-entry-plugin.cjs +0 -55
  25. package/build/cjs/tools/server-build.cjs +0 -68
  26. package/build/es/tools/plugins/build-server-plugin.d.ts +0 -18
  27. package/build/es/tools/plugins/build-server-plugin.js +0 -132
  28. package/build/es/tools/plugins/generate-entry-plugin.d.ts +0 -11
  29. package/build/es/tools/plugins/generate-entry-plugin.js +0 -45
  30. package/build/es/tools/server-build.d.ts +0 -13
  31. package/build/es/tools/server-build.js +0 -52
@@ -1,4 +1,4 @@
1
- import { ImportMetadata, LwrDispatcher, StaticSiteGenerator, LwrRoute, NormalizedLwrGlobalConfig, RuntimeEnvironment } from '@lwrjs/types';
1
+ import type { ImportMetadata, LwrDispatcher, StaticSiteGenerator, LwrRoute, NormalizedLwrGlobalConfig, RuntimeEnvironment } from '@lwrjs/types';
2
2
  import { ResourceContextOpts, SiteConfig, ViewImportMetadata } from './types.js';
3
3
  export default class SiteGenerator {
4
4
  /**
@@ -35,6 +35,9 @@ export default class SiteGenerator {
35
35
  * @param dispatcher - Network dispatcher
36
36
  */
37
37
  private handleJavascriptResource;
38
+ private addBundleToSiteMetadata;
39
+ private addResourceToSiteMetadata;
40
+ private addAssetToSiteMetadata;
38
41
  /**
39
42
  * Handle processing a returned module URI mapping resource and follow all returned references
40
43
  * @param url - URL of the request mapping resource
@@ -96,6 +99,10 @@ export default class SiteGenerator {
96
99
  * Add any additional import metadata collected during static site generation to the Client Bootstrap Config for this view.
97
100
  */
98
101
  private addAdditionalImportMetadataToViewConfig;
102
+ /**
103
+ * Capure additional metadata collected during the processing of a route or additional module
104
+ */
105
+ private captureAdditionalRouteMetadata;
99
106
  }
100
107
  export declare class ViewImportMetadataImpl implements ViewImportMetadata {
101
108
  private existing;
@@ -1,5 +1,5 @@
1
1
  import { performance } from 'perf_hooks';
2
- import { getSpecifier, getFeatureFlags, hashContent, isSelfUrl, getModuleUriPrefix, getMappingUriPrefix, logger, WARN, INFO, } from '@lwrjs/shared-utils';
2
+ import { getSpecifier, getFeatureFlags, hashContent, isSelfUrl, getModuleUriPrefix, getMappingUriPrefix, logger, WARN, INFO, SiteMetadataImpl, isExternalUrl, } from '@lwrjs/shared-utils';
3
3
  import { join, dirname, extname } from 'path';
4
4
  import fs from 'fs-extra';
5
5
  import { writeResponse } from './utils/stream.js';
@@ -16,7 +16,7 @@ export default class SiteGenerator {
16
16
  */
17
17
  async buildStaticApplication(config, dispatcher) {
18
18
  const startTime = performance.now();
19
- logger.info('[Static Generation] starting');
19
+ logger.info('[SSG] Static Site Generation');
20
20
  // De-duplicate warming messages if log level is warn or info
21
21
  if (!logger.currentLevel || logger.currentLevel == WARN || logger.currentLevel == INFO) {
22
22
  logger.setOptions({ dedupe: new Set([WARN]) });
@@ -27,11 +27,11 @@ export default class SiteGenerator {
27
27
  }
28
28
  const outputDir = join(rootDir, staticSiteGenerator.outputDir);
29
29
  if (!staticSiteGenerator.skipCleanOutputDir) {
30
- logger.info(`Clearing output directory: ${outputDir}`);
30
+ logger.info(`[SSG] Clearing output directory: ${outputDir}`);
31
31
  fs.rmSync(outputDir, { recursive: true, force: true });
32
32
  }
33
33
  else {
34
- logger.info(`Reusing existing output directory: ${outputDir}`);
34
+ logger.info(`[SSG] Reusing existing output directory: ${outputDir}`);
35
35
  }
36
36
  const urlRewriteMap = new Map();
37
37
  const { basePath } = config;
@@ -44,7 +44,7 @@ export default class SiteGenerator {
44
44
  this.copyAssets(assets, outputDir, basePath);
45
45
  const endTime = performance.now();
46
46
  const timeDiff = (endTime - startTime) / 1000;
47
- logger.info(`[Static Generation] complete in ${Math.round(timeDiff)} seconds`);
47
+ logger.info(`[SSG] Static Site Generation complete in ${Math.round(timeDiff)} seconds`);
48
48
  }
49
49
  /**
50
50
  * Crawl all view routes for a site
@@ -75,9 +75,17 @@ export default class SiteGenerator {
75
75
  const { _additionalModules } = staticSiteGenerator;
76
76
  if (_additionalModules) {
77
77
  for (const specifier of _additionalModules) {
78
+ logger.debug(`[SSG] Additional Module: ${locale} ${specifier}`);
79
+ const startTime = performance.now();
78
80
  const siteConfig = this.createSiteConfig(outputDir, locale, urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment);
79
81
  // eslint-disable-next-line no-await-in-loop
80
82
  await this.dispatchJSResourceRecursive(specifier, dispatcher, siteConfig, true);
83
+ // Capture any additional collected metadata
84
+ // eslint-disable-next-line no-await-in-loop
85
+ await this.captureAdditionalRouteMetadata(siteConfig);
86
+ const endTime = performance.now();
87
+ const timeDiff = endTime - startTime;
88
+ logger.info(`[SSG] Additional Module ${locale} ${specifier} in ${Math.round(timeDiff)} ms`);
81
89
  }
82
90
  }
83
91
  }
@@ -88,9 +96,16 @@ export default class SiteGenerator {
88
96
  // The lwc_ssr_placeholder will be replaced with a root component specifier at SSR time
89
97
  const willSSR = routes.some((r) => r.bootstrap?.ssr);
90
98
  if (willSSR) {
99
+ logger.debug(`[SSG] Fetch SSR Placeholder`);
100
+ const startTime = performance.now();
91
101
  const siteConfig = this.createSiteConfig(outputDir, staticSiteGenerator.locales[0], // locale is unused in this bundle
92
102
  urlRewriteMap, skipBaseDocumentGeneration, runtimeEnvironment);
93
103
  await this.dispatchJSResourceRecursive('@lwrjs/lwc-ssr/lwc_ssr_placeholder', dispatcher, siteConfig, true);
104
+ // Capture any additional collected metadata
105
+ await this.captureAdditionalRouteMetadata(siteConfig);
106
+ const endTime = performance.now();
107
+ const timeDiff = endTime - startTime;
108
+ logger.info(`[SSG] SSR Placeholder in ${Math.round(timeDiff)} ms`);
94
109
  }
95
110
  }
96
111
  /**
@@ -99,12 +114,15 @@ export default class SiteGenerator {
99
114
  createGenerateURLFunction(dispatcher) {
100
115
  const generateRoute = async (uri, siteConfig) => {
101
116
  const locale = siteConfig.locale;
102
- logger.info(`Start Generate: ${locale} ${uri}`);
117
+ logger.debug(`[SSG] Start Generate: ${locale} ${uri}`);
118
+ const startTime = performance.now();
103
119
  // Kick off site generation for the current route
104
120
  await this.dispatchResourceRecursive(uri, dispatcher, { resourceType: 'route' }, siteConfig);
105
- // If there is a view config add any extra collected import metadata to the config
106
- this.addAdditionalImportMetadataToViewConfig(siteConfig);
107
- logger.info(`End Generate ${locale} ${uri}`);
121
+ // Capture any additional route metadata
122
+ await this.captureAdditionalRouteMetadata(siteConfig);
123
+ const endTime = performance.now();
124
+ const timeDiff = endTime - startTime;
125
+ logger.info(`[SSG] ${locale} ${uri} in ${Math.round(timeDiff)} ms`);
108
126
  };
109
127
  return generateRoute.bind(this);
110
128
  }
@@ -120,10 +138,15 @@ export default class SiteGenerator {
120
138
  const { visitedUrls } = siteConfig;
121
139
  if (!visitedUrls.has(url)) {
122
140
  visitedUrls.add(url); // Maintain a list of visited urls here to avoid potential infinite loops
141
+ // Skip remote urls (i.e. http://) the static view would call the remote url at runtime
142
+ if (isExternalUrl(url)) {
143
+ logger.warn('[SSG] Skipped generation of external url: ' + url);
144
+ return;
145
+ }
123
146
  // Skip urls with path segment variables (i.e. '/custom/:bar')
124
147
  // Users can specify specific urls via the '_additionalRoutePaths' config property
125
148
  if (url.indexOf('/:') !== -1 || url.indexOf('*') !== -1) {
126
- logger.warn('Skipped generation of url with variable path segment: ' + url);
149
+ logger.warn('[SSG] Skipped generation of url with variable path segment: ' + url);
127
150
  return;
128
151
  }
129
152
  // Generate resource
@@ -210,6 +233,10 @@ export default class SiteGenerator {
210
233
  : getSpecifier(importModule);
211
234
  dispatchRequests.push(this.dispatchJSResourceRecursive(jsUri, dispatcher, siteConfig));
212
235
  }
236
+ // If this is a bundle add it to the bundle metadata
237
+ if (moduleDefinition.bundleRecord) {
238
+ this.addBundleToSiteMetadata(moduleDefinition, url, siteConfig);
239
+ }
213
240
  }
214
241
  // Bundles with unresolved module uris
215
242
  const uris = context.fs?.metadata?.resolvedUris || [];
@@ -219,6 +246,54 @@ export default class SiteGenerator {
219
246
  // -- Dispatch dependencies
220
247
  await Promise.all(dispatchRequests);
221
248
  }
249
+ addBundleToSiteMetadata(bundleDefinition, url, siteConfig) {
250
+ if (siteConfig.siteMetadata) {
251
+ const specifier = bundleDefinition.specifier;
252
+ const imports = bundleDefinition.bundleRecord.imports?.map((moduleRef) => moduleRef.specifier) || [];
253
+ const bundleMetadata = {
254
+ version: bundleDefinition.version,
255
+ path: decodeURIComponent(url),
256
+ bundleRecord: {
257
+ includedModules: bundleDefinition.bundleRecord.includedModules || [],
258
+ imports,
259
+ },
260
+ };
261
+ const siteBundles = siteConfig.siteMetadata.getSiteBundles().bundles;
262
+ siteBundles[specifier] = bundleMetadata;
263
+ }
264
+ }
265
+ addResourceToSiteMetadata(resourceDefinition, url, siteConfig) {
266
+ if (siteConfig.siteMetadata) {
267
+ if (!resourceDefinition.specifier) {
268
+ logger.warn('[SSG] Could not save resource metadata. There was no specifier.', resourceDefinition);
269
+ }
270
+ else {
271
+ const specifier = resourceDefinition.specifier;
272
+ const resourceMetadata = {
273
+ path: decodeURIComponent(url),
274
+ mimeType: resourceDefinition.type,
275
+ };
276
+ const siteResources = siteConfig.siteMetadata.getSiteResources();
277
+ siteResources.resources[specifier] = resourceMetadata;
278
+ }
279
+ }
280
+ }
281
+ addAssetToSiteMetadata(assetDefinition, url, siteConfig) {
282
+ if (siteConfig.siteMetadata) {
283
+ if (!assetDefinition.uri) {
284
+ logger.warn('[SSG] Could not save asset metadata. There was no uri.', assetDefinition);
285
+ }
286
+ else {
287
+ const specifier = assetDefinition.uri;
288
+ const resourceMetadata = {
289
+ path: decodeURIComponent(url),
290
+ mimeType: String(assetDefinition.mime),
291
+ };
292
+ const siteAssets = siteConfig.siteMetadata.getSiteAssets();
293
+ siteAssets.assets[specifier] = resourceMetadata;
294
+ }
295
+ }
296
+ }
222
297
  /**
223
298
  * Handle processing a returned module URI mapping resource and follow all returned references
224
299
  * @param url - URL of the request mapping resource
@@ -254,7 +329,7 @@ export default class SiteGenerator {
254
329
  }
255
330
  else {
256
331
  const body = context.fs?.body;
257
- logger.warn(`Failed to fetch ${url}: (${statusCode}) ${body}`);
332
+ logger.warn(`[SSG] Failed to fetch ${url}: (${statusCode}) ${body}`);
258
333
  }
259
334
  }
260
335
  /**
@@ -357,7 +432,7 @@ export default class SiteGenerator {
357
432
  }
358
433
  }
359
434
  else {
360
- logger.warn('Skipped inline bootstrap resource: %j', resource);
435
+ logger.warn('[SSG] Skipped inline bootstrap resource: %j', resource);
361
436
  }
362
437
  }
363
438
  }
@@ -369,7 +444,7 @@ export default class SiteGenerator {
369
444
  dispatchRequests.push(this.dispatchResourceRecursive(resourceUri, dispatcher, { resourceType: 'resource' }, siteConfig));
370
445
  }
371
446
  else {
372
- logger.warn('Skipped resource: %j', resource);
447
+ logger.warn('[SSG] Skipped resource: %j', resource);
373
448
  }
374
449
  }
375
450
  // -- Dispatch dependencies
@@ -389,7 +464,7 @@ export default class SiteGenerator {
389
464
  await this.dispatchResourceRecursive(mappingURL, dispatcher, { resourceType: 'mapping' }, siteConfig);
390
465
  }
391
466
  else {
392
- logger.warn('Unable to fetch mapping for bare specifier or variable dynamic import: "' +
467
+ logger.warn('[SSG] Unable to fetch mapping for bare specifier or variable dynamic import: "' +
393
468
  jsUri +
394
469
  '"');
395
470
  }
@@ -414,6 +489,14 @@ export default class SiteGenerator {
414
489
  const metadata = context.fs?.metadata;
415
490
  const fullPath = this.getResourcePathFromUrl(siteConfig, url);
416
491
  await writeResponse(context, fullPath);
492
+ // Save Metadata
493
+ // If resource add to resource metadata
494
+ if (metadata?.resource) {
495
+ this.addResourceToSiteMetadata(metadata?.resource, url, siteConfig);
496
+ }
497
+ else if (metadata?.asset) {
498
+ this.addAssetToSiteMetadata(metadata?.asset, url, siteConfig);
499
+ }
417
500
  // Call and referenced assets...
418
501
  const assetReferences = metadata?.asset?.metadata?.assetReferences || [];
419
502
  const dispatchRequests = [];
@@ -421,7 +504,7 @@ export default class SiteGenerator {
421
504
  const refUrl = ref.override?.uri || ref.url;
422
505
  dispatchRequests.push(this.dispatchResourceRecursive(refUrl, dispatcher, { resourceType: 'asset', asset: metadata?.asset }, siteConfig).catch((err) => {
423
506
  // Warn the user that the we failed to fetch a referenced asset
424
- logger.warn(`Failed to fetch asset reference => ${refUrl} from ${url}`, err);
507
+ logger.warn(`[SSG] Failed to fetch asset reference => ${refUrl} from ${url}`, err);
425
508
  }));
426
509
  }
427
510
  return Promise.all(dispatchRequests);
@@ -479,11 +562,11 @@ export default class SiteGenerator {
479
562
  fs.copySync(assetSrcDir, assetOutputDir);
480
563
  }
481
564
  else {
482
- logger.warn('Could not find assets to copy at path: ' + assetSrcDir);
565
+ logger.warn('[SSG] Could not find assets to copy at path: ' + assetSrcDir);
483
566
  }
484
567
  }
485
568
  catch (e) {
486
- logger.error('Error occurred processing asset config: ' + JSON.stringify(asset), e);
569
+ logger.error('[SSG] Error occurred processing asset config: ' + JSON.stringify(asset), e);
487
570
  }
488
571
  }
489
572
  }
@@ -509,12 +592,19 @@ export default class SiteGenerator {
509
592
  skipBaseDocumentGeneration,
510
593
  // Only include LEGACY_LOADER if true
511
594
  ...featureFlags,
595
+ siteMetadata: new SiteMetadataImpl({ rootDir: outputDir, runtimeEnvironment }),
512
596
  };
513
597
  }
514
598
  filterFeatureFlags() {
515
599
  const ffs = getFeatureFlags();
516
- if (ffs.LEGACY_LOADER) {
517
- return { featureFlags: { LEGACY_LOADER: true, SSR_STATIC_BUNDLES: ffs.SSR_STATIC_BUNDLES } };
600
+ if (ffs && Object.keys(ffs).length) {
601
+ const accumlator = {};
602
+ for (const [key, value] of Object.entries(ffs)) {
603
+ if (value) {
604
+ accumlator[key] = true;
605
+ }
606
+ }
607
+ return { featureFlags: accumlator };
518
608
  }
519
609
  else {
520
610
  return undefined;
@@ -560,6 +650,15 @@ export default class SiteGenerator {
560
650
  });
561
651
  }
562
652
  }
653
+ /**
654
+ * Capure additional metadata collected during the processing of a route or additional module
655
+ */
656
+ async captureAdditionalRouteMetadata(siteConfig) {
657
+ // If there is a view config add any extra collected import metadata to the config
658
+ this.addAdditionalImportMetadataToViewConfig(siteConfig);
659
+ // Save site meta data
660
+ await siteConfig.siteMetadata?.persistSiteMetadata();
661
+ }
563
662
  }
564
663
  // Class used to track import metadata for a view
565
664
  export class ViewImportMetadataImpl {
@@ -1,5 +1,4 @@
1
- import { Endpoints, FeatureFlags, ImportMetadata } from '@lwrjs/types';
2
- import { RenderedAssetReference } from '@lwrjs/types';
1
+ import type { Endpoints, FeatureFlags, ImportMetadata, RenderedAssetReference, SiteMetadata } from '@lwrjs/types';
3
2
  export interface BaseResourceContextOpts {
4
3
  resourceType: 'route' | 'asset' | 'js' | 'resource' | 'mapping';
5
4
  }
@@ -44,5 +43,6 @@ export interface SiteConfig {
44
43
  featureFlags?: FeatureFlags;
45
44
  legacyDefaultMappingEndpoint?: string;
46
45
  skipBaseDocumentGeneration?: boolean;
46
+ siteMetadata?: SiteMetadata;
47
47
  }
48
48
  //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.9.0-alpha.13",
7
+ "version": "0.9.0-alpha.15",
8
8
  "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
9
  "repository": {
10
10
  "type": "git",
@@ -36,39 +36,40 @@
36
36
  "package.cjs"
37
37
  ],
38
38
  "dependencies": {
39
- "@lwrjs/app-service": "0.9.0-alpha.13",
40
- "@lwrjs/asset-registry": "0.9.0-alpha.13",
41
- "@lwrjs/asset-transformer": "0.9.0-alpha.13",
42
- "@lwrjs/base-view-provider": "0.9.0-alpha.13",
43
- "@lwrjs/base-view-transformer": "0.9.0-alpha.13",
44
- "@lwrjs/client-modules": "0.9.0-alpha.13",
45
- "@lwrjs/compiler": "0.9.0-alpha.13",
46
- "@lwrjs/config": "0.9.0-alpha.13",
47
- "@lwrjs/diagnostics": "0.9.0-alpha.13",
48
- "@lwrjs/fs-asset-provider": "0.9.0-alpha.13",
49
- "@lwrjs/html-view-provider": "0.9.0-alpha.13",
50
- "@lwrjs/loader": "0.9.0-alpha.13",
51
- "@lwrjs/lwc-module-provider": "0.9.0-alpha.13",
52
- "@lwrjs/markdown-view-provider": "0.9.0-alpha.13",
53
- "@lwrjs/module-bundler": "0.9.0-alpha.13",
54
- "@lwrjs/module-registry": "0.9.0-alpha.13",
55
- "@lwrjs/npm-module-provider": "0.9.0-alpha.13",
56
- "@lwrjs/nunjucks-view-provider": "0.9.0-alpha.13",
57
- "@lwrjs/o11y": "0.9.0-alpha.13",
58
- "@lwrjs/resource-registry": "0.9.0-alpha.13",
59
- "@lwrjs/router": "0.9.0-alpha.13",
60
- "@lwrjs/server": "0.9.0-alpha.13",
61
- "@lwrjs/shared-utils": "0.9.0-alpha.13",
62
- "@lwrjs/view-registry": "0.9.0-alpha.13",
39
+ "@locker/compiler": "0.18.2",
40
+ "@lwrjs/app-service": "0.9.0-alpha.15",
41
+ "@lwrjs/asset-registry": "0.9.0-alpha.15",
42
+ "@lwrjs/asset-transformer": "0.9.0-alpha.15",
43
+ "@lwrjs/base-view-provider": "0.9.0-alpha.15",
44
+ "@lwrjs/base-view-transformer": "0.9.0-alpha.15",
45
+ "@lwrjs/client-modules": "0.9.0-alpha.15",
46
+ "@lwrjs/config": "0.9.0-alpha.15",
47
+ "@lwrjs/diagnostics": "0.9.0-alpha.15",
48
+ "@lwrjs/fs-asset-provider": "0.9.0-alpha.15",
49
+ "@lwrjs/html-view-provider": "0.9.0-alpha.15",
50
+ "@lwrjs/loader": "0.9.0-alpha.15",
51
+ "@lwrjs/lwc-module-provider": "0.9.0-alpha.15",
52
+ "@lwrjs/markdown-view-provider": "0.9.0-alpha.15",
53
+ "@lwrjs/module-bundler": "0.9.0-alpha.15",
54
+ "@lwrjs/module-registry": "0.9.0-alpha.15",
55
+ "@lwrjs/npm-module-provider": "0.9.0-alpha.15",
56
+ "@lwrjs/nunjucks-view-provider": "0.9.0-alpha.15",
57
+ "@lwrjs/o11y": "0.9.0-alpha.15",
58
+ "@lwrjs/resource-registry": "0.9.0-alpha.15",
59
+ "@lwrjs/router": "0.9.0-alpha.15",
60
+ "@lwrjs/server": "0.9.0-alpha.15",
61
+ "@lwrjs/shared-utils": "0.9.0-alpha.15",
62
+ "@lwrjs/view-registry": "0.9.0-alpha.15",
63
63
  "chokidar": "^3.5.3",
64
64
  "esbuild": "^0.9.7",
65
65
  "fs-extra": "^10.1.0",
66
66
  "path-to-regexp": "^6.2.0",
67
67
  "qs": "^6.9.4",
68
+ "rollup": "~2.45.2",
68
69
  "ws": "^8.8.1"
69
70
  },
70
71
  "devDependencies": {
71
- "@lwrjs/types": "0.9.0-alpha.13",
72
+ "@lwrjs/types": "0.9.0-alpha.15",
72
73
  "@types/ws": "^8.5.3"
73
74
  },
74
75
  "peerDependencies": {
@@ -77,5 +78,5 @@
77
78
  "engines": {
78
79
  "node": ">=14.15.4 <19"
79
80
  },
80
- "gitHead": "fa30915a685f6e8c5c2895d0c053d59145780123"
81
+ "gitHead": "f32f103d2d5e516daccce1be69f68acd7b4b86fb"
81
82
  }
@@ -1,137 +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/plugins/build-server-plugin.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- default: () => buildLwrServer
28
- });
29
- var import_path = __toModule(require("path"));
30
- var import_config = __toModule(require("@lwrjs/config"));
31
- var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
32
- var services = [
33
- "moduleProviders",
34
- "assetProviders",
35
- "assetTransformers",
36
- "viewProviders",
37
- "viewTransformers",
38
- "resourceProviders"
39
- ];
40
- function processServices(kind, entries, rootDir) {
41
- const output = {
42
- imports: [],
43
- entries: []
44
- };
45
- for (const [index, [entry, config]] of entries.entries()) {
46
- const name = kind + index;
47
- output.imports.push(`import ${name} from '${(0, import_shared_utils.normalizeDirectory)(entry, rootDir)}';`);
48
- output.entries.push([name, config]);
49
- }
50
- return output;
51
- }
52
- function processRoutes(routes, rootDir) {
53
- const output = {
54
- imports: [],
55
- routes: []
56
- };
57
- const handlers = {};
58
- for (const route of routes) {
59
- if (!route.routeHandler) {
60
- output.routes.push(route);
61
- continue;
62
- }
63
- const handler = route.routeHandler;
64
- if (!handlers[handler]) {
65
- const name = `routeHandler${Object.keys(handlers).length}`;
66
- handlers[handler] = name;
67
- output.imports.push(`import ${name} from '${(0, import_shared_utils.normalizeDirectory)(handler, rootDir)}';`);
68
- }
69
- output.routes.push({
70
- ...route,
71
- routeHandler: handlers[handler]
72
- });
73
- }
74
- return output;
75
- }
76
- function printServices(config) {
77
- return `{${Object.entries(config).map(([key, value]) => {
78
- const entries = value;
79
- return `${key}: [${entries.map(([ctor, config2 = {}]) => `[${ctor}, ${JSON.stringify(config2)}]`)}]`;
80
- }).join(",")}}`;
81
- }
82
- function printRoutes(routes) {
83
- return `[${routes.map((route) => {
84
- return `{${Object.entries(route).map(([key, value]) => {
85
- if (key !== "routeHandler") {
86
- return `${key}: ${JSON.stringify(value)}`;
87
- }
88
- return `${key}: ${value}`;
89
- }).join(",")}}`;
90
- }).join(",")}]`;
91
- }
92
- function buildLwrServer(config) {
93
- return {
94
- name: "lwr-server-build",
95
- setup(build) {
96
- build.onResolve({filter: /.*\/lwr.build.js$/}, (args) => ({
97
- path: args.path,
98
- namespace: "lwr-server-build"
99
- }));
100
- build.onLoad({filter: /.*/, namespace: "lwr-server-build"}, async (args) => {
101
- const {appConfig, runtimeEnvironment, globalData} = await (0, import_config.loadConfig)(config, {
102
- skipDirNormalization: true
103
- });
104
- const remoteAppConfig = {
105
- ...appConfig,
106
- ignoreLwrConfigFile: true,
107
- rootDir: void 0,
108
- port: void 0
109
- };
110
- const serviceImports = [];
111
- const serviceConfig = {};
112
- for (const service of services) {
113
- const entries = processServices(service, appConfig[service], appConfig.rootDir);
114
- serviceImports.push(...entries.imports);
115
- serviceConfig[service] = entries.entries;
116
- }
117
- const routesConfig = processRoutes(appConfig.routes, appConfig.rootDir);
118
- const errorRoutesConfig = processRoutes(appConfig.errorRoutes, appConfig.rootDir);
119
- return {
120
- contents: [
121
- ...serviceImports,
122
- ...routesConfig.imports,
123
- ...errorRoutesConfig.imports,
124
- `export const appConfig = ${JSON.stringify(remoteAppConfig)};`,
125
- `export const runtimeEnvironment = ${JSON.stringify(runtimeEnvironment)};`,
126
- `export const globalData = ${JSON.stringify(globalData)};`,
127
- `export const services = ${printServices(serviceConfig)};`,
128
- `export const routes = ${printRoutes(routesConfig.routes)};`,
129
- `export const errorRoutes = ${printRoutes(errorRoutesConfig.routes)};`
130
- ].join("\n"),
131
- loader: "ts",
132
- resolveDir: import_path.default.dirname(args.path)
133
- };
134
- });
135
- }
136
- };
137
- }
@@ -1,55 +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/plugins/generate-entry-plugin.ts
25
- __markAsModule(exports);
26
- __export(exports, {
27
- default: () => generateLwrEntry
28
- });
29
- var import_path = __toModule(require("path"));
30
- function generateLwrEntry() {
31
- return {
32
- name: "lwr-entry",
33
- setup(build) {
34
- build.onResolve({filter: /.*\/lwr.entry.js$/}, ({kind, path: path2}) => {
35
- if (kind === "entry-point") {
36
- return {
37
- path: path2,
38
- namespace: "lwr-entry"
39
- };
40
- }
41
- });
42
- build.onLoad({filter: /.*/, namespace: "lwr-entry"}, (args) => ({
43
- contents: [
44
- `/* This module is generated */`,
45
- `import { createHandler } from '@lwrjs/lambda';`,
46
- `import * as build from './lwr.build.js';`,
47
- `const handler = createHandler(build);`,
48
- `export { handler as get };`
49
- ].join("\n"),
50
- loader: "ts",
51
- resolveDir: import_path.default.dirname(args.path)
52
- }));
53
- }
54
- };
55
- }
@@ -1,68 +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_shared_utils = __toModule(require("@lwrjs/shared-utils"));
33
- var import_config = __toModule(require("@lwrjs/config"));
34
- var import_generate_entry_plugin = __toModule(require("./plugins/generate-entry-plugin.cjs"));
35
- var import_build_server_plugin = __toModule(require("./plugins/build-server-plugin.cjs"));
36
- async function build(outputDir, config) {
37
- await import_esbuild.default.build({
38
- entryPoints: ["./lwr.entry.js"],
39
- bundle: true,
40
- sourcemap: true,
41
- format: "cjs",
42
- platform: "node",
43
- logLevel: "silent",
44
- external: [
45
- "node:*",
46
- "fsevents",
47
- "iltorb",
48
- "esbuild*",
49
- "esinstall",
50
- "jsonc-parser",
51
- "node-fetch",
52
- "rollup",
53
- "rollup-plugin-node-polyfills",
54
- "@lwrjs/loader"
55
- ],
56
- banner: {
57
- js: `globalThis.LWR_VERSION='${import_config.LWR_VERSION};'`
58
- },
59
- plugins: [(0, import_generate_entry_plugin.default)(), (0, import_build_server_plugin.default)(config)],
60
- outfile: import_path.default.join(outputDir, "ssr.js")
61
- });
62
- }
63
- async function buildServer(configArg, options) {
64
- const outputDir = import_path.default.join(configArg?.rootDir || process.cwd(), options?.outputDir || "/build");
65
- await import_fs_extra.default.ensureDir(outputDir);
66
- await build(outputDir, configArg);
67
- import_shared_utils.logger.info("Successfully built the server");
68
- }