@kosmojs/dev 0.0.10 → 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.
Files changed (193) hide show
  1. package/package.json +9 -42
  2. package/pkg/base-plugin/worker.js +252 -102
  3. package/pkg/base-plugin/worker.js.map +4 -4
  4. package/pkg/index.js +540 -206
  5. package/pkg/index.js.map +4 -4
  6. package/pkg/src/{base-plugin/ast.d.ts → ast.d.ts} +3 -3
  7. package/pkg/src/base-plugin/api-handler.d.ts +1 -1
  8. package/pkg/src/base-plugin/index.d.ts +1 -1
  9. package/pkg/src/base-plugin/worker.d.ts +1 -1
  10. package/pkg/src/{base-plugin/cache.d.ts → cache.d.ts} +2 -2
  11. package/pkg/src/defaults.d.ts +13 -0
  12. package/pkg/src/fs.d.ts +1 -0
  13. package/pkg/src/index.d.ts +6 -3
  14. package/pkg/src/paths.d.ts +13 -0
  15. package/pkg/src/render.d.ts +28 -0
  16. package/pkg/src/routes-factory/base.d.ts +17 -0
  17. package/pkg/src/routes-factory/index.d.ts +8 -0
  18. package/pkg/src/routes-factory/nesting.d.ts +3 -0
  19. package/pkg/src/{base-plugin/routes → routes-factory}/resolve.d.ts +3 -3
  20. package/pkg/src/stub-generator/index.d.ts +1 -1
  21. package/pkg/src/typebox.d.ts +2 -0
  22. package/pkg/src/types.d.ts +288 -0
  23. package/pkg/stub-generator/index.js +166 -24
  24. package/pkg/stub-generator/index.js.map +4 -4
  25. package/pkg/test/routes/{base.d.ts → index.d.ts} +2 -2
  26. package/pkg/base-plugin/routes.js +0 -819
  27. package/pkg/base-plugin/routes.js.map +0 -7
  28. package/pkg/cli/cli.js +0 -582
  29. package/pkg/cli/cli.js.map +0 -7
  30. package/pkg/cli/index.js +0 -422
  31. package/pkg/cli/index.js.map +0 -7
  32. package/pkg/cli/templates/.env +0 -1
  33. package/pkg/cli/templates/@src/api/app.hbs +0 -32
  34. package/pkg/cli/templates/@src/api/router.hbs +0 -11
  35. package/pkg/cli/templates/@src/api/server.hbs +0 -4
  36. package/pkg/cli/templates/@src/api/use.hbs +0 -6
  37. package/pkg/cli/templates/@src/config/index.hbs +0 -2
  38. package/pkg/cli/templates/@src/index.html +0 -4
  39. package/pkg/cli/templates/@src/vite.config.hbs +0 -29
  40. package/pkg/cli/templates/core/api/app.ts +0 -6
  41. package/pkg/cli/templates/core/api/env.d.ts +0 -4
  42. package/pkg/cli/templates/core/api/router.ts +0 -6
  43. package/pkg/cli/templates/core/api/server.ts +0 -49
  44. package/pkg/cli/templates/core/api/use.ts +0 -21
  45. package/pkg/cli/templates/vite.base.hbs +0 -44
  46. package/pkg/src/base-plugin/routes/nesting.d.ts +0 -5
  47. package/pkg/src/base-plugin/routes.d.ts +0 -9
  48. package/pkg/src/cli/base.d.ts +0 -30
  49. package/pkg/src/cli/cli.d.ts +0 -2
  50. package/pkg/src/cli/factory.d.ts +0 -12
  51. package/pkg/src/cli/index.d.ts +0 -2
  52. package/pkg/src/cli/templates/core/api/app.d.ts +0 -3
  53. package/pkg/src/cli/templates/core/api/router.d.ts +0 -3
  54. package/pkg/src/cli/templates/core/api/server.d.ts +0 -3
  55. package/pkg/src/cli/templates/core/api/use.d.ts +0 -2
  56. package/pkg/test/setup.d.ts +0 -1
  57. /package/pkg/test/@fixtures/app/{@src → src/test}/api/articles/[...path]/index.d.ts +0 -0
  58. /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/[category]/[[author]]/index.d.ts +0 -0
  59. /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/[category]/index.d.ts +0 -0
  60. /package/pkg/test/@fixtures/app/{@src → src/test}/api/books/index.d.ts +0 -0
  61. /package/pkg/test/@fixtures/app/{@src → src/test}/api/files/[[folder]]/[[id]].json/index.d.ts +0 -0
  62. /package/pkg/test/@fixtures/app/{@src → src/test}/api/files/[[folder]]/index.d.ts +0 -0
  63. /package/pkg/test/@fixtures/app/{@src → src/test}/api/index/index.d.ts +0 -0
  64. /package/pkg/test/@fixtures/app/{@src → src/test}/api/pages/[...path].html/index.d.ts +0 -0
  65. /package/pkg/test/@fixtures/app/{@src → src/test}/api/users/[id].json/index.d.ts +0 -0
  66. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/careers/[jobId]/index.d.ts +0 -0
  67. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/careers/layout.d.ts +0 -0
  68. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/index.d.ts +0 -0
  69. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/layout.d.ts +0 -0
  70. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/about/team/index.d.ts +0 -0
  71. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/account/layout.d.ts +0 -0
  72. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/account/profile/index.d.ts +0 -0
  73. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/index.d.ts +0 -0
  74. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/[...path]/index.d.ts +0 -0
  75. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/index.d.ts +0 -0
  76. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/[[type]]/layout.d.ts +0 -0
  77. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/index.d.ts +0 -0
  78. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/resources/layout.d.ts +0 -0
  79. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/general/index.d.ts +0 -0
  80. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/index.d.ts +0 -0
  81. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/layout.d.ts +0 -0
  82. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/settings/permissions/index.d.ts +0 -0
  83. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/[userId]/index.d.ts +0 -0
  84. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/index.d.ts +0 -0
  85. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/[tenant]/users/layout.d.ts +0 -0
  86. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/index.d.ts +0 -0
  87. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/admin/layout.d.ts +0 -0
  88. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/[[category]]/[[tag]]/index.d.ts +0 -0
  89. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/[[category]]/index.d.ts +0 -0
  90. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/index.d.ts +0 -0
  91. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/layout.d.ts +0 -0
  92. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/post/[slug]/index.d.ts +0 -0
  93. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/blog/post/[slug]/layout.d.ts +0 -0
  94. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/contact/index.d.ts +0 -0
  95. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/contact/layout.d.ts +0 -0
  96. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/courses/[courseId]/layout.d.ts +0 -0
  97. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/courses/[courseId]/lessons/[[lessonId]]/assignments/[...assignmentPath]/index.d.ts +0 -0
  98. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/[view]/index.d.ts +0 -0
  99. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/analytics/index.d.ts +0 -0
  100. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/index.d.ts +0 -0
  101. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/layout.d.ts +0 -0
  102. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/billing/index.d.ts +0 -0
  103. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/index.d.ts +0 -0
  104. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/layout.d.ts +0 -0
  105. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/notifications/index.d.ts +0 -0
  106. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/profile/index.d.ts +0 -0
  107. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/security/index.d.ts +0 -0
  108. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/dashboard/settings/security/layout.d.ts +0 -0
  109. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/[...path]/index.d.ts +0 -0
  110. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/index.d.ts +0 -0
  111. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/docs/layout.d.ts +0 -0
  112. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/files/[...filePath]/index.d.ts +0 -0
  113. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/files/[...filePath]/layout.d.ts +0 -0
  114. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/layout.d.ts +0 -0
  115. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/privacy/index.d.ts +0 -0
  116. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/legal/terms/index.d.ts +0 -0
  117. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/news/[category]/articles/[...articlePath]/index.d.ts +0 -0
  118. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/news/[category]/layout.d.ts +0 -0
  119. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/layout.d.ts +0 -0
  120. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/data/[dataView]/index.d.ts +0 -0
  121. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/data/[dataView]/layout.d.ts +0 -0
  122. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/[reportType]/layout.d.ts +0 -0
  123. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/[clientId]/reports/layout.d.ts +0 -0
  124. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/portal/layout.d.ts +0 -0
  125. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/products/[id]/index.d.ts +0 -0
  126. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/products/index.d.ts +0 -0
  127. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/layout.d.ts +0 -0
  128. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/posts/[postId]/comments/[...thread]/index.d.ts +0 -0
  129. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/profile/[username]/posts/[postId]/layout.d.ts +0 -0
  130. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/[...path]/index.d.ts +0 -0
  131. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/index.d.ts +0 -0
  132. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/files/layout.d.ts +0 -0
  133. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/index.d.ts +0 -0
  134. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/layout.d.ts +0 -0
  135. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/[commentId]/index.d.ts +0 -0
  136. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/index.d.ts +0 -0
  137. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/comments/layout.d.ts +0 -0
  138. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/index.d.ts +0 -0
  139. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/[taskId]/layout.d.ts +0 -0
  140. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/index.d.ts +0 -0
  141. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/tasks/layout.d.ts +0 -0
  142. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/[userId]/index.d.ts +0 -0
  143. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/index.d.ts +0 -0
  144. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/[projectId]/team/layout.d.ts +0 -0
  145. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/index.d.ts +0 -0
  146. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/projects/layout.d.ts +0 -0
  147. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/[[city]]/filters/[...filters]/index.d.ts +0 -0
  148. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/filters/index.d.ts +0 -0
  149. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/properties/layout.d.ts +0 -0
  150. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/[[query]]/[[page]]/index.d.ts +0 -0
  151. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/[[query]]/layout.d.ts +0 -0
  152. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/search/index.d.ts +0 -0
  153. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/[category]/[productId]/index.d.ts +0 -0
  154. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/[category]/[productId]/layout.d.ts +0 -0
  155. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/cart/index.d.ts +0 -0
  156. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/confirm/index.d.ts +0 -0
  157. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/layout.d.ts +0 -0
  158. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/payment/index.d.ts +0 -0
  159. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/shipping/index.d.ts +0 -0
  160. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/checkout/shipping/layout.d.ts +0 -0
  161. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/index.d.ts +0 -0
  162. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/layout.d.ts +0 -0
  163. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/[orderId]/index.d.ts +0 -0
  164. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/index.d.ts +0 -0
  165. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/orders/layout.d.ts +0 -0
  166. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/index.d.ts +0 -0
  167. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/layout.d.ts +0 -0
  168. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/product/[id]/reviews/index.d.ts +0 -0
  169. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/[[category]]/index.d.ts +0 -0
  170. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/index.d.ts +0 -0
  171. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/shop/products/layout.d.ts +0 -0
  172. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/signup/index.d.ts +0 -0
  173. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/filters/[...filters]/index.d.ts +0 -0
  174. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/sort/[sortBy]/index.d.ts +0 -0
  175. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/[category]/sort/layout.d.ts +0 -0
  176. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/store/layout.d.ts +0 -0
  177. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/followers/index.d.ts +0 -0
  178. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/following/index.d.ts +0 -0
  179. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/index.d.ts +0 -0
  180. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/layout.d.ts +0 -0
  181. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/[postId]/index.d.ts +0 -0
  182. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/[postId]/layout.d.ts +0 -0
  183. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/index.d.ts +0 -0
  184. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/[username]/posts/layout.d.ts +0 -0
  185. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/index.d.ts +0 -0
  186. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/users/layout.d.ts +0 -0
  187. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/[range]/index.d.ts +0 -0
  188. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/[range]/layout.d.ts +0 -0
  189. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/index.d.ts +0 -0
  190. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/analytics/layout.d.ts +0 -0
  191. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/team/[memberId]/permissions/[...permissionPath]/index.d.ts +0 -0
  192. /package/pkg/test/@fixtures/app/{@src → src/test}/pages/workspace/[workspaceId]/team/layout.d.ts +0 -0
  193. /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.10",
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
- "esbuild": "^0.27.1",
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.10",
50
- "@kosmojs/api-generator": "^0.0.10",
51
- "@kosmojs/devlib": "^0.0.10",
52
- "@kosmojs/fetch-generator": "^0.0.10"
36
+ "typescript": "^5.9.3"
53
37
  },
