@analogjs/platform 2.0.0-beta.2 → 2.0.0-beta.21

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 (39) hide show
  1. package/package.json +5 -5
  2. package/src/lib/content-plugin.d.ts +11 -1
  3. package/src/lib/content-plugin.js +38 -9
  4. package/src/lib/nx-plugin/src/generators/app/files/template-angular/src/app/app.config.ts__template__ +0 -6
  5. package/src/lib/nx-plugin/src/generators/app/files/template-angular/vite.config.ts__template__ +0 -8
  6. package/src/lib/nx-plugin/src/generators/app/generator.js +0 -12
  7. package/src/lib/nx-plugin/src/generators/app/generator.js.map +1 -1
  8. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js +0 -3
  9. package/src/lib/nx-plugin/src/generators/app/lib/add-home-page.js.map +1 -1
  10. package/src/lib/nx-plugin/src/generators/app/schema.d.ts +0 -1
  11. package/src/lib/nx-plugin/src/generators/app/schema.json +0 -6
  12. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.d.ts +0 -1
  13. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js +1 -3
  14. package/src/lib/nx-plugin/src/generators/app/versions/minimum-supported-versions.js.map +1 -1
  15. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.d.ts +5 -5
  16. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js +5 -5
  17. package/src/lib/nx-plugin/src/generators/app/versions/nx_18_X/versions.js.map +1 -1
  18. package/src/lib/nx-plugin/src/generators/preset/schema.d.ts +0 -1
  19. package/src/lib/nx-plugin/src/generators/preset/schema.json +0 -6
  20. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.d.ts +5 -5
  21. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js +5 -5
  22. package/src/lib/nx-plugin/src/utils/versions/ng_19_X/versions.js.map +1 -1
  23. package/src/lib/router-plugin.d.ts +14 -4
  24. package/src/lib/router-plugin.js +69 -16
  25. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/note.ts__template__ +0 -5
  26. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/server/routes/api/trpc/[trpc].ts__template__ +0 -10
  27. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/server/trpc/context.ts__template__ +0 -7
  28. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/server/trpc/routers/index.ts__template__ +0 -8
  29. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/server/trpc/routers/notes.ts__template__ +0 -32
  30. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/server/trpc/trpc.ts__template__ +0 -13
  31. package/src/lib/nx-plugin/src/generators/app/files/trpc/src/trpc-client.ts__template__ +0 -15
  32. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/css-trpc/src/app/pages/analog-welcome.component.ts__template__ +0 -439
  33. package/src/lib/nx-plugin/src/generators/app/files/welcome-components/tailwind-trpc/src/app/pages/analog-welcome.component.ts__template__ +0 -162
  34. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.d.ts +0 -3
  35. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js +0 -16
  36. package/src/lib/nx-plugin/src/generators/app/lib/add-trpc.js.map +0 -1
  37. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.d.ts +0 -4
  38. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.js +0 -44
  39. package/src/lib/nx-plugin/src/generators/app/versions/trpc-dependencies.js.map +0 -1
@@ -1,13 +1,23 @@
1
1
  import { normalizePath } from 'vite';
2
- import fg from 'fast-glob';
2
+ import { globSync } from 'tinyglobby';
3
3
  import { resolve } from 'node:path';
4
4
  /**
5
- * This plugin invalidates the files for routes when new files
6
- * are added/deleted.
5
+ * Router plugin that handles route file discovery and hot module replacement.
7
6
  *
8
- * Workaround for: https://github.com/vitejs/vite/issues/10616
7
+ * This plugin provides three main functionalities:
8
+ * 1. Route invalidation when files are added/deleted (HMR workaround)
9
+ * 2. Dynamic route file discovery and import generation
10
+ * 3. Content route file discovery for markdown and Analog content
9
11
  *
10
- * @returns
12
+ * @param options Configuration options for the router plugin
13
+ * @returns Array of Vite plugins for route handling
14
+ *
15
+ * IMPORTANT: This plugin uses tinyglobby for file discovery.
16
+ * Key behavior with { dot: true, absolute: true }:
17
+ * - Returns absolute paths for ALL discovered files
18
+ * - Path normalization is required to match expected output format
19
+ * - Files within project root must use relative paths in object keys
20
+ * - Files outside project root keep absolute paths in object keys
11
21
  */
