create-jen-app 1.2.3 → 1.2.4

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 (355) hide show
  1. package/dist/colors.js +0 -17
  2. package/dist/create.js +5 -17
  3. package/dist/generator.js +14 -31
  4. package/dist/index.js +6 -1
  5. package/package.json +1 -1
  6. package/templates/ssr-isr/README.md +77 -0
  7. package/templates/ssr-isr/build.js +118 -0
  8. package/templates/ssr-isr/jen.config.ts +109 -0
  9. package/templates/ssr-isr/jenjs.d.ts +22 -0
  10. package/templates/ssr-isr/lib/api/(hello).js +9 -0
  11. package/templates/ssr-isr/lib/auth/cookie-utils.js +79 -0
  12. package/templates/ssr-isr/lib/auth/index.js +2 -0
  13. package/templates/ssr-isr/lib/auth/jwt.js +57 -0
  14. package/templates/ssr-isr/lib/auth/session.js +92 -0
  15. package/templates/ssr-isr/lib/build/asset-hashing.d.ts +10 -0
  16. package/templates/ssr-isr/lib/build/asset-hashing.js +25 -0
  17. package/templates/ssr-isr/lib/build/asset-manifest.d.ts +11 -0
  18. package/templates/ssr-isr/lib/build/asset-manifest.js +21 -0
  19. package/templates/{static → ssr-isr}/lib/build/build.d.ts +1 -1
  20. package/templates/ssr-isr/lib/build/build.js +141 -0
  21. package/templates/{static → ssr-isr}/lib/build/island-hydration.d.ts +8 -5
  22. package/templates/ssr-isr/lib/build/island-hydration.js +44 -0
  23. package/templates/ssr-isr/lib/build/minifier.d.ts +20 -0
  24. package/templates/ssr-isr/lib/build/minifier.js +46 -0
  25. package/templates/ssr-isr/lib/build/page-renderer.d.ts +17 -0
  26. package/templates/ssr-isr/lib/build/page-renderer.js +28 -0
  27. package/templates/ssr-isr/lib/build/production-build.d.ts +10 -0
  28. package/templates/ssr-isr/lib/build/production-build.js +13 -0
  29. package/templates/ssr-isr/lib/build/ssg-pipeline.d.ts +15 -0
  30. package/templates/ssr-isr/lib/build/ssg-pipeline.js +113 -0
  31. package/templates/ssr-isr/lib/build-tools/build-site.js +36 -0
  32. package/templates/ssr-isr/lib/cache/index.js +10 -0
  33. package/templates/ssr-isr/lib/cache/memory.js +40 -0
  34. package/templates/ssr-isr/lib/cache/redis.js +61 -0
  35. package/templates/ssr-isr/lib/cli/banner.js +28 -0
  36. package/templates/ssr-isr/lib/cli/templates/ssg/jen.config.js +32 -0
  37. package/templates/ssr-isr/lib/cli/templates/ssg/site/index.js +9 -0
  38. package/templates/ssr-isr/lib/cli/templates/ssr/jen.config.js +32 -0
  39. package/templates/ssr-isr/lib/cli/templates/ssr/site/index.js +9 -0
  40. package/templates/ssr-isr/lib/compilers/esbuild-plugins.js +111 -0
  41. package/templates/ssr-isr/lib/compilers/svelte.js +44 -0
  42. package/templates/ssr-isr/lib/compilers/vue.js +90 -0
  43. package/templates/ssr-isr/lib/core/http.js +71 -0
  44. package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
  45. package/templates/ssr-isr/lib/core/paths.js +39 -0
  46. package/templates/ssr-isr/lib/core/routes/match.js +47 -0
  47. package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
  48. package/templates/ssr-isr/lib/core/types.js +1 -0
  49. package/templates/ssr-isr/lib/css/compiler.js +74 -0
  50. package/templates/ssr-isr/lib/db/connector.js +42 -0
  51. package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
  52. package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
  53. package/templates/ssr-isr/lib/db/index.js +48 -0
  54. package/templates/ssr-isr/lib/db/types.js +1 -0
  55. package/templates/ssr-isr/lib/graphql/index.js +52 -0
  56. package/templates/ssr-isr/lib/graphql/resolvers.js +25 -0
  57. package/templates/ssr-isr/lib/graphql/schema.js +35 -0
  58. package/templates/ssr-isr/lib/i18n/en.json +4 -0
  59. package/templates/ssr-isr/lib/i18n/es.json +4 -0
  60. package/templates/ssr-isr/lib/i18n/index.js +15 -0
  61. package/templates/ssr-isr/lib/import/jen-import.js +161 -0
  62. package/templates/ssr-isr/lib/index.js +116 -0
  63. package/templates/ssr-isr/lib/jdb/engine.js +275 -0
  64. package/templates/ssr-isr/lib/jdb/index.js +34 -0
  65. package/templates/ssr-isr/lib/jdb/types.js +1 -0
  66. package/templates/ssr-isr/lib/jdb/utils.js +176 -0
  67. package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.js +0 -17
  68. package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
  69. package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.js +0 -17
  70. package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.js +0 -17
  71. package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.js +0 -17
  72. package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.js +0 -17
  73. package/templates/ssr-isr/lib/middleware/context.js +124 -0
  74. package/templates/{static → ssr-isr}/lib/middleware/decorators.js +0 -17
  75. package/templates/{static → ssr-isr}/lib/middleware/errors/handler.js +0 -17
  76. package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
  77. package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
  78. package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
  79. package/templates/ssr-isr/lib/middleware/registry.js +85 -0
  80. package/templates/ssr-isr/lib/middleware/response.js +107 -0
  81. package/templates/ssr-isr/lib/middleware/types.d.ts +1 -0
  82. package/templates/ssr-isr/lib/middleware/types.js +1 -0
  83. package/templates/ssr-isr/lib/middleware/utils/matcher.js +13 -0
  84. package/templates/{static → ssr-isr}/lib/native/bundle.js +0 -17
  85. package/templates/{static → ssr-isr}/lib/native/dev-server.js +0 -17
  86. package/templates/{static → ssr-isr}/lib/native/index.js +0 -17
  87. package/templates/{static → ssr-isr}/lib/native/optimizer.js +0 -17
  88. package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
  89. package/templates/ssr-isr/lib/plugin/loader.js +36 -0
  90. package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
  91. package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
  92. package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
  93. package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
  94. package/templates/ssr-isr/lib/runtime/islands.js +110 -0
  95. package/templates/ssr-isr/lib/runtime/render.js +244 -0
  96. package/templates/ssr-isr/lib/server/api-routes.js +237 -0
  97. package/templates/ssr-isr/lib/server/api.js +108 -0
  98. package/templates/ssr-isr/lib/server/app.js +438 -0
  99. package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
  100. package/templates/ssr-isr/lib/server/ssr.js +202 -0
  101. package/templates/ssr-isr/lib/shared/log.js +64 -0
  102. package/templates/ssr-isr/package.json +23 -0
  103. package/templates/ssr-isr/server.js +128 -0
  104. package/templates/ssr-isr/site/pages/(index).tsx +11 -0
  105. package/templates/ssr-isr/site/styles/global.scss +37 -0
  106. package/templates/ssr-isr/tsconfig.json +39 -0
  107. package/templates/static/build.js +30 -18
  108. package/templates/static/jen.config.ts +0 -18
  109. package/templates/static/jenjs.d.ts +0 -18
  110. package/templates/static/lib/api/(hello).js +0 -17
  111. package/templates/static/lib/api/examples/files/[...slug].js +22 -0
  112. package/templates/static/lib/api/examples/hello.js +11 -0
  113. package/templates/static/lib/api/examples/posts/[id].js +37 -0
  114. package/templates/static/lib/api/examples/posts.js +37 -0
  115. package/templates/static/lib/api/examples/search.js +23 -0
  116. package/templates/static/lib/api/index.js +41 -0
  117. package/templates/static/lib/api/loader.js +234 -0
  118. package/templates/static/lib/api/router.js +259 -0
  119. package/templates/static/lib/assets/types.js +1 -0
  120. package/templates/static/lib/auth/cookie-utils.js +3 -16
  121. package/templates/static/lib/auth/index.js +0 -17
  122. package/templates/static/lib/auth/jwt.js +0 -17
  123. package/templates/static/lib/auth/session.js +0 -17
  124. package/templates/static/lib/build/asset-hashing.js +44 -36
  125. package/templates/static/lib/build/asset-manifest.js +16 -33
  126. package/templates/static/lib/build/build.js +270 -125
  127. package/templates/static/lib/build/bundle-analyzer-ui.js +417 -0
  128. package/templates/static/lib/build/bundle-analyzer.js +945 -0
  129. package/templates/static/lib/build/code-splitter.js +194 -0
  130. package/templates/static/lib/build/feature-analyzer.js +190 -0
  131. package/templates/static/lib/build/feature-gate.js +257 -0
  132. package/templates/static/lib/build/island-hydration.js +17 -35
  133. package/templates/static/lib/build/lazy-loader.js +322 -0
  134. package/templates/static/lib/build/minifier.js +40 -59
  135. package/templates/static/lib/build/page-renderer.js +23 -40
  136. package/templates/static/lib/build/production-build.js +9 -26
  137. package/templates/static/lib/build/rust-hashing.js +71 -0
  138. package/templates/static/lib/build/script-optimizer.js +285 -0
  139. package/templates/static/lib/build/ssg-pipeline.js +100 -106
  140. package/templates/static/lib/build/vercel-output.js +298 -0
  141. package/templates/static/lib/build-tools/build-site.js +0 -17
  142. package/templates/static/lib/cache/index.js +0 -17
  143. package/templates/static/lib/cache/memory.js +0 -17
  144. package/templates/static/lib/cache/redis.js +0 -17
  145. package/templates/static/lib/cli/banner.js +0 -17
  146. package/templates/static/lib/cli/templates/ssg/jen.config.js +0 -17
  147. package/templates/static/lib/cli/templates/ssr/jen.config.js +0 -17
  148. package/templates/static/lib/client/Image.js +42 -0
  149. package/templates/static/lib/client/Link.js +190 -0
  150. package/templates/static/lib/client/PWA.js +46 -0
  151. package/templates/static/lib/client/Seo.js +97 -0
  152. package/templates/static/lib/client/index.js +9 -0
  153. package/templates/static/lib/client/useNavigation.js +25 -0
  154. package/templates/static/lib/client/useRouter.js +64 -0
  155. package/templates/static/lib/client-routing/Link.js +17 -0
  156. package/templates/static/lib/client-routing/index.js +19 -0
  157. package/templates/static/lib/client-routing/router.js +151 -0
  158. package/templates/static/lib/client-routing/signal.js +147 -0
  159. package/templates/static/lib/compilers/esbuild-plugins.js +0 -17
  160. package/templates/static/lib/compilers/svelte.js +0 -17
  161. package/templates/static/lib/compilers/vue.js +0 -17
  162. package/templates/static/lib/core/config.js +0 -17
  163. package/templates/static/lib/core/feature-guard.js +136 -0
  164. package/templates/static/lib/core/features.js +99 -0
  165. package/templates/static/lib/core/http.js +0 -17
  166. package/templates/static/lib/core/layouts/index.js +10 -0
  167. package/templates/static/lib/core/layouts/render.js +158 -0
  168. package/templates/static/lib/core/layouts/scan.js +112 -0
  169. package/templates/static/lib/core/layouts/types.js +1 -0
  170. package/templates/static/lib/core/lifecycle.js +129 -0
  171. package/templates/static/lib/core/loader-schema.js +81 -0
  172. package/templates/static/lib/core/middleware-hooks.js +0 -17
  173. package/templates/static/lib/core/paths.js +0 -17
  174. package/templates/static/lib/core/routes/advanced.js +114 -0
  175. package/templates/static/lib/core/routes/handlers.js +181 -0
  176. package/templates/static/lib/core/routes/match.js +89 -17
  177. package/templates/static/lib/core/routes/orchestrator.js +171 -0
  178. package/templates/static/lib/core/routes/rendering-config.js +131 -0
  179. package/templates/static/lib/core/routes/scan.js +0 -17
  180. package/templates/static/lib/core/types.js +0 -17
  181. package/templates/static/lib/css/compiler.js +1 -18
  182. package/templates/static/lib/data-fetching/cache.js +223 -0
  183. package/templates/static/lib/data-fetching/client.js +202 -0
  184. package/templates/static/lib/data-fetching/feature-guard.js +29 -0
  185. package/templates/static/lib/data-fetching/graphql.js +265 -0
  186. package/templates/static/lib/data-fetching/index.js +57 -0
  187. package/templates/static/lib/data-fetching/rest.js +256 -0
  188. package/templates/static/lib/data-fetching/server.js +182 -0
  189. package/templates/static/lib/data-fetching/types.js +5 -0
  190. package/templates/static/lib/db/connector.js +0 -17
  191. package/templates/static/lib/db/drivers/jdb.js +0 -17
  192. package/templates/static/lib/db/drivers/sql.js +0 -17
  193. package/templates/static/lib/db/index.js +0 -17
  194. package/templates/static/lib/db/types.js +0 -17
  195. package/templates/static/lib/devtools/component-tree.js +106 -0
  196. package/templates/static/lib/devtools/devtools.js +638 -0
  197. package/templates/static/lib/devtools/event-bus.js +29 -0
  198. package/templates/static/lib/devtools/event-logger.js +67 -0
  199. package/templates/static/lib/devtools/index.js +9 -0
  200. package/templates/static/lib/devtools/integration.js +149 -0
  201. package/templates/static/lib/devtools/performance.js +84 -0
  202. package/templates/static/lib/devtools/persistence.js +57 -0
  203. package/templates/static/lib/devtools/plugins.js +97 -0
  204. package/templates/static/lib/devtools/search.js +89 -0
  205. package/templates/static/lib/devtools/ui.js +769 -0
  206. package/templates/static/lib/features/api/handler.js +10 -0
  207. package/templates/static/lib/features/api/index.js +5 -0
  208. package/templates/static/lib/features/api/types.js +4 -0
  209. package/templates/static/lib/features/middleware/compiled.js +7 -0
  210. package/templates/static/lib/features/middleware/index.js +5 -0
  211. package/templates/static/lib/features/middleware/types.js +4 -0
  212. package/templates/static/lib/fonts/index.js +46 -0
  213. package/templates/static/lib/fonts/inject.js +125 -0
  214. package/templates/static/lib/fonts/loader.js +196 -0
  215. package/templates/static/lib/fonts/types.js +1 -0
  216. package/templates/static/lib/graphql/index.js +1 -18
  217. package/templates/static/lib/graphql/resolvers.js +20 -13
  218. package/templates/static/lib/graphql/schema.js +0 -17
  219. package/templates/static/lib/i18n/index.js +7 -19
  220. package/templates/static/lib/import/jen-import.js +1 -18
  221. package/templates/static/lib/index.js +79 -125
  222. package/templates/static/lib/jdb/engine.js +0 -17
  223. package/templates/static/lib/jdb/index.js +1 -18
  224. package/templates/static/lib/jdb/types.js +0 -17
  225. package/templates/static/lib/jdb/utils.js +0 -17
  226. package/templates/static/lib/middleware/builtins/cors.js +3 -16
  227. package/templates/static/lib/middleware/context.js +0 -17
  228. package/templates/static/lib/middleware/kernel.js +117 -25
  229. package/templates/static/lib/middleware/pipeline.js +0 -17
  230. package/templates/static/lib/middleware/registry.js +0 -17
  231. package/templates/static/lib/middleware/response.js +0 -17
  232. package/templates/static/lib/plugin/examples/analytics-plugin.js +183 -0
  233. package/templates/static/lib/plugin/examples/cdn-upload-plugin.js +94 -0
  234. package/templates/static/lib/plugin/loader.js +0 -17
  235. package/templates/static/lib/plugin/plugin-manager.js +177 -0
  236. package/templates/static/lib/plugin/types.js +28 -0
  237. package/templates/static/lib/runtime/client-runtime.js +0 -17
  238. package/templates/static/lib/runtime/hmr.js +0 -17
  239. package/templates/static/lib/runtime/hydrate.js +0 -17
  240. package/templates/static/lib/runtime/island-hydration-client.js +0 -17
  241. package/templates/static/lib/runtime/islands.js +0 -17
  242. package/templates/static/lib/runtime/render.js +208 -50
  243. package/templates/static/lib/security/security-config.js +60 -0
  244. package/templates/static/lib/security/security-middleware.js +229 -0
  245. package/templates/static/lib/server/api-routes.js +153 -43
  246. package/templates/static/lib/server/api.js +0 -17
  247. package/templates/static/lib/server/app.js +539 -223
  248. package/templates/static/lib/server/isr.js +365 -0
  249. package/templates/static/lib/server/runtimeServe.js +31 -24
  250. package/templates/static/lib/server/ssr.js +98 -22
  251. package/templates/static/lib/server-actions/handler.js +180 -0
  252. package/templates/static/lib/server-actions/index.js +19 -0
  253. package/templates/static/lib/server-actions/middleware.js +146 -0
  254. package/templates/static/lib/server-actions/scan.js +152 -0
  255. package/templates/static/lib/server-actions/types.js +1 -0
  256. package/templates/static/lib/server-actions/validators.js +156 -0
  257. package/templates/static/lib/shared/log.js +19 -20
  258. package/templates/static/lib/telemetry/api/rate-limiter.js +32 -0
  259. package/templates/static/lib/telemetry/api/validator.js +67 -0
  260. package/templates/static/lib/telemetry/client.js +121 -0
  261. package/templates/static/lib/telemetry/tests/rate-limiter.test.js +46 -0
  262. package/templates/static/lib/telemetry/tests/validator.test.js +62 -0
  263. package/templates/static/lib/vendor/glob/glob.js +4766 -0
  264. package/templates/static/lib/vendor/preact/LICENSE +21 -0
  265. package/templates/static/lib/vendor/preact/preact.module.js +797 -0
  266. package/templates/static/lib/vendor/sass/sass.node.mjs +212 -0
  267. package/templates/static/package.json +4 -0
  268. package/templates/static/server.js +22 -22
  269. package/templates/static/site/(home).tsx +0 -18
  270. package/templates/static/tsconfig.json +5 -1
  271. package/templates/static/.esbuild/jen.config.js +0 -19
  272. package/templates/static/lib/build/asset-hashing.d.ts +0 -10
  273. package/templates/static/lib/build/asset-manifest.d.ts +0 -11
  274. package/templates/static/lib/build/minifier.d.ts +0 -20
  275. package/templates/static/lib/build/page-renderer.d.ts +0 -17
  276. package/templates/static/lib/build/production-build.d.ts +0 -10
  277. package/templates/static/lib/build/ssg-pipeline.d.ts +0 -15
  278. package/templates/static/lib/middleware/errors/http-error.js +0 -27
  279. package/templates/static/lib/middleware/types.js +0 -18
  280. package/templates/static/lib/middleware/utils/matcher.js +0 -30
  281. package/templates/static/lib/native/style-compiler.js +0 -36
  282. /package/templates/{static → ssr-isr}/lib/api/(hello).d.ts +0 -0
  283. /package/templates/{static → ssr-isr}/lib/auth/cookie-utils.d.ts +0 -0
  284. /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
  285. /package/templates/{static → ssr-isr}/lib/auth/jwt.d.ts +0 -0
  286. /package/templates/{static → ssr-isr}/lib/auth/session.d.ts +0 -0
  287. /package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +0 -0
  288. /package/templates/{static → ssr-isr}/lib/cache/index.d.ts +0 -0
  289. /package/templates/{static → ssr-isr}/lib/cache/memory.d.ts +0 -0
  290. /package/templates/{static → ssr-isr}/lib/cache/redis.d.ts +0 -0
  291. /package/templates/{static → ssr-isr}/lib/cli/banner.d.ts +0 -0
  292. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/jen.config.d.ts +0 -0
  293. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/site/index.d.ts +0 -0
  294. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/jen.config.d.ts +0 -0
  295. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/site/index.d.ts +0 -0
  296. /package/templates/{static → ssr-isr}/lib/compilers/esbuild-plugins.d.ts +0 -0
  297. /package/templates/{static → ssr-isr}/lib/compilers/svelte.d.ts +0 -0
  298. /package/templates/{static → ssr-isr}/lib/compilers/vue.d.ts +0 -0
  299. /package/templates/{static → ssr-isr}/lib/core/config.d.ts +0 -0
  300. /package/templates/{static/lib/middleware/types.d.ts → ssr-isr/lib/core/config.js} +0 -0
  301. /package/templates/{static → ssr-isr}/lib/core/http.d.ts +0 -0
  302. /package/templates/{static → ssr-isr}/lib/core/middleware-hooks.d.ts +0 -0
  303. /package/templates/{static → ssr-isr}/lib/core/paths.d.ts +0 -0
  304. /package/templates/{static → ssr-isr}/lib/core/routes/match.d.ts +0 -0
  305. /package/templates/{static → ssr-isr}/lib/core/routes/scan.d.ts +0 -0
  306. /package/templates/{static → ssr-isr}/lib/core/types.d.ts +0 -0
  307. /package/templates/{static → ssr-isr}/lib/css/compiler.d.ts +0 -0
  308. /package/templates/{static → ssr-isr}/lib/db/connector.d.ts +0 -0
  309. /package/templates/{static → ssr-isr}/lib/db/drivers/jdb.d.ts +0 -0
  310. /package/templates/{static → ssr-isr}/lib/db/drivers/sql.d.ts +0 -0
  311. /package/templates/{static → ssr-isr}/lib/db/index.d.ts +0 -0
  312. /package/templates/{static → ssr-isr}/lib/db/types.d.ts +0 -0
  313. /package/templates/{static → ssr-isr}/lib/graphql/index.d.ts +0 -0
  314. /package/templates/{static → ssr-isr}/lib/graphql/resolvers.d.ts +0 -0
  315. /package/templates/{static → ssr-isr}/lib/graphql/schema.d.ts +0 -0
  316. /package/templates/{static → ssr-isr}/lib/i18n/index.d.ts +0 -0
  317. /package/templates/{static → ssr-isr}/lib/import/jen-import.d.ts +0 -0
  318. /package/templates/{static → ssr-isr}/lib/index.d.ts +0 -0
  319. /package/templates/{static → ssr-isr}/lib/jdb/engine.d.ts +0 -0
  320. /package/templates/{static → ssr-isr}/lib/jdb/index.d.ts +0 -0
  321. /package/templates/{static → ssr-isr}/lib/jdb/types.d.ts +0 -0
  322. /package/templates/{static → ssr-isr}/lib/jdb/utils.d.ts +0 -0
  323. /package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.d.ts +0 -0
  324. /package/templates/{static → ssr-isr}/lib/middleware/builtins/cors.d.ts +0 -0
  325. /package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.d.ts +0 -0
  326. /package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.d.ts +0 -0
  327. /package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.d.ts +0 -0
  328. /package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.d.ts +0 -0
  329. /package/templates/{static → ssr-isr}/lib/middleware/context.d.ts +0 -0
  330. /package/templates/{static → ssr-isr}/lib/middleware/decorators.d.ts +0 -0
  331. /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
  332. /package/templates/{static → ssr-isr}/lib/middleware/errors/http-error.d.ts +0 -0
  333. /package/templates/{static → ssr-isr}/lib/middleware/kernel.d.ts +0 -0
  334. /package/templates/{static → ssr-isr}/lib/middleware/pipeline.d.ts +0 -0
  335. /package/templates/{static → ssr-isr}/lib/middleware/registry.d.ts +0 -0
  336. /package/templates/{static → ssr-isr}/lib/middleware/response.d.ts +0 -0
  337. /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
  338. /package/templates/{static → ssr-isr}/lib/native/bundle.d.ts +0 -0
  339. /package/templates/{static → ssr-isr}/lib/native/dev-server.d.ts +0 -0
  340. /package/templates/{static → ssr-isr}/lib/native/index.d.ts +0 -0
  341. /package/templates/{static → ssr-isr}/lib/native/optimizer.d.ts +0 -0
  342. /package/templates/{static → ssr-isr}/lib/native/style-compiler.d.ts +0 -0
  343. /package/templates/{static → ssr-isr}/lib/plugin/loader.d.ts +0 -0
  344. /package/templates/{static → ssr-isr}/lib/runtime/client-runtime.d.ts +0 -0
  345. /package/templates/{static → ssr-isr}/lib/runtime/hmr.d.ts +0 -0
  346. /package/templates/{static → ssr-isr}/lib/runtime/hydrate.d.ts +0 -0
  347. /package/templates/{static → ssr-isr}/lib/runtime/island-hydration-client.d.ts +0 -0
  348. /package/templates/{static → ssr-isr}/lib/runtime/islands.d.ts +0 -0
  349. /package/templates/{static → ssr-isr}/lib/runtime/render.d.ts +0 -0
  350. /package/templates/{static → ssr-isr}/lib/server/api-routes.d.ts +0 -0
  351. /package/templates/{static → ssr-isr}/lib/server/api.d.ts +0 -0
  352. /package/templates/{static → ssr-isr}/lib/server/app.d.ts +0 -0
  353. /package/templates/{static → ssr-isr}/lib/server/runtimeServe.d.ts +0 -0
  354. /package/templates/{static → ssr-isr}/lib/server/ssr.d.ts +0 -0
  355. /package/templates/{static → ssr-isr}/lib/shared/log.d.ts +0 -0
