@analogjs/platform 0.2.0-beta.8 → 0.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/migrations/migration.json +4 -0
  2. package/package.json +4 -4
  3. package/src/lib/clear-client-page-endpoint.d.ts +2 -0
  4. package/src/lib/clear-client-page-endpoint.js +37 -0
  5. package/src/lib/content-plugin.d.ts +0 -10
  6. package/src/lib/content-plugin.js +26 -43
  7. package/src/lib/nx-plugin/generators.json +4 -3
  8. package/src/lib/nx-plugin/package.json +5 -5
  9. package/src/lib/nx-plugin/src/generators/app/files/index-page/src/app/pages/(home).page.ts__template__ +14 -0
  10. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/src/main.ts__template__ +2 -2
  11. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v15/vite.config.ts__template__ +0 -2
  12. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/{app.config.ts__template__ → app/app.config.ts__template__} +4 -2
  13. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/main.server.ts__template__ +3 -2
  14. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/main.ts__template__ +1 -1
  15. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/vite.config.ts__template__ +1 -31
  16. package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/server/trpc/routers/notes.ts__template__ +2 -2
  17. package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/trpc-client.ts__template__ +3 -3
  18. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/css/src/app/pages/analog-welcome.component.ts__template__ +264 -0
  19. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/css-trpc/src/app/pages/analog-welcome.component.ts__template__ +439 -0
  20. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/tailwind/src/app/pages/analog-welcome.component.ts__template__ +76 -0
  21. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/tailwind-trpc/src/app/pages/analog-welcome.component.ts__template__ +162 -0
  22. package/src/lib/nx-plugin/src/generators/app/generator.js +16 -6
  23. package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
  24. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.d.ts +2 -2
  25. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js +9 -27
  26. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-dependencies.js.map +1 -1
  27. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js +0 -10
  28. package/src/lib/nx-plugin/src/generators/app/lib/add-analog-project-config.js.map +1 -1
  29. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.d.ts +3 -0
  30. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js +29 -0
  31. package/src/lib/nx-plugin/src/generators/app/lib/add-eslint.js.map +1 -0
  32. package/src/lib/nx-plugin/src/generators/app/lib/add-files.d.ts +1 -1
  33. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js +1 -1
  34. package/src/lib/nx-plugin/src/generators/app/lib/add-files.js.map +1 -1
  35. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.d.ts +3 -0
  36. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js +16 -0
  37. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js.map +1 -0
  38. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.d.ts +1 -1
  39. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js +5 -2
  40. package/src/lib/nx-plugin/src/generators/app/lib/add-tailwind-config.js.map +1 -1
  41. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.d.ts +2 -2
  42. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js +7 -15
  43. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js.map +1 -1
  44. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js +58 -44
  45. package/src/lib/nx-plugin/src/generators/app/lib/initialize-analog-workspace.js.map +1 -1
  46. package/src/lib/nx-plugin/src/generators/app/schema.d.ts +1 -1
  47. package/src/lib/nx-plugin/src/generators/app/schema.json +2 -2
  48. package/src/lib/nx-plugin/src/generators/app/versions/README.md +30 -0
  49. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.d.ts +9 -0
  50. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js +54 -0
  51. package/src/lib/nx-plugin/src/generators/app/versions/dependencies.js.map +1 -0
  52. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.d.ts +4 -0
  53. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js +75 -0
  54. package/src/lib/nx-plugin/src/generators/app/versions/dev-dependencies.js.map +1 -0
  55. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.d.ts +6 -0
  56. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js +14 -0
  57. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js.map +1 -0
  58. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.d.ts +7 -0
  59. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js +54 -0
  60. package/src/lib/nx-plugin/src/generators/app/versions/nx-dependencies.js.map +1 -0
  61. package/src/lib/nx-plugin/src/generators/app/versions/nx_15_X/versions.d.ts +26 -0
  62. package/src/lib/nx-plugin/src/generators/app/versions/nx_15_X/versions.js +33 -0
  63. package/src/lib/nx-plugin/src/generators/app/versions/nx_15_X/versions.js.map +1 -0
  64. package/src/lib/nx-plugin/src/generators/app/versions/nx_16_X/versions.d.ts +24 -0
  65. package/src/lib/nx-plugin/src/generators/app/versions/nx_16_X/versions.js +31 -0
  66. package/src/lib/nx-plugin/src/generators/app/versions/nx_16_X/versions.js.map +1 -0
  67. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.d.ts +4 -0
  68. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.js +44 -0
  69. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.js.map +1 -0
  70. package/src/lib/nx-plugin/src/generators/app/versions.d.ts +14 -12
  71. package/src/lib/nx-plugin/src/generators/app/versions.js +15 -13
  72. package/src/lib/nx-plugin/src/generators/app/versions.js.map +1 -1
  73. package/src/lib/nx-plugin/src/generators/preset/generator.d.ts +1 -1
  74. package/src/lib/nx-plugin/src/generators/preset/schema.d.ts +1 -1
  75. package/src/lib/nx-plugin/src/generators/preset/schema.json +3 -3
  76. package/src/lib/nx-plugin/src/utils/version-utils.d.ts +1 -1
  77. package/src/lib/nx-plugin/src/utils/version-utils.js +2 -2
  78. package/src/lib/nx-plugin/src/utils/version-utils.js.map +1 -1
  79. package/src/lib/options.d.ts +5 -1
  80. package/src/lib/platform-plugin.js +5 -3
  81. package/src/lib/router-plugin.js +19 -2
  82. package/src/lib/nx-plugin/src/generators/app/files/index-pages/css/src/app/pages/index.page.ts__template__ +0 -355
  83. package/src/lib/nx-plugin/src/generators/app/files/index-pages/css-trpc/src/app/pages/index.page.ts__template__ +0 -585
  84. package/src/lib/nx-plugin/src/generators/app/files/index-pages/tailwind/src/app/pages/index.page.ts__template__ +0 -158
  85. package/src/lib/nx-plugin/src/generators/app/files/index-pages/tailwind-trpc/src/app/pages/index.page.ts__template__ +0 -269
  86. package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/public/assets/vite.svg__template__ +0 -1
  87. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.d.ts +0 -3
  88. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.js +0 -15
  89. package/src/lib/nx-plugin/src/generators/app/lib/add-index-pages.js.map +0 -1
  90. /package/src/lib/nx-plugin/src/generators/app/files/template-angular-v16/src/{app.config.server.ts__template__ → app/app.config.server.ts__template__} +0 -0
  91. /package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/note.ts__template__ +0 -0
  92. /package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/server/routes/trpc/[trpc].ts__template__ +0 -0
  93. /package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/server/trpc/context.ts__template__ +0 -0
  94. /package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/server/trpc/routers/index.ts__template__ +0 -0
  95. /package/src/lib/nx-plugin/src/generators/app/files/{tRPC → trpc}/src/server/trpc/trpc.ts__template__ +0 -0
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {}
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@analogjs/platform",
3
- "version": "0.2.0-beta.8",
3
+ "version": "0.2.0-rc.0",
4
4
  "type": "commonjs",