12
22
  export function routerPlugin(options) {
13
23
  const workspaceRoot = normalizePath(options?.workspaceRoot ?? process.cwd());
@@ -17,6 +27,12 @@ export function routerPlugin(options) {
17
27
  {
18
28
  name: 'analogjs-router-invalidate-routes',
19
29
  configureServer(server) {
30
+ /**
31
+ * Invalidates route modules when files are added or deleted.
32
+ * This is a workaround for Vite's HMR limitations with dynamic imports.
33
+ *
34
+ * @param path The file path that was added or deleted
35
+ */
20
36
  function invalidateRoutes(path) {
21
37
  if (path.includes(`routes`) ||
22
38
  path.includes(`pages`) ||
@@ -46,26 +62,49 @@ export function routerPlugin(options) {
46
62
  config = _config;
47
63
  root = normalizePath(resolve(workspaceRoot, config.root || '.') || '.');
48
64
  },
65
+ /**
66
+ * Transforms code to replace ANALOG_ROUTE_FILES and ANALOG_CONTENT_ROUTE_FILES
67
+ * placeholders with actual dynamic imports of discovered route and content files.
68
+ *
69
+ * @param code The source code to transform
70
+ * @returns Transformed code with dynamic imports or undefined if no transformation needed
71
+ */
49
72
  transform(code) {
50
73
  if (code.includes('ANALOG_ROUTE_FILES') ||
51
74
  code.includes('ANALOG_CONTENT_ROUTE_FILES')) {
52
- const routeFiles = fg.sync([
75
+ // Discover route files using tinyglobby
76
+ // NOTE: { absolute: true } returns absolute paths for ALL files
77
+ const routeFiles = globSync([
53
78
  `${root}/app/routes/**/*.ts`,
54
79
  `${root}/src/app/routes/**/*.ts`,
55
80
  `${root}/src/app/pages/**/*.page.ts`,
56
81
  ...(options?.additionalPagesDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.page.ts`),
57
- ], { dot: true });
58
- const contentRouteFiles = fg.sync([
82
+ ], { dot: true, absolute: true });
83
+ // Discover content files using tinyglobby
84
+ const contentRouteFiles = globSync([
59
85
  `${root}/src/app/routes/**/*.md`,
60
86
  `${root}/src/app/pages/**/*.md`,
61
87
  `${root}/src/content/**/*.md`,
62
88
  ...(options?.additionalContentDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.md`),
63
- ], { dot: true });
89
+ ], { dot: true, absolute: true });
64
90
  let result = code.replace('ANALOG_ROUTE_FILES = {};', `
65
- ANALOG_ROUTE_FILES = {${routeFiles.map((module) => `"${module.replace(root, '')}": () => import('${module}')`)}};
91
+ ANALOG_ROUTE_FILES = {${routeFiles.map((module) => {
92
+ // CRITICAL: tinyglobby returns absolute paths, but we need relative paths for project files
93
+ // to match expected output format. Library files keep absolute paths.
94
+ const key = module.startsWith(root)
95
+ ? module.replace(root, '')
96
+ : module;
97
+ return `"${key}": () => import('${module}')`;
98
+ })}};
66
99
  `);
67
100
  result = result.replace('ANALOG_CONTENT_ROUTE_FILES = {};', `
68
- ANALOG_CONTENT_ROUTE_FILES = {${contentRouteFiles.map((module) => `"${module.replace(root, '')}": () => import('${module}?analog-content-file=true').then(m => m.default)`)}};
101
+ ANALOG_CONTENT_ROUTE_FILES = {${contentRouteFiles.map((module) => {
102
+ // Same path normalization as route files
103
+ const key = module.startsWith(root)
104
+ ? module.replace(root, '')
105
+ : module;
106
+ return `"${key}": () => import('${module}?analog-content-file=true').then(m => m.default)`;
107
+ })}};
69
108
  `);
70
109
  return {
71
110
  code: result,
@@ -77,14 +116,28 @@ export function routerPlugin(options) {
77
116
  },
78
117
  {
79
118
  name: 'analog-glob-endpoints',
119
+ /**
120
+ * Transforms code to replace ANALOG_PAGE_ENDPOINTS placeholder
121
+ * with actual dynamic imports of discovered server endpoint files.
122
+ *
123
+ * @param code The source code to transform
124
+ * @returns Transformed code with dynamic imports or undefined if no transformation needed
125
+ */
80
126
  transform(code) {
81
127
  if (code.includes('ANALOG_PAGE_ENDPOINTS')) {
82
- const endpointFiles = fg.sync([
128
+ // Discover server endpoint files using tinyglobby
129
+ const endpointFiles = globSync([
83
130
  `${root}/src/app/pages/**/*.server.ts`,
84
- ...(options?.additionalPagesDirs || [])?.map((glob) => `${workspaceRoot}${glob}/**/*.server.ts`),
85
- ], { dot: true });
131
+ ...(options?.additionalPagesDirs || []).map((glob) => `${workspaceRoot}${glob}/**/*.server.ts`),
132
+ ], { dot: true, absolute: true });
86
133
  const result = code.replace('ANALOG_PAGE_ENDPOINTS = {};', `
87
- ANALOG_PAGE_ENDPOINTS = {${endpointFiles.map((module) => `"${module.replace(root, '')}": () => import('${module}')`)}};
134
+ ANALOG_PAGE_ENDPOINTS = {${endpointFiles.map((module) => {
135
+ // Same path normalization for consistency
136
+ const key = module.startsWith(root)
137
+ ? module.replace(root, '')
138
+ : module;
139
+ return `"${key}": () => import('${module}')`;
140
+ })}};
88
141
  `);
89
142
  return {
90
143
  code: result,
@@ -96,4 +149,4 @@ export function routerPlugin(options) {
96
149
  },
97
150
  ];
98
151
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvcm91dGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlwQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFpQjtJQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3RSxJQUFJLE1BQWtCLENBQUM7SUFDdkIsSUFBSSxJQUFZLENBQUM7SUFFakIsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLG1DQUFtQztZQUN6QyxlQUFlLENBQUMsTUFBTTtnQkFDcEIsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFZO29CQUNwQyxJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO3dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDeEIsQ0FBQzt3QkFDRCxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFOzRCQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0NBQ25CLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQ0FDN0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FFekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3Q0FDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDM0MsQ0FBQyxDQUFDLENBQUM7Z0NBQ0wsQ0FBQzs0QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQzt3QkFFSCxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs0QkFDYixJQUFJLEVBQUUsYUFBYTt5QkFDcEIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDaEQsQ0FBQztTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLE1BQU0sQ0FBQyxPQUFPO2dCQUNaLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLElBQUksR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxTQUFTLENBQUMsSUFBSTtnQkFDWixJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7b0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsRUFDM0MsQ0FBQztvQkFDRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUMsSUFBSSxDQUNsQzt3QkFDRSxHQUFHLElBQUkscUJBQXFCO3dCQUM1QixHQUFHLElBQUkseUJBQXlCO3dCQUNoQyxHQUFHLElBQUksNkJBQTZCO3dCQUNwQyxHQUFHLENBQUMsT0FBTyxFQUFFLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FDMUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsYUFBYSxHQUFHLElBQUksZUFBZSxDQUNqRDtxQkFDRixFQUNELEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUNkLENBQUM7b0JBRUYsTUFBTSxpQkFBaUIsR0FBYSxFQUFFLENBQUMsSUFBSSxDQUN6Qzt3QkFDRSxHQUFHLElBQUkseUJBQXlCO3dCQUNoQyxHQUFHLElBQUksd0JBQXdCO3dCQUMvQixHQUFHLElBQUksc0JBQXNCO3dCQUM3QixHQUFHLENBQUMsT0FBTyxFQUFFLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FDNUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsYUFBYSxHQUFHLElBQUksVUFBVSxDQUM1QztxQkFDRixFQUNELEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUNkLENBQUM7b0JBRUYsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDdkIsMEJBQTBCLEVBQzFCO29DQUN3QixVQUFVLENBQUMsR0FBRyxDQUNwQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLE1BQU0sSUFBSSxDQUM3RDtXQUNGLENBQ0EsQ0FBQztvQkFFRixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDckIsa0NBQWtDLEVBQ2xDOzBDQUM4QixpQkFBaUIsQ0FBQyxHQUFHLENBQ25ELENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQ2hCLElBQUksRUFDSixFQUFFLENBQ0gsb0JBQW9CLE1BQU0sa0RBQWtELENBQ2hGO1dBQ0EsQ0FDQSxDQUFDO29CQUVGLE9BQU87d0JBQ0wsSUFBSSxFQUFFLE1BQU07d0JBQ1osR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtxQkFDdEIsQ0FBQztnQkFDSixDQUFDO2dCQUVELE9BQU87WUFDVCxDQUFDO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSx1QkFBdUI7WUFDN0IsU0FBUyxDQUFDLElBQUk7Z0JBQ1osSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztvQkFDM0MsTUFBTSxhQUFhLEdBQWEsRUFBRSxDQUFDLElBQUksQ0FDckM7d0JBQ0UsR0FBRyxJQUFJLCtCQUErQjt3QkFDdEMsR0FBRyxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQzFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLGFBQWEsR0FBRyxJQUFJLGlCQUFpQixDQUNuRDtxQkFDRixFQUNELEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUNkLENBQUM7b0JBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FDekIsNkJBQTZCLEVBQzdCO3VDQUMyQixhQUFhLENBQUMsR0FBRyxDQUMxQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ1QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLE1BQU0sSUFBSSxDQUM3RDtXQUNGLENBQ0EsQ0FBQztvQkFFRixPQUFPO3dCQUNMLElBQUksRUFBRSxNQUFNO3dCQUNaLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7cUJBQ3RCLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxPQUFPO1lBQ1QsQ0FBQztTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtL3NyYy9saWIvcm91dGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJcEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFpQjtJQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3RSxJQUFJLE1BQWtCLENBQUM7SUFDdkIsSUFBSSxJQUFZLENBQUM7SUFFakIsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLG1DQUFtQztZQUN6QyxlQUFlLENBQUMsTUFBTTtnQkFDcEI7Ozs7O21CQUtHO2dCQUNILFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtvQkFDcEMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3hCLENBQUM7d0JBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dDQUNuQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxF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
@@ -1,5 +0,0 @@
1
- export type Note = {
2
- id: number;
3
- note: string;
4
- createdAt: string;
5
- };
@@ -1,10 +0,0 @@
1
- import { createTrpcNitroHandler } from '@analogjs/trpc/server';
2
-
3
- import { appRouter } from '../../../trpc/routers';
4
- import { createContext } from '../../../trpc/context';
5
-
6
- // export API handler
7
- export default createTrpcNitroHandler({
8
- router: appRouter,
9
- createContext,
10
- });
@@ -1,7 +0,0 @@
1
- import { inferAsyncReturnType } from '@trpc/server';
2
- /**
3
- * Creates context for an incoming request
4
- * @link https://trpc.io/docs/context
5
- */
6
- export const createContext = () => ({});
7
- export type Context = inferAsyncReturnType<typeof createContext>;
@@ -1,8 +0,0 @@
1
- import { router } from '../trpc';
2
- import { noteRouter } from './notes';
3
-
4
- export const appRouter = router({
5
- note: noteRouter,
6
- });
7
- // export type definition of API
8
- export type AppRouter = typeof appRouter;
@@ -1,32 +0,0 @@
1
- import { z } from 'zod';
2
- import { publicProcedure, router } from '../trpc';
3
- import { Note } from '../../../note';
4
-
5
- let noteId = 0;
6
- const notes: Note[] = [];
7
- export const noteRouter = router({
8
- create: publicProcedure
9
- .input(
10
- z.object({
11
- note: z.string(),
12
- })
13
- )
14
- .mutation(({ input }) =>
15
- notes.push({
16
- id: noteId++,
17
- note: input.note,
18
- createdAt: new Date().toISOString(),
19
- })
20
- ),
21
- list: publicProcedure.query(() => notes),
22
- remove: publicProcedure
23
- .input(
24
- z.object({
25
- id: z.number(),
26
- })
27
- )
28
- .mutation(({ input }) => {
29
- const index = notes.findIndex((note) => input.id === note.id);
30
- notes.splice(index, 1);
31
- }),
32
- });
@@ -1,13 +0,0 @@
1
- import { initTRPC } from '@trpc/server';
2
- import { Context } from './context';
3
- import { SuperJSON } from 'superjson';
4
-
5
- const t = initTRPC.context<Context>().create({
6
- transformer: SuperJSON,
7
- });
8
- /**
9
- * Unprotected procedure
10
- **/
11
- export const publicProcedure = t.procedure;
12
- export const router = t.router;
13
- export const middleware = t.middleware;
@@ -1,15 +0,0 @@
1
- import { AppRouter } from './server/trpc/routers';
2
- import { createTrpcClient } from '@analogjs/trpc';
3
- import { inject } from '@angular/core';
4
- import { SuperJSON } from 'superjson';
5
-
6
- export const { provideTrpcClient, TrpcClient } = createTrpcClient<AppRouter>({
7
- url: '/api/trpc',
8
- options: {
9
- transformer: SuperJSON,
10
- },
11
- });
12
-
13
- export function injectTrpcClient() {
14
- return inject(TrpcClient);
15
- }