@nrwl/angular 15.0.0-rc.0 → 15.0.0-rc1

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 (43) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/generators.d.ts +1 -0
  3. package/generators.js +1 -0
  4. package/generators.js.map +1 -1
  5. package/generators.json +10 -0
  6. package/package.json +9 -9
  7. package/src/generators/library/lib/add-standalone-component.js +2 -2
  8. package/src/generators/library/lib/add-standalone-component.js.map +1 -1
  9. package/src/generators/library/lib/normalize-options.js +2 -1
  10. package/src/generators/library/lib/normalize-options.js.map +1 -1
  11. package/src/generators/library/lib/normalized-schema.d.ts +1 -1
  12. package/src/generators/library/schema.json +5 -0
  13. package/src/generators/setup-ssr/files/__serverFileName__ +60 -0
  14. package/src/generators/setup-ssr/files/src/__main__ +19 -0
  15. package/src/generators/setup-ssr/files/src/app/__rootModuleFileName__ +14 -0
  16. package/src/generators/setup-ssr/files/src/main.ts__tpl__ +22 -0
  17. package/src/generators/setup-ssr/files/tsconfig.server.json__tpl__ +15 -0
  18. package/src/generators/setup-ssr/lib/generate-files.d.ts +3 -0
  19. package/src/generators/setup-ssr/lib/generate-files.js +11 -0
  20. package/src/generators/setup-ssr/lib/generate-files.js.map +1 -0
  21. package/src/generators/setup-ssr/lib/index.d.ts +4 -0
  22. package/src/generators/setup-ssr/lib/index.js +8 -0
  23. package/src/generators/setup-ssr/lib/index.js.map +1 -0
  24. package/src/generators/setup-ssr/lib/normalize-options.d.ts +12 -0
  25. package/src/generators/setup-ssr/lib/normalize-options.js +19 -0
  26. package/src/generators/setup-ssr/lib/normalize-options.js.map +1 -0
  27. package/src/generators/setup-ssr/lib/update-app-module.d.ts +3 -0
  28. package/src/generators/setup-ssr/lib/update-app-module.js +21 -0
  29. package/src/generators/setup-ssr/lib/update-app-module.js.map +1 -0
  30. package/src/generators/setup-ssr/lib/update-project-config.d.ts +3 -0
  31. package/src/generators/setup-ssr/lib/update-project-config.js +67 -0
  32. package/src/generators/setup-ssr/lib/update-project-config.js.map +1 -0
  33. package/src/generators/setup-ssr/schema.d.ts +10 -0
  34. package/src/generators/setup-ssr/schema.json +59 -0
  35. package/src/generators/setup-ssr/setup-ssr.compat.d.ts +2 -0
  36. package/src/generators/setup-ssr/setup-ssr.compat.js +6 -0
  37. package/src/generators/setup-ssr/setup-ssr.compat.js.map +1 -0
  38. package/src/generators/setup-ssr/setup-ssr.d.ts +4 -0
  39. package/src/generators/setup-ssr/setup-ssr.js +30 -0
  40. package/src/generators/setup-ssr/setup-ssr.js.map +1 -0
  41. package/src/utils/versions.d.ts +1 -0
  42. package/src/utils/versions.js +2 -1
  43. package/src/utils/versions.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [15.0.0-rc.0](https://github.com/nrwl/nx/compare/14.8.0...15.0.0-rc.0) (2022-10-12)
6
+ # [15.0.0-rc1](https://github.com/nrwl/nx/compare/14.8.0...15.0.0-rc1) (2022-10-13)
7
7
 
8
8
  **Note:** Version bump only for package @nrwl/angular
package/generators.d.ts CHANGED
@@ -20,6 +20,7 @@ export * from './src/generators/scam-pipe/scam-pipe';
20
20
  export * from './src/generators/scam-to-standalone/scam-to-standalone';
21
21
  export * from './src/generators/scam/scam';
22
22
  export * from './src/generators/setup-mf/setup-mf';
23
+ export * from './src/generators/setup-ssr/setup-ssr';
23
24
  export * from './src/generators/setup-tailwind/setup-tailwind';
24
25
  export * from './src/generators/stories/stories';
25
26
  export * from './src/generators/storybook-configuration/storybook-configuration';
package/generators.js CHANGED
@@ -23,6 +23,7 @@ tslib_1.__exportStar(require("./src/generators/scam-pipe/scam-pipe"), exports);
23
23
  tslib_1.__exportStar(require("./src/generators/scam-to-standalone/scam-to-standalone"), exports);
24
24
  tslib_1.__exportStar(require("./src/generators/scam/scam"), exports);
25
25
  tslib_1.__exportStar(require("./src/generators/setup-mf/setup-mf"), exports);
26
+ tslib_1.__exportStar(require("./src/generators/setup-ssr/setup-ssr"), exports);
26
27
  tslib_1.__exportStar(require("./src/generators/setup-tailwind/setup-tailwind"), exports);
27
28
  tslib_1.__exportStar(require("./src/generators/stories/stories"), exports);
28
29
  tslib_1.__exportStar(require("./src/generators/storybook-configuration/storybook-configuration"), exports);
package/generators.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../packages/angular/generators.ts"],"names":[],"mappings":";;;AAAA,mFAAyD;AACzD,mFAAyD;AACzD,6GAAmF;AACnF,yGAA+E;AAC/E,2FAAiE;AACjE,+EAAqD;AACrD,6GAAmF;AACnF,6FAAmE;AACnE,qEAA2C;AAC3C,qEAA2C;AAC3C,uFAA6D;AAC7D,uEAA6C;AAC7C,uHAA6F;AAC7F,2EAAiD;AACjD,qEAA2C;AAC3C,qEAA2C;AAC3C,yEAA+C;AAC/C,yFAA+D;AAC/D,+EAAqD;AACrD,iGAAuE;AACvE,qEAA2C;AAC3C,6EAAmD;AACnD,yFAA+D;AAC/D,2EAAiD;AACjD,2GAAiF;AACjF,yFAA+D;AAC/D,iFAAuD;AACvD,2HAAiG;AACjG,yFAA+D;AAC/D,mEAAyC"}
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../packages/angular/generators.ts"],"names":[],"mappings":";;;AAAA,mFAAyD;AACzD,mFAAyD;AACzD,6GAAmF;AACnF,yGAA+E;AAC/E,2FAAiE;AACjE,+EAAqD;AACrD,6GAAmF;AACnF,6FAAmE;AACnE,qEAA2C;AAC3C,qEAA2C;AAC3C,uFAA6D;AAC7D,uEAA6C;AAC7C,uHAA6F;AAC7F,2EAAiD;AACjD,qEAA2C;AAC3C,qEAA2C;AAC3C,yEAA+C;AAC/C,yFAA+D;AAC/D,+EAAqD;AACrD,iGAAuE;AACvE,qEAA2C;AAC3C,6EAAmD;AACnD,+EAAqD;AACrD,yFAA+D;AAC/D,2EAAiD;AACjD,2GAAiF;AACjF,yFAA+D;AAC/D,iFAAuD;AACvD,2HAAiG;AACjG,yFAA+D;AAC/D,mEAAyC"}
package/generators.json CHANGED
@@ -137,6 +137,11 @@
137
137
  "schema": "./src/generators/setup-mf/schema.json",
138
138
  "description": "Generate a Module Federation configuration for a given Angular application."
139
139
  },
