pastoria 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +44 -17
- package/dist/build.js.map +1 -1
- package/dist/generate.d.ts +1 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +315 -117
- package/dist/generate.js.map +1 -1
- package/package.json +3 -3
- package/src/build.ts +55 -20
- package/src/generate.ts +482 -167
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# pastoria
|
|
2
2
|
|
|
3
|
+
## 1.0.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1ae49d3: Update router generator to automatically create an entrypoint and
|
|
8
|
+
resource
|
|
9
|
+
- 4ed4588: Don't duplicate JSResource import when generating code
|
|
10
|
+
- e7e5519: Detect queries and entrypoints from type annotations
|
|
11
|
+
|
|
12
|
+
## 1.0.9
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 60ab948: Add support for routing shorthands
|
|
17
|
+
- 37afd6c: Add support for @serverRoute
|
|
18
|
+
|
|
3
19
|
## 1.0.8
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/build.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,YAAY,EACZ,KAAK,uBAAuB,EAE7B,MAAM,MAAM,CAAC;AA8Id,eAAO,MAAM,YAAY,EAAE,uBAK1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,uBAM1B,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,uBAAuB,GAChC,YAAY,CAyBd;AAED,wBAAsB,WAAW,kBAUhC"}
|
package/dist/build.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import react from '@vitejs/plugin-react';
|
|
2
1
|
import tailwindcss from '@tailwindcss/vite';
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
3
|
import { access } from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
|
-
import { cjsInterop } from 'vite-plugin-cjs-interop';
|
|
6
4
|
import { build, } from 'vite';
|
|
7
|
-
|
|
5
|
+
import { cjsInterop } from 'vite-plugin-cjs-interop';
|
|
6
|
+
function generateClientEntry({ hasAppRoot }) {
|
|
8
7
|
const appImport = hasAppRoot
|
|
9
8
|
? `import {App} from '#genfiles/router/app_root';`
|
|
10
9
|
: '';
|
|
@@ -22,11 +21,17 @@ async function main() {
|
|
|
22
21
|
main();
|
|
23
22
|
`;
|
|
24
23
|
}
|
|
25
|
-
function generateServerEntry(hasAppRoot) {
|
|
24
|
+
function generateServerEntry({ hasAppRoot, hasServerHandler, }) {
|
|
26
25
|
const appImport = hasAppRoot
|
|
27
26
|
? `import {App} from '#genfiles/router/app_root';`
|
|
28
27
|
: '';
|
|
29
28
|
const appValue = hasAppRoot ? 'App' : 'null';
|
|
29
|
+
const serverHandlerImport = hasServerHandler
|
|
30
|
+
? `import {router as serverHandler} from '#genfiles/router/server_handler';`
|
|
31
|
+
: '';
|
|
32
|
+
const serverHandlerUse = hasServerHandler
|
|
33
|
+
? ' router.use(serverHandler)'
|
|
34
|
+
: '';
|
|
30
35
|
return `// Generated by Pastoria.
|
|
31
36
|
import {JSResource} from '#genfiles/router/js_resource';
|
|
32
37
|
import {
|
|
@@ -37,6 +42,8 @@ import {
|
|
|
37
42
|
import {getSchema} from '#genfiles/schema/schema';
|
|
38
43
|
import {Context} from '#genfiles/router/context';
|
|
39
44
|
${appImport}
|
|
45
|
+
${serverHandlerImport}
|
|
46
|
+
import express from 'express';
|
|
40
47
|
import {GraphQLSchema, specifiedDirectives} from 'graphql';
|
|
41
48
|
import {PastoriaConfig} from 'pastoria-config';
|
|
42
49
|
import {createRouterHandler} from 'pastoria-runtime/server';
|
|
@@ -53,7 +60,7 @@ export function createHandler(
|
|
|
53
60
|
config: Required<PastoriaConfig>,
|
|
54
61
|
manifest?: Manifest,
|
|
55
62
|
) {
|
|
56
|
-
|
|
63
|
+
const routeHandler = createRouterHandler(
|
|
57
64
|
listRoutes(),
|
|
58
65
|
JSResource.srcOfModuleId,
|
|
59
66
|
router__loadEntryPoint,
|
|
@@ -65,9 +72,37 @@ export function createHandler(
|
|
|
65
72
|
config,
|
|
66
73
|
manifest,
|
|
67
74
|
);
|
|
75
|
+
|
|
76
|
+
const router = express.Router();
|
|
77
|
+
router.use(routeHandler);
|
|
78
|
+
${serverHandlerUse}
|
|
79
|
+
|
|
80
|
+
return router;
|
|
68
81
|
}
|
|
69
82
|
`;
|
|
70
83
|
}
|
|
84
|
+
async function determineCapabilities() {
|
|
85
|
+
const capabilities = {
|
|
86
|
+
hasAppRoot: false,
|
|
87
|
+
hasServerHandler: false,
|
|
88
|
+
};
|
|
89
|
+
async function hasAppRoot() {
|
|
90
|
+
try {
|
|
91
|
+
await access('__generated__/router/app_root.ts');
|
|
92
|
+
capabilities.hasAppRoot = true;
|
|
93
|
+
}
|
|
94
|
+
catch { }
|
|
95
|
+
}
|
|
96
|
+
async function hasServerHandler() {
|
|
97
|
+
try {
|
|
98
|
+
await access('__generated__/router/server_handler.ts');
|
|
99
|
+
capabilities.hasServerHandler = true;
|
|
100
|
+
}
|
|
101
|
+
catch { }
|
|
102
|
+
}
|
|
103
|
+
await Promise.all([hasAppRoot(), hasServerHandler()]);
|
|
104
|
+
return capabilities;
|
|
105
|
+
}
|
|
71
106
|
function pastoriaEntryPlugin() {
|
|
72
107
|
const clientEntryModuleId = 'virtual:pastoria-entry-client.tsx';
|
|
73
108
|
const serverEntryModuleId = 'virtual:pastoria-entry-server.tsx';
|
|
@@ -82,20 +117,12 @@ function pastoriaEntryPlugin() {
|
|
|
82
117
|
}
|
|
83
118
|
},
|
|
84
119
|
async load(id) {
|
|
85
|
-
const
|
|
86
|
-
let hasAppRoot = false;
|
|
87
|
-
try {
|
|
88
|
-
await access(appRootPath);
|
|
89
|
-
hasAppRoot = true;
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
hasAppRoot = false;
|
|
93
|
-
}
|
|
120
|
+
const capabilities = await determineCapabilities();
|
|
94
121
|
if (id === clientEntryModuleId) {
|
|
95
|
-
return generateClientEntry(
|
|
122
|
+
return generateClientEntry(capabilities);
|
|
96
123
|
}
|
|
97
124
|
else if (id === serverEntryModuleId) {
|
|
98
|
-
return generateServerEntry(
|
|
125
|
+
return generateServerEntry(capabilities);
|
|
99
126
|
}
|
|
100
127
|
},
|
|
101
128
|
};
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.d.ts
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* - Add @resource <resource-name> to exports for lazy loading
|
|
21
21
|
* - Add @appRoot to a component to designate it as the application root wrapper
|
|
22
22
|
* - Add @gqlContext to a class extending PastoriaRootContext to provide a custom GraphQL context
|
|
23
|
+
* - Add @serverRoute to functions to add an express handler
|
|
23
24
|
*
|
|
24
25
|
* The generator automatically creates Zod schemas for route parameters based on
|
|
25
26
|
* TypeScript types, enabling runtime validation and type safety.
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAotBH,wBAAsB,yBAAyB,kBAgB9C"}
|