5
5
  "description": "The fullstack meta-framework for Angular",
6
6
  "author": "Brandon Roberts <robertsbt@gmail.com>",
@@ -24,9 +24,9 @@
24
24
  "url": "https://github.com/analogjs/analog.git"
25
25
  },
26
26
  "dependencies": {
27
- "nitropack": "^1.0.0",
28
- "@analogjs/vite-plugin-angular": "^0.2.0-beta.8",
29
- "@analogjs/vite-plugin-nitro": "^0.2.0-beta.8",
27
+ "nitropack": "^2.0.0",
28
+ "@analogjs/vite-plugin-angular": "^0.2.0-rc.0",
29
+ "@analogjs/vite-plugin-nitro": "^0.2.0-rc.0",
30
30
  "@nx/devkit": "^16.0.0"
31
31
  },
32
32
  "generators": "./src/lib/nx-plugin/generators.json",
@@ -0,0 +1,2 @@
1
+ import { Plugin } from 'vite';
2
+ export declare function clearClientPageEndpointsPlugin(): Plugin;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearClientPageEndpointsPlugin = void 0;
4
+ const vite_1 = require("vite");
5
+ function clearClientPageEndpointsPlugin() {
6
+ return {
7
+ name: 'analogjs-platform-clear-client-page-endpoint',
8
+ apply: 'build',
9
+ config() {
10
+ return {
11
+ build: {
12
+ rollupOptions: {
13
+ onwarn(warning) {
14
+ if (warning.message.includes('empty chunk') &&
15
+ warning.message.endsWith('.server')) {
16
+ return;
17
+ }
18
+ },
19
+ },
20
+ },
21
+ };
22
+ },
23
+ transform(_code, id, options) {
24
+ if (!options?.ssr &&
25
+ id.includes((0, vite_1.normalizePath)('src/app/pages')) &&
26
+ id.endsWith('.server.ts')) {
27
+ return {
28
+ code: 'export default undefined;',
29
+ map: null,
30
+ };
31
+ }
32
+ return;
33
+ },
34
+ };
35
+ }
36
+ exports.clearClientPageEndpointsPlugin = clearClientPageEndpointsPlugin;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItY2xpZW50LXBhZ2UtZW5kcG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NsZWFyLWNsaWVudC1wYWdlLWVuZHBvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE2QztBQUU3QyxTQUFnQiw4QkFBOEI7SUFDNUMsT0FBTztRQUNMLElBQUksRUFBRSw4Q0FBOEM7UUFDcEQsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNO1lBQ0osT0FBTztnQkFDTCxLQUFLLEVBQUU7b0JBQ0wsYUFBYSxFQUFFO3dCQUNiLE1BQU0sQ0FBQyxPQUFPOzRCQUNaLElBQ0UsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO2dDQUN2QyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDbkM7Z0NBQ0EsT0FBTzs2QkFDUjt3QkFDSCxDQUFDO3FCQUNGO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPO1lBQzFCLElBQ0UsQ0FBQyxPQUFPLEVBQUUsR0FBRztnQkFDYixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUEsb0JBQWEsRUFBQyxlQUFlLENBQUMsQ0FBQztnQkFDM0MsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFDekI7Z0JBQ0EsT0FBTztvQkFDTCxJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxHQUFHLEVBQUUsSUFBSTtpQkFDVixDQUFDO2FBQ0g7WUFFRCxPQUFPO1FBQ1QsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBbkNELHdFQW1DQyJ9
@@ -1,12 +1,2 @@
1
1
  import { Plugin } from 'vite';
