lwr 0.7.0-alpha.9 → 0.7.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.
@@ -38,7 +38,7 @@ cli.command("serve", "Starts an LWR server (defaults to dev mode)").alias("dev")
38
38
  try {
39
39
  const server = await createServer({port, serverMode: mode});
40
40
  await server.listen(async ({serverMode, port: port2}) => {
41
- console.log(import_chalk.default.green(` server running at: port: ${port2} | mode: ${serverMode}`));
41
+ console.log(import_chalk.default.green(`Running LWR v${version} at: http://localhost:${port2} | mode: ${serverMode}`));
42
42
  if (open) {
43
43
  await (0, import_utils.launch)(port2);
44
44
  }
@@ -53,15 +53,12 @@ cli.command("serve", "Starts an LWR server (defaults to dev mode)").alias("dev")
53
53
  }
54
54
  });
55
55
  cli.command("build", "Builds a static LWR site").alias("static-build").option("--outputDir <directory>", `[string] output directory`).action(async (options) => {
56
- const {output = "__generated_site__"} = options;
56
+ const {outputDir, mode = process.env.MODE || "prod"} = options;
57
57
  const {generateStaticSite} = await Promise.resolve().then(() => __toModule(require("@lwrjs/core")));
58
58
  try {
59
59
  await generateStaticSite({
60
- staticSiteGenerator: {
61
- outputDir: output,
62
- locales: ["en-US"],
63
- _additionalRoutePaths: []
64
- }
60
+ serverMode: mode,
61
+ staticSiteGenerator: {outputDir}
65
62
  });
66
63
  } catch (error) {
67
64
  if (error instanceof import_diagnostics.DiagnosticsError) {
@@ -72,11 +69,12 @@ cli.command("build", "Builds a static LWR site").alias("static-build").option("-
72
69
  }
73
70
  }
74
71
  });
75
- cli.command("bundle-lambda", "Bundles the lambda source").option("--entryPoint <entry>", "[string] bundling entry point").action(async (options) => {
72
+ cli.command("bundle-lambda", "Bundles the lambda source").option("--entryPoint <entry>", "[string] bundling entry point").option("--format <format>", "[string] bundle output format").action(async (options) => {
76
73
  const entryPoint = options.entryPoint || "./src/index.ts";
74
+ const format = options.format || "esm";
77
75
  try {
78
76
  const {bundleLambda} = await Promise.resolve().then(() => __toModule(require("./commands/bundle-lambda.cjs")));
79
- await bundleLambda(entryPoint);
77
+ await bundleLambda({entryPoint, format});
80
78
  } catch (error) {
81
79
  if (error instanceof import_diagnostics.DiagnosticsError) {
82
80
  console.log(error.diagnostics);
@@ -33,7 +33,7 @@ var import_vm2 = __toModule(require("vm2"));
33
33
  var import_core = __toModule(require("@lwrjs/core"));
34
34
  var import_esm_require_shim = __toModule(require("./shims/esm-require-shim.cjs"));
35
35
  var import_lwr_lambda_shim = __toModule(require("./shims/lwr-lambda-shim.cjs"));
36
- async function bundleLambda(entryPoint) {
36
+ async function bundleLambda({entryPoint, format}) {
37
37
  const arg = await getConfigArg(entryPoint);
38
38
  const server = (0, import_core.createServer)(arg);
39
39
  const config = server.getConfig();
@@ -42,21 +42,22 @@ async function bundleLambda(entryPoint) {
42
42
  const lambdaShimPath = import_path.default.join(buildDir, "lwr-lambda-shim.js");
43
43
  import_fs.default.mkdirSync(buildDir, {recursive: true});
44
44
  import_fs.default.writeFileSync(lambdaShimPath, lambdaShim);
45
- const handlerPath = entryPoint;
46
- (0, import_esbuild.build)({
45
+ const options = {
47
46
  bundle: true,
48
- format: "esm",
47
+ format,
49
48
  treeShaking: true,
50
- splitting: true,
51
- entryPoints: [handlerPath],
49
+ entryPoints: [entryPoint],
52
50
  outdir: "./build",
53
51
  platform: "node",
54
- banner: {
55
- js: import_esm_require_shim.default
56
- },
57
- external: ["fsevents", "esbuild", "rollup", "esinstall"],
52
+ external: ["fsevents", "esbuild", "iltorb", "rollup", "esinstall", "rollup-plugin-node-polyfills"],
58
53
  inject: [lambdaShimPath]
59
- });
54
+ };
55
+ if (format === "esm") {
56
+ options.banner = {
57
+ js: import_esm_require_shim.default
58
+ };
59
+ }
60
+ (0, import_esbuild.build)(options);
60
61
  }
61
62
  async function getConfigArg(entryPoint) {
62
63
  const result = await (0, import_esbuild.build)({
@@ -64,8 +65,9 @@ async function getConfigArg(entryPoint) {
64
65
  bundle: true,
65
66
  write: false,
66
67
  format: "cjs",
68
+ platform: "node",
67
69
  external: [
68
- "@lwrjs/lambda"
70
+ "@lwrjs/lambda/aws"
69
71
  ]
70
72
  });
71
73
  const lambda = result.outputFiles[0].text;
@@ -77,7 +79,7 @@ async function getConfigArg(entryPoint) {
77
79
  builtin: ["*"],
78
80
  root: [import_path.default.dirname(entryPoint)],
79
81
  mock: {
80
- "@lwrjs/lambda": {
82
+ "@lwrjs/lambda/aws": {
81
83
  createHandler: (arg) => {
82
84
  return arg;
83
85
  }
@@ -98,10 +100,17 @@ function generateLambdaShim(config) {
98
100
  const services = [];
99
101
  const serviceConfigs = [];
100
102
  for (const [index, [servicePath, serviceConfig = {}]] of config.moduleProviders.entries()) {
101
- serviceCtors.push(`import ServiceCtor${index} from '${servicePath}';
102
- `);
103
+ serviceCtors.push(`import ServiceCtor${index} from '${servicePath}';`);
103
104
  services.push(`ServiceCtor${index}`);
104
105
  serviceConfigs.push(JSON.stringify(serviceConfig));
105
106
  }
106
- return import_lwr_lambda_shim.default.replace("{ serviceCtors }", serviceCtors.join("\n")).replace("{ services }", services.join()).replace("{ serviceConfigs }", serviceConfigs.join());
107
+ const hookCtors = [];
108
+ const hooks = [];
109
+ const hookConfigs = [];
110
+ for (const [index, [hookPath, hookConfig = {}]] of config.moduleProviders.entries()) {
111
+ hookCtors.push(`import HookCtor${index} from '${hookPath}';`);
112
+ hooks.push(`HookCtor${index}`);
113
+ hookConfigs.push(JSON.stringify(hookConfig));
114
+ }
115
+ return import_lwr_lambda_shim.default.replace("{ serviceCtors }", serviceCtors.join("\n")).replace("{ services }", services.join()).replace("{ serviceConfigs }", serviceConfigs.join()).replace("{ hookCtors }", hookCtors.join("\n")).replace("{ hooks }", hooks.join()).replace("{ hookConfigs }", hookConfigs.join());
107
116
  }
@@ -12,11 +12,19 @@ __export(exports, {
12
12
  });
13
13
  var lwr_lambda_shim_default = `
14
14
  { serviceCtors }
15
+ { hookCtors }
15
16
  export const LWR = {
16
- getModuleProviders: function (context) {
17
+ getModuleProviders: (context) => {
18
+ const serviceConfigs = [{ serviceConfigs }];
17
19
  return [{ services }].map((ServiceCtor, index) => {
18
- return new ServiceCtor(this.serviceConfigs[index], context);
20
+ return new ServiceCtor(serviceConfigs[index], context);
19
21
  });
20
- }.bind({ serviceConfigs: [{ serviceConfigs }] })
22
+ },
23
+ getHooks: () => {
24
+ const hookConfigs = [{ hookConfigs }];
25
+ return [{ hooks }].map((HookCtor, index) => {
26
+ return new HookCtor(hookConfigs[index]);
27
+ });
28
+ }
21
29
  };
22
30
  `;
@@ -34,7 +34,7 @@ cli.command('serve', 'Starts an LWR server (defaults to dev mode)')
34
34
  try {
35
35
  const server = await createServer({ port, serverMode: mode });
36
36
  await server.listen(async ({ serverMode, port }) => {
37
- console.log(chalk.green(` server running at: port: ${port} | mode: ${serverMode}`));
37
+ console.log(chalk.green(`Running LWR v${version} at: http://localhost:${port} | mode: ${serverMode}`));
38
38
  if (open) {
39
39
  await launch(port);
40
40
  }
@@ -54,15 +54,12 @@ cli.command('build', 'Builds a static LWR site') // default command
54
54
  .alias('static-build')
55
55
  .option('--outputDir <directory>', `[string] output directory`)
56
56
  .action(async (options) => {
57
- const { output = '__generated_site__' } = options;
57
+ const { outputDir, mode = process.env.MODE || 'prod' } = options;
58
58
  const { generateStaticSite } = await import('@lwrjs/core');
59
59
  try {
60
60
  await generateStaticSite({
61
- staticSiteGenerator: {
62
- outputDir: output,
63
- locales: ['en-US'],
64
- _additionalRoutePaths: [],
65
- },
61
+ serverMode: mode,
62
+ staticSiteGenerator: { outputDir },
66
63
  });
67
64
  }
68
65
  catch (error) {
@@ -77,11 +74,13 @@ cli.command('build', 'Builds a static LWR site') // default command
77
74
  });
78
75
  cli.command('bundle-lambda', 'Bundles the lambda source')
79
76
  .option('--entryPoint <entry>', '[string] bundling entry point')
77
+ .option('--format <format>', '[string] bundle output format')
80
78
  .action(async (options) => {
81
79
  const entryPoint = options.entryPoint || './src/index.ts';
80
+ const format = options.format || 'esm';
82
81
  try {
83
82
  const { bundleLambda } = await import('./commands/bundle-lambda.js');
84
- await bundleLambda(entryPoint);
83
+ await bundleLambda({ entryPoint, format });
85
84
  }
86
85
  catch (error) {
87
86
  if (error instanceof DiagnosticsError) {
@@ -1,2 +1,8 @@
1
- export declare function bundleLambda(entryPoint: string): Promise<void>;
1
+ import { Format } from 'esbuild';
2
+ interface BundleOptions {
3
+ entryPoint: string;
4
+ format: Format;
5
+ }
6
+ export declare function bundleLambda({ entryPoint, format }: BundleOptions): Promise<void>;
7
+ export {};
2
8
  //# sourceMappingURL=bundle-lambda.d.ts.map
@@ -5,33 +5,35 @@ import { NodeVM } from 'vm2';
5
5
  import { createServer } from '@lwrjs/core';
6
6
  import ESM_REQUIRE_SHIM from './shims/esm-require-shim.js';
7
7
  import LWR_LAMBDA_SHIM from './shims/lwr-lambda-shim.js';
8
- export async function bundleLambda(entryPoint) {
8
+ export async function bundleLambda({ entryPoint, format }) {
9
9
  // get createHandler config argument
10
10
  const arg = await getConfigArg(entryPoint);
11
11
  // HACK: creating server just for config loading
12
12
  const server = createServer(arg);
13
13
  const config = server.getConfig();
14
+ // generate the lambda shim source
14
15
  const lambdaShim = generateLambdaShim(config);
15
16
  const buildDir = path.resolve('./build/generated');
16
17
  const lambdaShimPath = path.join(buildDir, 'lwr-lambda-shim.js');
17
18
  fs.mkdirSync(buildDir, { recursive: true });
18
19
  fs.writeFileSync(lambdaShimPath, lambdaShim);
19
20
  // bundle lambda handler and inject the lwr shim
20
- const handlerPath = entryPoint;
21
- build({
21
+ const options = {
22
22
  bundle: true,
23
- format: 'esm',
23
+ format,
24
24
  treeShaking: true,
25
- splitting: true,
26
- entryPoints: [handlerPath],
25
+ entryPoints: [entryPoint],
27
26
  outdir: './build',
28
27
  platform: 'node',
29
- banner: {
30
- js: ESM_REQUIRE_SHIM,
31
- },
32
- external: ['fsevents', 'esbuild', 'rollup', 'esinstall'],
28
+ external: ['fsevents', 'esbuild', 'iltorb', 'rollup', 'esinstall', 'rollup-plugin-node-polyfills'],
33
29
  inject: [lambdaShimPath],
34
- });
30
+ };
31
+ if (format === 'esm') {
32
+ options.banner = {
33
+ js: ESM_REQUIRE_SHIM,
34
+ };
35
+ }
36
+ build(options);
35
37
  }
36
38
  async function getConfigArg(entryPoint) {
37
39
  // bundle lambda source for execution in a sandbox
@@ -40,9 +42,10 @@ async function getConfigArg(entryPoint) {
40
42
  bundle: true,
41
43
  write: false,
42
44
  format: 'cjs',
45
+ platform: 'node',
43
46
  external: [
44
- // skip @lwrjs/lambda because it will be mocked at execution
45
- '@lwrjs/lambda',
47
+ // skip @lwrjs/lambda/aws because it will be mocked at execution
48
+ '@lwrjs/lambda/aws',
46
49
  ],
47
50
  });
48
51
  // execute lambda source with mocked createHandler to capture config
@@ -55,7 +58,7 @@ async function getConfigArg(entryPoint) {
55
58
  builtin: ['*'],
56
59
  root: [path.dirname(entryPoint)],
57
60
  mock: {
58
- '@lwrjs/lambda': {
61
+ '@lwrjs/lambda/aws': {
59
62
  createHandler: (arg) => {
60
63
  return arg;
61
64
  },
@@ -76,13 +79,26 @@ function generateLambdaShim(config) {
76
79
  const serviceCtors = [];
77
80
  const services = [];
78
81
  const serviceConfigs = [];
82
+ // module provider generation
79
83
  for (const [index, [servicePath, serviceConfig = {}]] of config.moduleProviders.entries()) {
80
- serviceCtors.push(`import ServiceCtor${index} from '${servicePath}';\n`);
84
+ serviceCtors.push(`import ServiceCtor${index} from '${servicePath}';`);
81
85
  services.push(`ServiceCtor${index}`);
82
86
  serviceConfigs.push(JSON.stringify(serviceConfig));
83
87
  }
88
+ const hookCtors = [];
89
+ const hooks = [];
90
+ const hookConfigs = [];
91
+ // hooks generation
92
+ for (const [index, [hookPath, hookConfig = {}]] of config.moduleProviders.entries()) {
93
+ hookCtors.push(`import HookCtor${index} from '${hookPath}';`);
94
+ hooks.push(`HookCtor${index}`);
95
+ hookConfigs.push(JSON.stringify(hookConfig));
96
+ }
84
97
  return LWR_LAMBDA_SHIM.replace('{ serviceCtors }', serviceCtors.join('\n'))
85
98
  .replace('{ services }', services.join())
86
- .replace('{ serviceConfigs }', serviceConfigs.join());
99
+ .replace('{ serviceConfigs }', serviceConfigs.join())
100
+ .replace('{ hookCtors }', hookCtors.join('\n'))
101
+ .replace('{ hooks }', hooks.join())
102
+ .replace('{ hookConfigs }', hookConfigs.join());
87
103
  }
88
104
  //# sourceMappingURL=bundle-lambda.js.map
@@ -1,3 +1,3 @@
1
- declare const _default: "\n{ serviceCtors }\nexport const LWR = {\n getModuleProviders: function (context) {\n return [{ services }].map((ServiceCtor, index) => {\n return new ServiceCtor(this.serviceConfigs[index], context);\n });\n }.bind({ serviceConfigs: [{ serviceConfigs }] })\n};\n";
1
+ declare const _default: "\n{ serviceCtors }\n{ hookCtors }\nexport const LWR = {\n getModuleProviders: (context) => {\n const serviceConfigs = [{ serviceConfigs }];\n return [{ services }].map((ServiceCtor, index) => {\n return new ServiceCtor(serviceConfigs[index], context);\n });\n },\n getHooks: () => {\n const hookConfigs = [{ hookConfigs }];\n return [{ hooks }].map((HookCtor, index) => {\n return new HookCtor(hookConfigs[index]);\n });\n }\n};\n";
2
2
  export default _default;
3
3
  //# sourceMappingURL=lwr-lambda-shim.d.ts.map
@@ -1,11 +1,19 @@
1
1
  export default `
2
2
  { serviceCtors }
3
+ { hookCtors }
3
4
  export const LWR = {
4
- getModuleProviders: function (context) {
5
+ getModuleProviders: (context) => {
6
+ const serviceConfigs = [{ serviceConfigs }];
5
7
  return [{ services }].map((ServiceCtor, index) => {
6
- return new ServiceCtor(this.serviceConfigs[index], context);
8
+ return new ServiceCtor(serviceConfigs[index], context);
7
9
  });
8
- }.bind({ serviceConfigs: [{ serviceConfigs }] })
10
+ },
11
+ getHooks: () => {
12
+ const hookConfigs = [{ hookConfigs }];
13
+ return [{ hooks }].map((HookCtor, index) => {
14
+ return new HookCtor(hookConfigs[index]);
15
+ });
16
+ }
9
17
  };
10
18
  `;
11
19
  //# sourceMappingURL=lwr-lambda-shim.js.map
@@ -1,5 +1,5 @@
1
1
  export { createServer, generateStaticSite } from '@lwrjs/core';
2
2
  export { DiagnosticsError } from '@lwrjs/diagnostics';
3
3
  export type { LwrApp } from '@lwrjs/core';
4
- export type { AbstractModuleId, AssetProvider, ClientBootstrapConfig, CompiledView, Compiler, FsModuleEntry, GlobalData, HandlerContext, HooksPlugin, Json, LwrAppBootstrapConfig, LwrAppEmitter, LwrAppObserver, LwrErrorRoute, LwrGlobalConfig, LwrRoute, ModuleCompiled, ModuleEntry, ModuleProvider, ModuleSource, NormalizedLwrGlobalConfig, ProviderAppConfig, ProviderContext, PublicModuleRegistry, PublicResourceRegistry, PublicViewRegistry, PublicAssetRegistry, ResourceDefinition, ResourceIdentifier, ResourceProvider, RouteHandlerFunction, RouteHandlerView, RouteHandlerViewApi, RouteHandlerViewResponse, RuntimeEnvironment, RuntimeParams, ViewIdentity, ViewParams, ViewProvider, ViewRequest, ViewResponse, Watcher, AssetTransformPlugin, } from '@lwrjs/types';
4
+ export type { AbstractModuleId, AssetProvider, ClientBootstrapConfig, CompiledView, Compiler, FsModuleEntry, GlobalData, HandlerContext, HooksPlugin, Json, LocalizedViewRequest, LwrAppBootstrapConfig, LwrAppEmitter, LwrAppObserver, LwrErrorRoute, LwrGlobalConfig, LwrRoute, ModuleCompiled, ModuleEntry, ModuleProvider, ModuleSource, NormalizedLwrGlobalConfig, ProviderAppConfig, ProviderContext, PublicModuleRegistry, PublicResourceRegistry, PublicViewRegistry, PublicAssetRegistry, ResourceDefinition, ResourceIdentifier, ResourceProvider, RouteHandlerFunction, RouteHandlerView, RouteHandlerViewApi, RouteHandlerViewResponse, RuntimeEnvironment, RuntimeParams, ViewIdentity, ViewParams, ViewProvider, ViewRequest, ViewResponse, Watcher, AssetTransformPlugin, } from '@lwrjs/types';
5
5
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "type": "module",
20
20
  "types": "build/es/index.d.ts",
21
- "version": "0.7.0-alpha.9",
21
+ "version": "0.7.0",
22
22
  "module": "build/es/index.js",
23
23
  "main": "build/cjs/index.cjs",
24
24
  "files": [
@@ -38,11 +38,11 @@
38
38
  }
39
39
  },
40
40
  "dependencies": {
41
- "@lwrjs/core": "0.7.0-alpha.9",
42
- "@lwrjs/types": "0.7.0-alpha.9",
41
+ "@lwrjs/core": "0.7.0",
42
+ "@lwrjs/types": "0.7.0",
43
43
  "cac": "^6.7.8",
44
44
  "esbuild": "^0.14.38",
45
45
  "vm2": "^3.9.9"
46
46
  },
47
- "gitHead": "522665298cc74f1898da6ed018fa72504bd72645"
47
+ "gitHead": "c6dcb52144a8da80170e30d49a87e29d2da30f9b"
48
48
  }