@kosmojs/dev 0.0.11 → 0.0.20
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/package.json +8 -41
- package/pkg/base-plugin/worker.js +252 -102
- package/pkg/base-plugin/worker.js.map +4 -4
- package/pkg/index.js +540 -206
- package/pkg/index.js.map +4 -4
- package/pkg/src/{base-plugin/ast.d.ts → ast.d.ts} +3 -3
- package/pkg/src/base-plugin/api-handler.d.ts +1 -1
- package/pkg/src/base-plugin/index.d.ts +1 -1
- package/pkg/src/base-plugin/worker.d.ts +1 -1
- package/pkg/src/{base-plugin/cache.d.ts → cache.d.ts} +2 -2
- package/pkg/src/defaults.d.ts +13 -0
- package/pkg/src/fs.d.ts +1 -0
- package/pkg/src/index.d.ts +6 -3
- package/pkg/src/paths.d.ts +13 -0
- package/pkg/src/render.d.ts +28 -0
- package/pkg/src/routes-factory/base.d.ts +17 -0
- package/pkg/src/routes-factory/index.d.ts +8 -0
- package/pkg/src/routes-factory/nesting.d.ts +3 -0
- package/pkg/src/{base-plugin/routes → routes-factory}/resolve.d.ts +3 -3
- package/pkg/src/stub-generator/index.d.ts +1 -1
- package/pkg/src/typebox.d.ts +2 -0
- package/pkg/src/types.d.ts +288 -0
- package/pkg/stub-generator/index.js +166 -24
- package/pkg/stub-generator/index.js.map +4 -4
- package/pkg/test/routes/{base.d.ts → index.d.ts} +2 -2
- package/pkg/base-plugin/routes.js +0 -819
- package/pkg/base-plugin/routes.js.map +0 -7
- package/pkg/cli/cli.js +0 -583
- package/pkg/cli/cli.js.map +0 -7
- package/pkg/cli/index.js +0 -422
- package/pkg/cli/index.js.map +0 -7
- package/pkg/cli/templates/.env +0 -1
- package/pkg/cli/templates/@src/api/app.hbs +0 -32
- package/pkg/cli/templates/@src/api/router.hbs +0 -11
- package/pkg/cli/templates/@src/api/server.hbs +0 -4
- package/pkg/cli/templates/@src/api/use.hbs +0 -6
- package/pkg/cli/templates/@src/config/index.hbs +0 -2
- package/pkg/cli/templates/@src/index.html +0 -4
- package/pkg/cli/templates/@src/vite.config.hbs +0 -29
- package/pkg/cli/templates/core/api/app.ts +0 -6
- package/pkg/cli/templates/core/api/env.d.ts +0 -4
- package/pkg/cli/templates/core/api/errors.ts +0 -18
- package/pkg/cli/templates/core/api/router.ts +0 -6
- package/pkg/cli/templates/core/api/server.ts +0 -63
- package/pkg/cli/templates/core/api/use.ts +0 -25
- package/pkg/cli/templates/vite.base.hbs +0 -44
- package/pkg/src/base-plugin/routes/nesting.d.ts +0 -5
- package/pkg/src/base-plugin/routes.d.ts +0 -9
- package/pkg/src/cli/base.d.ts +0 -30
- package/pkg/src/cli/cli.d.ts +0 -2
- package/pkg/src/cli/factory.d.ts +0 -12
- package/pkg/src/cli/index.d.ts +0 -2
- package/pkg/src/cli/templates/core/api/app.d.ts +0 -3
- package/pkg/src/cli/templates/core/api/errors.d.ts +0 -1
- package/pkg/src/cli/templates/core/api/router.d.ts +0 -3
- package/pkg/src/cli/templates/core/api/server.d.ts +0 -3
- package/pkg/src/cli/templates/core/api/use.d.ts +0 -2
- package/pkg/test/setup.d.ts +0 -1
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/articles/[...path]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/[category]/[[author]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/[category]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/files/[[folder]]/[[id]].json/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/files/[[folder]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/index/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/pages/[...path].html/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/api/users/[id].json/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/careers/[jobId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/careers/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/team/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/account/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/account/profile/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/[...path]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/general/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/permissions/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/[userId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/[[category]]/[[tag]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/[[category]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/post/[slug]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/post/[slug]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/contact/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/contact/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/courses/[courseId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/courses/[courseId]/lessons/[[lessonId]]/assignments/[...assignmentPath]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/[view]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/analytics/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/billing/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/notifications/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/profile/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/security/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/security/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/[...path]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/files/[...filePath]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/files/[...filePath]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/privacy/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/terms/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/news/[category]/articles/[...articlePath]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/news/[category]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/data/[dataView]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/data/[dataView]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/products/[id]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/products/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/posts/[postId]/comments/[...thread]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/posts/[postId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/[...path]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/[commentId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/[userId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/[[city]]/filters/[...filters]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/filters/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/[[query]]/[[page]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/[[query]]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/[category]/[productId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/[category]/[productId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/cart/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/confirm/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/payment/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/shipping/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/shipping/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/[orderId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/reviews/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/[[category]]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/signup/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/filters/[...filters]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/sort/[sortBy]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/sort/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/followers/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/following/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/[postId]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/[postId]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/[range]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/[range]/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/layout.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/team/[memberId]/permissions/[...permissionPath]/index.d.ts +0 -0
- /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/team/layout.d.ts +0 -0
- /package/pkg/test/{cli/create.test.d.ts → routes/routes.test.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@kosmojs/dev",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.20",
|
|
5
5
|
"cacheVersion": "001",
|
|
6
6
|
"author": "Slee Woo",
|
|
7
7
|
"license": "MIT",
|
|
@@ -11,71 +11,38 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"pkg/*"
|
|
13
13
|
],
|
|
14
|
-
"bin": {
|
|
15
|
-
"kosmo": "pkg/cli/cli.js"
|
|
16
|
-
},
|
|
17
14
|
"exports": {
|
|
18
15
|
".": {
|
|
19
16
|
"types": "./pkg/src/index.d.ts",
|
|
20
17
|
"default": "./pkg/index.js"
|
|
21
18
|
},
|
|
22
|
-
"./routes": {
|
|
23
|
-
"types": "./pkg/src/base-plugin/routes.d.ts",
|
|
24
|
-
"default": "./pkg/base-plugin/routes.js"
|
|
25
|
-
},
|
|
26
19
|
"./stub-generator": {
|
|
27
20
|
"types": "./pkg/src/stub-generator/index.d.ts",
|
|
28
21
|
"default": "./pkg/stub-generator/index.js"
|
|
29
22
|
},
|
|
30
|
-
"./cli": {
|
|
31
|
-
"types": "./pkg/src/cli/index.d.ts",
|
|
32
|
-
"default": "./pkg/cli/index.js"
|
|
33
|
-
},
|
|
34
23
|
"./package.json": "./package.json"
|
|
35
24
|
},
|
|
36
25
|
"dependencies": {
|
|
37
26
|
"chokidar": "^5.0.0",
|
|
38
|
-
"concurrently": "^9.2.1",
|
|
39
27
|
"crc": "^4.3.2",
|
|
40
28
|
"dotenv": "^17.2.3",
|
|
41
29
|
"esbuild": "^0.27.2",
|
|
30
|
+
"handlebars": "^4.7.8",
|
|
42
31
|
"ora": "^9.0.0",
|
|
43
32
|
"picomatch": "^4.0.3",
|
|
44
|
-
"prompts": "^2.4.2",
|
|
45
33
|
"tfusion": "^0.0.23",
|
|
46
34
|
"tinyglobby": "^0.2.15",
|
|
47
35
|
"ts-morph": "^27.0.2",
|
|
48
|
-
"typescript": "^5.9.3"
|
|
49
|
-
"@kosmojs/api": "^0.0.11",
|
|
50
|
-
"@kosmojs/devlib": "^0.0.11",
|
|
51
|
-
"@kosmojs/fetch-generator": "^0.0.11",
|
|
52
|
-
"@kosmojs/api-generator": "^0.0.11"
|
|
36
|
+
"typescript": "^5.9.3"
|
|
53
37
|
},
|
|
54
38
|
"devDependencies": {
|
|
55
|
-
"@
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"@
|
|
59
|
-
"@types/picomatch": "^4.0.2",
|
|
60
|
-
"@types/prompts": "^2.4.9",
|
|
61
|
-
"@types/react": "^19.2.7",
|
|
62
|
-
"@types/react-dom": "^19.2.3",
|
|
63
|
-
"@vitejs/plugin-react": "^5.1.2",
|
|
64
|
-
"@vitejs/plugin-vue": "^6.0.3",
|
|
65
|
-
"react": "^19.2.3",
|
|
66
|
-
"react-dom": "^19.2.3",
|
|
67
|
-
"react-router": "^7.10.1",
|
|
68
|
-
"solid-js": "^1.9.10",
|
|
69
|
-
"tslib": "^2.8.1",
|
|
70
|
-
"vite": "^7.3.0",
|
|
71
|
-
"vite-plugin-solid": "^2.11.10",
|
|
72
|
-
"vue": "^3.5.25",
|
|
73
|
-
"vue-router": "^4.6.4",
|
|
74
|
-
"@kosmojs/config": "^0.0.11"
|
|
39
|
+
"@types/picomatch": "^4.0.2"
|
|
40
|
+
},
|
|
41
|
+
"peerDependencies": {
|
|
42
|
+
"@kosmojs/api": "^0.0.20"
|
|
75
43
|
},
|
|
76
44
|
"scripts": {
|
|
77
|
-
"build": "esbuilder src/index.ts src/base-plugin/
|
|
78
|
-
"postbuild": "rsync -av --delete src/cli/templates/ pkg/cli/templates",
|
|
45
|
+
"build": "esbuilder src/index.ts src/base-plugin/worker.ts src/stub-generator/index.ts",
|
|
79
46
|
"test": "vitest --root ../../.. --project core/dev"
|
|
80
47
|
}
|
|
81
48
|
}
|
|
@@ -1,32 +1,161 @@
|
|
|
1
1
|
// src/base-plugin/worker.ts
|
|
2
2
|
import { parentPort, workerData } from "node:worker_threads";
|
|
3
3
|
import chokidar from "chokidar";
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
pathResolver as pathResolver3
|
|
7
|
-
} from "@kosmojs/devlib";
|
|
4
|
+
import crc6 from "crc/crc32";
|
|
8
5
|
|
|
9
|
-
// src/
|
|
10
|
-
import {
|
|
11
|
-
defaults as defaults2
|
|
12
|
-
} from "@kosmojs/devlib";
|
|
6
|
+
// src/paths.ts
|
|
7
|
+
import { join } from "node:path";
|
|
13
8
|
|
|
14
|
-
// src/
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
// src/defaults.ts
|
|
10
|
+
var defaults = {
|
|
11
|
+
appPrefix: "~",
|
|
12
|
+
srcPrefix: "@",
|
|
13
|
+
libPrefix: "_",
|
|
14
|
+
coreDir: "core",
|
|
15
|
+
srcDir: "src",
|
|
16
|
+
libDir: "lib",
|
|
17
|
+
configDir: "config",
|
|
18
|
+
apiDir: "api",
|
|
19
|
+
pagesDir: "pages",
|
|
20
|
+
entryDir: "entry",
|
|
21
|
+
fetchDir: "fetch"
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/paths.ts
|
|
25
|
+
var pathResolver = ({
|
|
26
|
+
appRoot: appRoot2,
|
|
27
|
+
sourceFolder: sourceFolder2
|
|
28
|
+
}) => {
|
|
29
|
+
const createPath2 = (...a) => {
|
|
30
|
+
return appRoot2 ? join(appRoot2, ...a) : join(...a);
|
|
31
|
+
};
|
|
32
|
+
const createImport = {
|
|
33
|
+
coreApi(...a) {
|
|
34
|
+
return join(defaults.appPrefix, defaults.coreDir, defaults.apiDir, ...a);
|
|
35
|
+
},
|
|
36
|
+
src(...a) {
|
|
37
|
+
return join(defaults.srcPrefix, sourceFolder2, ...a);
|
|
38
|
+
},
|
|
39
|
+
config(...a) {
|
|
40
|
+
return this.src(defaults.configDir, ...a);
|
|
41
|
+
},
|
|
42
|
+
api(...a) {
|
|
43
|
+
return this.src(defaults.apiDir, ...a);
|
|
44
|
+
},
|
|
45
|
+
pages(...a) {
|
|
46
|
+
return this.src(defaults.pagesDir, ...a);
|
|
47
|
+
},
|
|
48
|
+
lib(...a) {
|
|
49
|
+
return join(defaults.libPrefix, sourceFolder2, ...a);
|
|
50
|
+
},
|
|
51
|
+
libApi(...a) {
|
|
52
|
+
return this.lib(defaults.apiDir, ...a);
|
|
53
|
+
},
|
|
54
|
+
libEntry(...a) {
|
|
55
|
+
return this.lib(defaults.entryDir, ...a);
|
|
56
|
+
},
|
|
57
|
+
fetch(...a) {
|
|
58
|
+
return this.lib(defaults.fetchDir, ...a);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
createPath: {
|
|
63
|
+
coreApi(...a) {
|
|
64
|
+
return createPath2(defaults.coreDir, defaults.apiDir, ...a);
|
|
65
|
+
},
|
|
66
|
+
src(...a) {
|
|
67
|
+
return createPath2(defaults.srcDir, sourceFolder2, ...a);
|
|
68
|
+
},
|
|
69
|
+
api(...a) {
|
|
70
|
+
return this.src(defaults.apiDir, ...a);
|
|
71
|
+
},
|
|
72
|
+
pages(...a) {
|
|
73
|
+
return this.src(defaults.pagesDir, ...a);
|
|
74
|
+
},
|
|
75
|
+
config(...a) {
|
|
76
|
+
return this.src(defaults.configDir, ...a);
|
|
77
|
+
},
|
|
78
|
+
entry(...a) {
|
|
79
|
+
return this.src(defaults.entryDir, ...a);
|
|
80
|
+
},
|
|
81
|
+
lib(...a) {
|
|
82
|
+
return createPath2(defaults.libDir, defaults.srcDir, sourceFolder2, ...a);
|
|
83
|
+
},
|
|
84
|
+
libApi(...a) {
|
|
85
|
+
return this.lib(defaults.apiDir, ...a);
|
|
86
|
+
},
|
|
87
|
+
libEntry(...a) {
|
|
88
|
+
return this.lib(defaults.entryDir, ...a);
|
|
89
|
+
},
|
|
90
|
+
libPages(...a) {
|
|
91
|
+
return this.lib(defaults.pagesDir, ...a);
|
|
92
|
+
},
|
|
93
|
+
fetch(...a) {
|
|
94
|
+
return this.lib(defaults.fetchDir, ...a);
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
createImport,
|
|
98
|
+
createImportHelper: (key, ...a) => {
|
|
99
|
+
return createImport[key](...a.slice(0, -1));
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// src/routes-factory/resolve.ts
|
|
105
|
+
import { dirname as dirname3, join as join3, resolve as resolve3 } from "node:path";
|
|
106
|
+
import crc5 from "crc/crc32";
|
|
17
107
|
import picomatch from "picomatch";
|
|
18
108
|
import { glob } from "tinyglobby";
|
|
19
|
-
import {
|
|
20
|
-
defaults,
|
|
21
|
-
pathResolver as pathResolver2,
|
|
22
|
-
pathTokensFactory,
|
|
23
|
-
render,
|
|
24
|
-
renderToFile
|
|
25
|
-
} from "@kosmojs/devlib";
|
|
26
109
|
|
|
27
|
-
// src/
|
|
28
|
-
import {
|
|
110
|
+
// src/render.ts
|
|
111
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
112
|
+
import { dirname, join as join2 } from "node:path";
|
|
29
113
|
import crc from "crc/crc32";
|
|
114
|
+
import handlebars from "handlebars";
|
|
115
|
+
|
|
116
|
+
// src/fs.ts
|
|
117
|
+
import { access, constants } from "node:fs/promises";
|
|
118
|
+
var pathExists = async (path) => {
|
|
119
|
+
try {
|
|
120
|
+
await access(path, constants.F_OK);
|
|
121
|
+
return true;
|
|
122
|
+
} catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/render.ts
|
|
128
|
+
var render = (template, context, options) => {
|
|
129
|
+
const { noEscape = true, renderer = handlebars } = { ...options };
|
|
130
|
+
return renderer.compile(template, { noEscape })(context);
|
|
131
|
+
};
|
|
132
|
+
var renderAsFile = (file, template, context, options) => {
|
|
133
|
+
const { formatters: formatters2, ...renderOpts } = { ...options };
|
|
134
|
+
const content = render(template, context, renderOpts);
|
|
135
|
+
return Array.isArray(formatters2) ? formatters2.reduce((c, f) => f(c, file), content) : content;
|
|
136
|
+
};
|
|
137
|
+
var renderToFile = async (file, template, context, options) => {
|
|
138
|
+
const content = renderAsFile(file, template, context, options);
|
|
139
|
+
if (await pathExists(file)) {
|
|
140
|
+
const { overwrite = true } = { ...options };
|
|
141
|
+
if (overwrite === false) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const fileContent = await readFile(file, "utf8");
|
|
145
|
+
if (typeof overwrite === "function" && !overwrite(fileContent)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (crc(content) === crc(fileContent)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
await mkdir(dirname(file), { recursive: true });
|
|
153
|
+
await writeFile(file, content, "utf8");
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
// src/ast.ts
|
|
157
|
+
import { resolve } from "node:path";
|
|
158
|
+
import crc2 from "crc/crc32";
|
|
30
159
|
import { flattener } from "tfusion";
|
|
31
160
|
import {
|
|
32
161
|
Project,
|
|
@@ -113,14 +242,14 @@ var extractRouteMethods = (callExpression, route) => {
|
|
|
113
242
|
const payloadText = payloadGeneric?.node ? payloadGeneric.node.getChildren().length === 0 ? "{}" : payloadGeneric.node.getFullText() : void 0;
|
|
114
243
|
const responseText = responseGeneric?.node.getText();
|
|
115
244
|
const responseType = responseText ? {
|
|
116
|
-
id: ["ResponseT",
|
|
245
|
+
id: ["ResponseT", crc2(route.id + method)].join(""),
|
|
117
246
|
method,
|
|
118
247
|
skipValidation: responseGeneric?.comments ? responseGeneric.comments.some(skipValidationFilter) : false,
|
|
119
248
|
text: ["never", "object"].includes(responseText) ? "{}" : responseText,
|
|
120
249
|
resolvedType: void 0
|
|
121
250
|
} : void 0;
|
|
122
251
|
const payloadType = payloadText ? {
|
|
123
|
-
id: ["PayloadT",
|
|
252
|
+
id: ["PayloadT", crc2(route.id + method)].join(""),
|
|
124
253
|
responseTypeId: responseType?.id,
|
|
125
254
|
method,
|
|
126
255
|
skipValidation: payloadGeneric?.comments ? payloadGeneric.comments.some(skipValidationFilter) : false,
|
|
@@ -254,7 +383,7 @@ var typeResolverFactory = ({ appRoot: appRoot2 }) => {
|
|
|
254
383
|
});
|
|
255
384
|
const literalTypesResolver = (literalTypes, options) => {
|
|
256
385
|
const sourceFile = project.createSourceFile(
|
|
257
|
-
`${
|
|
386
|
+
`${crc2(literalTypes)}-${Date.now()}.ts`,
|
|
258
387
|
literalTypes,
|
|
259
388
|
{ overwrite: true }
|
|
260
389
|
);
|
|
@@ -279,12 +408,11 @@ var typeResolverFactory = ({ appRoot: appRoot2 }) => {
|
|
|
279
408
|
};
|
|
280
409
|
};
|
|
281
410
|
|
|
282
|
-
// src/
|
|
283
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
284
|
-
import { dirname, resolve as resolve2 } from "node:path";
|
|
285
|
-
import
|
|
411
|
+
// src/cache.ts
|
|
412
|
+
import { mkdir as mkdir2, readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
|
|
413
|
+
import { dirname as dirname2, resolve as resolve2 } from "node:path";
|
|
414
|
+
import crc3 from "crc/crc32";
|
|
286
415
|
import self from "@kosmojs/dev/package.json" with { type: "json" };
|
|
287
|
-
import { pathExists, pathResolver } from "@kosmojs/devlib";
|
|
288
416
|
var cacheFactory = (route, {
|
|
289
417
|
appRoot: appRoot2,
|
|
290
418
|
sourceFolder: sourceFolder2,
|
|
@@ -293,11 +421,11 @@ var cacheFactory = (route, {
|
|
|
293
421
|
const cacheFile = pathResolver({
|
|
294
422
|
appRoot: appRoot2,
|
|
295
423
|
sourceFolder: sourceFolder2
|
|
296
|
-
}).
|
|
424
|
+
}).createPath.libApi(dirname2(route.file), "cache.json");
|
|
297
425
|
const getCache = async (opt) => {
|
|
298
426
|
if (await pathExists(cacheFile)) {
|
|
299
427
|
try {
|
|
300
|
-
const cache = JSON.parse(await
|
|
428
|
+
const cache = JSON.parse(await readFile2(cacheFile, "utf8"));
|
|
301
429
|
return opt?.validate ? validateCache(cache) : cache;
|
|
302
430
|
} catch (_e) {
|
|
303
431
|
}
|
|
@@ -320,8 +448,8 @@ var cacheFactory = (route, {
|
|
|
320
448
|
] = await generateFileHash(file);
|
|
321
449
|
}
|
|
322
450
|
const cache = { ...rest, hash, referencedFiles };
|
|
323
|
-
await
|
|
324
|
-
await
|
|
451
|
+
await mkdir2(dirname2(cacheFile), { recursive: true });
|
|
452
|
+
await writeFile2(cacheFile, JSON.stringify(cache, null, 2), "utf8");
|
|
325
453
|
return cache;
|
|
326
454
|
};
|
|
327
455
|
const validateCache = async (cache) => {
|
|
@@ -353,11 +481,11 @@ var cacheFactory = (route, {
|
|
|
353
481
|
var generateFileHash = async (file, extraContext) => {
|
|
354
482
|
let fileContent;
|
|
355
483
|
try {
|
|
356
|
-
fileContent = await
|
|
484
|
+
fileContent = await readFile2(file, "utf8");
|
|
357
485
|
} catch (_e) {
|
|
358
486
|
return 0;
|
|
359
487
|
}
|
|
360
|
-
return fileContent ?
|
|
488
|
+
return fileContent ? crc3(
|
|
361
489
|
JSON.stringify({
|
|
362
490
|
...extraContext,
|
|
363
491
|
[self.cacheVersion]: fileContent
|
|
@@ -368,13 +496,63 @@ var identicalHashSum = (a, b) => {
|
|
|
368
496
|
return a === b;
|
|
369
497
|
};
|
|
370
498
|
|
|
371
|
-
// src/
|
|
499
|
+
// src/routes-factory/base.ts
|
|
500
|
+
import crc4 from "crc/crc32";
|
|
501
|
+
var pathTokensFactory = (path) => {
|
|
502
|
+
const requiredParamRegex = /^\[([^\]]+)\]$/;
|
|
503
|
+
const optionalParamRegex = /^\[\[([^\]]+)\]\]$/;
|
|
504
|
+
const restParamRegex = /^\[\.\.\.([^\]]+)\]$/;
|
|
505
|
+
return path.split("/").map((orig, i) => {
|
|
506
|
+
const [base, ext = ""] = orig.split(/(\.([\w\d-]+)$)/);
|
|
507
|
+
const paramBase = (regex) => {
|
|
508
|
+
const name = base.replace(regex, "$1") || base;
|
|
509
|
+
return {
|
|
510
|
+
name,
|
|
511
|
+
const: /\W/.test(name) ? [name.replace(/\W/g, "_"), crc4(orig)].join("_") : name
|
|
512
|
+
};
|
|
513
|
+
};
|
|
514
|
+
let param;
|
|
515
|
+
if (base.startsWith("[")) {
|
|
516
|
+
if (restParamRegex.test(base)) {
|
|
517
|
+
param = {
|
|
518
|
+
...paramBase(restParamRegex),
|
|
519
|
+
isRequired: false,
|
|
520
|
+
isOptional: false,
|
|
521
|
+
isRest: true
|
|
522
|
+
};
|
|
523
|
+
} else if (optionalParamRegex.test(base)) {
|
|
524
|
+
param = {
|
|
525
|
+
...paramBase(optionalParamRegex),
|
|
526
|
+
isRequired: false,
|
|
527
|
+
isOptional: true,
|
|
528
|
+
isRest: false
|
|
529
|
+
};
|
|
530
|
+
} else if (requiredParamRegex.test(base)) {
|
|
531
|
+
param = {
|
|
532
|
+
...paramBase(requiredParamRegex),
|
|
533
|
+
isRequired: true,
|
|
534
|
+
isOptional: false,
|
|
535
|
+
isRest: false
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return {
|
|
540
|
+
orig,
|
|
541
|
+
base,
|
|
542
|
+
path: i === 0 ? orig.replace(/^index$/, "/") : orig,
|
|
543
|
+
ext,
|
|
544
|
+
...param ? { param } : {}
|
|
545
|
+
};
|
|
546
|
+
});
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
// src/routes-factory/templates/resolved-types.hbs
|
|
372
550
|
var resolved_types_default = "{{#each resolvedTypes}}\nexport type {{name}} = {{text}};\n{{/each}}\n";
|
|
373
551
|
|
|
374
|
-
// src/
|
|
552
|
+
// src/routes-factory/templates/types.hbs
|
|
375
553
|
var types_default = '{{#each typeDeclarations}}{{text}}\n{{/each}}\n\nexport type {{params.id}} = {\n {{#each paramsSchema}}\n "{{name}}"{{#unless isRequired}}?{{/unless}}:{{#if isRest}} Array<{{/if}}\n {{#if refinement}}{{refinement.text}}{{else}}string{{/if}}\n {{#if isRest}}>{{/if}}\n {{/each}}\n};\n\n{{#each payloadTypes}}\nexport type {{id}} = {{text}};\n{{/each}}\n\n{{#each responseTypes}}\nexport type {{id}} = {{text}};\n{{/each}}\n';
|
|
376
554
|
|
|
377
|
-
// src/
|
|
555
|
+
// src/routes-factory/resolve.ts
|
|
378
556
|
var API_INDEX_BASENAME = "index";
|
|
379
557
|
var API_INDEX_PATTERN = `${API_INDEX_BASENAME}.ts`;
|
|
380
558
|
var API_USE_BASENAME = "use";
|
|
@@ -397,8 +575,9 @@ var scanRoutes = async ({
|
|
|
397
575
|
appRoot: appRoot2,
|
|
398
576
|
sourceFolder: sourceFolder2
|
|
399
577
|
}) => {
|
|
578
|
+
const { createPath: createPath2 } = pathResolver({ appRoot: appRoot2, sourceFolder: sourceFolder2 });
|
|
400
579
|
return glob(ROUTE_FILE_PATTERNS, {
|
|
401
|
-
cwd:
|
|
580
|
+
cwd: createPath2.src(),
|
|
402
581
|
absolute: true,
|
|
403
582
|
onlyFiles: true,
|
|
404
583
|
followSymbolicLinks: false,
|
|
@@ -415,11 +594,11 @@ var isRouteFile = (file, {
|
|
|
415
594
|
appRoot: appRoot2,
|
|
416
595
|
sourceFolder: sourceFolder2
|
|
417
596
|
}) => {
|
|
418
|
-
const [_sourceFolder, folder, ...rest] = resolve3(appRoot2, file).replace(`${appRoot2}/`, "").split("/");
|
|
597
|
+
const [_sourceFolder, folder, ...rest] = resolve3(appRoot2, file).replace(`${appRoot2}/${defaults.srcDir}/`, "").split("/");
|
|
419
598
|
if (!folder || _sourceFolder !== sourceFolder2 || rest.length < 2) {
|
|
420
|
-
return;
|
|
599
|
+
return false;
|
|
421
600
|
}
|
|
422
|
-
return picomatch.isMatch(
|
|
601
|
+
return picomatch.isMatch(join3(folder, ...rest), ROUTE_FILE_PATTERNS) ? [folder, rest.join("/")] : false;
|
|
423
602
|
};
|
|
424
603
|
var isApiRoute = (file) => {
|
|
425
604
|
return picomatch.matchBase(file, `**/${API_INDEX_PATTERN}`);
|
|
@@ -433,28 +612,23 @@ var isPageRoute = (file) => {
|
|
|
433
612
|
var isPageLayout = (file) => {
|
|
434
613
|
return picomatch.matchBase(file, `**/${PAGE_LAYOUT_PATTERN}`);
|
|
435
614
|
};
|
|
436
|
-
var createRouteEntry = (
|
|
615
|
+
var createRouteEntry = (fileFullpath, {
|
|
437
616
|
appRoot: appRoot2,
|
|
438
617
|
sourceFolder: sourceFolder2
|
|
439
618
|
}) => {
|
|
440
|
-
const resolvedPaths = isRouteFile(
|
|
619
|
+
const resolvedPaths = isRouteFile(fileFullpath, { appRoot: appRoot2, sourceFolder: sourceFolder2 });
|
|
441
620
|
if (!resolvedPaths) {
|
|
442
621
|
return;
|
|
443
622
|
}
|
|
444
623
|
const [folder, file] = resolvedPaths;
|
|
445
|
-
const
|
|
446
|
-
const pathTokens = pathTokensFactory(dirname2(file));
|
|
447
|
-
const name = pathTokens.map((e) => e.orig).join("/");
|
|
448
|
-
const importFile = file;
|
|
449
|
-
const importName = `${importFile.replace(/\W+/g, "_")}_${crc3(importFile)}`;
|
|
624
|
+
const pathTokens = pathTokensFactory(dirname3(file));
|
|
450
625
|
return {
|
|
451
|
-
|
|
626
|
+
id: `${file.replace(/\W+/g, "_")}_${crc5(file)}`,
|
|
627
|
+
name: pathTokens.map((e) => e.orig).join("/"),
|
|
452
628
|
folder,
|
|
453
629
|
file,
|
|
454
630
|
fileFullpath,
|
|
455
|
-
pathTokens
|
|
456
|
-
importFile,
|
|
457
|
-
importName
|
|
631
|
+
pathTokens
|
|
458
632
|
};
|
|
459
633
|
};
|
|
460
634
|
var pageLayoutResolverFactory = () => {
|
|
@@ -471,17 +645,10 @@ var pageLayoutResolverFactory = () => {
|
|
|
471
645
|
};
|
|
472
646
|
var pageRouteResolverFactory = () => {
|
|
473
647
|
return (entry) => {
|
|
474
|
-
const {
|
|
475
|
-
name,
|
|
476
|
-
folder,
|
|
477
|
-
file,
|
|
478
|
-
fileFullpath,
|
|
479
|
-
pathTokens,
|
|
480
|
-
importFile,
|
|
481
|
-
importName
|
|
482
|
-
} = entry;
|
|
648
|
+
const { id, name, folder, file, fileFullpath, pathTokens } = entry;
|
|
483
649
|
const handler = async () => {
|
|
484
650
|
const entry2 = {
|
|
651
|
+
id,
|
|
485
652
|
name,
|
|
486
653
|
pathTokens,
|
|
487
654
|
params: {
|
|
@@ -489,9 +656,7 @@ var pageRouteResolverFactory = () => {
|
|
|
489
656
|
},
|
|
490
657
|
folder,
|
|
491
658
|
file,
|
|
492
|
-
fileFullpath
|
|
493
|
-
importFile,
|
|
494
|
-
importName
|
|
659
|
+
fileFullpath
|
|
495
660
|
};
|
|
496
661
|
return {
|
|
497
662
|
kind: "pageRoute",
|
|
@@ -534,22 +699,14 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
534
699
|
refreshSourceFile
|
|
535
700
|
} = typeResolverFactory(pluginOptions);
|
|
536
701
|
return (entry) => {
|
|
537
|
-
const {
|
|
538
|
-
name,
|
|
539
|
-
file,
|
|
540
|
-
folder,
|
|
541
|
-
fileFullpath,
|
|
542
|
-
pathTokens,
|
|
543
|
-
importFile,
|
|
544
|
-
importName
|
|
545
|
-
} = entry;
|
|
702
|
+
const { id, name, file, folder, fileFullpath, pathTokens } = entry;
|
|
546
703
|
const handler = async (updatedFile) => {
|
|
547
704
|
const paramsSchema = pathTokens.flatMap((e) => {
|
|
548
705
|
return e.param ? [e.param] : [];
|
|
549
706
|
});
|
|
550
707
|
const optionalParams = paramsSchema.length ? !paramsSchema.some((e) => e.isRequired) : true;
|
|
551
708
|
const { getCache, persistCache } = cacheFactory(
|
|
552
|
-
{ file, fileFullpath
|
|
709
|
+
{ id, file, fileFullpath },
|
|
553
710
|
{
|
|
554
711
|
appRoot: appRoot2,
|
|
555
712
|
sourceFolder: sourceFolder2,
|
|
@@ -569,12 +726,12 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
569
726
|
responseTypes,
|
|
570
727
|
referencedFiles = []
|
|
571
728
|
} = await resolveRouteSignature(
|
|
572
|
-
{
|
|
729
|
+
{ id, fileFullpath, optionalParams },
|
|
573
730
|
{
|
|
574
731
|
withReferencedFiles: true,
|
|
575
732
|
sourceFile: getSourceFile(fileFullpath),
|
|
576
733
|
relpathResolver(path) {
|
|
577
|
-
return
|
|
734
|
+
return join3(sourceFolder2, defaults.apiDir, dirname3(file), path);
|
|
578
735
|
}
|
|
579
736
|
}
|
|
580
737
|
);
|
|
@@ -585,13 +742,12 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
585
742
|
}
|
|
586
743
|
return [];
|
|
587
744
|
}) : [];
|
|
588
|
-
const typesFile =
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
);
|
|
745
|
+
const typesFile = pathResolver({
|
|
746
|
+
appRoot: appRoot2,
|
|
747
|
+
sourceFolder: sourceFolder2
|
|
748
|
+
}).createPath.libApi(dirname3(file), "types.ts");
|
|
593
749
|
const params = {
|
|
594
|
-
id: ["ParamsT",
|
|
750
|
+
id: ["ParamsT", crc5(name)].join(""),
|
|
595
751
|
schema: paramsSchema,
|
|
596
752
|
resolvedType: void 0
|
|
597
753
|
};
|
|
@@ -609,9 +765,9 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
609
765
|
});
|
|
610
766
|
const resolvedTypes = resolveTypes ? literalTypesResolver(typesFileContent, {
|
|
611
767
|
overrides: [...payloadTypes, ...responseTypes].reduce(
|
|
612
|
-
(map, { id, skipValidation }) => {
|
|
768
|
+
(map, { id: id2, skipValidation }) => {
|
|
613
769
|
if (skipValidation) {
|
|
614
|
-
map[
|
|
770
|
+
map[id2] = "never";
|
|
615
771
|
}
|
|
616
772
|
return map;
|
|
617
773
|
},
|
|
@@ -648,13 +804,12 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
648
804
|
});
|
|
649
805
|
}
|
|
650
806
|
const entry2 = {
|
|
807
|
+
id,
|
|
651
808
|
name,
|
|
652
809
|
pathTokens,
|
|
653
810
|
params: cache.params,
|
|
654
811
|
numericParams: cache.numericParams,
|
|
655
812
|
optionalParams,
|
|
656
|
-
importName,
|
|
657
|
-
importFile,
|
|
658
813
|
folder,
|
|
659
814
|
file,
|
|
660
815
|
fileFullpath,
|
|
@@ -677,13 +832,8 @@ var apiRouteResolverFactory = (pluginOptions) => {
|
|
|
677
832
|
};
|
|
678
833
|
};
|
|
679
834
|
|
|
680
|
-
// src/
|
|
681
|
-
|
|
682
|
-
sortRoutes
|
|
683
|
-
} from "@kosmojs/devlib";
|
|
684
|
-
|
|
685
|
-
// src/base-plugin/routes.ts
|
|
686
|
-
var routes_default = async (pluginOptions) => {
|
|
835
|
+
// src/routes-factory/index.ts
|
|
836
|
+
var routesFactory = async (pluginOptions) => {
|
|
687
837
|
const { appRoot: appRoot2, sourceFolder: sourceFolder2 } = pluginOptions;
|
|
688
838
|
const apiRouteResolver = apiRouteResolverFactory(pluginOptions);
|
|
689
839
|
const apiUseResolver = apiUseResolverFactory(pluginOptions);
|
|
@@ -696,13 +846,13 @@ var routes_default = async (pluginOptions) => {
|
|
|
696
846
|
return entry ? [entry] : [];
|
|
697
847
|
});
|
|
698
848
|
for (const entry of entries) {
|
|
699
|
-
if (entry.folder ===
|
|
849
|
+
if (entry.folder === defaults.apiDir) {
|
|
700
850
|
if (isApiRoute(entry.file)) {
|
|
701
851
|
resolvers2.set(entry.fileFullpath, apiRouteResolver(entry));
|
|
702
852
|
} else if (isApiUse(entry.file)) {
|
|
703
853
|
resolvers2.set(entry.fileFullpath, apiUseResolver(entry));
|
|
704
854
|
}
|
|
705
|
-
} else if (entry.folder ===
|
|
855
|
+
} else if (entry.folder === defaults.pagesDir) {
|
|
706
856
|
if (isPageRoute(entry.file)) {
|
|
707
857
|
resolvers2.set(entry.fileFullpath, pageRouteResolver(entry));
|
|
708
858
|
} else if (isPageLayout(entry.file)) {
|
|
@@ -742,10 +892,9 @@ var resolvedOptions = {
|
|
|
742
892
|
var { appRoot, sourceFolder } = resolvedOptions;
|
|
743
893
|
var watchHandlers = [];
|
|
744
894
|
var resolvedEntries = /* @__PURE__ */ new Map();
|
|
745
|
-
var { resolvers, resolversFactory } = await
|
|
746
|
-
var { resolve: resolve4 } = pathResolver3({ appRoot, sourceFolder });
|
|
895
|
+
var { resolvers, resolversFactory } = await routesFactory(resolvedOptions);
|
|
747
896
|
var spinnerFactory = (startText) => {
|
|
748
|
-
const id = [startText, Date.now().toString()].map(
|
|
897
|
+
const id = [startText, Date.now().toString()].map(crc6).join(":");
|
|
749
898
|
const postMessage = (method, text) => {
|
|
750
899
|
const spinner = { id, startText, method, text };
|
|
751
900
|
parentPort?.postMessage({ spinner });
|
|
@@ -832,11 +981,12 @@ var runWatchHandlers = async (event) => {
|
|
|
832
981
|
}
|
|
833
982
|
spinner.succeed();
|
|
834
983
|
};
|
|
984
|
+
var { createPath } = pathResolver({ appRoot, sourceFolder });
|
|
835
985
|
var watcher = chokidar.watch(
|
|
836
986
|
[
|
|
837
987
|
// watching for changes in sourceFolder's apiDir and pagesDir
|
|
838
|
-
|
|
839
|
-
|
|
988
|
+
createPath.api(),
|
|
989
|
+
createPath.pages()
|
|
840
990
|
],
|
|
841
991
|
{
|
|
842
992
|
...resolvedOptions.watcher.options,
|
|
@@ -889,8 +1039,8 @@ watcher.on("all", async (event, file) => {
|
|
|
889
1039
|
for (const { name, factory } of generators) {
|
|
890
1040
|
spinner.append(name);
|
|
891
1041
|
try {
|
|
892
|
-
const {
|
|
893
|
-
watchHandlers.push({ name, handler:
|
|
1042
|
+
const { watch } = await factory(resolvedOptions);
|
|
1043
|
+
watchHandlers.push({ name, handler: watch });
|
|
894
1044
|
} catch (error) {
|
|
895
1045
|
spinner.failed(error);
|
|
896
1046
|
spinner = spinnerFactory("Initializing Generators");
|