2
- /**
3
- * This excludes the build from including the
4
- * @analogjs/content package because it is
5
- * dynamically imported at runtime.
6
- *
7
- * This prevents a dependency on @analogjs/router
8
- * to @analogjs/content
9
- *
10
- * @returns
11
- */
12
2
  export declare function contentPlugin(): Plugin[];
@@ -2,57 +2,40 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.contentPlugin = void 0;
4
4
  const fs = require("fs");
5
- const path = require("path");
6
- /**
7
- * This excludes the build from including the
8
- * @analogjs/content package because it is
9
- * dynamically imported at runtime.
10
- *
11
- * This prevents a dependency on @analogjs/router
12
- * to @analogjs/content
13
- *
14
- * @returns
15
- */
16
5
  function contentPlugin() {
17
- let excludeContent = true;
18
- const pkgJsonPath = path.resolve(process.cwd(), './package.json');
19
- const packageJsonExists = fs.existsSync(pkgJsonPath);
20
- if (packageJsonExists) {
21
- const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
22
- if (pkg.dependencies['@analogjs/content']) {
23
- excludeContent = false;
24
- }
25
- }
6
+ const cache = new Map();
26
7
  return [
27
- {
28
- name: 'analogjs-content-build-plugin',
29
- config() {
30
- return {
31
- optimizeDeps: {
32
- include: excludeContent ? [] : ['@analogjs/content'],
33
- },
34
- build: {
35
- rollupOptions: {
36
- external: excludeContent ? ['@analogjs/content'] : [],
37
- },
38
- },
39
- };
40
- },
41
- },
42
8
  {
43
9
  name: 'analogjs-content-frontmatter',
44
- async transform(_code, id) {
10
+ async transform(code, id) {
45
11
  // Transform only the frontmatter into a JSON object for lists
46
- if (id.includes('.md?analog-content-list')) {
47
- const fm = await Promise.resolve().then(() => require('front-matter'));
48
- const fileContents = fs.readFileSync(id.split('?')[0], 'utf8');
49
- const frontmatter = fm(fileContents).attributes;
50
- return `export default ${JSON.stringify(frontmatter)}`;
12
+ if (!id.includes('.md?analog-content-list')) {
13
+ return;
14
+ }
15
+ const cachedContent = cache.get(id);
16
+ // There's no reason to run `readFileSync` and frontmatter parsing if the
17
+ // `transform` hook is called with the same code. In such cases, we can simply
18
+ // return the cached attributes, which is faster than repeatedly reading files
19
+ // synchronously during the build process.
20
+ if (cachedContent?.code === code) {
21
+ return `export default ${cachedContent.attributes}`;
51
22
  }
52
- return;
23
+ const fm = await Promise.resolve().then(() => require('front-matter'));
24
+ // The `default` property will be available in CommonJS environment, for instance,
25
+ // when running unit tests. It's safe to retrieve `default` first, since we still
26
+ // fallback to the original implementation.
27
+ const frontmatter = fm.default || fm;
28
+ const fileContents = fs.readFileSync(id.split('?')[0], 'utf8');
29
+ const { attributes } = frontmatter(fileContents);
30
+ const content = {
31
+ code,
32
+ attributes: JSON.stringify(attributes),
33
+ };
34
+ cache.set(id, content);
35
+ return `export default ${content.attributes}`;
53
36
  },
54
37
  },
55
38
  ];
56
39
  }
57
40
  exports.contentPlugin = contentPlugin;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFFN0I7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsYUFBYTtJQUMzQixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFMUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRSxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFckQsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFOUQsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDekMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUN4QjtLQUNGO0lBRUQsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxNQUFNO2dCQUNKLE9BQU87b0JBQ0wsWUFBWSxFQUFFO3dCQUNaLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztxQkFDckQ7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGFBQWEsRUFBRTs0QkFDYixRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7eUJBQ3REO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSw4QkFBOEI7WUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdkIsOERBQThEO2dCQUM5RCxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsRUFBRTtvQkFDMUMsTUFBTSxFQUFFLEdBQVEsMkNBQWEsY0FBYyxFQUFDLENBQUM7b0JBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDL0QsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFFaEQsT0FBTyxrQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2lCQUN4RDtnQkFFRCxPQUFPO1lBQ1QsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUE5Q0Qsc0NBOENDIn0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS9zcmMvbGliL2NvbnRlbnQtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlCQUF5QjtBQU96QixTQUFnQixhQUFhO0lBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRXpDLE9BQU87UUFDTDtZQUNFLElBQUksRUFBRSw4QkFBOEI7WUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdEIsOERBQThEO2dCQUM5RCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO29CQUMzQyxPQUFPO2lCQUNSO2dCQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLHlFQUF5RTtnQkFDekUsOEVBQThFO2dCQUM5RSw4RUFBOEU7Z0JBQzlFLDBDQUEwQztnQkFDMUMsSUFBSSxhQUFhLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDaEMsT0FBTyxrQkFBa0IsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNyRDtnQkFFRCxNQUFNLEVBQUUsR0FBUSwyQ0FBYSxjQUFjLEVBQUMsQ0FBQztnQkFDN0Msa0ZBQWtGO2dCQUNsRixpRkFBaUY7Z0JBQ2pGLDJDQUEyQztnQkFDM0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDakQsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsSUFBSTtvQkFDSixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7aUJBQ3ZDLENBQUM7Z0JBQ0YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXZCLE9BQU8sa0JBQWtCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQXRDRCxzQ0FzQ0MifQ==
@@ -6,20 +6,21 @@
6
6
  "app": {
7
7
  "factory": "./src/generators/app/generator",
8
8
  "schema": "./src/generators/app/schema.json",
9
- "description": "Generates an AnalogJs application"
9
+ "description": "Generates an Analog application"
10
10
  },
11
11
  "preset": {
12
12
  "factory": "./src/generators/preset/generator",
13
13
  "schema": "./src/generators/preset/schema.json",
14
14
  "description": "Analog preset for create-nx-workspace",
15
- "x-use-standalone-layout": true
15
+ "x-use-standalone-layout": true,
16
+ "hidden": true
16
17
  }
17
18
  },
18
19
  "schematics": {
19
20
  "app": {
20
21
  "factory": "./src/generators/app/compat",
21
22
  "schema": "./src/generators/app/schema.json",
22
- "description": "Add Angular Three with proper packages and config"
23
+ "description": "Generates an Analog application"
23
24
  }
24
25
  }
25
26
  }