54
38
  "devDependencies": {
55
- "@solidjs/router": "^0.15.4",
56
- "@types/koa": "^3.0.1",
57
- "@types/koa__router": "^12.0.5",
58
- "@types/node": "^24.10.1",
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.2",
65
- "react": "^19.2.1",
66
- "react-dom": "^19.2.1",
67
- "react-router": "^7.10.1",
68
- "solid-js": "^1.9.10",
69
- "tslib": "^2.8.1",
70
- "vite": "^7.2.7",
71
- "vite-plugin-solid": "^2.11.10",
72
- "vue": "^3.5.25",
73
- "vue-router": "^4.6.3",
74
- "@kosmojs/config": "^0.0.10"
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/routes.ts src/base-plugin/worker.ts src/stub-generator/index.ts src/cli/cli.ts src/cli/index.ts",
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 crc4 from "crc/crc32";
5
- import {
6
- pathResolver as pathResolver3
7
- } from "@kosmojs/devlib";
4
+ import crc6 from "crc/crc32";
8
5
 
9
- // src/base-plugin/routes.ts
10
- import {
11
- defaults as defaults2
12
- } from "@kosmojs/devlib";
6
+ // src/paths.ts
7
+ import { join } from "node:path";
13
8
 
14
- // src/base-plugin/routes/resolve.ts
15
- import { dirname as dirname2, join, resolve as resolve3 } from "node:path";
16
- import crc3 from "crc/crc32";
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/base-plugin/ast.ts
28
- import { resolve } from "node:path";
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", crc(route.importName + method)].join(""),
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", crc(route.importName + method)].join(""),
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
- `${crc(literalTypes)}-${Date.now()}.ts`,
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/base-plugin/cache.ts
283
- import { mkdir, readFile, writeFile } from "node:fs/promises";
284
- import { dirname, resolve as resolve2 } from "node:path";
285
- import crc2 from "crc/crc32";
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
- }).resolve("apiLibDir", dirname(route.file), "cache.json");
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 readFile(cacheFile, "utf8"));
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 mkdir(dirname(cacheFile), { recursive: true });
324
- await writeFile(cacheFile, JSON.stringify(cache, null, 2), "utf8");
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 readFile(file, "utf8");
484
+ fileContent = await readFile2(file, "utf8");
357
485
  } catch (_e) {
358
486
  return 0;
359
487
  }
