@lwrjs/static 0.10.0-alpha.13

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.
package/LICENSE ADDED
@@ -0,0 +1,10 @@
1
+ MIT LICENSE
2
+
3
+ Copyright (c) 2020, Salesforce.com, Inc.
4
+ All rights reserved.
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
7
+
8
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
9
+
10
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,96 @@
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/static/src/providers/static-asset-provider.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ default: () => static_asset_provider_default
28
+ });
29
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
+ var import_path = __toModule(require("path"));
31
+ var import_fs_extra = __toModule(require("fs-extra"));
32
+ var StaticAssetProvider = class {
33
+ constructor(_config, context) {
34
+ this.name = "static-asset-provider";
35
+ if (!context.siteMetadata) {
36
+ throw new Error(`[${this.name}] Site metadata was not found`);
37
+ }
38
+ const {assets, rootDir, layoutsDir, contentDir} = context.config;
39
+ this.siteAssets = context.siteMetadata.getSiteAssets();
40
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
41
+ this.basePath = context.runtimeEnvironment.basePath;
42
+ this.assetsOnLambda = !!context.runtimeEnvironment.featureFlags?.ASSETS_ON_LAMBDA;
43
+ const ssgAssets = Array.from(assets, (asset) => {
44
+ if (asset.dir) {
45
+ return {
46
+ ...asset,
47
+ dir: asset.urlPath
48
+ };
49
+ }
50
+ return asset;
51
+ });
52
+ this.resourcePaths = {assets: ssgAssets, rootDir, layoutsDir, contentDir};
53
+ }
54
+ async getAsset(assetIdentifier) {
55
+ const fileAssetPath = this.normalizeSpecifier(assetIdentifier, this.resourcePaths);
56
+ const metadata = this.siteAssets.assets[fileAssetPath];
57
+ if (!metadata) {
58
+ import_shared_utils.logger.warn(`[${this.name}] Did not find requested specifier ${fileAssetPath}`);
59
+ return void 0;
60
+ }
61
+ const siteAssetPath = import_path.default.join(this.siteRootDir, metadata.path);
62
+ const mime = metadata.mimeType || (0, import_shared_utils.mimeLookup)(siteAssetPath);
63
+ const ext = import_path.default.extname(`x.${siteAssetPath}`).toLowerCase().substring(1);
64
+ const type = this.assetsOnLambda ? "asset" : "external";
65
+ const content = this.assetsOnLambda ? function(encoding) {
66
+ return import_fs_extra.default.readFileSync(siteAssetPath, encoding);
67
+ } : () => {
68
+ throw Error(`[${this.name}] Asset is not on lambda ${siteAssetPath}`);
69
+ };
70
+ const uri = this.assetsOnLambda ? fileAssetPath : import_path.default.join(this.siteRootDir, fileAssetPath);
71
+ import_shared_utils.logger.debug(`[${this.name}] uri ${assetIdentifier.specifier} -> ${uri}`);
72
+ return {
73
+ entry: siteAssetPath,
74
+ ext,
75
+ mime,
76
+ ownHash: (0, import_shared_utils.hashContent)(metadata.path),
77
+ content,
78
+ uri,
79
+ type,
80
+ noTransform: true
81
+ };
82
+ }
83
+ normalizeSpecifier(assetId, resourcePaths) {
84
+ const {specifier} = assetId;
85
+ let normalizedSpecifier = specifier;
86
+ if (normalizedSpecifier.includes("?")) {
87
+ import_shared_utils.logger.debug(`[${this.name}] Removed query param from asset specifier: ${specifier}`);
88
+ normalizedSpecifier = normalizedSpecifier.split("?")[0];
89
+ }
90
+ if (normalizedSpecifier[0] === "$") {
91
+ return (0, import_shared_utils.normalizeResourcePath)(normalizedSpecifier, resourcePaths);
92
+ }
93
+ return normalizedSpecifier;
94
+ }
95
+ };
96
+ var static_asset_provider_default = StaticAssetProvider;
@@ -0,0 +1,85 @@
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/static/src/providers/static-bundle-provider.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ default: () => static_bundle_provider_default
28
+ });
29
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
+ var import_path = __toModule(require("path"));
31
+ var import_fs_extra = __toModule(require("fs-extra"));
32
+ var import_static_utils = __toModule(require("../utils/static-utils"));
33
+ var StaticBundleProvider = class {
34
+ constructor(_config, context) {
35
+ this.name = "static-bundle-provider";
36
+ if (!context.siteMetadata) {
37
+ throw new Error(`[${this.name}] Site metadata was not found`);
38
+ }
39
+ this.siteBundles = context.siteMetadata.getSiteBundles();
40
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
41
+ this.bundleConfig = context.config.bundleConfig;
42
+ }
43
+ async bundle(moduleId, runtimeEnvironment) {
44
+ const {specifier, name, namespace, version} = moduleId;
45
+ const metadata = this.siteBundles.bundles[specifier];
46
+ if (!metadata) {
47
+ import_shared_utils.logger.warn(`[${this.name}] did not find requested specifier ${specifier}`);
48
+ return void 0;
49
+ }
50
+ const bundlePath = import_path.default.join(this.siteRootDir, metadata.path);
51
+ const code = (await import_fs_extra.default.readFile(bundlePath)).toString("utf-8");
52
+ const imports = metadata.imports.map((specifier2) => {
53
+ const importModule = (0, import_shared_utils.explodeSpecifier)(specifier2);
54
+ if (!importModule.version) {
55
+ importModule.version = (0, import_static_utils.resolveStaticBundleVersion)(this.siteBundles.bundles[specifier2]?.version);
56
+ }
57
+ return importModule;
58
+ });
59
+ const id = (0, import_shared_utils.getSpecifier)(moduleId);
60
+ const exploded = (0, import_shared_utils.explodeSpecifier)(id);
61
+ const resolvedName = name || exploded.name;
62
+ const resolvedNamespace = namespace || exploded.namespace;
63
+ const resolvedVersion = (0, import_static_utils.resolveStaticBundleVersion)(metadata.version, version);
64
+ return {
65
+ code,
66
+ id: (0, import_shared_utils.getSpecifier)({
67
+ specifier,
68
+ version: resolvedVersion,
69
+ name: resolvedName,
70
+ namespace: resolvedNamespace
71
+ }),
72
+ name: resolvedName,
73
+ namespace: resolvedNamespace,
74
+ version: resolvedVersion,
75
+ specifier,
76
+ config: this.bundleConfig,
77
+ bundleRecord: {
78
+ includedModules: metadata.includedModules || [],
79
+ imports
80
+ },
81
+ src: bundlePath
82
+ };
83
+ }
84
+ };
85
+ var static_bundle_provider_default = StaticBundleProvider;
@@ -0,0 +1,103 @@
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/static/src/providers/static-module-provider.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ default: () => static_module_provider_default
28
+ });
29
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
+ var import_path = __toModule(require("path"));
31
+ var import_static_utils = __toModule(require("../utils/static-utils"));
32
+ var StaticModuleProvider = class {
33
+ constructor(_config, context) {
34
+ this.name = "static-module-provider";
35
+ if (!context.siteMetadata) {
36
+ throw new Error(`[${this.name}] Site metadata was not found`);
37
+ }
38
+ this.externals = Object.keys(context.config.bundleConfig.external || {});
39
+ this.siteBundles = context.siteMetadata.getSiteBundles();
40
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
41
+ this.fingerprintIndex = buildFingerprintsIndex(context);
42
+ }
43
+ async getModule(moduleId) {
44
+ const {specifier} = moduleId;
45
+ const metadata = this.siteBundles.bundles[specifier];
46
+ if (metadata) {
47
+ import_shared_utils.logger.warn(`[${this.name}] We should not be asking for module source we have in our site metadata ${moduleId.specifier}`);
48
+ return void 0;
49
+ }
50
+ return void 0;
51
+ }
52
+ async getModuleEntry(moduleId) {
53
+ const {specifier, version} = moduleId;
54
+ const metadata = this.siteBundles.bundles[specifier];
55
+ if (metadata) {
56
+ import_shared_utils.logger.info(`[${this.name}] Module Entry request for static bundle ${specifier}`);
57
+ const bundlePath = import_path.default.join(this.siteRootDir, metadata.path);
58
+ const resolvedVersion = (0, import_static_utils.resolveStaticBundleVersion)(metadata.version, version);
59
+ return {
60
+ id: (0, import_shared_utils.getSpecifier)({...moduleId, version: resolvedVersion}),
61
+ version: resolvedVersion,
62
+ specifier,
63
+ entry: "entry-not-provided",
64
+ src: bundlePath
65
+ };
66
+ } else if (this.externals.includes(specifier)) {
67
+ const resolvedVersion = (0, import_static_utils.resolveStaticBundleVersion)(void 0, version);
68
+ return {
69
+ id: (0, import_shared_utils.getSpecifier)({...moduleId, version: resolvedVersion}),
70
+ version: resolvedVersion,
71
+ specifier,
72
+ entry: "entry-not-provided"
73
+ };
74
+ } else if (this.fingerprintIndex[specifier]) {
75
+ return this.fingerprintIndex[specifier];
76
+ }
77
+ return void 0;
78
+ }
79
+ };
80
+ var static_module_provider_default = StaticModuleProvider;
81
+ function buildFingerprintsIndex(context) {
82
+ const fingerprintIndex = {};
83
+ if (!context.runtimeEnvironment.featureFlags.LEGACY_LOADER) {
84
+ const bundles = context.siteMetadata?.getSiteBundles().bundles || {};
85
+ for (const bundle of Object.values(bundles)) {
86
+ const bundlePath = import_path.default.join(String(context.siteMetadata?.getSiteRootDir()), bundle.path);
87
+ const includedModules = bundle.includedModules || [];
88
+ for (const includedModule of includedModules) {
89
+ const moduleId = (0, import_shared_utils.explodeSpecifier)(includedModule);
90
+ if (!fingerprintIndex[moduleId.specifier]) {
91
+ fingerprintIndex[moduleId.specifier] = {
92
+ id: (0, import_shared_utils.getSpecifier)(moduleId),
93
+ version: (0, import_static_utils.resolveStaticBundleVersion)(moduleId.version),
94
+ specifier: moduleId.specifier,
95
+ entry: "entry-not-provided",
96
+ src: bundlePath
97
+ };
98
+ }
99
+ }
100
+ }
101
+ }
102
+ return fingerprintIndex;
103
+ }
@@ -0,0 +1,60 @@
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/static/src/providers/static-resource-provider.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ default: () => static_resource_provider_default
28
+ });
29
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
+ var import_path = __toModule(require("path"));
31
+ var import_fs_extra = __toModule(require("fs-extra"));
32
+ var StaticResourceProvider = class {
33
+ constructor(_config, context) {
34
+ this.name = "static-resource-provider";
35
+ if (!context.siteMetadata) {
36
+ throw new Error(`[${this.name}] Site metadata was not found`);
37
+ }
38
+ this.resourceRegistry = context.resourceRegistry;
39
+ this.siteResources = context.siteMetadata.getSiteResources();
40
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
41
+ }
42
+ async getResource(resourceIdentity, runtimeEnvironment) {
43
+ const metadata = this.siteResources.resources[resourceIdentity.specifier];
44
+ if (!metadata) {
45
+ import_shared_utils.logger.warn(`[${this.name}] Did not find requested specifier ${resourceIdentity.specifier}`);
46
+ return void 0;
47
+ }
48
+ const resourcePath = import_path.default.join(this.siteRootDir, metadata.path);
49
+ const type = metadata.mimeType || (0, import_shared_utils.mimeLookup)(resourcePath) || "application/javascript";
50
+ return {
51
+ type,
52
+ stream: () => {
53
+ import_shared_utils.logger.info(`[${this.name}] Resource read from lambda ${resourceIdentity.specifier}`);
54
+ return import_fs_extra.default.createReadStream(resourcePath);
55
+ },
56
+ src: resourcePath
57
+ };
58
+ }
59
+ };
60
+ var static_resource_provider_default = StaticResourceProvider;
@@ -0,0 +1,121 @@
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/static/src/site-metadata.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ SiteMetadataImpl: () => SiteMetadataImpl
28
+ });
29
+ var import_path = __toModule(require("path"));
30
+ var import_fs_extra = __toModule(require("fs-extra"));
31
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
32
+ var SITE_METADATA_PATH = ".metadata";
33
+ var STATIC_BUNDLE_METADATA_PATH = import_path.default.join(SITE_METADATA_PATH, "/bundle-metadata.json");
34
+ var STATIC_RESOURCE_METADATA_PATH = import_path.default.join(SITE_METADATA_PATH, "/resource-metadata.json");
35
+ var STATIC_ASSET_METADATA_PATH = import_path.default.join(SITE_METADATA_PATH, "/asset-metadata.json");
36
+ var SiteMetadataImpl = class {
37
+ constructor(options) {
38
+ this.options = options;
39
+ this.siteBundles = this.readStaticBundleMetadata(options.rootDir);
40
+ this.siteResources = this.readStaticResourceMetadata(options.rootDir);
41
+ this.siteAssets = this.readStaticAssetsMetadata(options.rootDir);
42
+ }
43
+ getSiteRootDir() {
44
+ return this.options.rootDir;
45
+ }
46
+ getSiteBundles() {
47
+ return this.siteBundles;
48
+ }
49
+ getSiteResources() {
50
+ return this.siteResources;
51
+ }
52
+ getSiteAssets() {
53
+ return this.siteAssets;
54
+ }
55
+ async persistSiteMetadata() {
56
+ const siteMetadataPath = import_path.default.join(this.options.rootDir, SITE_METADATA_PATH);
57
+ try {
58
+ if (!await import_fs_extra.default.pathExists(siteMetadataPath)) {
59
+ await import_fs_extra.default.mkdir(siteMetadataPath, {recursive: true});
60
+ }
61
+ const bundleMetadataPath = import_path.default.join(this.options.rootDir, STATIC_BUNDLE_METADATA_PATH);
62
+ await import_fs_extra.default.writeJSON(bundleMetadataPath, this.siteBundles, {spaces: 2});
63
+ const resourceMetadataPath = import_path.default.join(this.options.rootDir, STATIC_RESOURCE_METADATA_PATH);
64
+ await import_fs_extra.default.writeJSON(resourceMetadataPath, this.siteResources, {spaces: 2});
65
+ const assetMetadataPath = import_path.default.join(this.options.rootDir, STATIC_ASSET_METADATA_PATH);
66
+ return import_fs_extra.default.writeJSON(assetMetadataPath, this.siteAssets, {spaces: 2});
67
+ } catch (err) {
68
+ console.error(`[SiteMetadata] Failed to save site metadata ${siteMetadataPath}`);
69
+ console.error(err);
70
+ }
71
+ }
72
+ readStaticBundleMetadata(staticRoot) {
73
+ let bundleMetadataPath;
74
+ let siteBundles = {bundles: {}};
75
+ try {
76
+ bundleMetadataPath = import_path.default.join(staticRoot, STATIC_BUNDLE_METADATA_PATH);
77
+ const savedMetadata = import_fs_extra.default.readJSONSync(bundleMetadataPath);
78
+ siteBundles = savedMetadata;
79
+ } catch (error) {
80
+ if (error.code === "ENOENT") {
81
+ import_shared_utils.logger.debug(`[SiteMetadata] Failed to load Static Bundle Metadata: ${bundleMetadataPath}`);
82
+ } else {
83
+ throw error;
84
+ }
85
+ }
86
+ return siteBundles;
87
+ }
88
+ readStaticResourceMetadata(staticRoot) {
89
+ let resourceMetadataPath;
90
+ let siteResources = {resources: {}};
91
+ try {
92
+ resourceMetadataPath = import_path.default.join(staticRoot, STATIC_RESOURCE_METADATA_PATH);
93
+ const savedMetadata = import_fs_extra.default.readJSONSync(resourceMetadataPath);
94
+ siteResources = savedMetadata;
95
+ } catch (error) {
96
+ if (error.code === "ENOENT") {
97
+ import_shared_utils.logger.debug(`[SiteMetadata] Failed to load Static Resource Metadata: ${resourceMetadataPath}`);
98
+ } else {
99
+ throw error;
100
+ }
101
+ }
102
+ return siteResources;
103
+ }
104
+ readStaticAssetsMetadata(staticRoot) {
105
+ let assetMetadataPath;
106
+ let siteAssets = {
107
+ assets: {}
108
+ };
109
+ try {
110
+ assetMetadataPath = import_path.default.join(staticRoot, STATIC_ASSET_METADATA_PATH);
111
+ siteAssets = import_fs_extra.default.readJSONSync(assetMetadataPath);
112
+ } catch (error) {
113
+ if (error.code === "ENOENT") {
114
+ import_shared_utils.logger.debug(`[SiteMetadata] Failed to load Static Resource Metadata: ${assetMetadataPath}`);
115
+ } else {
116
+ throw error;
117
+ }
118
+ }
119
+ return siteAssets;
120
+ }
121
+ };
@@ -0,0 +1,32 @@
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/static/src/utils/static-utils.ts
25
+ __markAsModule(exports);
26
+ __export(exports, {
27
+ resolveStaticBundleVersion: () => resolveStaticBundleVersion
28
+ });
29
+ var import_shared_utils = __toModule(require("@lwrjs/shared-utils"));
30
+ function resolveStaticBundleVersion(metadataVersion, requestedVersion) {
31
+ return metadataVersion || requestedVersion || import_shared_utils.VERSION_NOT_PROVIDED;
32
+ }
@@ -0,0 +1,16 @@
1
+ import type { AssetIdentifier, AssetProvider, AssetSource, ProviderContext, ResourcePaths } from '@lwrjs/types';
2
+ export default class StaticAssetProvider implements AssetProvider {
3
+ name: string;
4
+ siteAssets: import("@lwrjs/types").SiteAssets;
5
+ resourcePaths: ResourcePaths;
6
+ siteRootDir: string;
7
+ basePath: string;
8
+ assetsOnLambda: boolean;
9
+ constructor(_config: {}, context: ProviderContext);
10
+ getAsset(assetIdentifier: AssetIdentifier): Promise<AssetSource | undefined>;
11
+ /**
12
+ * Replaces and aliased resource paths (i.e. $assetDir with a qualified specifier)
13
+ */
14
+ private normalizeSpecifier;
15
+ }
16
+ //# sourceMappingURL=static-asset-provider.d.ts.map
@@ -0,0 +1,83 @@
1
+ import { hashContent, logger, mimeLookup, normalizeResourcePath } from '@lwrjs/shared-utils';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ export default class StaticAssetProvider {
5
+ constructor(_config, context) {
6
+ this.name = 'static-asset-provider';
7
+ if (!context.siteMetadata) {
8
+ throw new Error(`[${this.name}] Site metadata was not found`);
9
+ }
10
+ const { assets, rootDir, layoutsDir, contentDir } = context.config;
11
+ this.siteAssets = context.siteMetadata.getSiteAssets();
12
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
13
+ this.basePath = context.runtimeEnvironment.basePath;
14
+ this.assetsOnLambda = !!context.runtimeEnvironment.featureFlags?.ASSETS_ON_LAMBDA;
15
+ // Adjust the assets directories to be rooted in ssg folder.
16
+ const ssgAssets = Array.from(assets, (asset) => {
17
+ if (asset.dir) {
18
+ // Return the URI as the dir where it will be relative to the ssg root
19
+ return {
20
+ ...asset,
21
+ dir: asset.urlPath,
22
+ };
23
+ }
24
+ return asset;
25
+ });
26
+ this.resourcePaths = { assets: ssgAssets, rootDir, layoutsDir, contentDir };
27
+ }
28
+ async getAsset(assetIdentifier) {
29
+ // Set all the asset path to resolve to the ssg root
30
+ const fileAssetPath = this.normalizeSpecifier(assetIdentifier, this.resourcePaths);
31
+ const metadata = this.siteAssets.assets[fileAssetPath];
32
+ if (!metadata) {
33
+ logger.warn(`[${this.name}] Did not find requested specifier ${fileAssetPath}`);
34
+ return undefined;
35
+ }
36
+ // FS path including ssg root
37
+ const siteAssetPath = path.join(this.siteRootDir, metadata.path);
38
+ // Figure out mime type
39
+ const mime = metadata.mimeType || mimeLookup(siteAssetPath);
40
+ // Normalize extension
41
+ const ext = path.extname(`x.${siteAssetPath}`).toLowerCase().substring(1);
42
+ // Unless assets on lambda feature flag is set indicate the asset source is external
43
+ const type = this.assetsOnLambda ? 'asset' : 'external';
44
+ const content = this.assetsOnLambda
45
+ ? function (encoding) {
46
+ return fs.readFileSync(siteAssetPath, encoding);
47
+ }
48
+ : () => {
49
+ throw Error(`[${this.name}] Asset is not on lambda ${siteAssetPath}`);
50
+ };
51
+ const uri = this.assetsOnLambda ? fileAssetPath : path.join(this.siteRootDir, fileAssetPath);
52
+ logger.debug(`[${this.name}] uri ${assetIdentifier.specifier} -> ${uri}`);
53
+ return {
54
+ entry: siteAssetPath,
55
+ ext,
56
+ mime,
57
+ ownHash: hashContent(metadata.path),
58
+ content,
59
+ uri,
60
+ // Type: external triggers a 302 when requested form the asset middleware.
61
+ type,
62
+ noTransform: true,
63
+ };
64
+ }
65
+ /**
66
+ * Replaces and aliased resource paths (i.e. $assetDir with a qualified specifier)
67
+ */
68
+ normalizeSpecifier(assetId, resourcePaths) {
69
+ const { specifier } = assetId;
70
+ // Remove query params from specifiers (i.e. /assets/styles/styles.css?e368d71b59)
71
+ let normalizedSpecifier = specifier;
72
+ if (normalizedSpecifier.includes('?')) {
73
+ logger.debug(`[${this.name}] Removed query param from asset specifier: ${specifier}`);
74
+ normalizedSpecifier = normalizedSpecifier.split('?')[0];
75
+ }
76
+ if (normalizedSpecifier[0] === '$') {
77
+ // This is a fs path containing an asset alias
78
+ return normalizeResourcePath(normalizedSpecifier, resourcePaths);
79
+ }
80
+ return normalizedSpecifier;
81
+ }
82
+ }
83
+ //# sourceMappingURL=static-asset-provider.js.map
@@ -0,0 +1,10 @@
1
+ import type { AbstractModuleId, BundleDefinition, BundleProvider, ProviderContext, RuntimeEnvironment } from '@lwrjs/types';
2
+ export default class StaticBundleProvider implements BundleProvider {
3
+ name: string;
4
+ siteBundles: import("@lwrjs/types").SiteBundles;
5
+ siteRootDir: string;
6
+ bundleConfig: import("@lwrjs/types").BundleConfig;
7
+ constructor(_config: {}, context: ProviderContext);
8
+ bundle<BundleIdentifier extends AbstractModuleId, RE extends RuntimeEnvironment>(moduleId: BundleIdentifier, runtimeEnvironment: RE): Promise<BundleDefinition | undefined>;
9
+ }
10
+ //# sourceMappingURL=static-bundle-provider.d.ts.map
@@ -0,0 +1,61 @@
1
+ import { explodeSpecifier, getSpecifier, logger } from '@lwrjs/shared-utils';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ import { resolveStaticBundleVersion } from '../utils/static-utils';
5
+ export default class StaticBundleProvider {
6
+ constructor(_config, context) {
7
+ this.name = 'static-bundle-provider';
8
+ if (!context.siteMetadata) {
9
+ throw new Error(`[${this.name}] Site metadata was not found`);
10
+ }
11
+ this.siteBundles = context.siteMetadata.getSiteBundles();
12
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
13
+ this.bundleConfig = context.config.bundleConfig;
14
+ }
15
+ async bundle(moduleId, runtimeEnvironment) {
16
+ const { specifier, name, namespace, version } = moduleId;
17
+ const metadata = this.siteBundles.bundles[specifier];
18
+ if (!metadata) {
19
+ logger.warn(`[${this.name}] did not find requested specifier ${specifier}`);
20
+ return undefined;
21
+ }
22
+ // Have to make the bundle code available for SSR
23
+ const bundlePath = path.join(this.siteRootDir, metadata.path);
24
+ const code = (await fs.readFile(bundlePath)).toString('utf-8');
25
+ const imports = metadata.imports.map((specifier) => {
26
+ const importModule = explodeSpecifier(specifier);
27
+ if (!importModule.version) {
28
+ // Get version from metadata for un-versioned imports
29
+ importModule.version = resolveStaticBundleVersion(this.siteBundles.bundles[specifier]?.version);
30
+ }
31
+ return importModule;
32
+ });
33
+ const id = getSpecifier(moduleId);
34
+ const exploded = explodeSpecifier(id);
35
+ // Seem unlikely name was not in the moduleId but just incase set it form the exploded id
36
+ const resolvedName = name || exploded.name;
37
+ const resolvedNamespace = namespace || exploded.namespace;
38
+ const resolvedVersion = resolveStaticBundleVersion(metadata.version, version);
39
+ return {
40
+ code,
41
+ id: getSpecifier({
42
+ specifier: specifier,
43
+ version: resolvedVersion,
44
+ name: resolvedName,
45
+ namespace: resolvedNamespace,
46
+ }),
47
+ name: resolvedName,
48
+ namespace: resolvedNamespace,
49
+ version: resolvedVersion,
50
+ specifier: specifier,
51
+ config: this.bundleConfig,
52
+ bundleRecord: {
53
+ // TODO we need to solve include modules for fingerprints support
54
+ includedModules: metadata.includedModules || [],
55
+ imports,
56
+ },
57
+ src: bundlePath,
58
+ };
59
+ }
60
+ }
61
+ //# sourceMappingURL=static-bundle-provider.js.map
@@ -0,0 +1,12 @@
1
+ import type { AbstractModuleId, ModuleCompiled, ModuleEntry, ModuleProvider, ProviderContext } from '@lwrjs/types';
2
+ export default class StaticModuleProvider implements ModuleProvider {
3
+ name: string;
4
+ siteBundles: import("@lwrjs/types").SiteBundles;
5
+ siteRootDir: string;
6
+ externals: string[];
7
+ fingerprintIndex: Record<string, ModuleEntry>;
8
+ constructor(_config: {}, context: ProviderContext);
9
+ getModule<T extends AbstractModuleId>(moduleId: T): Promise<ModuleCompiled | undefined>;
10
+ getModuleEntry<T extends AbstractModuleId>(moduleId: T): Promise<ModuleEntry | undefined>;
11
+ }
12
+ //# sourceMappingURL=static-module-provider.d.ts.map
@@ -0,0 +1,88 @@
1
+ import { explodeSpecifier, getSpecifier, logger } from '@lwrjs/shared-utils';
2
+ import path from 'path';
3
+ import { resolveStaticBundleVersion } from '../utils/static-utils';
4
+ export default class StaticModuleProvider {
5
+ constructor(_config, context) {
6
+ this.name = 'static-module-provider';
7
+ if (!context.siteMetadata) {
8
+ throw new Error(`[${this.name}] Site metadata was not found`);
9
+ }
10
+ this.externals = Object.keys(context.config.bundleConfig.external || {});
11
+ this.siteBundles = context.siteMetadata.getSiteBundles();
12
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
13
+ // If we are using fingerprints collect all the specifiers in the bundles and add them to an index for creating the mapping identities
14
+ this.fingerprintIndex = buildFingerprintsIndex(context);
15
+ }
16
+ async getModule(moduleId) {
17
+ const { specifier } = moduleId;
18
+ const metadata = this.siteBundles.bundles[specifier];
19
+ if (metadata) {
20
+ logger.warn(`[${this.name}] We should not be asking for module source we have in our site metadata ${moduleId.specifier}`);
21
+ // proceed to next provider
22
+ return undefined;
23
+ }
24
+ // proceed to next provider
25
+ return undefined;
26
+ }
27
+ async getModuleEntry(moduleId) {
28
+ // TODO shouldn't we be passing the runtime environment here to test?
29
+ const { specifier, version } = moduleId;
30
+ const metadata = this.siteBundles.bundles[specifier];
31
+ if (metadata) {
32
+ logger.info(`[${this.name}] Module Entry request for static bundle ${specifier}`);
33
+ // Have to make the bundle code available for SSR
34
+ const bundlePath = path.join(this.siteRootDir, metadata.path);
35
+ const resolvedVersion = resolveStaticBundleVersion(metadata.version, version);
36
+ return {
37
+ id: getSpecifier({ ...moduleId, version: resolvedVersion }),
38
+ version: resolvedVersion,
39
+ specifier: specifier,
40
+ entry: 'entry-not-provided',
41
+ src: bundlePath,
42
+ };
43
+ }
44
+ else if (this.externals.includes(specifier)) {
45
+ // Externals are not SSG'ed so hard coding definition
46
+ const resolvedVersion = resolveStaticBundleVersion(undefined, version);
47
+ return {
48
+ id: getSpecifier({ ...moduleId, version: resolvedVersion }),
49
+ version: resolvedVersion,
50
+ specifier: specifier,
51
+ entry: 'entry-not-provided',
52
+ };
53
+ }
54
+ else if (this.fingerprintIndex[specifier]) {
55
+ return this.fingerprintIndex[specifier];
56
+ }
57
+ // proceed to next provider
58
+ return undefined;
59
+ }
60
+ }
61
+ /**
62
+ * Map each of the includedModules for a bundle to the bundle src
63
+ * This enables lookup of modules which are not top-level in the bundle metadata
64
+ */
65
+ function buildFingerprintsIndex(context) {
66
+ const fingerprintIndex = {};
67
+ if (!context.runtimeEnvironment.featureFlags.LEGACY_LOADER) {
68
+ const bundles = context.siteMetadata?.getSiteBundles().bundles || {};
69
+ for (const bundle of Object.values(bundles)) {
70
+ const bundlePath = path.join(String(context.siteMetadata?.getSiteRootDir()), bundle.path);
71
+ const includedModules = bundle.includedModules || [];
72
+ for (const includedModule of includedModules) {
73
+ const moduleId = explodeSpecifier(includedModule);
74
+ if (!fingerprintIndex[moduleId.specifier]) {
75
+ fingerprintIndex[moduleId.specifier] = {
76
+ id: getSpecifier(moduleId),
77
+ version: resolveStaticBundleVersion(moduleId.version),
78
+ specifier: moduleId.specifier,
79
+ entry: 'entry-not-provided',
80
+ src: bundlePath,
81
+ };
82
+ }
83
+ }
84
+ }
85
+ }
86
+ return fingerprintIndex;
87
+ }
88
+ //# sourceMappingURL=static-module-provider.js.map
@@ -0,0 +1,10 @@
1
+ import type { BootstrapRuntimeEnvironment, ProviderContext, ResourceDefinition, ResourceIdentifier, ResourceProvider } from '@lwrjs/types';
2
+ export default class StaticResourceProvider implements ResourceProvider {
3
+ name: string;
4
+ siteResources: import("@lwrjs/types").SiteResources;
5
+ siteRootDir: string;
6
+ resourceRegistry: import("@lwrjs/types").PublicResourceRegistry;
7
+ constructor(_config: {}, context: ProviderContext);
8
+ getResource<Identifier extends ResourceIdentifier, RuntimeEnvironment extends BootstrapRuntimeEnvironment>(resourceIdentity: Identifier, runtimeEnvironment: RuntimeEnvironment): Promise<ResourceDefinition | undefined>;
9
+ }
10
+ //# sourceMappingURL=static-resource-provider.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { logger, mimeLookup } from '@lwrjs/shared-utils';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ export default class StaticResourceProvider {
5
+ constructor(_config, context) {
6
+ this.name = 'static-resource-provider';
7
+ if (!context.siteMetadata) {
8
+ throw new Error(`[${this.name}] Site metadata was not found`);
9
+ }
10
+ this.resourceRegistry = context.resourceRegistry;
11
+ this.siteResources = context.siteMetadata.getSiteResources();
12
+ this.siteRootDir = context.siteMetadata.getSiteRootDir();
13
+ }
14
+ async getResource(resourceIdentity, runtimeEnvironment) {
15
+ const metadata = this.siteResources.resources[resourceIdentity.specifier];
16
+ if (!metadata) {
17
+ logger.warn(`[${this.name}] Did not find requested specifier ${resourceIdentity.specifier}`);
18
+ return undefined;
19
+ }
20
+ const resourcePath = path.join(this.siteRootDir, metadata.path);
21
+ // Figure out mime type
22
+ const type = metadata.mimeType || mimeLookup(resourcePath) || 'application/javascript';
23
+ return {
24
+ type,
25
+ // Have to make the loader shim code available for SSR
26
+ stream: () => {
27
+ logger.info(`[${this.name}] Resource read from lambda ${resourceIdentity.specifier}`);
28
+ return fs.createReadStream(resourcePath);
29
+ },
30
+ src: resourcePath,
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=static-resource-provider.js.map
@@ -0,0 +1,27 @@
1
+ import type { SiteAssets, SiteBundles, SiteMetadata, SiteResources } from '@lwrjs/types';
2
+ declare type Options = {
3
+ rootDir: string;
4
+ };
5
+ export declare class SiteMetadataImpl implements SiteMetadata {
6
+ private options;
7
+ private siteBundles;
8
+ private siteResources;
9
+ private siteAssets;
10
+ constructor(options: Options);
11
+ getSiteRootDir(): string;
12
+ getSiteBundles(): SiteBundles;
13
+ getSiteResources(): SiteResources;
14
+ getSiteAssets(): SiteAssets;
15
+ persistSiteMetadata(): Promise<void>;
16
+ private readStaticBundleMetadata;
17
+ /**
18
+ * Read the metadata about the pre-built resources of the current site.
19
+ */
20
+ private readStaticResourceMetadata;
21
+ /**
22
+ * Read the metadata about the pre-built assets of the current site.
23
+ */
24
+ private readStaticAssetsMetadata;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=site-metadata.d.ts.map
@@ -0,0 +1,111 @@
1
+ import path from 'path';
2
+ import fs from 'fs-extra';
3
+ import { logger } from '@lwrjs/shared-utils';
4
+ const SITE_METADATA_PATH = '.metadata';
5
+ const STATIC_BUNDLE_METADATA_PATH = path.join(SITE_METADATA_PATH, '/bundle-metadata.json');
6
+ const STATIC_RESOURCE_METADATA_PATH = path.join(SITE_METADATA_PATH, '/resource-metadata.json');
7
+ const STATIC_ASSET_METADATA_PATH = path.join(SITE_METADATA_PATH, '/asset-metadata.json');
8
+ export class SiteMetadataImpl {
9
+ constructor(options) {
10
+ this.options = options;
11
+ this.siteBundles = this.readStaticBundleMetadata(options.rootDir);
12
+ this.siteResources = this.readStaticResourceMetadata(options.rootDir);
13
+ this.siteAssets = this.readStaticAssetsMetadata(options.rootDir);
14
+ }
15
+ getSiteRootDir() {
16
+ return this.options.rootDir;
17
+ }
18
+ getSiteBundles() {
19
+ return this.siteBundles;
20
+ }
21
+ getSiteResources() {
22
+ return this.siteResources;
23
+ }
24
+ getSiteAssets() {
25
+ return this.siteAssets;
26
+ }
27
+ async persistSiteMetadata() {
28
+ // Create the metadata directory if if does not exist
29
+ const siteMetadataPath = path.join(this.options.rootDir, SITE_METADATA_PATH);
30
+ try {
31
+ if (!(await fs.pathExists(siteMetadataPath))) {
32
+ await fs.mkdir(siteMetadataPath, { recursive: true });
33
+ }
34
+ // Save Bundle Metadata
35
+ const bundleMetadataPath = path.join(this.options.rootDir, STATIC_BUNDLE_METADATA_PATH);
36
+ await fs.writeJSON(bundleMetadataPath, this.siteBundles, { spaces: 2 });
37
+ // Save Resource Metadata
38
+ const resourceMetadataPath = path.join(this.options.rootDir, STATIC_RESOURCE_METADATA_PATH);
39
+ await fs.writeJSON(resourceMetadataPath, this.siteResources, { spaces: 2 });
40
+ // Save Resource Metadata
41
+ const assetMetadataPath = path.join(this.options.rootDir, STATIC_ASSET_METADATA_PATH);
42
+ return fs.writeJSON(assetMetadataPath, this.siteAssets, { spaces: 2 });
43
+ }
44
+ catch (err) {
45
+ console.error(`[SiteMetadata] Failed to save site metadata ${siteMetadataPath}`);
46
+ console.error(err);
47
+ }
48
+ }
49
+ readStaticBundleMetadata(staticRoot) {
50
+ let bundleMetadataPath;
51
+ let siteBundles = { bundles: {} };
52
+ try {
53
+ bundleMetadataPath = path.join(staticRoot, STATIC_BUNDLE_METADATA_PATH);
54
+ const savedMetadata = fs.readJSONSync(bundleMetadataPath);
55
+ siteBundles = savedMetadata;
56
+ }
57
+ catch (error) {
58
+ if (error.code === 'ENOENT') {
59
+ logger.debug(`[SiteMetadata] Failed to load Static Bundle Metadata: ${bundleMetadataPath}`);
60
+ }
61
+ else {
62
+ throw error;
63
+ }
64
+ }
65
+ return siteBundles;
66
+ }
67
+ /**
68
+ * Read the metadata about the pre-built resources of the current site.
69
+ */
70
+ readStaticResourceMetadata(staticRoot) {
71
+ let resourceMetadataPath;
72
+ let siteResources = { resources: {} };
73
+ try {
74
+ resourceMetadataPath = path.join(staticRoot, STATIC_RESOURCE_METADATA_PATH);
75
+ const savedMetadata = fs.readJSONSync(resourceMetadataPath);
76
+ siteResources = savedMetadata;
77
+ }
78
+ catch (error) {
79
+ if (error.code === 'ENOENT') {
80
+ logger.debug(`[SiteMetadata] Failed to load Static Resource Metadata: ${resourceMetadataPath}`);
81
+ }
82
+ else {
83
+ throw error;
84
+ }
85
+ }
86
+ return siteResources;
87
+ }
88
+ /**
89
+ * Read the metadata about the pre-built assets of the current site.
90
+ */
91
+ readStaticAssetsMetadata(staticRoot) {
92
+ let assetMetadataPath;
93
+ let siteAssets = {
94
+ assets: {},
95
+ };
96
+ try {
97
+ assetMetadataPath = path.join(staticRoot, STATIC_ASSET_METADATA_PATH);
98
+ siteAssets = fs.readJSONSync(assetMetadataPath);
99
+ }
100
+ catch (error) {
101
+ if (error.code === 'ENOENT') {
102
+ logger.debug(`[SiteMetadata] Failed to load Static Resource Metadata: ${assetMetadataPath}`);
103
+ }
104
+ else {
105
+ throw error;
106
+ }
107
+ }
108
+ return siteAssets;
109
+ }
110
+ }
111
+ //# sourceMappingURL=site-metadata.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Return the version for a static module bundle.
3
+ *
4
+ * Version defined in the metadata > Requested Version > 'version-not-provided'
5
+ */
6
+ export declare function resolveStaticBundleVersion(metadataVersion?: string, requestedVersion?: string): string;
7
+ //# sourceMappingURL=static-utils.d.ts.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Try to add any code that is mrt specific here so that we can isolate details that would have to be refactored to run lambdas
3
+ * on a different platform
4
+ */
5
+ import { VERSION_NOT_PROVIDED } from '@lwrjs/shared-utils';
6
+ /**
7
+ * Return the version for a static module bundle.
8
+ *
9
+ * Version defined in the metadata > Requested Version > 'version-not-provided'
10
+ */
11
+ export function resolveStaticBundleVersion(metadataVersion, requestedVersion) {
12
+ return metadataVersion || requestedVersion || VERSION_NOT_PROVIDED;
13
+ }
14
+ //# sourceMappingURL=static-utils.js.map
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@lwrjs/static",
3
+ "license": "MIT",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "version": "0.10.0-alpha.13",
8
+ "homepage": "https://developer.salesforce.com/docs/platform/lwr/overview",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/salesforce-experience-platform-emu/lwr.git",
12
+ "directory": "packages/@lwrjs/static"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/salesforce-experience-platform-emu/lwr/issues"
16
+ },
17
+ "type": "module",
18
+ "exports": {
19
+ "./site-metadata": {
20
+ "import": "./build/es/site-metadata.js",
21
+ "require": "./build/cjs/site-metadata.cjs"
22
+ },
23
+ "./asset-provider": {
24
+ "import": "./build/es/providers/static-asset-provider.js",
25
+ "require": "./build/cjs/providers/static-asset-provider.cjs"
26
+ },
27
+ "./bundle-provider": {
28
+ "import": "./build/es/providers/static-bundle-provider.js",
29
+ "require": "./build/cjs/providers/static-bundle-provider.cjs"
30
+ },
31
+ "./module-provider": {
32
+ "import": "./build/es/providers/static-module-provider.js",
33
+ "require": "./build/cjs/providers/static-module-provider.cjs"
34
+ },
35
+ "./resource-provider": {
36
+ "import": "./build/es/providers/static-resource-provider.js",
37
+ "require": "./build/cjs/providers/static-resource-provider.cjs"
38
+ }
39
+ },
40
+ "scripts": {
41
+ "build": "tsc -b",
42
+ "clean": "rm -rf build node_modules",
43
+ "test": "jest"
44
+ },
45
+ "files": [
46
+ "build/**/*.js",
47
+ "build/**/*.cjs",
48
+ "build/**/*.d.ts"
49
+ ],
50
+ "dependencies": {
51
+ "@lwrjs/shared-utils": "0.10.0-alpha.13"
52
+ },
53
+ "devDependencies": {
54
+ "@lwrjs/types": "0.10.0-alpha.13",
55
+ "@types/express": "^4.17.17",
56
+ "jest-express": "^1.12.0",
57
+ "mock-res": "^0.6.0"
58
+ },
59
+ "engines": {
60
+ "node": ">=16.0.0 <20"
61
+ },
62
+ "volta": {
63
+ "extends": "../../../package.json"
64
+ },
65
+ "gitHead": "f6d142d5a027554cb1685389e0b173734149683d"
66
+ }