@@ -3,13 +3,13 @@
3
3
  "version": "0.0.1",
4
4
  "main": "src/index.js",
5
5
  "dependencies": {
6
- "@nrwl/angular": "16.1.0",
7
- "@nrwl/devkit": "15.2.4",
8
- "@nx/devkit": "16.1.0",
9
- "semver": "7.3.8"
6
+ "@nrwl/angular": "16.5.1",
7
+ "@nrwl/linter": "16.5.1",
8
+ "@nx/devkit": "16.5.1",
9
+ "semver": "^7.5.1"
10
10
  },
11
11
  "peerDependencies": {
12
- "tslib": "2.4.0"
12
+ "tslib": "1.14.1"
13
13
  },
14
14
  "types": "./src/index.d.ts"
15
15
  }
@@ -0,0 +1,14 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ import { AnalogWelcomeComponent } from './analog-welcome.component';
4
+
5
+ @Component({
6
+ selector: '<%= fileName %>-home',
7
+ standalone: true,
8
+ imports: [AnalogWelcomeComponent],
9
+ template: `
10
+ <<%= fileName %>-analog-welcome/>
11
+ `,
12
+ })
13
+ export default class HomeComponent {
14
+ }
@@ -4,14 +4,14 @@ import { provideFileRouter } from '@analogjs/router';
4
4
  import { AppComponent } from './app/app.component';