360
- return fileContent ? crc2(
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/base-plugin/templates/resolved-types.hbs
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/base-plugin/templates/types.hbs
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/base-plugin/routes/resolve.ts
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: resolve3(appRoot2, sourceFolder2),
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(join(folder, ...rest), ROUTE_FILE_PATTERNS) ? [folder, rest.join("/")] : void 0;
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 = (_file, {
615
+ var createRouteEntry = (fileFullpath, {
437
616
  appRoot: appRoot2,
438
617
  sourceFolder: sourceFolder2
439
618
  }) => {
440
- const resolvedPaths = isRouteFile(_file, { appRoot: appRoot2, sourceFolder: sourceFolder2 });
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 fileFullpath = join(appRoot2, sourceFolder2, folder, file);
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
- name,
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, importName },
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
- { importName, fileFullpath, optionalParams },
729
+ { id, fileFullpath, optionalParams },
573
730
  {
574
731
  withReferencedFiles: true,
575
732
  sourceFile: getSourceFile(fileFullpath),
576
733
  relpathResolver(path) {
577
- return join(sourceFolder2, defaults.apiDir, dirname2(file), path);
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 = pathResolver2({ appRoot: appRoot2, sourceFolder: sourceFolder2 }).resolve(
589
- "apiLibDir",
590
- dirname2(file),
591
- "types.ts"
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", crc3(name)].join(""),
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[id] = "never";
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/base-plugin/routes/nesting.ts
681
- import {
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 === defaults2.apiDir) {
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 === defaults2.pagesDir) {
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 routes_default(resolvedOptions);
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(crc4).join(":");
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
- resolve4("apiDir"),
839
- resolve4("pagesDir")
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 { watchHandler } = await factory(resolvedOptions);
893
- watchHandlers.push({ name, handler: watchHandler });
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");