@@ -0,0 +1,769 @@
1
+ /*
2
+ * This file is part of Jen.js.
3
+ * Copyright (C) 2026 oopsio
4
+ */
5
+ /**
6
+ * Generates the HTML for the DevTools panel
7
+ */
8
+ export function getHTML() {
9
+ return `
10
+ <div class="jen-devtools-panel">
11
+ <div class="jen-devtools-header">
12
+ <div class="jen-devtools-title">
13
+ <span class="jen-devtools-logo">⚙️</span>
14
+ Jen.js DevTools
15
+ </div>
16
+ <div class="jen-devtools-controls">
17
+ <button class="jen-devtools-theme-toggle" title="Toggle theme">🌙</button>
18
+ <button class="jen-devtools-minimize" title="Minimize">−</button>
19
+ <button class="jen-devtools-close" title="Close">✕</button>
20
+ </div>
21
+ </div>
22
+
23
+ <div class="jen-devtools-content">
24
+ <div class="jen-devtools-sidebar">
25
+ <div class="jen-devtools-search-container">
26
+ <input
27
+ type="text"
28
+ class="jen-devtools-search"
29
+ placeholder="Search components..."
30
+ />
31
+ <div class="jen-search-results"></div>
32
+ </div>
33
+
34
+ <div class="jen-devtools-tree"></div>
35
+ </div>
36
+
37
+ <div class="jen-devtools-main">
38
+ <div class="jen-devtools-tabs">
39
+ <button class="jen-devtools-tab active" data-tab="inspector">
40
+ Inspector
41
+ </button>
42
+ <button class="jen-devtools-tab" data-tab="console">
43
+ Console
44
+ </button>
45
+ <button class="jen-devtools-tab" data-tab="network">
46
+ Network
47
+ </button>
48
+ <button class="jen-devtools-tab" data-tab="performance">
49
+ Performance
50
+ </button>
51
+ </div>
52
+
53
+ <div class="jen-devtools-tab-contents">
54
+ <!-- Inspector Tab -->
55
+ <div class="jen-devtools-tab-content active" data-tab="inspector">
56
+ <div class="jen-devtools-inspector">
57
+ <div class="jen-inspector-empty">
58
+ <p>Select a component to inspect</p>
59
+ </div>
60
+ </div>
61
+ </div>
62
+
63
+ <!-- Console Tab -->
64
+ <div class="jen-devtools-tab-content" data-tab="console">
65
+ <div class="jen-console">
66
+ <div class="jen-console-logs"></div>
67
+ <div class="jen-console-input-container">
68
+ <input
69
+ type="text"
70
+ class="jen-console-input"
71
+ placeholder="Type command..."
72
+ />
73
+ </div>
74
+ </div>
75
+ </div>
76
+
77
+ <!-- Network Tab -->
78
+ <div class="jen-devtools-tab-content" data-tab="network">
79
+ <div class="jen-network">
80
+ <div class="jen-network-list"></div>
81
+ </div>
82
+ </div>
83
+
84
+ <!-- Performance Tab -->
85
+ <div class="jen-devtools-tab-content" data-tab="performance">
86
+ <div class="jen-performance">
87
+ <div class="jen-performance-stats">
88
+ <div class="jen-stat">
89
+ <span class="jen-stat-label">FPS</span>
90
+ <span class="jen-stat-value" id="jen-fps">60</span>
91
+ </div>
92
+ <div class="jen-stat">
93
+ <span class="jen-stat-label">Render Time</span>
94
+ <span class="jen-stat-value" id="jen-render-time">0ms</span>
95
+ </div>
96
+ <div class="jen-stat">
97
+ <span class="jen-stat-label">Updates</span>
98
+ <span class="jen-stat-value" id="jen-updates">0</span>
99
+ </div>
100
+ <div class="jen-stat">
101
+ <span class="jen-stat-label">Memory</span>
102
+ <span class="jen-stat-value" id="jen-memory">0MB</span>
103
+ </div>
104
+ </div>
105
+ <canvas id="jen-performance-chart"></canvas>
106
+ </div>
107
+ </div>
108
+ </div>
109
+
110
+ <div class="jen-devtools-footer">
111
+ <button class="jen-devtools-export">📥 Export State</button>
112
+ </div>
113
+ </div>
114
+ </div>
115
+
116
+ <div class="jen-devtools-resize"></div>
117
+ </div>
118
+ `;
119
+ }
120
+ /**
121
+ * Generates the CSS for the DevTools panel
122
+ */
123
+ export function getStyles() {
124
+ return `
125
+ :root {
126
+ --jen-color-bg: #111111;
127
+ --jen-color-bg-secondary: #1a1a1a;
128
+ --jen-color-fg: #f0f0f0;
129
+ --jen-color-fg-muted: #a0a0a0;
130
+ --jen-color-border: #2a2a2a;
131
+ --jen-color-accent: #0ea5e9;
132
+ --jen-color-success: #10b981;
133
+ --jen-color-error: #ef4444;
134
+ --jen-color-warning: #f59e0b;
135
+ --jen-color-info: #3b82f6;
136
+ }
137
+
138
+ .light-theme {
139
+ --jen-color-bg: #ffffff;
140
+ --jen-color-fg: #1e1e1e;
141
+ --jen-color-border: #d0d0d0;
142
+ --jen-color-accent: #0078d4;
143
+ --jen-color-success: #107c10;
144
+ --jen-color-error: #d13438;
145
+ --jen-color-warning: #ffb900;
146
+ --jen-color-info: #0078d4;
147
+ }
148
+
149
+ #__jen_devtools__ {
150
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
151
+ font-size: 12px;
152
+ line-height: 1.4;
153
+ color: var(--jen-color-fg);
154
+ background: var(--jen-color-bg);
155
+ z-index: 99999;
156
+ position: fixed;
157
+ box-sizing: border-box;
158
+ * {
159
+ box-sizing: border-box;
160
+ }
161
+ }
162
+
163
+ .jen-devtools-panel {
164
+ width: 900px;
165
+ height: 650px;
166
+ position: fixed;
167
+ bottom: 20px;
168
+ right: 20px;
169
+ background: var(--jen-color-bg);
170
+ border: 1px solid var(--jen-color-border);
171
+ border-radius: 12px;
172
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(255,255,255,0.05);
173
+ display: flex;
174
+ flex-direction: column;
175
+ overflow: hidden;
176
+ user-select: none;
177
+ }
178
+
179
+ .jen-devtools-panel.minimized {
180
+ height: auto;
181
+ }
182
+
183
+ .jen-devtools-panel.minimized .jen-devtools-content {
184
+ display: none;
185
+ }
186
+
187
+ .jen-devtools-header {
188
+ display: flex;
189
+ justify-content: space-between;
190
+ align-items: center;
191
+ padding: 14px 18px;
192
+ border-bottom: 1px solid var(--jen-color-border);
193
+ background: var(--jen-color-bg-secondary);
194
+ cursor: move;
195
+ user-select: none;
196
+ }
197
+
198
+ .jen-devtools-title {
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 8px;
202
+ font-weight: 500;
203
+ font-size: 13px;
204
+ letter-spacing: 0.3px;
205
+ }
206
+
207
+ .jen-devtools-logo {
208
+ font-size: 16px;
209
+ }
210
+
211
+ .jen-devtools-controls {
212
+ display: flex;
213
+ gap: 4px;
214
+ }
215
+
216
+ .jen-devtools-controls button {
217
+ background: transparent;
218
+ border: none;
219
+ color: var(--jen-color-fg-muted);
220
+ cursor: pointer;
221
+ font-size: 14px;
222
+ padding: 6px 10px;
223
+ border-radius: 4px;
224
+ transition: all 0.2s;
225
+ }
226
+
227
+ .jen-devtools-controls button:hover {
228
+ background: var(--jen-color-border);
229
+ color: var(--jen-color-fg);
230
+ }
231
+
232
+ .jen-devtools-content {
233
+ display: flex;
234
+ flex: 1;
235
+ overflow: hidden;
236
+ }
237
+
238
+ .jen-devtools-sidebar {
239
+ width: 280px;
240
+ border-right: 1px solid var(--jen-color-border);
241
+ overflow-y: auto;
242
+ display: flex;
243
+ flex-direction: column;
244
+ background: var(--jen-color-bg-secondary);
245
+ }
246
+
247
+ .jen-devtools-search-container {
248
+ padding: 8px;
249
+ border-bottom: 1px solid var(--jen-color-border);
250
+ }
251
+
252
+ .jen-devtools-search {
253
+ width: 100%;
254
+ padding: 8px 10px;
255
+ background: var(--jen-color-bg);
256
+ border: 1px solid var(--jen-color-border);
257
+ border-radius: 6px;
258
+ color: var(--jen-color-fg);
259
+ font-size: 12px;
260
+ transition: all 0.2s;
261
+ }
262
+
263
+ .jen-devtools-search::placeholder {
264
+ color: var(--jen-color-fg-muted);
265
+ }
266
+
267
+ .jen-devtools-search:focus {
268
+ outline: none;
269
+ border-color: var(--jen-color-accent);
270
+ background: var(--jen-color-bg-secondary);
271
+ }
272
+
273
+ .jen-search-results {
274
+ max-height: 150px;
275
+ overflow-y: auto;
276
+ }
277
+
278
+ .jen-search-result {
279
+ padding: 6px 8px;
280
+ cursor: pointer;
281
+ border-left: 2px solid transparent;
282
+ transition: all 0.2s;
283
+ }
284
+
285
+ .jen-search-result:hover {
286
+ background: var(--jen-color-border);
287
+ border-left-color: var(--jen-color-accent);
288
+ }
289
+
290
+ .jen-devtools-tree {
291
+ flex: 1;
292
+ overflow-y: auto;
293
+ padding: 8px;
294
+ }
295
+
296
+ .jen-tree-node {
297
+ margin: 2px 0;
298
+ padding: 4px;
299
+ border-radius: 4px;
300
+ cursor: pointer;
301
+ user-select: none;
302
+ }
303
+
304
+ .jen-tree-node:hover {
305
+ background: var(--jen-color-border);
306
+ }
307
+
308
+ .jen-tree-node.selected {
309
+ background: var(--jen-color-accent);
310
+ color: white;
311
+ }
312
+
313
+ .jen-tree-node-content {
314
+ display: flex;
315
+ align-items: center;
316
+ gap: 4px;
317
+ padding: 4px;
318
+ }
319
+
320
+ .jen-tree-icon {
321
+ width: 12px;
322
+ text-align: center;
323
+ font-size: 10px;
324
+ }
325
+
326
+ .jen-tree-name {
327
+ font-size: 11px;
328
+ font-weight: 500;
329
+ white-space: nowrap;
330
+ overflow: hidden;
331
+ text-overflow: ellipsis;
332
+ }
333
+
334
+ .jen-tree-children {
335
+ padding-left: 12px;
336
+ margin: 2px 0;
337
+ }
338
+
339
+ .jen-devtools-main {
340
+ flex: 1;
341
+ display: flex;
342
+ flex-direction: column;
343
+ overflow: hidden;
344
+ }
345
+
346
+ .jen-devtools-tabs {
347
+ display: flex;
348
+ border-bottom: 1px solid var(--jen-color-border);
349
+ gap: 0;
350
+ padding: 0;
351
+ }
352
+
353
+ .jen-devtools-tab {
354
+ background: transparent;
355
+ border: none;
356
+ color: var(--jen-color-fg-muted);
357
+ padding: 12px 16px;
358
+ cursor: pointer;
359
+ font-size: 12px;
360
+ font-weight: 500;
361
+ border-bottom: 2px solid transparent;
362
+ transition: all 0.2s;
363
+ }
364
+
365
+ .jen-devtools-tab:hover {
366
+ color: var(--jen-color-fg);
367
+ }
368
+
369
+ .jen-devtools-tab.active {
370
+ color: var(--jen-color-accent);
371
+ border-bottom-color: var(--jen-color-accent);
372
+ }
373
+
374
+ .jen-devtools-tab-contents {
375
+ flex: 1;
376
+ overflow: hidden;
377
+ display: flex;
378
+ }
379
+
380
+ .jen-devtools-tab-content {
381
+ flex: 1;
382
+ display: none;
383
+ overflow-y: auto;
384
+ padding: 16px;
385
+ background: var(--jen-color-bg);
386
+ }
387
+
388
+ .jen-devtools-tab-content.active {
389
+ display: block;
390
+ }
391
+
392
+ .jen-devtools-inspector {
393
+ width: 100%;
394
+ }
395
+
396
+ .jen-inspector-empty {
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ height: 100%;
401
+ color: var(--jen-color-border);
402
+ }
403
+
404
+ .jen-inspector-header {
405
+ display: flex;
406
+ align-items: center;
407
+ gap: 12px;
408
+ margin-bottom: 16px;
409
+ padding-bottom: 12px;
410
+ border-bottom: 1px solid var(--jen-color-border);
411
+ }
412
+
413
+ .jen-inspector-header h3 {
414
+ margin: 0;
415
+ font-size: 14px;
416
+ font-weight: 600;
417
+ }
418
+
419
+ .jen-inspector-type {
420
+ font-size: 11px;
421
+ color: var(--jen-color-info);
422
+ background: var(--jen-color-border);
423
+ padding: 2px 6px;
424
+ border-radius: 3px;
425
+ }
426
+
427
+ .jen-inspector-section {
428
+ margin-bottom: 20px;
429
+ }
430
+
431
+ .jen-inspector-section h4 {
432
+ margin: 0 0 12px 0;
433
+ font-size: 11px;
434
+ font-weight: 600;
435
+ color: var(--jen-color-fg-muted);
436
+ text-transform: uppercase;
437
+ letter-spacing: 0.8px;
438
+ opacity: 0.8;
439
+ }
440
+
441
+ .jen-inspector-props,
442
+ .jen-inspector-state,
443
+ .jen-inspector-hooks,
444
+ .jen-inspector-events {
445
+ display: flex;
446
+ flex-direction: column;
447
+ gap: 6px;
448
+ }
449
+
450
+ .jen-prop-item,
451
+ .jen-state-item {
452
+ display: flex;
453
+ align-items: center;
454
+ gap: 8px;
455
+ padding: 8px;
456
+ background: var(--jen-color-bg-secondary);
457
+ border: 1px solid var(--jen-color-border);
458
+ border-radius: 6px;
459
+ }
460
+
461
+ .jen-prop-key,
462
+ .jen-state-key {
463
+ font-weight: 500;
464
+ color: var(--jen-color-info);
465
+ min-width: 100px;
466
+ font-size: 12px;
467
+ }
468
+
469
+ .jen-prop-value,
470
+ .jen-state-value {
471
+ flex: 1;
472
+ padding: 6px 8px;
473
+ background: var(--jen-color-bg);
474
+ border: 1px solid var(--jen-color-border);
475
+ border-radius: 4px;
476
+ color: var(--jen-color-fg);
477
+ font-family: 'Monaco', 'Menlo', monospace;
478
+ font-size: 11px;
479
+ transition: all 0.2s;
480
+ }
481
+
482
+ .jen-prop-value:focus,
483
+ .jen-state-value:focus {
484
+ outline: none;
485
+ border-color: var(--jen-color-accent);
486
+ }
487
+
488
+ .jen-prop-type,
489
+ .jen-state-type {
490
+ font-size: 10px;
491
+ color: var(--jen-color-warning);
492
+ min-width: 50px;
493
+ text-align: right;
494
+ }
495
+
496
+ .jen-hook-item {
497
+ display: flex;
498
+ gap: 8px;
499
+ padding: 6px;
500
+ background: var(--jen-color-border);
501
+ border-radius: 4px;
502
+ font-family: 'Monaco', 'Menlo', monospace;
503
+ font-size: 11px;
504
+ }
505
+
506
+ .jen-hook-index {
507
+ color: var(--jen-color-info);
508
+ font-weight: 600;
509
+ min-width: 40px;
510
+ }
511
+
512
+ .jen-hook-type {
513
+ color: var(--jen-color-warning);
514
+ min-width: 80px;
515
+ }
516
+
517
+ .jen-hook-value {
518
+ flex: 1;
519
+ color: var(--jen-color-fg);
520
+ overflow: hidden;
521
+ text-overflow: ellipsis;
522
+ white-space: nowrap;
523
+ }
524
+
525
+ .jen-event-item {
526
+ padding: 6px 8px;
527
+ background: var(--jen-color-border);
528
+ border-radius: 4px;
529
+ border-left: 3px solid var(--jen-color-info);
530
+ }
531
+
532
+ .jen-event-name {
533
+ font-weight: 500;
534
+ color: var(--jen-color-info);
535
+ }
536
+
537
+ .jen-console {
538
+ display: flex;
539
+ flex-direction: column;
540
+ height: 100%;
541
+ }
542
+
543
+ .jen-console-logs {
544
+ flex: 1;
545
+ overflow-y: auto;
546
+ font-family: 'Monaco', 'Menlo', monospace;
547
+ font-size: 11px;
548
+ }
549
+
550
+ .jen-console-log {
551
+ padding: 6px;
552
+ border-bottom: 1px solid var(--jen-color-border);
553
+ display: flex;
554
+ gap: 8px;
555
+ }
556
+
557
+ .jen-console-log.error {
558
+ color: var(--jen-color-error);
559
+ background: rgba(244, 135, 113, 0.1);
560
+ }
561
+
562
+ .jen-console-log.warn {
563
+ color: var(--jen-color-warning);
564
+ background: rgba(220, 220, 170, 0.1);
565
+ }
566
+
567
+ .jen-console-log.info {
568
+ color: var(--jen-color-info);
569
+ }
570
+
571
+ .jen-console-log-time {
572
+ color: var(--jen-color-border);
573
+ min-width: 60px;
574
+ }
575
+
576
+ .jen-console-log-content {
577
+ flex: 1;
578
+ word-break: break-all;
579
+ }
580
+
581
+ .jen-console-input-container {
582
+ padding: 8px;
583
+ border-top: 1px solid var(--jen-color-border);
584
+ }
585
+
586
+ .jen-console-input {
587
+ width: 100%;
588
+ padding: 6px 8px;
589
+ background: var(--jen-color-bg);
590
+ border: 1px solid var(--jen-color-border);
591
+ border-radius: 4px;
592
+ color: var(--jen-color-fg);
593
+ font-family: 'Monaco', 'Menlo', monospace;
594
+ font-size: 12px;
595
+ }
596
+
597
+ .jen-console-input:focus {
598
+ outline: none;
599
+ border-color: var(--jen-color-accent);
600
+ }
601
+
602
+ .jen-network {
603
+ display: flex;
604
+ flex-direction: column;
605
+ }
606
+
607
+ .jen-network-list {
608
+ flex: 1;
609
+ overflow-y: auto;
610
+ }
611
+
612
+ .jen-network-item {
613
+ padding: 8px;
614
+ border-bottom: 1px solid var(--jen-color-border);
615
+ font-size: 11px;
616
+ font-family: 'Monaco', 'Menlo', monospace;
617
+ }
618
+
619
+ .jen-network-method {
620
+ font-weight: 600;
621
+ margin-right: 8px;
622
+ }
623
+
624
+ .jen-network-method.GET {
625
+ color: var(--jen-color-info);
626
+ }
627
+
628
+ .jen-network-method.POST {
629
+ color: var(--jen-color-success);
630
+ }
631
+
632
+ .jen-network-method.PUT {
633
+ color: var(--jen-color-warning);
634
+ }
635
+
636
+ .jen-network-method.DELETE {
637
+ color: var(--jen-color-error);
638
+ }
639
+
640
+ .jen-network-status {
641
+ margin-left: 8px;
642
+ font-weight: 600;
643
+ }
644
+
645
+ .jen-network-status.success {
646
+ color: var(--jen-color-success);
647
+ }
648
+
649
+ .jen-network-status.error {
650
+ color: var(--jen-color-error);
651
+ }
652
+
653
+ .jen-performance {
654
+ display: flex;
655
+ flex-direction: column;
656
+ gap: 16px;
657
+ }
658
+
659
+ .jen-performance-stats {
660
+ display: grid;
661
+ grid-template-columns: repeat(2, 1fr);
662
+ gap: 12px;
663
+ }
664
+
665
+ .jen-stat {
666
+ display: flex;
667
+ flex-direction: column;
668
+ gap: 4px;
669
+ padding: 12px;
670
+ background: var(--jen-color-border);
671
+ border-radius: 6px;
672
+ }
673
+
674
+ .jen-stat-label {
675
+ font-size: 11px;
676
+ font-weight: 600;
677
+ text-transform: uppercase;
678
+ color: var(--jen-color-border);
679
+ }
680
+
681
+ .jen-stat-value {
682
+ font-size: 18px;
683
+ font-weight: 700;
684
+ color: var(--jen-color-accent);
685
+ font-family: 'Monaco', 'Menlo', monospace;
686
+ }
687
+
688
+ #jen-performance-chart {
689
+ width: 100%;
690
+ height: 200px;
691
+ background: var(--jen-color-border);
692
+ border-radius: 4px;
693
+ }
694
+
695
+ .jen-devtools-footer {
696
+ padding: 14px 16px;
697
+ border-top: 1px solid var(--jen-color-border);
698
+ display: flex;
699
+ gap: 8px;
700
+ background: var(--jen-color-bg-secondary);
701
+ }
702
+
703
+ .jen-devtools-export {
704
+ padding: 8px 14px;
705
+ background: var(--jen-color-accent);
706
+ color: white;
707
+ border: none;
708
+ border-radius: 6px;
709
+ cursor: pointer;
710
+ font-size: 12px;
711
+ font-weight: 500;
712
+ transition: all 0.2s;
713
+ }
714
+
715
+ .jen-devtools-export:hover {
716
+ opacity: 0.85;
717
+ transform: translateY(-1px);
718
+ }
719
+
720
+ .jen-devtools-resize {
721
+ position: absolute;
722
+ bottom: 0;
723
+ right: 0;
724
+ width: 20px;
725
+ height: 20px;
726
+ cursor: nwse-resize;
727
+ background: linear-gradient(135deg, transparent 50%, var(--jen-color-border) 50%);
728
+ }
729
+
730
+ .jen-devtools-highlight {
731
+ outline: 2px solid var(--jen-color-accent) !important;
732
+ outline-offset: 2px !important;
733
+ }
734
+
735
+ #__jen_devtools__ {
736
+ scrollbar-width: thin;
737
+ scrollbar-color: var(--jen-color-border) transparent;
738
+ }
739
+
740
+ #__jen_devtools__ ::-webkit-scrollbar {
741
+ width: 8px;
742
+ }
743
+
744
+ #__jen_devtools__ ::-webkit-scrollbar-track {
745
+ background: transparent;
746
+ }
747
+
748
+ #__jen_devtools__ ::-webkit-scrollbar-thumb {
749
+ background: var(--jen-color-border);
750
+ border-radius: 4px;
751
+ }
752
+
753
+ #__jen_devtools__ ::-webkit-scrollbar-thumb:hover {
754
+ background: var(--jen-color-accent);
755
+ }
756
+ `;
757
+ }
758
+ /**
759
+ * Inject styles into the document
760
+ */
761
+ export function injectStyles() {
762
+ if (document.getElementById("__jen_devtools_styles__")) {
763
+ return; // Already injected
764
+ }
765
+ const styleEl = document.createElement("style");
766
+ styleEl.id = "__jen_devtools_styles__";
767
+ styleEl.textContent = getStyles();
768
+ document.head.appendChild(styleEl);
769
+ }