5
5
  import { mainProviders } from './main.providers';
6
6
  <% if (addTRPC) { %>
7
- import { provideTRPCClient } from './trpc-client';
7
+ import { provideTrpcClient } from './trpc-client';
8
8
  <% } %>
9
9
 
10
10
  bootstrapApplication(AppComponent, {
11
11
  providers: [
12
12
  provideFileRouter(),
13
13
  <% if (addTRPC) { %>
14
- provideTRPCClient(),
14
+ provideTrpcClient(),
15
15
  <% } %>
16
16
  ...mainProviders],
17
17
  });
@@ -1,7 +1,6 @@
1
1
  /// <reference types="vitest" />
2
2
 
3
3
  import analog from '@analogjs/platform';
4
- import { visualizer } from 'rollup-plugin-visualizer';
5
4
  import { defineConfig, Plugin, splitVendorChunkPlugin } from 'vite';
6
5
  import tsConfigPaths from 'vite-tsconfig-paths';
7
6
 
@@ -53,7 +52,6 @@ export default defineConfig(({ mode }) => {
53
52
  tsConfigPaths({
54
53
  root: '<%= offsetFromRoot %>',
55
54
  }),
56
- visualizer() as Plugin,
57
55
  splitVendorChunkPlugin(),
58
56
  ],
59
57
  test: {
@@ -1,16 +1,18 @@
1
1
  import { ApplicationConfig } from '@angular/core';
2
+ import { provideHttpClient } from '@angular/common/http';
2
3
  import { provideClientHydration } from '@angular/platform-browser';
3
4
  import { provideFileRouter } from '@analogjs/router';
4
5
  <% if (addTRPC) { %>
5
- import { provideTRPCClient } from './trpc-client';
6
+ import { provideTrpcClient } from '../trpc-client';
6
7
  <% } %>
7
8
 
8
9
  export const appConfig: ApplicationConfig = {
9
10
  providers: [
10
11
  provideFileRouter(),
11
12
  provideClientHydration(),
13
+ provideHttpClient(),
12
14
  <% if (addTRPC) { %>
13
- provideTRPCClient(),
15
+ provideTrpcClient(),
14
16
  <% } %>
15
17
  ],
16
18
  };
@@ -1,9 +1,10 @@
1
1
  import 'zone.js/node';
2
2
  import { enableProdMode } from '@angular/core';
3
3
  import { renderApplication } from '@angular/platform-server';
4
- import { AppComponent } from './app/app.component';
5
4
  import { bootstrapApplication } from '@angular/platform-browser';
6
- import { config } from './app.config.server';
5
+
6
+ import { AppComponent } from './app/app.component';
7
+ import { config } from './app/app.config.server';
7
8
 
8
9
  if (import.meta.env.PROD) {
9
10
  enableProdMode();
@@ -2,7 +2,7 @@ import 'zone.js';
2
2
  import { bootstrapApplication } from '@angular/platform-browser';
3
3
 
4
4
  import { AppComponent } from './app/app.component';
5
- import { appConfig } from './app.config';
5
+ import { appConfig } from './app/app.config';
6
6
 
7
7
  bootstrapApplication(AppComponent, appConfig).catch((err) =>
8
8
  console.error(err)
@@ -1,7 +1,6 @@
1
1
  /// <reference types="vitest" />
2
2
 
3
3
  import analog from '@analogjs/platform';
4
- import { visualizer } from 'rollup-plugin-visualizer';
5
4
  import { defineConfig, Plugin, splitVendorChunkPlugin } from 'vite';
6
5
  import tsConfigPaths from 'vite-tsconfig-paths';
7
6
 
@@ -17,43 +16,14 @@ export default defineConfig(({ mode }) => {
17
16
  noExternal: '@analogjs/trpc/**',
18
17
  },
19
18
  <% } %>
20
- optimizeDeps: {
21
- include: ['@angular/common', '@angular/forms'],
22
- },
23
19
  build: {
24
20
  target: ['es2020'],
25
21
  },
26
22
  plugins: [
27
- analog({
28
- ssrBuildDir: '<%= offsetFromRoot %>dist/<%= appsDir %>/<%= projectName %>/ssr',
29
- entryServer: '<%= appsDir %>/<%= projectName %>/src/main.server.ts',
30
- vite: {
31
- inlineStylesExtension: 'css',
32
- tsconfig:
33
- mode === 'test'
34
- ? '<%= appsDir %>/<%= projectName %>/tsconfig.spec.json'
35
- : '<%= appsDir %>/<%= projectName %>/tsconfig.app.json',
36
- },
37
- nitro: {
38
- rootDir: '<%= appsDir %>/<%= projectName %>',
39
- output: {
40
- dir: '<%= offsetFromRoot %>../dist/<%= appsDir %>/<%= projectName %>/analog',
41
- publicDir: '<%= offsetFromRoot %>../dist/<%= appsDir %>/<%= projectName %>/analog/public',
42
- },
43
- publicAssets: [{ dir: `<%= offsetFromRoot %>../dist/<%= appsDir %>/<%= projectName %>/client` }],
44
- serverAssets: [
45
- { baseName: 'public', dir: `./dist/<%= appsDir %>/<%= projectName %>/client` },
46
- ],
47
- buildDir: '<%= offsetFromRoot %>dist/<%= appsDir %>/<%= projectName %>/.nitro',
48
- },
49
- prerender: {
50
- routes: ['/'],
51
- },
52
- }),
23
+ analog(),
53
24
  tsConfigPaths({
54
25
  root: '<%= offsetFromRoot %>',
55
26
  }),
56
- visualizer() as Plugin,
57
27
  splitVendorChunkPlugin(),
58
28
  ],
59
29
  test: {
@@ -8,13 +8,13 @@ export const noteRouter = router({
8
8
  create: publicProcedure
9
9
  .input(
10
10
  z.object({
11
- title: z.string(),
11
+ note: z.string(),
12
12
  })
13
13
  )
14
14
  .mutation(({ input }) =>
15
15
  notes.push({
16
16
  id: noteId++,
17
- note: input.title,
17
+ note: input.note,
18
18
  createdAt: new Date().toISOString(),
19
19
  })
20
20
  ),
@@ -2,10 +2,10 @@ import { AppRouter } from './server/trpc/routers';
2
2
  import { createTrpcClient } from '@analogjs/trpc';
3
3
  import { inject } from '@angular/core';
4
4
 
5
- export const { provideTRPCClient, tRPCClient } = createTrpcClient<AppRouter>({
5
+ export const { provideTrpcClient, TrpcClient } = createTrpcClient<AppRouter>({
6
6
  url: 'http://127.0.0.1:4200/api/trpc',
7
7
  });
8
8
 
9
- export function injectTRPCClient() {
10
- return inject(tRPCClient);
9
+ export function injectTrpcClient() {
10
+ return inject(TrpcClient);
11
11
  }
@@ -0,0 +1,264 @@
1
+ import { Component } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: '<%= fileName %>-analog-welcome',
5
+ standalone: true,
6
+ styles: [
7
+ `
8
+ :host {
9
+ font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
10
+ 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
11
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
12
+ 'Noto Color Emoji';
13
+ display: flex;
14
+ padding: 2rem 1rem 8rem;
15
+ flex-direction: column;
16
+ background: rgb(250 250 250);
17
+ height: 100%;
18
+ }
19
+ a {
20
+ color: inherit;
21
+ text-decoration: inherit;
22
+ }
23
+ .main {
24
+ margin: 0 auto;
25
+ flex: 1 1 0;
26
+ }
27
+ .intro-section {
28
+ padding-top: 1.5rem;
29
+ padding-bottom: 2rem;
30
+ }
31
+ .intro-section > * + * {
32
+ margin-top: 1.5rem;
33
+ }
34
+ @media (min-width: 768px) {
35
+ .intro-section {
36
+ padding-top: 2.5rem;
37
+ padding-bottom: 3rem;
38
+ }
39
+ }
40
+ @media (min-width: 1024px) {
41
+ .intro-section {
42
+ padding-top: 8rem;
43
+ padding-bottom: 8rem;
44
+ }
45
+ }
46
+ .intro-container {
47
+ display: flex;
48
+ flex-direction: column;
49
+ text-align: center;
50
+ gap: 1rem;
51
+ align-items: center;
52
+ max-width: 64rem;
53
+ }
54
+ .intro-logo {
55
+ height: 3rem;
56
+ width: 3rem;
57
+ }
58
+ .intro-badge {
59
+ transition-property: color, background-color, border-color,
60
+ text-decoration-color, fill, stroke;
61
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
62
+ transition-duration: 150ms;
63
+ font-weight: 500;
64
+ font-size: 0.875rem;
65
+ line-height: 1.25rem;
66
+ padding: 0.375rem 1rem;
67
+ background-color: rgb(228 228 231);
68
+ border-radius: 1rem;
69
+ }
70
+ .intro-heading {
71
+ margin: 0;
72
+ font-weight: 500;
73
+ }
74
+
75
+ @media (min-width: 640px) {
76
+ .intro-heading {
77
+ font-size: 3rem;
78
+ line-height: 1;
79
+ }
80
+ }
81
+ @media (min-width: 768px) {
82
+ .intro-heading {
83
+ font-size: 3.75rem;
84
+ line-height: 1;
85
+ }
86
+ }
87
+ @media (min-width: 1024px) {
88
+ .intro-heading {
89
+ font-size: 4.5rem;
90
+ line-height: 1;
91
+ }
92
+ }
93
+ .intro-analog {
94
+ color: #dd0031;
95
+ }
96
+ .intro-description {
97
+ line-height: 1.5;
98
+ max-width: 42rem;
99
+ margin: 0;
100
+ }
101
+
102
+ @media (min-width: 640px) {
103
+ .intro-description {
104
+ line-height: 2rem;
105
+ font-size: 1.25rem;
106
+ }
107
+ }
108
+ .btn-container > * + * {
109
+ margin-left: 1rem;
110
+ }
111
+ .darkBtn {
112
+ transition-property: color, background-color, border-color,
113
+ text-decoration-color, fill, stroke;
114
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
115
+ transition-duration: 150ms;
116
+ color: rgb(250 250 250);
117
+ font-weight: 500;
118
+ font-size: 0.875rem;
119
+ line-height: 1.25rem;
120
+ padding-left: 2rem;
121
+ padding-right: 2rem;
122
+ background-color: rgb(9 9 11);
123
+ border-radius: 0.375rem;
124
+ justify-content: center;
125
+ align-items: center;
126
+ height: 2.75rem;
127
+ cursor: pointer;
128
+ display: inline-flex;
129
+ }
130
+ .darkBtn:hover {
131
+ background-color: rgb(9 9 11 / 0.9);
132
+ }
133
+ .lightBtn {
134
+ transition-property: color, background-color, border-color,
135
+ text-decoration-color, fill, stroke;
136
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
137
+ transition-duration: 150ms;
138
+ color: rgb(24, 24, 27);
139
+ background: rgb(250 250 250);
140
+ font-weight: 500;
141
+ font-size: 0.875rem;
142
+ line-height: 1.25rem;
143
+ padding-left: 2rem;
144
+ padding-right: 2rem;
145
+ border-radius: 0.375rem;
146
+ border: 1px solid rgb(229, 231, 235);
147
+ justify-content: center;
148
+ align-items: center;
149
+ height: 2.75rem;
150
+ display: inline-flex;
151
+ cursor: pointer;
152
+ }
153
+ .lightBtn:hover {
154
+ background-color: rgb(244 244 245);
155
+ }
156
+ .counter-section {
157
+ padding-top: 2rem;
158
+ padding-bottom: 2rem;
159
+ }
160
+
161
+ @media (min-width: 768px) {
162
+ .counter-section {
163
+ padding-top: 3rem;
164
+ padding-bottom: 3rem;
165
+ }
166
+ }
167
+
168
+ @media (min-width: 1024px) {
169
+ .counter-section {
170
+ padding-top: 6rem;
171
+ padding-bottom: 6rem;
172
+ }
173
+ }
174
+ .counter-container {
175
+ text-align: center;
176
+ gap: 1rem;
177
+ justify-content: center;
178
+ align-items: center;
179
+ flex-direction: column;
180
+ max-width: 58rem;
181
+ display: flex;
182
+ margin-left: auto;
183
+ margin-right: auto;
184
+ }
185
+ .counter-heading {
186
+ color: #dd0031;
187
+ line-height: 1.1;
188
+ font-weight: 500;
189
+ font-size: 1.875rem;
190
+ margin: 0;
191
+ }
192
+ .counter-description {
193
+ line-height: 1.5;
194
+ max-width: 85%;
195
+ margin: 0;
196
+ }
197
+
198
+ @media (min-width: 640px) {
199
+ .counter-description {
200
+ line-height: 1.75rem;
201
+ font-size: 1.125rem;
202
+ }
203
+ }
204
+ .count {
205
+ margin-left: 0.25rem;
206
+ font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
207
+ }
208
+ `,
209
+ ],
210
+ template: `
211
+ <main class="main">
212
+ <section class="intro-section">
213
+ <div class="intro-container">
214
+ <img
215
+ class="intro-logo"
216
+ src="https://analogjs.org/img/logos/analog-logo.svg"
217
+ alt="AnalogJs logo. Two red triangles and a white analog wave in front"
218
+ />
219
+ <a
220
+ class="intro-badge"
221
+ target="_blank"
222
+ href="https://twitter.com/analogjs"
223
+ >Follow along on Twitter</a
224
+ >
225
+ <h1 class="intro-heading">
226
+ <span class="intro-analog">Analog.</span> The fullstack Angular
227
+ meta-framework
228
+ </h1>
229
+ <p class="intro-description">
230
+ Analog is for building applications and websites with Angular.
231
+ <br />Powered by Vite.
232
+ </p>
233
+ <div class="btn-container">
234
+ <a class="darkBtn" href="https://analogjs.org">Read the docs</a>
235
+ <a
236
+ target="_blank"
237
+ rel="noreferrer"
238
+ class="lightBtn"
239
+ href="https://github.com/analogjs/analog"
240
+ >Star on GitHub</a
241
+ >
242
+ </div>
243
+ </div>
244
+ </section>
245
+ <section id="counter-demo" class="section">
246
+ <div class="counter-container">
247
+ <h2 class="counter-heading">Counter</h2>
248
+ <p class="counter-description">
249
+ This is a simple interactive counter. Powered by Angular.
250
+ </p>
251
+ <button (click)="increment()" class="lightBtn">
252
+ Count: <span class="count">{{ count }}</span>
253
+ </button>
254
+ </div>
255
+ </section>
256
+ </main>
257
+ `,
258
+ })
259
+ export class AnalogWelcomeComponent {
260
+ count = 0;
261
+ increment() {
262
+ this.count++;
263
+ }
264
+ }