create-jen-app 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (607) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +89 -0
  3. package/dist/index.js +72 -0
  4. package/package.json +50 -0
  5. package/templates/static/.esbuild/jen.config.js +1 -0
  6. package/templates/static/README.md +67 -0
  7. package/templates/static/build.js +106 -0
  8. package/templates/static/jen.config.ts +128 -0
  9. package/templates/static/jenjs.d.ts +33 -0
  10. package/templates/static/lib/api/(hello).d.ts +7 -0
  11. package/templates/static/lib/api/(hello).js +26 -0
  12. package/templates/static/lib/auth/cookie-utils.d.ts +24 -0
  13. package/templates/static/lib/auth/cookie-utils.js +99 -0
  14. package/templates/static/lib/auth/index.d.ts +2 -0
  15. package/templates/static/lib/auth/index.js +19 -0
  16. package/templates/static/lib/auth/jwt.d.ts +2 -0
  17. package/templates/static/lib/auth/jwt.js +30 -0
  18. package/templates/static/lib/auth/session.d.ts +44 -0
  19. package/templates/static/lib/auth/session.js +111 -0
  20. package/templates/static/lib/build/asset-hashing.d.ts +10 -0
  21. package/templates/static/lib/build/asset-hashing.js +42 -0
  22. package/templates/static/lib/build/asset-manifest.d.ts +11 -0
  23. package/templates/static/lib/build/asset-manifest.js +38 -0
  24. package/templates/static/lib/build/build.d.ts +4 -0
  25. package/templates/static/lib/build/build.js +113 -0
  26. package/templates/static/lib/build/island-hydration.d.ts +25 -0
  27. package/templates/static/lib/build/island-hydration.js +62 -0
  28. package/templates/static/lib/build/minifier.d.ts +20 -0
  29. package/templates/static/lib/build/minifier.js +65 -0
  30. package/templates/static/lib/build/page-renderer.d.ts +17 -0
  31. package/templates/static/lib/build/page-renderer.js +45 -0
  32. package/templates/static/lib/build/production-build.d.ts +10 -0
  33. package/templates/static/lib/build/production-build.js +30 -0
  34. package/templates/static/lib/build/ssg-pipeline.d.ts +15 -0
  35. package/templates/static/lib/build/ssg-pipeline.js +119 -0
  36. package/templates/static/lib/build-tools/build-site.d.ts +6 -0
  37. package/templates/static/lib/build-tools/build-site.js +56 -0
  38. package/templates/static/lib/cache/index.d.ts +2 -0
  39. package/templates/static/lib/cache/index.js +19 -0
  40. package/templates/static/lib/cache/memory.d.ts +6 -0
  41. package/templates/static/lib/cache/memory.js +31 -0
  42. package/templates/static/lib/cache/redis.d.ts +6 -0
  43. package/templates/static/lib/cache/redis.js +33 -0
  44. package/templates/static/lib/cli/banner.d.ts +1 -0
  45. package/templates/static/lib/cli/banner.js +41 -0
  46. package/templates/static/lib/cli/templates/ssg/jen.config.d.ts +3 -0
  47. package/templates/static/lib/cli/templates/ssg/jen.config.js +49 -0
  48. package/templates/static/lib/cli/templates/ssg/site/index.d.ts +2 -0
  49. package/templates/static/lib/cli/templates/ssg/site/index.js +4 -0
  50. package/templates/static/lib/cli/templates/ssr/jen.config.d.ts +3 -0
  51. package/templates/static/lib/cli/templates/ssr/jen.config.js +49 -0
  52. package/templates/static/lib/cli/templates/ssr/site/index.d.ts +2 -0
  53. package/templates/static/lib/cli/templates/ssr/site/index.js +4 -0
  54. package/templates/static/lib/compilers/esbuild-plugins.d.ts +6 -0
  55. package/templates/static/lib/compilers/esbuild-plugins.js +130 -0
  56. package/templates/static/lib/compilers/svelte.d.ts +18 -0
  57. package/templates/static/lib/compilers/svelte.js +61 -0
  58. package/templates/static/lib/compilers/vue.d.ts +15 -0
  59. package/templates/static/lib/compilers/vue.js +99 -0
  60. package/templates/static/lib/core/config.d.ts +53 -0
  61. package/templates/static/lib/core/config.js +18 -0
  62. package/templates/static/lib/core/http.d.ts +3 -0
  63. package/templates/static/lib/core/http.js +42 -0
  64. package/templates/static/lib/core/middleware-hooks.d.ts +46 -0
  65. package/templates/static/lib/core/middleware-hooks.js +69 -0
  66. package/templates/static/lib/core/paths.d.ts +6 -0
  67. package/templates/static/lib/core/paths.js +24 -0
  68. package/templates/static/lib/core/routes/match.d.ts +6 -0
  69. package/templates/static/lib/core/routes/match.js +31 -0
  70. package/templates/static/lib/core/routes/scan.d.ts +9 -0
  71. package/templates/static/lib/core/routes/scan.js +148 -0
  72. package/templates/static/lib/core/types.d.ts +18 -0
  73. package/templates/static/lib/core/types.js +18 -0
  74. package/templates/static/lib/css/compiler.d.ts +20 -0
  75. package/templates/static/lib/css/compiler.js +87 -0
  76. package/templates/static/lib/db/connector.d.ts +4 -0
  77. package/templates/static/lib/db/connector.js +33 -0
  78. package/templates/static/lib/db/drivers/jdb.d.ts +13 -0
  79. package/templates/static/lib/db/drivers/jdb.js +59 -0
  80. package/templates/static/lib/db/drivers/sql.d.ts +18 -0
  81. package/templates/static/lib/db/drivers/sql.js +182 -0
  82. package/templates/static/lib/db/index.d.ts +19 -0
  83. package/templates/static/lib/db/index.js +65 -0
  84. package/templates/static/lib/db/types.d.ts +29 -0
  85. package/templates/static/lib/db/types.js +18 -0
  86. package/templates/static/lib/graphql/index.d.ts +1 -0
  87. package/templates/static/lib/graphql/index.js +22 -0
  88. package/templates/static/lib/graphql/resolvers.d.ts +17 -0
  89. package/templates/static/lib/graphql/resolvers.js +26 -0
  90. package/templates/static/lib/graphql/schema.d.ts +1 -0
  91. package/templates/static/lib/graphql/schema.js +20 -0
  92. package/templates/static/lib/i18n/en.json +4 -0
  93. package/templates/static/lib/i18n/es.json +4 -0
  94. package/templates/static/lib/i18n/index.d.ts +8 -0
  95. package/templates/static/lib/i18n/index.js +32 -0
  96. package/templates/static/lib/import/jen-import.d.ts +27 -0
  97. package/templates/static/lib/import/jen-import.js +128 -0
  98. package/templates/static/lib/index.d.ts +81 -0
  99. package/templates/static/lib/index.js +120 -0
  100. package/templates/static/lib/jdb/engine.d.ts +9 -0
  101. package/templates/static/lib/jdb/engine.js +176 -0
  102. package/templates/static/lib/jdb/index.d.ts +2 -0
  103. package/templates/static/lib/jdb/index.js +19 -0
  104. package/templates/static/lib/jdb/types.d.ts +46 -0
  105. package/templates/static/lib/jdb/types.js +18 -0
  106. package/templates/static/lib/jdb/utils.d.ts +6 -0
  107. package/templates/static/lib/jdb/utils.js +141 -0
  108. package/templates/static/lib/middleware/builtins/body-parser.d.ts +1 -0
  109. package/templates/static/lib/middleware/builtins/body-parser.js +55 -0
  110. package/templates/static/lib/middleware/builtins/cors.d.ts +13 -0
  111. package/templates/static/lib/middleware/builtins/cors.js +67 -0
  112. package/templates/static/lib/middleware/builtins/logger.d.ts +1 -0
  113. package/templates/static/lib/middleware/builtins/logger.js +33 -0
  114. package/templates/static/lib/middleware/builtins/rate-limit.d.ts +5 -0
  115. package/templates/static/lib/middleware/builtins/rate-limit.js +76 -0
  116. package/templates/static/lib/middleware/builtins/request-id.d.ts +1 -0
  117. package/templates/static/lib/middleware/builtins/request-id.js +25 -0
  118. package/templates/static/lib/middleware/builtins/security-headers.d.ts +1 -0
  119. package/templates/static/lib/middleware/builtins/security-headers.js +39 -0
  120. package/templates/static/lib/middleware/context.d.ts +18 -0
  121. package/templates/static/lib/middleware/context.js +50 -0
  122. package/templates/static/lib/middleware/decorators.d.ts +2 -0
  123. package/templates/static/lib/middleware/decorators.js +61 -0
  124. package/templates/static/lib/middleware/errors/handler.d.ts +1 -0
  125. package/templates/static/lib/middleware/errors/handler.js +65 -0
  126. package/templates/static/lib/middleware/errors/http-error.d.ts +5 -0
  127. package/templates/static/lib/middleware/errors/http-error.js +27 -0
  128. package/templates/static/lib/middleware/kernel.d.ts +6 -0
  129. package/templates/static/lib/middleware/kernel.js +39 -0
  130. package/templates/static/lib/middleware/pipeline.d.ts +4 -0
  131. package/templates/static/lib/middleware/pipeline.js +67 -0
  132. package/templates/static/lib/middleware/registry.d.ts +10 -0
  133. package/templates/static/lib/middleware/registry.js +41 -0
  134. package/templates/static/lib/middleware/response.d.ts +13 -0
  135. package/templates/static/lib/middleware/response.js +60 -0
  136. package/templates/static/lib/middleware/types.d.ts +1 -0
  137. package/templates/static/lib/middleware/types.js +18 -0
  138. package/templates/static/lib/middleware/utils/matcher.d.ts +1 -0
  139. package/templates/static/lib/middleware/utils/matcher.js +31 -0
  140. package/templates/static/lib/native/bundle.d.ts +19 -0
  141. package/templates/static/lib/native/bundle.js +39 -0
  142. package/templates/static/lib/native/dev-server.d.ts +6 -0
  143. package/templates/static/lib/native/dev-server.js +38 -0
  144. package/templates/static/lib/native/index.d.ts +30 -0
  145. package/templates/static/lib/native/index.js +48 -0
  146. package/templates/static/lib/native/optimizer.d.ts +17 -0
  147. package/templates/static/lib/native/optimizer.js +37 -0
  148. package/templates/static/lib/native/style-compiler.d.ts +10 -0
  149. package/templates/static/lib/native/style-compiler.js +36 -0
  150. package/templates/static/lib/plugin/loader.d.ts +8 -0
  151. package/templates/static/lib/plugin/loader.js +59 -0
  152. package/templates/static/lib/runtime/client-runtime.d.ts +1 -0
  153. package/templates/static/lib/runtime/client-runtime.js +28 -0
  154. package/templates/static/lib/runtime/hmr.d.ts +1 -0
  155. package/templates/static/lib/runtime/hmr.js +54 -0
  156. package/templates/static/lib/runtime/hydrate.d.ts +1 -0
  157. package/templates/static/lib/runtime/hydrate.js +45 -0
  158. package/templates/static/lib/runtime/island-hydration-client.d.ts +5 -0
  159. package/templates/static/lib/runtime/island-hydration-client.js +132 -0
  160. package/templates/static/lib/runtime/islands.d.ts +46 -0
  161. package/templates/static/lib/runtime/islands.js +89 -0
  162. package/templates/static/lib/runtime/render.d.ts +13 -0
  163. package/templates/static/lib/runtime/render.js +183 -0
  164. package/templates/static/lib/server/api-routes.d.ts +44 -0
  165. package/templates/static/lib/server/api-routes.js +196 -0
  166. package/templates/static/lib/server/api.d.ts +6 -0
  167. package/templates/static/lib/server/api.js +124 -0
  168. package/templates/static/lib/server/app.d.ts +10 -0
  169. package/templates/static/lib/server/app.js +381 -0
  170. package/templates/static/lib/server/runtimeServe.d.ts +4 -0
  171. package/templates/static/lib/server/runtimeServe.js +125 -0
  172. package/templates/static/lib/shared/log.d.ts +5 -0
  173. package/templates/static/lib/shared/log.js +31 -0
  174. package/templates/static/node_modules/.bin/esbuild +16 -0
  175. package/templates/static/node_modules/.bin/esbuild.cmd +17 -0
  176. package/templates/static/node_modules/.bin/esbuild.ps1 +28 -0
  177. package/templates/static/node_modules/.bin/tsc +16 -0
  178. package/templates/static/node_modules/.bin/tsc.cmd +17 -0
  179. package/templates/static/node_modules/.bin/tsc.ps1 +28 -0
  180. package/templates/static/node_modules/.bin/tsserver +16 -0
  181. package/templates/static/node_modules/.bin/tsserver.cmd +17 -0
  182. package/templates/static/node_modules/.bin/tsserver.ps1 +28 -0
  183. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +14 -0
  184. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +11 -0
  185. package/templates/static/node_modules/.package-lock.json +585 -0
  186. package/templates/static/node_modules/@esbuild/win32-x64/README.md +3 -0
  187. package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  188. package/templates/static/node_modules/@esbuild/win32-x64/package.json +20 -0
  189. package/templates/static/node_modules/@jenjs/master/README.md +24 -0
  190. package/templates/static/node_modules/@jenjs/master/index.js +3655 -0
  191. package/templates/static/node_modules/@jenjs/master/package.json +36 -0
  192. package/templates/static/node_modules/@polka/url/build.js +49 -0
  193. package/templates/static/node_modules/@polka/url/build.mjs +47 -0
  194. package/templates/static/node_modules/@polka/url/index.d.ts +11 -0
  195. package/templates/static/node_modules/@polka/url/package.json +30 -0
  196. package/templates/static/node_modules/@polka/url/readme.md +68 -0
  197. package/templates/static/node_modules/@types/node/LICENSE +21 -0
  198. package/templates/static/node_modules/@types/node/README.md +15 -0
  199. package/templates/static/node_modules/@types/node/assert/strict.d.ts +111 -0
  200. package/templates/static/node_modules/@types/node/assert.d.ts +1078 -0
  201. package/templates/static/node_modules/@types/node/async_hooks.d.ts +603 -0
  202. package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  203. package/templates/static/node_modules/@types/node/buffer.d.ts +1934 -0
  204. package/templates/static/node_modules/@types/node/child_process.d.ts +1476 -0
  205. package/templates/static/node_modules/@types/node/cluster.d.ts +578 -0
  206. package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  207. package/templates/static/node_modules/@types/node/compatibility/index.d.ts +9 -0
  208. package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  209. package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  210. package/templates/static/node_modules/@types/node/console.d.ts +452 -0
  211. package/templates/static/node_modules/@types/node/constants.d.ts +21 -0
  212. package/templates/static/node_modules/@types/node/crypto.d.ts +4545 -0
  213. package/templates/static/node_modules/@types/node/dgram.d.ts +600 -0
  214. package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  215. package/templates/static/node_modules/@types/node/dns/promises.d.ts +503 -0
  216. package/templates/static/node_modules/@types/node/dns.d.ts +923 -0
  217. package/templates/static/node_modules/@types/node/domain.d.ts +170 -0
  218. package/templates/static/node_modules/@types/node/events.d.ts +976 -0
  219. package/templates/static/node_modules/@types/node/fs/promises.d.ts +1295 -0
  220. package/templates/static/node_modules/@types/node/fs.d.ts +4461 -0
  221. package/templates/static/node_modules/@types/node/globals.d.ts +172 -0
  222. package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  223. package/templates/static/node_modules/@types/node/http.d.ts +2089 -0
  224. package/templates/static/node_modules/@types/node/http2.d.ts +2644 -0
  225. package/templates/static/node_modules/@types/node/https.d.ts +579 -0
  226. package/templates/static/node_modules/@types/node/index.d.ts +97 -0
  227. package/templates/static/node_modules/@types/node/inspector.d.ts +253 -0
  228. package/templates/static/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  229. package/templates/static/node_modules/@types/node/module.d.ts +891 -0
  230. package/templates/static/node_modules/@types/node/net.d.ts +1057 -0
  231. package/templates/static/node_modules/@types/node/os.d.ts +506 -0
  232. package/templates/static/node_modules/@types/node/package.json +145 -0
  233. package/templates/static/node_modules/@types/node/path.d.ts +200 -0
  234. package/templates/static/node_modules/@types/node/perf_hooks.d.ts +968 -0
  235. package/templates/static/node_modules/@types/node/process.d.ts +2089 -0
  236. package/templates/static/node_modules/@types/node/punycode.d.ts +117 -0
  237. package/templates/static/node_modules/@types/node/querystring.d.ts +152 -0
  238. package/templates/static/node_modules/@types/node/readline/promises.d.ts +161 -0
  239. package/templates/static/node_modules/@types/node/readline.d.ts +594 -0
  240. package/templates/static/node_modules/@types/node/repl.d.ts +428 -0
  241. package/templates/static/node_modules/@types/node/sea.d.ts +153 -0
  242. package/templates/static/node_modules/@types/node/sqlite.d.ts +721 -0
  243. package/templates/static/node_modules/@types/node/stream/consumers.d.ts +38 -0
  244. package/templates/static/node_modules/@types/node/stream/promises.d.ts +90 -0
  245. package/templates/static/node_modules/@types/node/stream/web.d.ts +622 -0
  246. package/templates/static/node_modules/@types/node/stream.d.ts +1664 -0
  247. package/templates/static/node_modules/@types/node/string_decoder.d.ts +67 -0
  248. package/templates/static/node_modules/@types/node/test.d.ts +2163 -0
  249. package/templates/static/node_modules/@types/node/timers/promises.d.ts +108 -0
  250. package/templates/static/node_modules/@types/node/timers.d.ts +287 -0
  251. package/templates/static/node_modules/@types/node/tls.d.ts +1319 -0
  252. package/templates/static/node_modules/@types/node/trace_events.d.ts +197 -0
  253. package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  254. package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  255. package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +97 -0
  256. package/templates/static/node_modules/@types/node/tty.d.ts +208 -0
  257. package/templates/static/node_modules/@types/node/url.d.ts +984 -0
  258. package/templates/static/node_modules/@types/node/util.d.ts +2606 -0
  259. package/templates/static/node_modules/@types/node/v8.d.ts +920 -0
  260. package/templates/static/node_modules/@types/node/vm.d.ts +1000 -0
  261. package/templates/static/node_modules/@types/node/wasi.d.ts +181 -0
  262. package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  263. package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  264. package/templates/static/node_modules/@types/node/web-globals/events.d.ts +97 -0
  265. package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  266. package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
  267. package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  268. package/templates/static/node_modules/@types/node/worker_threads.d.ts +784 -0
  269. package/templates/static/node_modules/@types/node/zlib.d.ts +683 -0
  270. package/templates/static/node_modules/esbuild/LICENSE.md +21 -0
  271. package/templates/static/node_modules/esbuild/README.md +3 -0
  272. package/templates/static/node_modules/esbuild/bin/esbuild +223 -0
  273. package/templates/static/node_modules/esbuild/install.js +289 -0
  274. package/templates/static/node_modules/esbuild/lib/main.d.ts +716 -0
  275. package/templates/static/node_modules/esbuild/lib/main.js +2242 -0
  276. package/templates/static/node_modules/esbuild/package.json +49 -0
  277. package/templates/static/node_modules/mrmime/index.d.ts +2 -0
  278. package/templates/static/node_modules/mrmime/index.js +449 -0
  279. package/templates/static/node_modules/mrmime/index.mjs +448 -0
  280. package/templates/static/node_modules/mrmime/license +21 -0
  281. package/templates/static/node_modules/mrmime/package.json +44 -0
  282. package/templates/static/node_modules/mrmime/readme.md +130 -0
  283. package/templates/static/node_modules/preact/LICENSE +21 -0
  284. package/templates/static/node_modules/preact/README.md +185 -0
  285. package/templates/static/node_modules/preact/compat/client.d.ts +13 -0
  286. package/templates/static/node_modules/preact/compat/client.js +21 -0
  287. package/templates/static/node_modules/preact/compat/client.mjs +24 -0
  288. package/templates/static/node_modules/preact/compat/dist/compat.js +2 -0
  289. package/templates/static/node_modules/preact/compat/dist/compat.js.map +1 -0
  290. package/templates/static/node_modules/preact/compat/dist/compat.mjs +2 -0
  291. package/templates/static/node_modules/preact/compat/dist/compat.module.js +2 -0
  292. package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +1 -0
  293. package/templates/static/node_modules/preact/compat/dist/compat.umd.js +2 -0
  294. package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +1 -0
  295. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +3 -0
  296. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +3 -0
  297. package/templates/static/node_modules/preact/compat/jsx-runtime.js +3 -0
  298. package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +3 -0
  299. package/templates/static/node_modules/preact/compat/package.json +55 -0
  300. package/templates/static/node_modules/preact/compat/scheduler.js +15 -0
  301. package/templates/static/node_modules/preact/compat/scheduler.mjs +23 -0
  302. package/templates/static/node_modules/preact/compat/server.browser.js +11 -0
  303. package/templates/static/node_modules/preact/compat/server.js +36 -0
  304. package/templates/static/node_modules/preact/compat/server.mjs +17 -0
  305. package/templates/static/node_modules/preact/compat/src/Children.js +21 -0
  306. package/templates/static/node_modules/preact/compat/src/PureComponent.js +16 -0
  307. package/templates/static/node_modules/preact/compat/src/forwardRef.js +44 -0
  308. package/templates/static/node_modules/preact/compat/src/hooks.js +70 -0
  309. package/templates/static/node_modules/preact/compat/src/index.d.ts +351 -0
  310. package/templates/static/node_modules/preact/compat/src/index.js +238 -0
  311. package/templates/static/node_modules/preact/compat/src/internal.d.ts +48 -0
  312. package/templates/static/node_modules/preact/compat/src/memo.js +35 -0
  313. package/templates/static/node_modules/preact/compat/src/portals.js +78 -0
  314. package/templates/static/node_modules/preact/compat/src/render.js +313 -0
  315. package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +16 -0
  316. package/templates/static/node_modules/preact/compat/src/suspense-list.js +127 -0
  317. package/templates/static/node_modules/preact/compat/src/suspense.d.ts +19 -0
  318. package/templates/static/node_modules/preact/compat/src/suspense.js +291 -0
  319. package/templates/static/node_modules/preact/compat/src/util.js +33 -0
  320. package/templates/static/node_modules/preact/compat/test-utils.js +1 -0
  321. package/templates/static/node_modules/preact/compat/test-utils.mjs +1 -0
  322. package/templates/static/node_modules/preact/debug/dist/debug.js +2 -0
  323. package/templates/static/node_modules/preact/debug/dist/debug.js.map +1 -0
  324. package/templates/static/node_modules/preact/debug/dist/debug.mjs +2 -0
  325. package/templates/static/node_modules/preact/debug/dist/debug.module.js +2 -0
  326. package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +1 -0
  327. package/templates/static/node_modules/preact/debug/dist/debug.umd.js +2 -0
  328. package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +1 -0
  329. package/templates/static/node_modules/preact/debug/package.json +27 -0
  330. package/templates/static/node_modules/preact/debug/src/check-props.js +54 -0
  331. package/templates/static/node_modules/preact/debug/src/component-stack.js +146 -0
  332. package/templates/static/node_modules/preact/debug/src/constants.js +3 -0
  333. package/templates/static/node_modules/preact/debug/src/debug.js +593 -0
  334. package/templates/static/node_modules/preact/debug/src/index.d.ts +23 -0
  335. package/templates/static/node_modules/preact/debug/src/index.js +12 -0
  336. package/templates/static/node_modules/preact/debug/src/internal.d.ts +82 -0
  337. package/templates/static/node_modules/preact/debug/src/util.js +15 -0
  338. package/templates/static/node_modules/preact/devtools/dist/devtools.js +2 -0
  339. package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +1 -0
  340. package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +2 -0
  341. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +2 -0
  342. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +1 -0
  343. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +2 -0
  344. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +1 -0
  345. package/templates/static/node_modules/preact/devtools/package.json +25 -0
  346. package/templates/static/node_modules/preact/devtools/src/devtools.js +21 -0
  347. package/templates/static/node_modules/preact/devtools/src/index.d.ts +8 -0
  348. package/templates/static/node_modules/preact/devtools/src/index.js +15 -0
  349. package/templates/static/node_modules/preact/dist/preact.js +2 -0
  350. package/templates/static/node_modules/preact/dist/preact.js.map +1 -0
  351. package/templates/static/node_modules/preact/dist/preact.min.js +2 -0
  352. package/templates/static/node_modules/preact/dist/preact.min.js.map +1 -0
  353. package/templates/static/node_modules/preact/dist/preact.min.module.js +2 -0
  354. package/templates/static/node_modules/preact/dist/preact.min.module.js.map +1 -0
  355. package/templates/static/node_modules/preact/dist/preact.min.umd.js +2 -0
  356. package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +1 -0
  357. package/templates/static/node_modules/preact/dist/preact.mjs +2 -0
  358. package/templates/static/node_modules/preact/dist/preact.module.js +2 -0
  359. package/templates/static/node_modules/preact/dist/preact.module.js.map +1 -0
  360. package/templates/static/node_modules/preact/dist/preact.umd.js +2 -0
  361. package/templates/static/node_modules/preact/dist/preact.umd.js.map +1 -0
  362. package/templates/static/node_modules/preact/hooks/dist/hooks.js +2 -0
  363. package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +1 -0
  364. package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +2 -0
  365. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +2 -0
  366. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +1 -0
  367. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +2 -0
  368. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +1 -0
  369. package/templates/static/node_modules/preact/hooks/package.json +35 -0
  370. package/templates/static/node_modules/preact/hooks/src/index.d.ts +145 -0
  371. package/templates/static/node_modules/preact/hooks/src/index.js +555 -0
  372. package/templates/static/node_modules/preact/hooks/src/internal.d.ts +103 -0
  373. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +2 -0
  374. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +1 -0
  375. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +2 -0
  376. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +2 -0
  377. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +1 -0
  378. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +2 -0
  379. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +1 -0
  380. package/templates/static/node_modules/preact/jsx-runtime/package.json +28 -0
  381. package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +62 -0
  382. package/templates/static/node_modules/preact/jsx-runtime/src/index.js +206 -0
  383. package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +36 -0
  384. package/templates/static/node_modules/preact/package.json +258 -0
  385. package/templates/static/node_modules/preact/src/cjs.js +3 -0
  386. package/templates/static/node_modules/preact/src/clone-element.js +48 -0
  387. package/templates/static/node_modules/preact/src/component.js +249 -0
  388. package/templates/static/node_modules/preact/src/constants.js +22 -0
  389. package/templates/static/node_modules/preact/src/create-context.js +60 -0
  390. package/templates/static/node_modules/preact/src/create-element.js +97 -0
  391. package/templates/static/node_modules/preact/src/diff/catch-error.js +46 -0
  392. package/templates/static/node_modules/preact/src/diff/children.js +451 -0
  393. package/templates/static/node_modules/preact/src/diff/index.js +684 -0
  394. package/templates/static/node_modules/preact/src/diff/props.js +173 -0
  395. package/templates/static/node_modules/preact/src/dom.d.ts +2476 -0
  396. package/templates/static/node_modules/preact/src/index-5.d.ts +399 -0
  397. package/templates/static/node_modules/preact/src/index.d.ts +402 -0
  398. package/templates/static/node_modules/preact/src/index.js +13 -0
  399. package/templates/static/node_modules/preact/src/internal.d.ts +190 -0
  400. package/templates/static/node_modules/preact/src/jsx.d.ts +2878 -0
  401. package/templates/static/node_modules/preact/src/options.js +16 -0
  402. package/templates/static/node_modules/preact/src/render.js +78 -0
  403. package/templates/static/node_modules/preact/src/util.js +28 -0
  404. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +2 -0
  405. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +1 -0
  406. package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +2 -0
  407. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +2 -0
  408. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +1 -0
  409. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +2 -0
  410. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +1 -0
  411. package/templates/static/node_modules/preact/test-utils/package.json +28 -0
  412. package/templates/static/node_modules/preact/test-utils/src/index.d.ts +3 -0
  413. package/templates/static/node_modules/preact/test-utils/src/index.js +129 -0
  414. package/templates/static/node_modules/preact-render-to-string/LICENSE +21 -0
  415. package/templates/static/node_modules/preact-render-to-string/README.md +149 -0
  416. package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +2 -0
  417. package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +17 -0
  418. package/templates/static/node_modules/preact-render-to-string/dist/index.js +6 -0
  419. package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +1 -0
  420. package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +2 -0
  421. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +2 -0
  422. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +1 -0
  423. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +2 -0
  424. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +1 -0
  425. package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +35 -0
  426. package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +2 -0
  427. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +4 -0
  428. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +1 -0
  429. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +2 -0
  430. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +2 -0
  431. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +1 -0
  432. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +2 -0
  433. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +1 -0
  434. package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +24 -0
  435. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +2 -0
  436. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +1 -0
  437. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +2 -0
  438. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +2 -0
  439. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +1 -0
  440. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +2 -0
  441. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +1 -0
  442. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +884 -0
  443. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +1 -0
  444. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +884 -0
  445. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +884 -0
  446. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +1 -0
  447. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +888 -0
  448. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +1 -0
  449. package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +19 -0
  450. package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +10 -0
  451. package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +24 -0
  452. package/templates/static/node_modules/preact-render-to-string/jsx.js +1 -0
  453. package/templates/static/node_modules/preact-render-to-string/package.json +152 -0
  454. package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +17 -0
  455. package/templates/static/node_modules/preact-render-to-string/src/index.js +764 -0
  456. package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +35 -0
  457. package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +24 -0
  458. package/templates/static/node_modules/preact-render-to-string/src/jsx.js +102 -0
  459. package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +97 -0
  460. package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +62 -0
  461. package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +20 -0
  462. package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +8 -0
  463. package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +208 -0
  464. package/templates/static/node_modules/preact-render-to-string/src/pretty.js +491 -0
  465. package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +19 -0
  466. package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +84 -0
  467. package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +10 -0
  468. package/templates/static/node_modules/preact-render-to-string/src/stream.js +43 -0
  469. package/templates/static/node_modules/preact-render-to-string/typings.json +5 -0
  470. package/templates/static/node_modules/sirv/build.js +197 -0
  471. package/templates/static/node_modules/sirv/build.mjs +197 -0
  472. package/templates/static/node_modules/sirv/index.d.mts +29 -0
  473. package/templates/static/node_modules/sirv/index.d.ts +33 -0
  474. package/templates/static/node_modules/sirv/package.json +40 -0
  475. package/templates/static/node_modules/sirv/readme.md +238 -0
  476. package/templates/static/node_modules/totalist/dist/index.js +24 -0
  477. package/templates/static/node_modules/totalist/dist/index.mjs +22 -0
  478. package/templates/static/node_modules/totalist/index.d.ts +3 -0
  479. package/templates/static/node_modules/totalist/license +21 -0
  480. package/templates/static/node_modules/totalist/package.json +55 -0
  481. package/templates/static/node_modules/totalist/readme.md +109 -0
  482. package/templates/static/node_modules/totalist/sync/index.d.ts +3 -0
  483. package/templates/static/node_modules/totalist/sync/index.js +17 -0
  484. package/templates/static/node_modules/totalist/sync/index.mjs +15 -0
  485. package/templates/static/node_modules/typescript/bin/tsc +2 -0
  486. package/templates/static/node_modules/typescript/bin/tsserver +2 -0
  487. package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  488. package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  489. package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  490. package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  491. package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  492. package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  493. package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  494. package/templates/static/node_modules/typescript/lib/lib.d.ts +22 -0
  495. package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  496. package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  497. package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  498. package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  499. package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  500. package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  501. package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  502. package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  503. package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  504. package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  505. package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  506. package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  507. package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  508. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  509. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  510. package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  511. package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  512. package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  513. package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  514. package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  515. package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  516. package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  517. package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  518. package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  519. package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  520. package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  521. package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  522. package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  523. package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  524. package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  525. package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  526. package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  527. package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  528. package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  529. package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  530. package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  531. package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  532. package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  533. package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  534. package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  535. package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  536. package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  537. package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  538. package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  539. package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  540. package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  541. package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  542. package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  543. package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  544. package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  545. package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  546. package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  547. package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  548. package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  549. package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  550. package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  551. package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  552. package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  553. package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  554. package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  555. package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  556. package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  557. package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  558. package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  559. package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  560. package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  561. package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  562. package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  563. package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  564. package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  565. package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  566. package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  567. package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  568. package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  569. package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  570. package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  571. package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  572. package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  573. package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  574. package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  575. package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  576. package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  577. package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  578. package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  579. package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  580. package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  581. package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  582. package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  583. package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  584. package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  585. package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  586. package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  587. package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  588. package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  589. package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  590. package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  591. package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  592. package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  593. package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  594. package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  595. package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  596. package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  597. package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  598. package/templates/static/node_modules/typescript/lib/tsc.js +8 -0
  599. package/templates/static/node_modules/typescript/lib/tsserver.js +8 -0
  600. package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  601. package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  602. package/templates/static/node_modules/typescript/lib/typescript.d.ts +11437 -0
  603. package/templates/static/package.json +20 -0
  604. package/templates/static/server.js +130 -0
  605. package/templates/static/site/(home).tsx +12 -0
  606. package/templates/static/site/styles/global.scss +78 -0
  607. package/templates/static/tsconfig.json +39 -0