140
+ "setup-ssr": {
141
+ "factory": "./src/generators/setup-ssr/setup-ssr.compat",
142
+ "schema": "./src/generators/setup-ssr/schema.json",
143
+ "description": "Generate Angular Universal (SSR) setup for an Angular application."
144
+ },
140
145
  "setup-tailwind": {
141
146
  "factory": "./src/generators/setup-tailwind/setup-tailwind.compat",
142
147
  "schema": "./src/generators/setup-tailwind/schema.json",
@@ -309,6 +314,11 @@
309
314
  "schema": "./src/generators/setup-mf/schema.json",
310
315
  "description": "Generate a Module Federation configuration for a given Angular application."
311
316
  },
317
+ "setup-ssr": {
318
+ "factory": "./src/generators/setup-ssr/setup-ssr",
319
+ "schema": "./src/generators/setup-ssr/schema.json",
320
+ "description": "Generate Angular Universal (SSR) setup for an Angular application."
321
+ },
312
322
  "setup-tailwind": {
313
323
  "factory": "./src/generators/setup-tailwind/setup-tailwind",
314
324
  "schema": "./src/generators/setup-tailwind/schema.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nrwl/angular",
3
- "version": "15.0.0-rc.0",
3
+ "version": "15.0.0-rc1",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Cypress, Karma, and Protractor. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Upgrading AngularJS applications \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
6
6
  "repository": {
@@ -67,13 +67,13 @@
67
67
  },
68
68
  "dependencies": {
69
69
  "@angular-devkit/schematics": "~14.2.0",
70
- "@nrwl/cypress": "15.0.0-rc.0",
71
- "@nrwl/devkit": "15.0.0-rc.0",
72
- "@nrwl/jest": "15.0.0-rc.0",
73
- "@nrwl/linter": "15.0.0-rc.0",
74
- "@nrwl/storybook": "15.0.0-rc.0",
75
- "@nrwl/webpack": "15.0.0-rc.0",
76
- "@nrwl/workspace": "15.0.0-rc.0",
70
+ "@nrwl/cypress": "15.0.0-rc1",
71
+ "@nrwl/devkit": "15.0.0-rc1",
72
+ "@nrwl/jest": "15.0.0-rc1",
73
+ "@nrwl/linter": "15.0.0-rc1",
74
+ "@nrwl/storybook": "15.0.0-rc1",
75
+ "@nrwl/webpack": "15.0.0-rc1",
76
+ "@nrwl/workspace": "15.0.0-rc1",
77
77
  "@phenomnomnominal/tsquery": "4.1.1",
78
78
  "@schematics/angular": "~14.2.0",
79
79
  "chalk": "4.1.0",
@@ -99,5 +99,5 @@
99
99
  "fesm2015": "fesm2015/nrwl-angular.mjs",
100
100
  "typings": "index.d.ts",
101
101
  "sideEffects": false,
102
- "gitHead": "0ff93dd5f197141e15265a6d733f7b4e5e36e98e"
102
+ "gitHead": "a947e2514942806016a24e2fd36faa882aab56a7"
103
103
  }
@@ -9,11 +9,11 @@ const add_load_children_1 = require("./add-load-children");
9
9
  const add_children_1 = require("./add-children");
10
10
  function addStandaloneComponent(tree, { libraryOptions, componentOptions }) {
11
11
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
- yield (0, component_1.default)(tree, Object.assign(Object.assign({}, componentOptions), { name: componentOptions.name, standalone: true, export: true, project: libraryOptions.name }));
12
+ yield (0, component_1.default)(tree, Object.assign(Object.assign({}, componentOptions), { name: componentOptions.name, standalone: true, export: true, project: libraryOptions.name, flat: componentOptions.flat }));
13
13
  if (libraryOptions.routing) {
14
14
  const pathToRoutes = (0, path_1.joinPathFragments)(libraryOptions.projectRoot, 'src/lib/lib.routes.ts');
15
15
  const routesContents = `import { Route } from '@angular/router';
16
- import { ${libraryOptions.standaloneComponentName} } from './${(0, path_1.joinPathFragments)(libraryOptions.fileName, `${libraryOptions.fileName}.component`)}';
16
+ import { ${libraryOptions.standaloneComponentName} } from './${(0, path_1.joinPathFragments)(componentOptions.flat ? '' : libraryOptions.fileName, `${libraryOptions.fileName}.component`)}';
17
17
 
18
18
  export const ${(0, devkit_1.names)(libraryOptions.name).propertyName}Routes: Route[] = [
19
19
  {path: '', component: ${libraryOptions.standaloneComponentName}}
@@ -1 +1 @@
1
- {"version":3,"file":"add-standalone-component.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/add-standalone-component.ts"],"names":[],"mappings":";;;;AAEA,yDAA2D;AAC3D,4CAAsD;AACtD,yCAAqC;AACrC,2DAAsD;AACtD,iDAA6C;AAE7C,SAAsB,sBAAsB,CAC1C,IAAU,EACV,EAAE,cAAc,EAAE,gBAAgB,EAAoB;;QAEtD,MAAM,IAAA,mBAAkB,EAAC,IAAI,kCACxB,gBAAgB,KACnB,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAC3B,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,cAAc,CAAC,IAAI,IAC5B,CAAC;QAEH,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,MAAM,YAAY,GAAG,IAAA,wBAAiB,EACpC,cAAc,CAAC,WAAW,EAC1B,uBAAuB,CACxB,CAAC;YAEF,MAAM,cAAc,GAAG;eAErB,cAAc,CAAC,uBACjB,cAAc,IAAA,wBAAiB,EAC7B,cAAc,CAAC,QAAQ,EACvB,GAAG,cAAc,CAAC,QAAQ,YAAY,CACvC;;uBAGK,IAAA,cAAK,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAC7B;kCAC0B,cAAc,CAAC,uBAAuB;WAC7D,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YAEzC,MAAM,eAAe,GAAG,IAAA,wBAAiB,EACvC,cAAc,CAAC,WAAW,EAC1B,KAAK,EACL,GAAG,cAAc,CAAC,SAAS,KAAK,CACjC,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CACR,eAAe,EACf,GAAG,iBAAiB;yCACe,CACpC,CAAC;YAEF,IAAI,cAAc,CAAC,MAAM,EAAE;gBACzB,IAAI,cAAc,CAAC,IAAI,EAAE;oBACvB,IAAA,mCAAe,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBACvC;qBAAM;oBACL,IAAA,0BAAW,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBACnC;aACF;SACF;IACH,CAAC;CAAA;AArDD,wDAqDC"}
1
+ {"version":3,"file":"add-standalone-component.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/add-standalone-component.ts"],"names":[],"mappings":";;;;AAEA,yDAA2D;AAC3D,4CAAsD;AACtD,yCAAqC;AACrC,2DAAsD;AACtD,iDAA6C;AAE7C,SAAsB,sBAAsB,CAC1C,IAAU,EACV,EAAE,cAAc,EAAE,gBAAgB,EAAoB;;QAEtD,MAAM,IAAA,mBAAkB,EAAC,IAAI,kCACxB,gBAAgB,KACnB,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAC3B,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,cAAc,CAAC,IAAI,EAC5B,IAAI,EAAE,gBAAgB,CAAC,IAAI,IAC3B,CAAC;QAEH,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,MAAM,YAAY,GAAG,IAAA,wBAAiB,EACpC,cAAc,CAAC,WAAW,EAC1B,uBAAuB,CACxB,CAAC;YAEF,MAAM,cAAc,GAAG;eAErB,cAAc,CAAC,uBACjB,cAAc,IAAA,wBAAiB,EAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EACpD,GAAG,cAAc,CAAC,QAAQ,YAAY,CACvC;;uBAGK,IAAA,cAAK,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAC7B;kCAC0B,cAAc,CAAC,uBAAuB;WAC7D,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YAEzC,MAAM,eAAe,GAAG,IAAA,wBAAiB,EACvC,cAAc,CAAC,WAAW,EAC1B,KAAK,EACL,GAAG,cAAc,CAAC,SAAS,KAAK,CACjC,CAAC;YACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CACR,eAAe,EACf,GAAG,iBAAiB;yCACe,CACpC,CAAC;YAEF,IAAI,cAAc,CAAC,MAAM,EAAE;gBACzB,IAAI,cAAc,CAAC,IAAI,EAAE;oBACvB,IAAA,mCAAe,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBACvC;qBAAM;oBACL,IAAA,0BAAW,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;iBACnC;aACF;SACF;IACH,CAAC;CAAA;AAtDD,wDAsDC"}
@@ -50,7 +50,7 @@ function normalizeOptions(host, schema) {
50
50
  fileName,
51
51
  importPath,
52
52
  ngCliSchematicLibRoot, standaloneComponentName: `${(0, devkit_1.names)(name).className}Component` });
53
- const { displayBlock, inlineStyle, inlineTemplate, viewEncapsulation, changeDetection, style, skipTests, selector, skipSelector } = allNormalizedOptions, libraryOptions = tslib_1.__rest(allNormalizedOptions, ["displayBlock", "inlineStyle", "inlineTemplate", "viewEncapsulation", "changeDetection", "style", "skipTests", "selector", "skipSelector"]);
53
+ const { displayBlock, inlineStyle, inlineTemplate, viewEncapsulation, changeDetection, style, skipTests, selector, skipSelector, flat } = allNormalizedOptions, libraryOptions = tslib_1.__rest(allNormalizedOptions, ["displayBlock", "inlineStyle", "inlineTemplate", "viewEncapsulation", "changeDetection", "style", "skipTests", "selector", "skipSelector", "flat"]);
54
54
  return {
55
55
  libraryOptions,
56
56
  componentOptions: {
@@ -65,6 +65,7 @@ function normalizeOptions(host, schema) {
65
65
  skipTests,
66
66
  selector,
67
67
  skipSelector,
68
+ flat,
68
69
  },
69
70
  };
70
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/normalize-options.ts"],"names":[],"mappings":";;;;AAAA,yCAOsB;AACtB,4CAAkD;AAGlD,yCAAsC;AACtC,8DAA6D;AAC7D,iDAAsD;AAEtD,SAAgB,gBAAgB,CAC9B,IAAU,EACV,MAAuB;;IAEvB,gDAAgD;IAChD,MAAM,OAAO,mBACX,SAAS,EAAE,KAAK,EAChB,MAAM,EAAE,eAAM,CAAC,MAAM,EACrB,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,KAAK,EAClB,gBAAgB,EAAE,KAAK,EACvB,UAAU,EAAE,KAAK,EACjB,cAAc,EAAE,6BAAc,CAAC,IAAI;QACnC,yGAAyG;QACzG,eAAe,EAAE,MAAM,CAAC,WAAW;YACjC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAA,MAAM,CAAC,eAAe,mCAAI,MAAM,EACpC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAC/C,MAAM,CACV,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IAC1C,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS;QACxC,CAAC,CAAC,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;QACrE,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,gBAAgB;SACjC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;SAClC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEjE,MAAM,UAAU,GAAG,GAAG,IAAA,cAAK,EAAC,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI;QAC7B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAG,GAAG,WAAW,YAAY,QAAQ,YAAY,CAAC;IAClE,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEzD,OAAO,CAAC,gBAAgB,GAAG,MAAA,OAAO,CAAC,gBAAgB,mCAAI,mBAAmB,CAAC;IAE3E,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,IAAA,oBAAa,EAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAElE,wEAAwE;IACxE,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;IACjD,IAAI,cAAc,GAAG,IAAI,CAAC;IAC1B,IAAI,iBAAiB,EAAE;QACrB,CAAC,EAAE,cAAc,EAAE,GAAG,IAAA,iBAAQ,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;KAC1D;IACD,MAAM,qBAAqB,GAAG,cAAc;QAC1C,CAAC,CAAC,GAAG,cAAc,IAAI,WAAW,EAAE;QACpC,CAAC,CAAC,WAAW,CAAC;IAEhB,MAAM,oBAAoB,mCACrB,OAAO,KACV,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,eAAM,CAAC,MAAM,EACvC,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,6BAAc,CAAC,IAAI,EAC7D,MAAM,EACN,IAAI,EAAE,WAAW,EACjB,WAAW,EACX,SAAS,EAAE,OAAO,EAClB,UAAU;QACV,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,QAAQ;QACR,UAAU;QACV,qBAAqB,EACrB,uBAAuB,EAAE,GAAG,IAAA,cAAK,EAAC,IAAI,CAAC,CAAC,SAAS,WAAW,GAC7D,CAAC;IAEF,MAAM,EACJ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,KAAK,EACL,SAAS,EACT,QAAQ,EACR,YAAY,KAEV,oBAAoB,EADnB,cAAc,kBACf,oBAAoB,EAXlB,2IAWL,CAAuB,CAAC;IAEzB,OAAO;QACL,cAAc;QACd,gBAAgB,EAAE;YAChB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,UAAU,EAAE,cAAc,CAAC,UAAU;YACrC,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,KAAK;YACL,SAAS;YACT,QAAQ;YACR,YAAY;SACb;KACF,CAAC;AACJ,CAAC;AAxGD,4CAwGC"}
1
+ {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/library/lib/normalize-options.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,6 @@ export interface NormalizedSchema {
14
14
  importPath?: string;
15
15
  standaloneConfig?: boolean;
16
16
  spec?: boolean;
17
- flat?: boolean;
18
17
  commonModule?: boolean;
19
18
  routing?: boolean;
20
19
  lazy?: boolean;
@@ -52,5 +51,6 @@ export interface NormalizedSchema {
52
51
  skipTests?: boolean;
53
52
  selector?: string;
54
53
  skipSelector?: boolean;
54
+ flat?: boolean;
55
55
  };
56
56
  }
@@ -181,6 +181,11 @@
181
181
  "type": "boolean",
182
182
  "default": false,
183
183
  "description": "Specifies if the component should have a selector or not. Disclaimer: This option is only valid when `--standalone` is set to `true`."
184
+ },
185
+ "flat": {
186
+ "type": "boolean",
187
+ "default": false,
188
+ "description": "Ensure the generated standalone component is not placed in a subdirectory. Disclaimer: This option is only valid when `--standalone` is set to `true`."
184
189
  }
185
190
  },
186
191
  "additionalProperties": false,
@@ -0,0 +1,60 @@
1
+ import 'zone.js/dist/zone-node';
2
+
3
+ import {APP_BASE_HREF} from '@angular/common';
4
+ import {ngExpressEngine} from '@nguniversal/express-engine';
5
+ import * as express from 'express';
6
+ import {existsSync} from 'fs';
7
+ import {join} from 'path';
8
+
9
+ import {<%= rootModuleClassName %>} from './src/<%= main.slice(0, -3) %>';
10
+
11
+ // The Express app is exported so that it can be used by serverless Functions.
12
+ export function app(): express.Express {
13
+ const server = express();
14
+ const distFolder = join(process.cwd(), 'dist/apps/<%= project %>/browser');
15
+ const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
16
+
17
+ // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine)
18
+ server.engine('html', ngExpressEngine({
19
+ bootstrap: <%= rootModuleClassName %>,
20
+ }));
21
+
22
+ server.set('view engine', 'html');
23
+ server.set('views', distFolder);
24
+
25
+ // Example Express Rest API endpoints
26
+ // server.get('/api/**', (req, res) => { });
27
+ // Serve static files from /browser
28
+ server.get('*.*', express.static(distFolder, {
29
+ maxAge: '1y'
30
+ }));
31
+
32
+ // All regular routes use the Universal engine
33
+ server.get('*', (req, res) => {
34
+ res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
35
+ });
36
+
37
+ return server;
38
+ }
39
+
40
+ function run(): void {
41
+ const port = process.env['PORT'] || <%= serverPort %>;
42
+
43
+ // Start up the Node server
44
+ const server = app();
45
+ server.listen(port, () => {
46
+ console.log(`Node Express server listening on http://localhost:${port}`);
47
+ });
48
+ }
49
+
50
+ // Webpack will replace 'require' with '__webpack_require__'
51
+ // '__non_webpack_require__' is a proxy to Node 'require'
52
+ // The below code is to ensure that the server is run only when not requiring the bundle.
53
+ declare const __non_webpack_require__: NodeRequire;
54
+ const mainModule = __non_webpack_require__.main;
55
+ const moduleFilename = mainModule && mainModule.filename || '';
56
+ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
57
+ run();
58
+ }
59
+
60
+ export * from './src/<%= main.slice(0, -3) %>';
@@ -0,0 +1,19 @@
1
+ /***************************************************************************************************
2
+ * Initialize the server environment - for example, adding DOM built-in types to the global scope.
3
+ *
4
+ * NOTE:
5
+ * This import must come before any imports (direct or transitive) that rely on DOM built-ins being
6
+ * available, such as `@angular/elements`.
7
+ */
8
+ import '@angular/platform-server/init';
9
+
10
+ import { enableProdMode } from '@angular/core';
11
+
12
+ import { environment } from './environments/environment';
13
+
14
+ if (environment.production) {
15
+ enableProdMode();
16
+ }
17
+
18
+ export { <%= rootModuleClassName %> } from './app/<%= rootModuleFileName.slice(0, -3) %>';
19
+ export { renderModule } from '@angular/platform-server';
@@ -0,0 +1,14 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ServerModule } from '@angular/platform-server';
3
+
4
+ import { AppModule } from './app.module';
5
+ import { AppComponent } from './app.component';
6
+
7
+ @NgModule({
8
+ imports: [
9
+ AppModule,
10
+ ServerModule,
11
+ ],
12
+ bootstrap: [AppComponent],
13
+ })
14
+ export class <%= rootModuleClassName %> {}
@@ -0,0 +1,22 @@
1
+ import { enableProdMode } from '@angular/core';
2
+ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3
+
4
+ import { AppModule } from './app/app.module';
5
+ import { environment } from './environments/environment';
6
+
7
+ if (environment.production) {
8
+ enableProdMode();
9
+ }
10
+
11
+ function bootstrap() {
12
+ platformBrowserDynamic()
13
+ .bootstrapModule(AppModule)
14
+ .catch((err) => console.error(err));
15
+ };
16
+
17
+
18
+ if (document.readyState === 'complete') {
19
+ bootstrap();
20
+ } else {
21
+ document.addEventListener('DOMContentLoaded', bootstrap);
22
+ }
@@ -0,0 +1,15 @@
1
+ /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
+ {
3
+ "extends": "./tsconfig.app.json",
4
+ "compilerOptions": {
5
+ "outDir": "../../out-tsc/server",
6
+ "target": "es2019",
7
+ "types": [
8
+ "node"
9
+ ]
10
+ },
11
+ "files": [
12
+ "src/<%= main %>",
13
+ "server.ts",
14
+ ]
15
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nrwl/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function generateSSRFiles(tree: Tree, schema: Schema): void;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateSSRFiles = void 0;
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ function generateSSRFiles(tree, schema) {
6
+ const projectRoot = (0, devkit_1.readProjectConfiguration)(tree, schema.project).root;
7
+ const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '../', 'files');
8
+ (0, devkit_1.generateFiles)(tree, pathToFiles, projectRoot, Object.assign(Object.assign({}, schema), { tpl: '' }));
9
+ }
10
+ exports.generateSSRFiles = generateSSRFiles;
11
+ //# sourceMappingURL=generate-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-files.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-files.ts"],"names":[],"mappings":";;;AACA,yCAIsB;AAGtB,SAAgB,gBAAgB,CAAC,IAAU,EAAE,MAAc;IACzD,MAAM,WAAW,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAExE,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjE,IAAA,sBAAa,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,kCAAO,MAAM,KAAE,GAAG,EAAE,EAAE,IAAG,CAAC;AACxE,CAAC;AAND,4CAMC"}
@@ -0,0 +1,4 @@
1
+ export * from './generate-files';
2
+ export * from './normalize-options';
3
+ export * from './update-app-module';
4
+ export * from './update-project-config';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./generate-files"), exports);
5
+ tslib_1.__exportStar(require("./normalize-options"), exports);
6
+ tslib_1.__exportStar(require("./update-app-module"), exports);
7
+ tslib_1.__exportStar(require("./update-project-config"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,8DAAoC;AACpC,8DAAoC;AACpC,kEAAwC"}
@@ -0,0 +1,12 @@
1
+ import type { Tree } from '@nrwl/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function normalizeOptions(tree: Tree, options: Schema): {
4
+ project: string;
5
+ appId: string;
6
+ main: string;
7
+ serverFileName: string;
8
+ serverPort: number;
9
+ rootModuleFileName: string;
10
+ rootModuleClassName: string;
11
+ skipFormat: boolean;
12
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeOptions = void 0;
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ function normalizeOptions(tree, options) {
6
+ var _a, _b, _c, _d, _e, _f, _g, _h;
7
+ return {
8
+ project: (_a = options.project) !== null && _a !== void 0 ? _a : (0, devkit_1.readWorkspaceConfiguration)(tree).defaultProject,
9
+ appId: (_b = options.appId) !== null && _b !== void 0 ? _b : 'serverApp',
10
+ main: (_c = options.main) !== null && _c !== void 0 ? _c : 'main.server.ts',
11
+ serverFileName: (_d = options.serverFileName) !== null && _d !== void 0 ? _d : 'server.ts',
12
+ serverPort: (_e = options.serverPort) !== null && _e !== void 0 ? _e : 4000,
13
+ rootModuleFileName: (_f = options.rootModuleFileName) !== null && _f !== void 0 ? _f : 'app.server.module.ts',
14
+ rootModuleClassName: (_g = options.rootModuleClassName) !== null && _g !== void 0 ? _g : 'AppServerModule',
15
+ skipFormat: (_h = options.skipFormat) !== null && _h !== void 0 ? _h : false,
16
+ };
17
+ }
18
+ exports.normalizeOptions = normalizeOptions;
19
+ //# sourceMappingURL=normalize-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/normalize-options.ts"],"names":[],"mappings":";;;AACA,yCAA0D;AAG1D,SAAgB,gBAAgB,CAAC,IAAU,EAAE,OAAe;;IAC1D,OAAO;QACL,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,mCAAI,IAAA,mCAA0B,EAAC,IAAI,CAAC,CAAC,cAAc;QAC3E,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,WAAW;QACnC,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,gBAAgB;QACtC,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,WAAW;QACrD,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,IAAI;QACtC,kBAAkB,EAAE,MAAA,OAAO,CAAC,kBAAkB,mCAAI,sBAAsB;QACxE,mBAAmB,EAAE,MAAA,OAAO,CAAC,mBAAmB,mCAAI,iBAAiB;QACrE,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,KAAK;KACxC,CAAC;AACJ,CAAC;AAXD,4CAWC"}
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nrwl/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function updateAppModule(tree: Tree, schema: Schema): void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateAppModule = void 0;
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
6
+ function updateAppModule(tree, schema) {
7
+ // read the content of app module
8
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
9
+ const pathToAppModule = (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'app/app.module.ts');
10
+ const fileContents = tree.read(pathToAppModule, 'utf-8');
11
+ const ast = tsquery_1.tsquery.ast(fileContents);
12
+ const browserModuleImportNodes = (0, tsquery_1.tsquery)(ast, 'PropertyAssignment:has(Identifier[name=imports]) > ArrayLiteralExpression Identifier[name=BrowserModule]', { visitAllChildren: true });
13
+ if (browserModuleImportNodes.length === 0) {
14
+ throw new Error(`Could not find BrowserModule declaration in ${pathToAppModule}. Please ensure this is correct.`);
15
+ }
16
+ const browserModuleNode = browserModuleImportNodes[0];
17
+ const newFileContents = `${fileContents.slice(0, browserModuleNode.getEnd())}.withServerTransition({ appId: '${schema.appId}' })${fileContents.slice(browserModuleNode.getEnd(), -1)}`;
18
+ tree.write(pathToAppModule, newFileContents);
19
+ }
20
+ exports.updateAppModule = updateAppModule;
21
+ //# sourceMappingURL=update-app-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-app-module.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/update-app-module.ts"],"names":[],"mappings":";;;AACA,yCAA2E;AAE3E,uDAAoD;AAEpD,SAAgB,eAAe,CAAC,IAAU,EAAE,MAAc;IACxD,iCAAiC;IACjC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,aAAa,CAAC,UAAU,EACxB,mBAAmB,CACpB,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAEzD,MAAM,GAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,wBAAwB,GAAG,IAAA,iBAAO,EACtC,GAAG,EACH,0GAA0G,EAC1G,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAC3B,CAAC;IAEF,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAAE;QACzC,MAAM,IAAI,KAAK,CACb,+CAA+C,eAAe,kCAAkC,CACjG,CAAC;KACH;IAED,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,GAAG,YAAY,CAAC,KAAK,CAC3C,CAAC,EACD,iBAAiB,CAAC,MAAM,EAAE,CAC3B,mCAAmC,MAAM,CAAC,KAAK,OAAO,YAAY,CAAC,KAAK,CACvE,iBAAiB,CAAC,MAAM,EAAE,EAC1B,CAAC,CAAC,CACH,EAAE,CAAC;IAEJ,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAC/C,CAAC;AAjCD,0CAiCC"}
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nrwl/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function updateProjectConfig(tree: Tree, schema: Schema): void;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateProjectConfig = void 0;
4
+ const devkit_1 = require("@nrwl/devkit");
5
+ function updateProjectConfig(tree, schema) {
6
+ let projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
7
+ projectConfig.targets.build.options.outputPath = `dist/apps/${schema.project}/browser`;
8
+ projectConfig.targets.server = {
9
+ executor: '@angular-devkit/build-angular:server',
10
+ options: {
11
+ outputPath: `dist/apps/${projectConfig.root}/server`,
12
+ main: (0, devkit_1.joinPathFragments)(projectConfig.root, schema.serverFileName),
13
+ tsConfig: (0, devkit_1.joinPathFragments)(projectConfig.root, 'tsconfig.server.json'),
14
+ },
15
+ configurations: {
16
+ production: {
17
+ outputHashing: 'media',
18
+ fileReplacements: [
19
+ {
20
+ replace: (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'environments/environment.ts'),
21
+ with: (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'environments/environment.prod.ts'),
22
+ },
23
+ ],
24
+ },
25
+ development: {
26
+ optimization: false,
27
+ sourceMap: true,
28
+ extractLicenses: false,
29
+ },
30
+ },
31
+ defaultConfiguration: 'production',
32
+ };
33
+ projectConfig.targets['serve-ssr'] = {
34
+ executor: '@nguniversal/builders:ssr-dev-server',
35
+ configurations: {
36
+ development: {
37
+ browserTarget: `${schema.project}:build:development`,
38
+ serverTarget: `${schema.project}:server:development`,
39
+ },
40
+ production: {
41
+ browserTarget: `${schema.project}:build:production`,
42
+ serverTarget: `${schema.project}:server:production`,
43
+ },
44
+ },
45
+ defaultConfiguration: 'development',
46
+ };
47
+ projectConfig.targets.prerender = {
48
+ executor: '@nguniversal/builders:prerender',
49
+ options: {
50
+ routes: ['/'],
51
+ },
52
+ configurations: {
53
+ development: {
54
+ browserTarget: `${schema.project}:build:development`,
55
+ serverTarget: `${schema.project}:server:development`,
56
+ },
57
+ production: {
58
+ browserTarget: `${schema.project}:build:production`,
59
+ serverTarget: `${schema.project}:server:production`,
60
+ },
61
+ },
62
+ defaultConfiguration: 'production',
63
+ };
64
+ (0, devkit_1.updateProjectConfiguration)(tree, schema.project, projectConfig);
65
+ }
66
+ exports.updateProjectConfig = updateProjectConfig;
67
+ //# sourceMappingURL=update-project-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-project-config.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/update-project-config.ts"],"names":[],"mappings":";;;AACA,yCAIsB;AAGtB,SAAgB,mBAAmB,CAAC,IAAU,EAAE,MAAc;IAC5D,IAAI,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,aAAa,MAAM,CAAC,OAAO,UAAU,CAAC;IAEvF,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG;QAC7B,QAAQ,EAAE,sCAAsC;QAChD,OAAO,EAAE;YACP,UAAU,EAAE,aAAa,aAAa,CAAC,IAAI,SAAS;YACpD,IAAI,EAAE,IAAA,0BAAiB,EAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC;YAClE,QAAQ,EAAE,IAAA,0BAAiB,EAAC,aAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC;SACxE;QACD,cAAc,EAAE;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,OAAO;gBACtB,gBAAgB,EAAE;oBAChB;wBACE,OAAO,EAAE,IAAA,0BAAiB,EACxB,aAAa,CAAC,UAAU,EACxB,6BAA6B,CAC9B;wBACD,IAAI,EAAE,IAAA,0BAAiB,EACrB,aAAa,CAAC,UAAU,EACxB,kCAAkC,CACnC;qBACF;iBACF;aACF;YACD,WAAW,EAAE;gBACX,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,eAAe,EAAE,KAAK;aACvB;SACF;QACD,oBAAoB,EAAE,YAAY;KACnC,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG;QACnC,QAAQ,EAAE,sCAAsC;QAChD,cAAc,EAAE;YACd,WAAW,EAAE;gBACX,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,oBAAoB;gBACpD,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,qBAAqB;aACrD;YACD,UAAU,EAAE;gBACV,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,mBAAmB;gBACnD,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,oBAAoB;aACpD;SACF;QACD,oBAAoB,EAAE,aAAa;KACpC,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,SAAS,GAAG;QAChC,QAAQ,EAAE,iCAAiC;QAC3C,OAAO,EAAE;YACP,MAAM,EAAE,CAAC,GAAG,CAAC;SACd;QACD,cAAc,EAAE;YACd,WAAW,EAAE;gBACX,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,oBAAoB;gBACpD,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,qBAAqB;aACrD;YACD,UAAU,EAAE;gBACV,aAAa,EAAE,GAAG,MAAM,CAAC,OAAO,mBAAmB;gBACnD,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,oBAAoB;aACpD;SACF;QACD,oBAAoB,EAAE,YAAY;KACnC,CAAC;IAEF,IAAA,mCAA0B,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAClE,CAAC;AAvED,kDAuEC"}
@@ -0,0 +1,10 @@
1
+ export interface Schema {
2
+ project: string;
3
+ appId?: string;
4
+ main?: string;
5
+ serverFileName?: string;
6
+ serverPort?: number;
7
+ rootModuleFileName?: string;
8
+ rootModuleClassName?: string;
9
+ skipFormat?: boolean;
10
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "GeneratorAngularUniversalSetup",
4
+ "cli": "nx",
5
+ "title": "Generate Angular Universal (SSR) setup for an Angular App",
6
+ "description": "Create the additional configuration required to enable SSR via Angular Universal for an Angular application.",
7
+ "type": "object",
8
+ "properties": {
9
+ "project": {
10
+ "type": "string",
11
+ "description": "The name of the application to generate the Angular Universal configuration for.",
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
16
+ "x-prompt": "What app would you like to generate an Angular Universal configuration for?",
17
+ "x-dropdown": "projects"
18
+ },
19
+ "appId": {
20
+ "type": "string",
21
+ "format": "html-selector",
22
+ "description": "The `appId` to use with `withServerTransition`.",
23
+ "default": "serverApp"
24
+ },
25
+ "main": {
26
+ "type": "string",
27
+ "format": "path",
28
+ "description": "The name of the main entry-point file.",
29
+ "default": "main.server.ts"
30
+ },
31
+ "serverFileName": {
32
+ "type": "string",
33
+ "default": "server.ts",
34
+ "description": "The name of the Express server file."
35
+ },
36
+ "serverPort": {
37
+ "type": "number",
38
+ "default": 4000,
39
+ "description": "The port for the Express server."
40
+ },
41
+ "rootModuleFileName": {
42
+ "type": "string",
43
+ "format": "path",
44
+ "description": "The name of the root module file",
45
+ "default": "app.server.module.ts"
46
+ },
47
+ "rootModuleClassName": {
48
+ "type": "string",
49
+ "description": "The name of the root module class.",
50
+ "default": "AppServerModule"
51
+ },
52
+ "skipFormat": {
53
+ "type": "boolean",
54
+ "description": "Skip formatting the workspace after the generator completes."
55
+ }
56
+ },
57
+ "required": ["project"],
58
+ "additionalProperties": false
59
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: (generatorOptions: import("./schema").Schema) => (tree: any, context: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nrwl/devkit");
4
+ const setup_ssr_1 = require("./setup-ssr");
5
+ exports.default = (0, devkit_1.convertNxGenerator)(setup_ssr_1.setupSsr);
6
+ //# sourceMappingURL=setup-ssr.compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ssr.compat.js","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/setup-ssr/setup-ssr.compat.ts"],"names":[],"mappings":";;AAAA,yCAAkD;AAClD,2CAAuC;AAEvC,kBAAe,IAAA,2BAAkB,EAAC,oBAAQ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tree } from '@nrwl/devkit';
2
+ import type { Schema } from './schema';
3
+ export declare function setupSsr(tree: Tree, schema: Schema): Promise<() => void>;
4
+ export default setupSsr;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupSsr = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nrwl/devkit");
6
+ const lib_1 = require("./lib");
7
+ const versions_1 = require("../../utils/versions");
8
+ function setupSsr(tree, schema) {
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ const options = (0, lib_1.normalizeOptions)(tree, schema);
11
+ (0, lib_1.generateSSRFiles)(tree, options);
12
+ (0, lib_1.updateAppModule)(tree, options);
13
+ (0, lib_1.updateProjectConfig)(tree, options);
14
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {
15
+ '@nguniversal/express-engine': versions_1.ngUniversalVersion,
16
+ '@angular/platform-server': versions_1.angularVersion,
17
+ }, {
18
+ '@nguniversal/builders': versions_1.ngUniversalVersion,
19
+ });
20
+ if (!options.skipFormat) {
21
+ yield (0, devkit_1.formatFiles)(tree);
22
+ }
23
+ return () => {
24
+ (0, devkit_1.installPackagesTask)(tree);
25
+ };
26
+ });
27
+ }
28
+ exports.setupSsr = setupSsr;
29
+ exports.default = setupSsr;
30
+ //# sourceMappingURL=setup-ssr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-ssr.js","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/setup-ssr/setup-ssr.ts"],"names":[],"mappings":";;;;AACA,yCAIsB;AAEtB,+BAKe;AACf,mDAA0E;AAE1E,SAAsB,QAAQ,CAAC,IAAU,EAAE,MAAc;;QACvD,MAAM,OAAO,GAAG,IAAA,sBAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAA,sBAAgB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChC,IAAA,qBAAe,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAA,yBAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnC,IAAA,qCAA4B,EAC1B,IAAI,EACJ;YACE,6BAA6B,EAAE,6BAAkB;YACjD,0BAA0B,EAAE,yBAAc;SAC3C,EACD;YACE,uBAAuB,EAAE,6BAAkB;SAC5C,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;SACzB;QAED,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;CAAA;AAzBD,4BAyBC;AAED,kBAAe,QAAQ,CAAC"}
@@ -7,6 +7,7 @@ export declare const rxjsVersion = "~7.5.0";
7
7
  export declare const zoneJsVersion = "~0.11.4";
8
8
  export declare const angularJsVersion = "1.7.9";
9
9
  export declare const tsLibVersion = "^2.3.0";
10
+ export declare const ngUniversalVersion = "~14.2.0";
10
11
  export declare const angularEslintVersion = "~14.0.4";
11
12
  export declare const tailwindVersion = "^3.0.2";
12
13
  export declare const postcssVersion = "^8.4.5";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jasmineMarblesVersion = exports.typesNodeVersion = exports.typesJasminewd2Version = exports.typesJasmineVersion = exports.jasmineSpecReporterVersion = exports.jasmineCoreVersion = exports.karmaJasmineHtmlReporterVersion = exports.karmaJasmineVersion = exports.karmaCoverageVersion = exports.karmaChromeLauncherVersion = exports.karmaVersion = exports.protractorVersion = exports.jestPresetAngularVersion = exports.tsNodeVersion = exports.autoprefixerVersion = exports.postcssUrlVersion = exports.postcssPresetEnvVersion = exports.postcssImportVersion = exports.postcssVersion = exports.tailwindVersion = exports.angularEslintVersion = exports.tsLibVersion = exports.angularJsVersion = exports.zoneJsVersion = exports.rxjsVersion = exports.ngrxVersion = exports.ngPackagrVersion = exports.angularDevkitVersion = exports.angularVersion = exports.nxVersion = void 0;
3
+ exports.jasmineMarblesVersion = exports.typesNodeVersion = exports.typesJasminewd2Version = exports.typesJasmineVersion = exports.jasmineSpecReporterVersion = exports.jasmineCoreVersion = exports.karmaJasmineHtmlReporterVersion = exports.karmaJasmineVersion = exports.karmaCoverageVersion = exports.karmaChromeLauncherVersion = exports.karmaVersion = exports.protractorVersion = exports.jestPresetAngularVersion = exports.tsNodeVersion = exports.autoprefixerVersion = exports.postcssUrlVersion = exports.postcssPresetEnvVersion = exports.postcssImportVersion = exports.postcssVersion = exports.tailwindVersion = exports.angularEslintVersion = exports.ngUniversalVersion = exports.tsLibVersion = exports.angularJsVersion = exports.zoneJsVersion = exports.rxjsVersion = exports.ngrxVersion = exports.ngPackagrVersion = exports.angularDevkitVersion = exports.angularVersion = exports.nxVersion = void 0;
4
4
  exports.nxVersion = require('../../package.json').version;
5
5
  exports.angularVersion = '~14.2.0';
6
6
  exports.angularDevkitVersion = '~14.2.0';
@@ -10,6 +10,7 @@ exports.rxjsVersion = '~7.5.0';
10
10
  exports.zoneJsVersion = '~0.11.4';
11
11
  exports.angularJsVersion = '1.7.9';
12
12
  exports.tsLibVersion = '^2.3.0';
13
+ exports.ngUniversalVersion = '~14.2.0';
13
14
  exports.angularEslintVersion = '~14.0.4';
14
15
  exports.tailwindVersion = '^3.0.2';
15
16
  exports.postcssVersion = '^8.4.5';
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/angular/src/utils/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAElD,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,WAAW,GAAG,QAAQ,CAAC;AACvB,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,YAAY,GAAG,QAAQ,CAAC;AAExB,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,cAAc,GAAG,QAAQ,CAAC;AAC1B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,aAAa,GAAG,QAAQ,CAAC;AAEzB,QAAA,wBAAwB,GAAG,SAAS,CAAC;AACrC,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACtC,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAChC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,+BAA+B,GAAG,QAAQ,CAAC;AAC3C,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAC9B,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACtC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,qBAAqB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/angular/src/utils/versions.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;AAElD,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,WAAW,GAAG,SAAS,CAAC;AACxB,QAAA,WAAW,GAAG,QAAQ,CAAC;AACvB,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAC3B,QAAA,YAAY,GAAG,QAAQ,CAAC;AAExB,QAAA,kBAAkB,GAAG,SAAS,CAAC;AAE/B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,cAAc,GAAG,QAAQ,CAAC;AAC1B,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,aAAa,GAAG,QAAQ,CAAC;AAEzB,QAAA,wBAAwB,GAAG,SAAS,CAAC;AACrC,QAAA,iBAAiB,GAAG,QAAQ,CAAC;AAC7B,QAAA,YAAY,GAAG,QAAQ,CAAC;AACxB,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACtC,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAChC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,+BAA+B,GAAG,QAAQ,CAAC;AAC3C,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAC9B,QAAA,0BAA0B,GAAG,QAAQ,CAAC;AACtC,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAC/B,QAAA,sBAAsB,GAAG,QAAQ,CAAC;AAClC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,qBAAqB,GAAG,QAAQ,CAAC"}