@@ -0,0 +1,148 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { readdirSync, statSync } from "node:fs";
19
+ import { join, relative, sep } from "node:path";
20
+ function walk(dir) {
21
+ const out = [];
22
+ for (const name of readdirSync(dir)) {
23
+ const p = join(dir, name);
24
+ const st = statSync(p);
25
+ if (st.isDirectory())
26
+ out.push(...walk(p));
27
+ else
28
+ out.push(p);
29
+ }
30
+ return out;
31
+ }
32
+ function normalizeSlashes(p) {
33
+ return p.split(sep).join("/");
34
+ }
35
+ function escapeRegex(s) {
36
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
37
+ }
38
+ function segmentToRegex(seg, paramNames) {
39
+ // (id) => ([^/]+)
40
+ // (...rest) => (.*)
41
+ if (seg.startsWith("...")) {
42
+ const name = seg.slice(3);
43
+ paramNames.push(name);
44
+ return "(.*)";
45
+ }
46
+ paramNames.push(seg);
47
+ return "([^/]+)";
48
+ }
49
+ function buildRoutePattern(urlPath) {
50
+ // Convert /user/:id into regex
51
+ // We store urlPath with placeholders already replaced during scan
52
+ const parts = urlPath.split("/").filter(Boolean);
53
+ const paramNames = [];
54
+ const regexParts = parts.map((p) => {
55
+ if (p.startsWith(":")) {
56
+ paramNames.push(p.slice(1));
57
+ return "([^/]+)";
58
+ }
59
+ if (p.startsWith("*")) {
60
+ paramNames.push(p.slice(1));
61
+ return "(.*)";
62
+ }
63
+ return escapeRegex(p);
64
+ });
65
+ const src = "^/" + regexParts.join("/") + "/?$";
66
+ return { src, paramNames };
67
+ }
68
+ export function scanRoutes(config) {
69
+ const siteRoot = join(process.cwd(), config.siteDir);
70
+ const files = walk(siteRoot);
71
+ const routes = [];
72
+ for (const abs of files) {
73
+ const rel = normalizeSlashes(relative(siteRoot, abs));
74
+ const extMatch = config.routes.fileExtensions.some((ext) => rel.endsWith(ext));
75
+ if (!extMatch)
76
+ continue;
77
+ const base = rel.split("/").pop();
78
+ const m = base.match(config.routes.routeFilePattern);
79
+ if (!m)
80
+ continue;
81
+ const name = m[1]; // inside ( )
82
+ const relDir = rel.split("/").slice(0, -1).join("/");
83
+ // name parsing:
84
+ // home => /
85
+ // about => /about
86
+ // id => /:id
87
+ // ...rest => /*rest
88
+ let routeSeg = name;
89
+ let urlSeg = "";
90
+ if (routeSeg === "home")
91
+ urlSeg = "";
92
+ else if (routeSeg.startsWith("..."))
93
+ urlSeg = "*" + routeSeg.slice(3);
94
+ else
95
+ urlSeg = routeSeg;
96
+ // build url path
97
+ let url = "/" + (relDir ? relDir + "/" : "") + urlSeg;
98
+ url = url.replaceAll("//", "/");
99
+ // Dynamic route segment detection:
100
+ // Routes are determined by the filename within parentheses
101
+ // - (home).tsx => / (root) or /{dir}/ (in subdirectory)
102
+ // - ($paramName).tsx => /:paramName (dynamic param, requires $ prefix)
103
+ // - (...restName).tsx => /*restName (catch-all, requires ... prefix)
104
+ // - Any other (name).tsx => /name (literal segment)
105
+ const rawName = name;
106
+ // Handle special prefixes for dynamic routing
107
+ if (rawName.startsWith("$") && !rawName.startsWith("...")) {
108
+ // ($paramName) syntax for dynamic parameters
109
+ const param = rawName.slice(1);
110
+ if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(param)) {
111
+ throw new Error(`Invalid parameter name: ${param} in route file ${rel}`);
112
+ }
113
+ url = "/" + (relDir ? relDir + "/" : "") + ":" + param;
114
+ url = url.replaceAll("//", "/");
115
+ }
116
+ else if (rawName.startsWith("...")) {
117
+ // (...restName) syntax for catch-all routes
118
+ const restName = rawName.slice(3);
119
+ if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(restName)) {
120
+ throw new Error(`Invalid rest parameter name: ${restName} in route file ${rel}`);
121
+ }
122
+ url = "/" + (relDir ? relDir + "/" : "") + "*" + restName;
123
+ url = url.replaceAll("//", "/");
124
+ }
125
+ else if (rawName === "home") {
126
+ // (home) is special - becomes root of its directory
127
+ url = relDir === "" ? "/" : "/" + relDir;
128
+ }
129
+ // else: (anything else) treated as literal segment
130
+ const { src, paramNames } = buildRoutePattern(url);
131
+ routes.push({
132
+ id: rel.replaceAll("/", "_"),
133
+ filePath: abs,
134
+ urlPath: url,
135
+ pattern: src,
136
+ paramNames,
137
+ });
138
+ }
139
+ routes.sort((a, b) => {
140
+ // more specific first
141
+ const aDyn = a.urlPath.includes(":") || a.urlPath.includes("*");
142
+ const bDyn = b.urlPath.includes(":") || b.urlPath.includes("*");
143
+ if (aDyn !== bDyn)
144
+ return aDyn ? 1 : -1;
145
+ return a.urlPath.localeCompare(b.urlPath);
146
+ });
147
+ return routes;
148
+ }
@@ -0,0 +1,18 @@
1
+ import type { RenderMode } from "./config.js";
2
+ export type RouteModule = {
3
+ mode?: RenderMode;
4
+ revalidateSeconds?: number;
5
+ hydrate?: boolean;
6
+ middleware?: any;
7
+ loader?: (ctx: LoaderContext) => Promise<any> | any;
8
+ Head?: (props: any) => any;
9
+ default: (props: any) => any;
10
+ };
11
+ export type LoaderContext = {
12
+ url: URL;
13
+ params: Record<string, string>;
14
+ query: Record<string, string>;
15
+ headers: Record<string, string>;
16
+ cookies: Record<string, string>;
17
+ data?: Record<string, any>;
18
+ };
@@ -0,0 +1,18 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ export {};
@@ -0,0 +1,20 @@
1
+ export interface CompileOptions {
2
+ inputPath: string;
3
+ outputPath?: string;
4
+ minified?: boolean;
5
+ sourceMap?: boolean;
6
+ watch?: boolean;
7
+ }
8
+ export interface CompileResult {
9
+ css: string;
10
+ sourceMap?: string;
11
+ error?: string;
12
+ }
13
+ export declare class ScssCompiler {
14
+ compile(options: CompileOptions): CompileResult;
15
+ compileString(scss: string, options?: {
16
+ minified?: boolean;
17
+ }): CompileResult;
18
+ compileGlob(pattern: string, outputDir: string, minified?: boolean): number;
19
+ }
20
+ export declare function createScssCompiler(): ScssCompiler;
@@ -0,0 +1,87 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { compile, compileString } from "sass";
19
+ import { globSync } from "glob";
20
+ import { writeFileSync, existsSync, mkdirSync } from "node:fs";
21
+ import { dirname, join, relative } from "node:path";
22
+ import { log } from "../shared/log.js";
23
+ export class ScssCompiler {
24
+ compile(options) {
25
+ const { inputPath, outputPath, minified = false, sourceMap = false, } = options;
26
+ try {
27
+ if (!existsSync(inputPath)) {
28
+ return { css: "", error: `File not found: ${inputPath}` };
29
+ }
30
+ const result = compile(inputPath, {
31
+ style: minified ? "compressed" : "expanded",
32
+ sourceMap,
33
+ });
34
+ if (outputPath) {
35
+ mkdirSync(dirname(outputPath), { recursive: true });
36
+ writeFileSync(outputPath, result.css);
37
+ if (result.sourceMap && sourceMap) {
38
+ writeFileSync(outputPath + ".map", JSON.stringify(result.sourceMap));
39
+ }
40
+ log.info(`[SCSS] ✓ ${relative(process.cwd(), inputPath)} → ${relative(process.cwd(), outputPath)}`);
41
+ }
42
+ return {
43
+ css: result.css,
44
+ sourceMap: result.sourceMap
45
+ ? JSON.stringify(result.sourceMap)
46
+ : undefined,
47
+ };
48
+ }
49
+ catch (err) {
50
+ const message = err.message || String(err);
51
+ log.error(`[SCSS] ✗ ${inputPath}: ${message}`);
52
+ return { css: "", error: message };
53
+ }
54
+ }
55
+ compileString(scss, options) {
56
+ try {
57
+ const result = compileString(scss, {
58
+ style: options?.minified ? "compressed" : "expanded",
59
+ });
60
+ return { css: result.css };
61
+ }
62
+ catch (err) {
63
+ const message = err.message || String(err);
64
+ log.error(`[SCSS] ✗ Inline compilation error: ${message}`);
65
+ return { css: "", error: message };
66
+ }
67
+ }
68
+ compileGlob(pattern, outputDir, minified = false) {
69
+ const files = globSync(pattern);
70
+ let count = 0;
71
+ files.forEach((file) => {
72
+ const rel = relative(outputDir, file);
73
+ const output = join(outputDir, rel.replace(/\.scss$/, ".css"));
74
+ const result = this.compile({
75
+ inputPath: file,
76
+ outputPath: output,
77
+ minified,
78
+ });
79
+ if (!result.error)
80
+ count++;
81
+ });
82
+ return count;
83
+ }
84
+ }
85
+ export function createScssCompiler() {
86
+ return new ScssCompiler();
87
+ }
@@ -0,0 +1,4 @@
1
+ import { DBConfig, IDBDriver } from "./types";
2
+ export declare class DBConnector {
3
+ static create(config: DBConfig): IDBDriver;
4
+ }
@@ -0,0 +1,33 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { JDBDriver } from "./drivers/jdb";
19
+ import { SQLDriver } from "./drivers/sql";
20
+ export class DBConnector {
21
+ static create(config) {
22
+ switch (config.type) {
23
+ case "jdb":
24
+ return new JDBDriver(config);
25
+ case "sqlite":
26
+ case "postgres":
27
+ case "mysql":
28
+ return new SQLDriver(config);
29
+ default:
30
+ throw new Error(`Unsupported DB type: ${config.type}`);
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,13 @@
1
+ import { IDBDriver, DBConfig, UnifiedQuery } from "../types";
2
+ import { Filter, Update } from "../../jdb/types";
3
+ export declare class JDBDriver implements IDBDriver {
4
+ private engine;
5
+ constructor(config: DBConfig);
6
+ connect(): Promise<void>;
7
+ disconnect(): Promise<void>;
8
+ query<T = any>(q: UnifiedQuery<T>): Promise<T[]>;
9
+ create<T = any>(collection: string, data: any): Promise<T>;
10
+ update<T = any>(collection: string, filter: Filter<T>, update: Update<T>): Promise<number>;
11
+ delete<T = any>(collection: string, filter: Filter<T>): Promise<number>;
12
+ count<T = any>(collection: string, filter: Filter<T>): Promise<number>;
13
+ }
@@ -0,0 +1,59 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { JDBEngine } from "../../jdb";
19
+ export class JDBDriver {
20
+ engine;
21
+ constructor(config) {
22
+ const jdbConfig = config.jdb || {
23
+ root: "./data",
24
+ inMemory: false,
25
+ };
26
+ this.engine = new JDBEngine(jdbConfig);
27
+ }
28
+ async connect() {
29
+ await this.engine.connect();
30
+ }
31
+ async disconnect() {
32
+ await this.engine.disconnect();
33
+ }
34
+ async query(q) {
35
+ if (typeof q === "string") {
36
+ throw new Error("Raw string queries not supported in JDB directly. Use object syntax.");
37
+ }
38
+ if ("sql" in q) {
39
+ throw new Error("SQL queries not supported in JDB driver.");
40
+ }
41
+ const query = q;
42
+ const coll = this.engine.collection(query.find);
43
+ return await coll.find(query.where || {}, query.options);
44
+ }
45
+ async create(collection, data) {
46
+ return await this.engine.collection(collection).insert(data);
47
+ }
48
+ async update(collection, filter, update) {
49
+ return await this.engine
50
+ .collection(collection)
51
+ .update(filter, update, true);
52
+ }
53
+ async delete(collection, filter) {
54
+ return await this.engine.collection(collection).delete(filter, true);
55
+ }
56
+ async count(collection, filter) {
57
+ return await this.engine.collection(collection).count(filter);
58
+ }
59
+ }
@@ -0,0 +1,18 @@
1
+ import { IDBDriver, DBConfig, UnifiedQuery } from "../types";
2
+ import { Filter, Update } from "../../jdb/types";
3
+ /**
4
+ * Validate and register allowed table/collection names for security
5
+ */
6
+ export declare function registerAllowedTable(tableName: string): void;
7
+ export declare class SQLDriver implements IDBDriver {
8
+ private executor;
9
+ constructor(config: DBConfig);
10
+ connect(): Promise<void>;
11
+ disconnect(): Promise<void>;
12
+ query<T = any>(q: UnifiedQuery<T>): Promise<T[]>;
13
+ private translateQuery;
14
+ create<T = any>(collection: string, data: any): Promise<T>;
15
+ update<T = any>(collection: string, filter: Filter<T>, update: Update<T>): Promise<number>;
16
+ delete<T = any>(collection: string, filter: Filter<T>): Promise<number>;
17
+ count<T = any>(collection: string, filter: Filter<T>): Promise<number>;
18
+ }
@@ -0,0 +1,182 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ // Whitelist of allowed identifiers (table/column names) - must be explicitly allowed
19
+ const ALLOWED_IDENTIFIERS = new Set();
20
+ /**
21
+ * Safely quote SQL identifier to prevent injection
22
+ * Only accepts alphanumeric, underscore, dollar sign
23
+ * Note: Hyphen is NOT allowed as it can cause confusion with operators
24
+ */
25
+ function quoteIdentifier(id) {
26
+ if (!id || !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(id)) {
27
+ throw new Error(`Invalid SQL identifier: ${id}. Only alphanumeric, underscore, and dollar sign allowed. Must start with letter, underscore, or dollar.`);
28
+ }
29
+ return `\`${id}\``; // Use backticks for MySQL, adjust for other databases
30
+ }
31
+ /**
32
+ * Validate and register allowed table/collection names for security
33
+ */
34
+ export function registerAllowedTable(tableName) {
35
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(tableName)) {
36
+ ALLOWED_IDENTIFIERS.add(tableName);
37
+ }
38
+ else {
39
+ throw new Error(`Invalid table name: ${tableName}. Must start with letter, underscore, or dollar. Only alphanumeric, underscore, and dollar allowed.`);
40
+ }
41
+ }
42
+ /**
43
+ * Check if table is in allowed list
44
+ */
45
+ function isTableAllowed(tableName) {
46
+ return ALLOWED_IDENTIFIERS.has(tableName);
47
+ }
48
+ /**
49
+ * Validate integer value (for LIMIT/OFFSET)
50
+ */
51
+ function validateInteger(value) {
52
+ const num = parseInt(value, 10);
53
+ if (isNaN(num) || num < 0) {
54
+ throw new Error(`Invalid integer value: ${value}`);
55
+ }
56
+ return num;
57
+ }
58
+ export class SQLDriver {
59
+ executor;
60
+ constructor(config) {
61
+ if (typeof config.connection === "function") {
62
+ this.executor = config.connection;
63
+ }
64
+ else if (config.connection && config.connection.query) {
65
+ // Support objects like Pool or Client from pg/mysql
66
+ this.executor = (sql, params) => config.connection.query(sql, params);
67
+ }
68
+ else {
69
+ // Default stub that warns if no connection provided, or we could try to load a default
70
+ this.executor = async () => {
71
+ throw new Error("No SQL connection provided to SQLDriver");
72
+ };
73
+ }
74
+ }
75
+ async connect() {
76
+ // Connection management usually handled by the pool passed in, but we can add logic here if needed
77
+ }
78
+ async disconnect() {
79
+ // No-op or close pool
80
+ }
81
+ async query(q) {
82
+ if (typeof q === "string") {
83
+ return this.executor(q, []);
84
+ }
85
+ if ("sql" in q) {
86
+ return this.executor(q.sql, q.params || []);
87
+ }
88
+ // Convert NoSQL style to SQL (Basic translation)
89
+ const query = q;
90
+ const { sql, params } = this.translateQuery(query);
91
+ return this.executor(sql, params);
92
+ }
93
+ translateQuery(q) {
94
+ // Security: Validate table name
95
+ if (!isTableAllowed(q.find)) {
96
+ throw new Error(`Table '${q.find}' not registered. Call registerAllowedTable() first.`);
97
+ }
98
+ let sql = `SELECT * FROM ${quoteIdentifier(q.find)}`;
99
+ const params = [];
100
+ if (q.where && Object.keys(q.where).length > 0) {
101
+ const conditions = [];
102
+ const whereRecord = q.where;
103
+ for (const key in whereRecord) {
104
+ // Security: Validate column name
105
+ if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
106
+ throw new Error(`Invalid column name: ${key}. Must start with letter, underscore, or dollar. Only alphanumeric, underscore, and dollar allowed.`);
107
+ }
108
+ // Safely access where property
109
+ const val = whereRecord[key];
110
+ conditions.push(`${quoteIdentifier(key)} = ?`);
111
+ params.push(val);
112
+ }
113
+ sql += ` WHERE ${conditions.join(" AND ")}`;
114
+ }
115
+ if (q.options?.limit) {
116
+ // Security: Validate limit is a positive integer
117
+ const limit = validateInteger(q.options.limit);
118
+ sql += ` LIMIT ${limit}`;
119
+ }
120
+ if (q.options?.skip) {
121
+ // Security: Validate offset is a non-negative integer
122
+ const skip = validateInteger(q.options.skip);
123
+ sql += ` OFFSET ${skip}`;
124
+ }
125
+ return { sql, params };
126
+ }
127
+ async create(collection, data) {
128
+ // Security: Validate table name
129
+ if (!isTableAllowed(collection)) {
130
+ throw new Error(`Table '${collection}' not registered. Call registerAllowedTable() first.`);
131
+ }
132
+ const keys = Object.keys(data);
133
+ // Security: Validate all column names
134
+ for (const key of keys) {
135
+ if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {
136
+ throw new Error(`Invalid column name: ${key}. Must start with letter, underscore, or dollar. Only alphanumeric, underscore, and dollar allowed.`);
137
+ }
138
+ }
139
+ const placeholders = keys.map(() => "?").join(",");
140
+ const quotedKeys = keys.map((k) => quoteIdentifier(k)).join(",");
141
+ const sql = `INSERT INTO ${quoteIdentifier(collection)} (${quotedKeys}) VALUES (${placeholders})`;
142
+ const params = keys.map((k) => data[k]);
143
+ await this.executor(sql, params);
144
+ // Retrieve generic - this might need adjustment per driver for "returning" support
145
+ return data;
146
+ }
147
+ async update(collection, filter, update) {
148
+ // Basic implementation requiring WHERE clause
149
+ // This is complex to map generic Mongo-style updates to SQL without a robust builder
150
+ throw new Error("Complex update translation not implemented for Generic SQL Driver yet. Use raw SQL.");
151
+ }
152
+ async delete(collection, filter) {
153
+ // Security: Validate table name
154
+ if (!isTableAllowed(collection)) {
155
+ throw new Error(`Table '${collection}' not registered. Call registerAllowedTable() first.`);
156
+ }
157
+ // Validate that filter is not empty to prevent accidental full table delete
158
+ if (!filter || Object.keys(filter).length === 0) {
159
+ throw new Error("Delete requires at least one filter condition. Use truncate or raw SQL for full table deletion.");
160
+ }
161
+ const { sql, params } = this.translateQuery({
162
+ find: collection,
163
+ where: filter,
164
+ });
165
+ const deleteSql = sql.replace("SELECT \\*", "DELETE");
166
+ await this.executor(deleteSql, params);
167
+ return 1; // Unknown count without driver specific result
168
+ }
169
+ async count(collection, filter) {
170
+ // Security: Validate table name
171
+ if (!isTableAllowed(collection)) {
172
+ throw new Error(`Table '${collection}' not registered. Call registerAllowedTable() first.`);
173
+ }
174
+ const { sql, params } = this.translateQuery({
175
+ find: collection,
176
+ where: filter,
177
+ });
178
+ const countSql = sql.replace("SELECT *", "SELECT COUNT(*) as count");
179
+ const res = await this.executor(countSql, params);
180
+ return res[0]?.count || 0;
181
+ }
182
+ }
@@ -0,0 +1,19 @@
1
+ import { DBConfig, UnifiedQuery } from "./types";
2
+ import { Filter, Update } from "../jdb/types";
3
+ export * from "./types";
4
+ export * from "./drivers/jdb";
5
+ export * from "./drivers/sql";
6
+ export declare class DB {
7
+ private driver;
8
+ private config;
9
+ constructor(config: DBConfig);
10
+ connect(): Promise<void>;
11
+ disconnect(): Promise<void>;
12
+ query<T = any>(q: UnifiedQuery<T> | string, params?: any[]): Promise<T[]>;
13
+ find<T = any>(collection: string, filter?: Filter<T>, options?: any): Promise<T[]>;
14
+ findOne<T = any>(collection: string, filter: Filter<T>): Promise<T | null>;
15
+ create<T = any>(collection: string, data: any): Promise<T>;
16
+ update<T = any>(collection: string, filter: Filter<T>, update: Update<T>): Promise<number>;
17
+ delete<T = any>(collection: string, filter: Filter<T>): Promise<number>;
18
+ count<T = any>(collection: string, filter: Filter<T>): Promise<number>;
19
+ }