@jasonshimmy/vite-plugin-cer-app 0.23.2 → 0.25.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 (404) hide show
  1. package/dist/cli/adapters/netlify.js +4 -2
  2. package/dist/cli/adapters/netlify.js.map +1 -1
  3. package/dist/cli/checks/lighthouse.d.ts +26 -0
  4. package/dist/cli/checks/lighthouse.d.ts.map +1 -0
  5. package/dist/cli/checks/lighthouse.js +121 -0
  6. package/dist/cli/checks/lighthouse.js.map +1 -0
  7. package/dist/cli/checks/links.d.ts +12 -0
  8. package/dist/cli/checks/links.d.ts.map +1 -0
  9. package/dist/cli/checks/links.js +89 -0
  10. package/dist/cli/checks/links.js.map +1 -0
  11. package/dist/cli/checks/performance.d.ts +17 -0
  12. package/dist/cli/checks/performance.d.ts.map +1 -0
  13. package/dist/cli/checks/performance.js +61 -0
  14. package/dist/cli/checks/performance.js.map +1 -0
  15. package/dist/cli/commands/check.d.ts +3 -0
  16. package/dist/cli/commands/check.d.ts.map +1 -0
  17. package/dist/cli/commands/check.js +85 -0
  18. package/dist/cli/commands/check.js.map +1 -0
  19. package/dist/cli/commands/preview.d.ts.map +1 -1
  20. package/dist/cli/commands/preview.js +4 -2
  21. package/dist/cli/commands/preview.js.map +1 -1
  22. package/dist/cli/create/index.d.ts +11 -1
  23. package/dist/cli/create/index.d.ts.map +1 -1
  24. package/dist/cli/create/index.js +135 -65
  25. package/dist/cli/create/index.js.map +1 -1
  26. package/dist/cli/create/templates/spa/package.json.tpl +5 -3
  27. package/dist/cli/create/templates/ssg/cer.config.ts.tpl +2 -0
  28. package/dist/cli/create/templates/ssg/package.json.tpl +5 -3
  29. package/dist/cli/create/templates/ssr/package.json.tpl +5 -3
  30. package/dist/cli/index.js +2 -0
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/index.d.ts +4 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/plugin/build-ssg.d.ts +22 -6
  35. package/dist/plugin/build-ssg.d.ts.map +1 -1
  36. package/dist/plugin/build-ssg.js +226 -17
  37. package/dist/plugin/build-ssg.js.map +1 -1
  38. package/dist/plugin/content/index.d.ts +1 -1
  39. package/dist/plugin/content/index.d.ts.map +1 -1
  40. package/dist/plugin/content/index.js +8 -8
  41. package/dist/plugin/content/index.js.map +1 -1
  42. package/dist/plugin/content/parser.d.ts +3 -3
  43. package/dist/plugin/content/parser.d.ts.map +1 -1
  44. package/dist/plugin/content/parser.js +103 -24
  45. package/dist/plugin/content/parser.js.map +1 -1
  46. package/dist/plugin/dev-server.d.ts +4 -1
  47. package/dist/plugin/dev-server.d.ts.map +1 -1
  48. package/dist/plugin/dev-server.js.map +1 -1
  49. package/dist/plugin/dts-generator.d.ts.map +1 -1
  50. package/dist/plugin/dts-generator.js +50 -8
  51. package/dist/plugin/dts-generator.js.map +1 -1
  52. package/dist/plugin/generated-dir.d.ts +2 -0
  53. package/dist/plugin/generated-dir.d.ts.map +1 -1
  54. package/dist/plugin/generated-dir.js +17 -6
  55. package/dist/plugin/generated-dir.js.map +1 -1
  56. package/dist/plugin/html-post-process.d.ts +7 -0
  57. package/dist/plugin/html-post-process.d.ts.map +1 -1
  58. package/dist/plugin/html-post-process.js +26 -0
  59. package/dist/plugin/html-post-process.js.map +1 -1
  60. package/dist/plugin/index.d.ts.map +1 -1
  61. package/dist/plugin/index.js +60 -13
  62. package/dist/plugin/index.js.map +1 -1
  63. package/dist/plugin/transforms/auto-import.d.ts.map +1 -1
  64. package/dist/plugin/transforms/auto-import.js +7 -0
  65. package/dist/plugin/transforms/auto-import.js.map +1 -1
  66. package/dist/plugin/transforms/prune-runtime-css.d.ts +8 -0
  67. package/dist/plugin/transforms/prune-runtime-css.d.ts.map +1 -0
  68. package/dist/plugin/transforms/prune-runtime-css.js +40 -0
  69. package/dist/plugin/transforms/prune-runtime-css.js.map +1 -0
  70. package/dist/runtime/app-template.d.ts +1 -1
  71. package/dist/runtime/app-template.d.ts.map +1 -1
  72. package/dist/runtime/app-template.js +206 -36
  73. package/dist/runtime/app-template.js.map +1 -1
  74. package/dist/runtime/composables/index.d.ts +4 -0
  75. package/dist/runtime/composables/index.d.ts.map +1 -1
  76. package/dist/runtime/composables/index.js +2 -0
  77. package/dist/runtime/composables/index.js.map +1 -1
  78. package/dist/runtime/composables/use-active-headings.d.ts +24 -0
  79. package/dist/runtime/composables/use-active-headings.d.ts.map +1 -0
  80. package/dist/runtime/composables/use-active-headings.js +112 -0
  81. package/dist/runtime/composables/use-active-headings.js.map +1 -0
  82. package/dist/runtime/composables/use-content-page.d.ts +45 -0
  83. package/dist/runtime/composables/use-content-page.d.ts.map +1 -0
  84. package/dist/runtime/composables/use-content-page.js +181 -0
  85. package/dist/runtime/composables/use-content-page.js.map +1 -0
  86. package/dist/runtime/composables/use-content-search.d.ts.map +1 -1
  87. package/dist/runtime/composables/use-content-search.js +1 -5
  88. package/dist/runtime/composables/use-content-search.js.map +1 -1
  89. package/dist/runtime/composables/use-fetch.d.ts +2 -1
  90. package/dist/runtime/composables/use-fetch.d.ts.map +1 -1
  91. package/dist/runtime/composables/use-fetch.js +112 -43
  92. package/dist/runtime/composables/use-fetch.js.map +1 -1
  93. package/dist/runtime/composables/use-route.d.ts.map +1 -1
  94. package/dist/runtime/composables/use-route.js +39 -11
  95. package/dist/runtime/composables/use-route.js.map +1 -1
  96. package/dist/runtime/content/client.js +2 -2
  97. package/dist/runtime/content/client.js.map +1 -1
  98. package/dist/runtime/entry-server-template.d.ts +16 -1
  99. package/dist/runtime/entry-server-template.d.ts.map +1 -1
  100. package/dist/runtime/entry-server-template.js +120 -13
  101. package/dist/runtime/entry-server-template.js.map +1 -1
  102. package/dist/types/config.d.ts +45 -4
  103. package/dist/types/config.d.ts.map +1 -1
  104. package/dist/types/config.js.map +1 -1
  105. package/dist/types/content.d.ts +18 -1
  106. package/dist/types/content.d.ts.map +1 -1
  107. package/dist/types/middleware.d.ts +2 -2
  108. package/dist/types/middleware.d.ts.map +1 -1
  109. package/package.json +22 -19
  110. package/.github/copilot-instructions.md +0 -169
  111. package/.github/workflows/publish.yml +0 -257
  112. package/.nvmrc +0 -1
  113. package/CHANGELOG.md +0 -236
  114. package/CLAUDE.md +0 -113
  115. package/commits.txt +0 -1
  116. package/cypress.config.ts +0 -16
  117. package/docs/authentication.md +0 -285
  118. package/docs/cli.md +0 -324
  119. package/docs/components.md +0 -237
  120. package/docs/composables.md +0 -907
  121. package/docs/configuration.md +0 -696
  122. package/docs/content.md +0 -570
  123. package/docs/data-loading.md +0 -336
  124. package/docs/getting-started.md +0 -237
  125. package/docs/head-management.md +0 -212
  126. package/docs/i18n.md +0 -159
  127. package/docs/layouts.md +0 -224
  128. package/docs/middleware.md +0 -234
  129. package/docs/plugins.md +0 -170
  130. package/docs/rendering-modes.md +0 -377
  131. package/docs/routing.md +0 -485
  132. package/docs/server-api.md +0 -253
  133. package/docs/testing.md +0 -455
  134. package/docs/use-fetch.md +0 -183
  135. package/e2e/cypress/e2e/api.cy.ts +0 -123
  136. package/e2e/cypress/e2e/async-component.cy.ts +0 -27
  137. package/e2e/cypress/e2e/component-splitting.cy.ts +0 -50
  138. package/e2e/cypress/e2e/content.cy.ts +0 -425
  139. package/e2e/cypress/e2e/cookie.cy.ts +0 -85
  140. package/e2e/cypress/e2e/data.cy.ts +0 -158
  141. package/e2e/cypress/e2e/error-boundary.cy.ts +0 -88
  142. package/e2e/cypress/e2e/fouc.cy.ts +0 -254
  143. package/e2e/cypress/e2e/group-meta.cy.ts +0 -36
  144. package/e2e/cypress/e2e/head.cy.ts +0 -89
  145. package/e2e/cypress/e2e/i18n.cy.ts +0 -79
  146. package/e2e/cypress/e2e/interactive.cy.ts +0 -137
  147. package/e2e/cypress/e2e/isr-nested-runtime.cy.ts +0 -102
  148. package/e2e/cypress/e2e/jit-css-custom-colors.cy.ts +0 -43
  149. package/e2e/cypress/e2e/middleware-chain.cy.ts +0 -89
  150. package/e2e/cypress/e2e/middleware-status.cy.ts +0 -30
  151. package/e2e/cypress/e2e/middleware.cy.ts +0 -45
  152. package/e2e/cypress/e2e/navigate.cy.ts +0 -39
  153. package/e2e/cypress/e2e/observability.cy.ts +0 -77
  154. package/e2e/cypress/e2e/per-route-error.cy.ts +0 -42
  155. package/e2e/cypress/e2e/per-route-render.cy.ts +0 -70
  156. package/e2e/cypress/e2e/preview-hardening.cy.ts +0 -88
  157. package/e2e/cypress/e2e/routes.cy.ts +0 -128
  158. package/e2e/cypress/e2e/seo-meta.cy.ts +0 -108
  159. package/e2e/cypress/e2e/server-middleware.cy.ts +0 -46
  160. package/e2e/cypress/e2e/session-rotation.cy.ts +0 -25
  161. package/e2e/cypress/e2e/session.cy.ts +0 -73
  162. package/e2e/cypress/e2e/ssr-render-error.cy.ts +0 -68
  163. package/e2e/cypress/e2e/synthetic-404.cy.ts +0 -45
  164. package/e2e/cypress/e2e/use-page-data.cy.ts +0 -122
  165. package/e2e/cypress/e2e/use-state.cy.ts +0 -138
  166. package/e2e/cypress/support/commands.ts +0 -120
  167. package/e2e/cypress/support/e2e.ts +0 -10
  168. package/e2e/cypress/tsconfig.json +0 -14
  169. package/e2e/kitchen-sink/app/components/ks-badge.ts +0 -8
  170. package/e2e/kitchen-sink/app/composables/useKsCounter.ts +0 -9
  171. package/e2e/kitchen-sink/app/error.ts +0 -18
  172. package/e2e/kitchen-sink/app/layouts/admin.ts +0 -13
  173. package/e2e/kitchen-sink/app/layouts/default.ts +0 -25
  174. package/e2e/kitchen-sink/app/layouts/group.ts +0 -9
  175. package/e2e/kitchen-sink/app/layouts/minimal.ts +0 -7
  176. package/e2e/kitchen-sink/app/loading.ts +0 -9
  177. package/e2e/kitchen-sink/app/middleware/auth.ts +0 -9
  178. package/e2e/kitchen-sink/app/middleware/custom-log.ts +0 -4
  179. package/e2e/kitchen-sink/app/middleware/group-auth.ts +0 -7
  180. package/e2e/kitchen-sink/app/middleware/logger.ts +0 -14
  181. package/e2e/kitchen-sink/app/pages/(auth)/login.ts +0 -13
  182. package/e2e/kitchen-sink/app/pages/(auth)/protected.ts +0 -16
  183. package/e2e/kitchen-sink/app/pages/404.ts +0 -9
  184. package/e2e/kitchen-sink/app/pages/about.ts +0 -17
  185. package/e2e/kitchen-sink/app/pages/admin/_layout.ts +0 -1
  186. package/e2e/kitchen-sink/app/pages/admin/dashboard.ts +0 -11
  187. package/e2e/kitchen-sink/app/pages/async-component-error-test.ts +0 -18
  188. package/e2e/kitchen-sink/app/pages/async-component-test.ts +0 -18
  189. package/e2e/kitchen-sink/app/pages/blog/[slug].ts +0 -59
  190. package/e2e/kitchen-sink/app/pages/blog/index.ts +0 -51
  191. package/e2e/kitchen-sink/app/pages/content-blog.ts +0 -37
  192. package/e2e/kitchen-sink/app/pages/content-doc.ts +0 -42
  193. package/e2e/kitchen-sink/app/pages/content-fallback.ts +0 -36
  194. package/e2e/kitchen-sink/app/pages/content-guides.ts +0 -35
  195. package/e2e/kitchen-sink/app/pages/content-index.ts +0 -39
  196. package/e2e/kitchen-sink/app/pages/content-search.ts +0 -36
  197. package/e2e/kitchen-sink/app/pages/cookie-test.ts +0 -22
  198. package/e2e/kitchen-sink/app/pages/counter.ts +0 -17
  199. package/e2e/kitchen-sink/app/pages/group-auth-blocked.ts +0 -9
  200. package/e2e/kitchen-sink/app/pages/group-meta-test/_layout.ts +0 -6
  201. package/e2e/kitchen-sink/app/pages/group-meta-test/custom-mw.ts +0 -14
  202. package/e2e/kitchen-sink/app/pages/group-meta-test/page.ts +0 -9
  203. package/e2e/kitchen-sink/app/pages/group-meta-test/protected.ts +0 -8
  204. package/e2e/kitchen-sink/app/pages/head.ts +0 -20
  205. package/e2e/kitchen-sink/app/pages/i18n-test.ts +0 -14
  206. package/e2e/kitchen-sink/app/pages/index.ts +0 -27
  207. package/e2e/kitchen-sink/app/pages/isr-test.ts +0 -17
  208. package/e2e/kitchen-sink/app/pages/items/[id].ts +0 -20
  209. package/e2e/kitchen-sink/app/pages/jit-css-custom-colors-test.ts +0 -14
  210. package/e2e/kitchen-sink/app/pages/loader-error-test.ts +0 -13
  211. package/e2e/kitchen-sink/app/pages/loader-props-test.ts +0 -19
  212. package/e2e/kitchen-sink/app/pages/loader-response-error-test.ts +0 -13
  213. package/e2e/kitchen-sink/app/pages/middleware-chain-test.ts +0 -12
  214. package/e2e/kitchen-sink/app/pages/middleware-status-test.ts +0 -9
  215. package/e2e/kitchen-sink/app/pages/navigate-test.ts +0 -16
  216. package/e2e/kitchen-sink/app/pages/observability-test.ts +0 -25
  217. package/e2e/kitchen-sink/app/pages/per-route-error-test.error.ts +0 -13
  218. package/e2e/kitchen-sink/app/pages/per-route-error-test.ts +0 -15
  219. package/e2e/kitchen-sink/app/pages/plugin-dsd-test.ts +0 -10
  220. package/e2e/kitchen-sink/app/pages/render-error-test.ts +0 -12
  221. package/e2e/kitchen-sink/app/pages/render-server-test.ts +0 -12
  222. package/e2e/kitchen-sink/app/pages/render-spa-test.ts +0 -12
  223. package/e2e/kitchen-sink/app/pages/route-info.ts +0 -14
  224. package/e2e/kitchen-sink/app/pages/seo-test.ts +0 -23
  225. package/e2e/kitchen-sink/app/pages/session-rotation-test.ts +0 -25
  226. package/e2e/kitchen-sink/app/pages/use-state-test.ts +0 -37
  227. package/e2e/kitchen-sink/app/plugins/01.setup.ts +0 -7
  228. package/e2e/kitchen-sink/app/plugins/02.ks-plugin-components.ts +0 -27
  229. package/e2e/kitchen-sink/cer-auto-imports.d.ts +0 -51
  230. package/e2e/kitchen-sink/cer-env.d.ts +0 -35
  231. package/e2e/kitchen-sink/cer-tsconfig.json +0 -30
  232. package/e2e/kitchen-sink/cer.config.ts +0 -43
  233. package/e2e/kitchen-sink/content/01.guides/01.index.md +0 -8
  234. package/e2e/kitchen-sink/content/01.guides/02.intro.md +0 -8
  235. package/e2e/kitchen-sink/content/01.guides/10.advanced.md +0 -8
  236. package/e2e/kitchen-sink/content/blog/2026-04-01-hello.md +0 -26
  237. package/e2e/kitchen-sink/content/blog/2026-04-02-draft.md +0 -10
  238. package/e2e/kitchen-sink/content/blog/index.md +0 -8
  239. package/e2e/kitchen-sink/content/blog/no-frontmatter.md +0 -7
  240. package/e2e/kitchen-sink/content/docs/getting-started.md +0 -48
  241. package/e2e/kitchen-sink/content/index.md +0 -16
  242. package/e2e/kitchen-sink/server/api/echo.ts +0 -12
  243. package/e2e/kitchen-sink/server/api/health.ts +0 -3
  244. package/e2e/kitchen-sink/server/api/posts/[slug].ts +0 -11
  245. package/e2e/kitchen-sink/server/api/posts/index.ts +0 -5
  246. package/e2e/kitchen-sink/server/api/session.ts +0 -23
  247. package/e2e/kitchen-sink/server/data/posts.ts +0 -21
  248. package/e2e/kitchen-sink/server/middleware/01-headers.ts +0 -6
  249. package/e2e/kitchen-sink/server/middleware/02-status-test.ts +0 -10
  250. package/e2e/kitchen-sink/tsconfig.json +0 -3
  251. package/e2e/scripts/clean.mjs +0 -14
  252. package/eslint.config.ts +0 -22
  253. package/src/__tests__/cli/adapters/cloudflare-worker.integration.test.ts +0 -132
  254. package/src/__tests__/cli/adapters/cloudflare.test.ts +0 -332
  255. package/src/__tests__/cli/adapters/netlify-bridge.integration.test.ts +0 -139
  256. package/src/__tests__/cli/adapters/netlify.test.ts +0 -286
  257. package/src/__tests__/cli/adapters/vercel-launcher.integration.test.ts +0 -129
  258. package/src/__tests__/cli/adapters/vercel.test.ts +0 -263
  259. package/src/__tests__/cli/preview-hardening.test.ts +0 -265
  260. package/src/__tests__/cli/preview-isr.test.ts +0 -320
  261. package/src/__tests__/index.test.ts +0 -21
  262. package/src/__tests__/plugin/app-template.test.ts +0 -166
  263. package/src/__tests__/plugin/build-ssg-render.test.ts +0 -155
  264. package/src/__tests__/plugin/build-ssg.test.ts +0 -598
  265. package/src/__tests__/plugin/build-ssr.test.ts +0 -192
  266. package/src/__tests__/plugin/cer-app-plugin.test.ts +0 -552
  267. package/src/__tests__/plugin/content/emitter.test.ts +0 -117
  268. package/src/__tests__/plugin/content/loader.test.ts +0 -154
  269. package/src/__tests__/plugin/content/parser.test.ts +0 -381
  270. package/src/__tests__/plugin/content/path-utils.test.ts +0 -69
  271. package/src/__tests__/plugin/content/search.test.ts +0 -119
  272. package/src/__tests__/plugin/dev-server.test.ts +0 -813
  273. package/src/__tests__/plugin/dts-generator.test.ts +0 -394
  274. package/src/__tests__/plugin/entry-server-template.test.ts +0 -385
  275. package/src/__tests__/plugin/generated-dir.test.ts +0 -144
  276. package/src/__tests__/plugin/html-post-process.test.ts +0 -146
  277. package/src/__tests__/plugin/path-utils.test.ts +0 -411
  278. package/src/__tests__/plugin/resolve-config.test.ts +0 -233
  279. package/src/__tests__/plugin/scanner.test.ts +0 -186
  280. package/src/__tests__/plugin/transforms/auto-import.test.ts +0 -510
  281. package/src/__tests__/plugin/transforms/head-inject.test.ts +0 -178
  282. package/src/__tests__/plugin/virtual/composables.test.ts +0 -57
  283. package/src/__tests__/plugin/virtual/content-components.test.ts +0 -66
  284. package/src/__tests__/plugin/virtual/error.test.ts +0 -71
  285. package/src/__tests__/plugin/virtual/layouts.test.ts +0 -70
  286. package/src/__tests__/plugin/virtual/loading.test.ts +0 -72
  287. package/src/__tests__/plugin/virtual/middleware.test.ts +0 -83
  288. package/src/__tests__/plugin/virtual/plugins.test.ts +0 -129
  289. package/src/__tests__/plugin/virtual/routes.test.ts +0 -884
  290. package/src/__tests__/plugin/virtual/server-api.test.ts +0 -164
  291. package/src/__tests__/plugin/virtual/server-middleware.test.ts +0 -102
  292. package/src/__tests__/runtime/app-template.test.ts +0 -208
  293. package/src/__tests__/runtime/define-middleware.test.ts +0 -64
  294. package/src/__tests__/runtime/define-server-middleware.test.ts +0 -54
  295. package/src/__tests__/runtime/entry-client-template.test.ts +0 -61
  296. package/src/__tests__/runtime/isr-handler.test.ts +0 -338
  297. package/src/__tests__/runtime/oauth/handler.test.ts +0 -358
  298. package/src/__tests__/runtime/oauth/providers.test.ts +0 -47
  299. package/src/__tests__/runtime/oauth-index.test.ts +0 -43
  300. package/src/__tests__/runtime/use-auth.test.ts +0 -169
  301. package/src/__tests__/runtime/use-content-search-composable.test.ts +0 -405
  302. package/src/__tests__/runtime/use-content-search.test.ts +0 -163
  303. package/src/__tests__/runtime/use-content.test.ts +0 -226
  304. package/src/__tests__/runtime/use-cookie.test.ts +0 -277
  305. package/src/__tests__/runtime/use-fetch-component.test.ts +0 -214
  306. package/src/__tests__/runtime/use-fetch.test.ts +0 -377
  307. package/src/__tests__/runtime/use-head.test.ts +0 -311
  308. package/src/__tests__/runtime/use-inject-client.test.ts +0 -67
  309. package/src/__tests__/runtime/use-inject.test.ts +0 -66
  310. package/src/__tests__/runtime/use-locale.test.ts +0 -152
  311. package/src/__tests__/runtime/use-navigate.test.ts +0 -121
  312. package/src/__tests__/runtime/use-page-data.test.ts +0 -298
  313. package/src/__tests__/runtime/use-route.test.ts +0 -156
  314. package/src/__tests__/runtime/use-runtime-config.test.ts +0 -182
  315. package/src/__tests__/runtime/use-seo-meta.test.ts +0 -109
  316. package/src/__tests__/runtime/use-session.test.ts +0 -320
  317. package/src/__tests__/runtime/use-state.test.ts +0 -340
  318. package/src/__tests__/types/config.test.ts +0 -18
  319. package/src/cli/adapters/cloudflare.ts +0 -335
  320. package/src/cli/adapters/netlify.ts +0 -326
  321. package/src/cli/adapters/vercel.ts +0 -311
  322. package/src/cli/commands/adapt.ts +0 -84
  323. package/src/cli/commands/build.ts +0 -165
  324. package/src/cli/commands/dev.ts +0 -125
  325. package/src/cli/commands/generate.ts +0 -91
  326. package/src/cli/commands/preview-isr.ts +0 -172
  327. package/src/cli/commands/preview.ts +0 -523
  328. package/src/cli/create/index.ts +0 -275
  329. package/src/cli/create/templates/shared/.gitignore.tpl +0 -25
  330. package/src/cli/create/templates/shared/app/layouts/default.ts.tpl +0 -15
  331. package/src/cli/create/templates/shared/app/pages/index.ts.tpl +0 -8
  332. package/src/cli/create/templates/shared/index.html.tpl +0 -12
  333. package/src/cli/create/templates/shared/tsconfig.json.tpl +0 -6
  334. package/src/cli/create/templates/spa/cer.config.ts.tpl +0 -6
  335. package/src/cli/create/templates/spa/package.json.tpl +0 -18
  336. package/src/cli/create/templates/ssg/cer.config.ts.tpl +0 -10
  337. package/src/cli/create/templates/ssg/package.json.tpl +0 -19
  338. package/src/cli/create/templates/ssr/cer.config.ts.tpl +0 -6
  339. package/src/cli/create/templates/ssr/package.json.tpl +0 -18
  340. package/src/cli/index.ts +0 -22
  341. package/src/index.ts +0 -20
  342. package/src/plugin/build-ssg.ts +0 -403
  343. package/src/plugin/build-ssr.ts +0 -134
  344. package/src/plugin/content/emitter.ts +0 -50
  345. package/src/plugin/content/index.ts +0 -233
  346. package/src/plugin/content/parser.ts +0 -259
  347. package/src/plugin/content/path-utils.ts +0 -55
  348. package/src/plugin/content/scanner.ts +0 -26
  349. package/src/plugin/content/search.ts +0 -28
  350. package/src/plugin/dev-server.ts +0 -379
  351. package/src/plugin/dts-generator.ts +0 -273
  352. package/src/plugin/generated-dir.ts +0 -121
  353. package/src/plugin/html-post-process.ts +0 -96
  354. package/src/plugin/index.ts +0 -584
  355. package/src/plugin/path-utils.ts +0 -186
  356. package/src/plugin/scanner.ts +0 -65
  357. package/src/plugin/transforms/auto-import.ts +0 -206
  358. package/src/plugin/transforms/head-inject.ts +0 -161
  359. package/src/plugin/virtual/composables.ts +0 -28
  360. package/src/plugin/virtual/content-components.ts +0 -83
  361. package/src/plugin/virtual/error.ts +0 -34
  362. package/src/plugin/virtual/layouts.ts +0 -41
  363. package/src/plugin/virtual/loading.ts +0 -32
  364. package/src/plugin/virtual/middleware.ts +0 -45
  365. package/src/plugin/virtual/plugins.ts +0 -46
  366. package/src/plugin/virtual/routes.ts +0 -514
  367. package/src/plugin/virtual/server-api.ts +0 -85
  368. package/src/plugin/virtual/server-middleware.ts +0 -44
  369. package/src/runtime/app-template.ts +0 -377
  370. package/src/runtime/composables/define-middleware.ts +0 -17
  371. package/src/runtime/composables/define-server-middleware.ts +0 -18
  372. package/src/runtime/composables/index.ts +0 -27
  373. package/src/runtime/composables/use-auth.ts +0 -125
  374. package/src/runtime/composables/use-content-search.ts +0 -205
  375. package/src/runtime/composables/use-content.ts +0 -146
  376. package/src/runtime/composables/use-cookie.ts +0 -135
  377. package/src/runtime/composables/use-fetch.ts +0 -438
  378. package/src/runtime/composables/use-head.ts +0 -234
  379. package/src/runtime/composables/use-inject.ts +0 -49
  380. package/src/runtime/composables/use-locale.ts +0 -109
  381. package/src/runtime/composables/use-navigate.ts +0 -58
  382. package/src/runtime/composables/use-page-data.ts +0 -93
  383. package/src/runtime/composables/use-route.ts +0 -71
  384. package/src/runtime/composables/use-runtime-config.ts +0 -123
  385. package/src/runtime/composables/use-seo-meta.ts +0 -80
  386. package/src/runtime/composables/use-session.ts +0 -186
  387. package/src/runtime/composables/use-state.ts +0 -92
  388. package/src/runtime/content/client.ts +0 -168
  389. package/src/runtime/entry-client-template.ts +0 -39
  390. package/src/runtime/entry-server-template.ts +0 -493
  391. package/src/runtime/isr-handler.ts +0 -184
  392. package/src/runtime/oauth/handler.ts +0 -407
  393. package/src/runtime/oauth/index.ts +0 -49
  394. package/src/runtime/oauth/providers.ts +0 -38
  395. package/src/types/api.ts +0 -40
  396. package/src/types/config.ts +0 -379
  397. package/src/types/content.ts +0 -66
  398. package/src/types/index.ts +0 -7
  399. package/src/types/middleware.ts +0 -63
  400. package/src/types/page.ts +0 -117
  401. package/src/types/plugin.ts +0 -34
  402. package/tsconfig.build.json +0 -10
  403. package/tsconfig.json +0 -19
  404. package/vitest.config.ts +0 -33
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jasonshimmy/vite-plugin-cer-app",
3
- "version": "0.23.2",
3
+ "version": "0.25.0",
4
4
  "description": "Nuxt-style meta-framework for @jasonshimmy/custom-elements-runtime",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -19,28 +19,30 @@
19
19
  "url": "git+https://github.com/jshimkoski/vite-plugin-cer-app.git"
20
20
  },
21
21
  "homepage": "https://github.com/jshimkoski/vite-plugin-cer-app#readme",
22
+ "files": [
23
+ "dist"
24
+ ],
22
25
  "sideEffects": [
23
- "**/*.css",
24
- "e2e/cypress/support/*.ts"
26
+ "**/*.css"
25
27
  ],
26
- "main": "dist/index.cjs",
28
+ "main": "dist/index.js",
27
29
  "module": "dist/index.js",
28
30
  "types": "dist/index.d.ts",
29
31
  "exports": {
30
32
  ".": {
33
+ "types": "./dist/index.d.ts",
31
34
  "import": "./dist/index.js",
32
- "require": "./dist/index.cjs",
33
- "types": "./dist/index.d.ts"
35
+ "default": "./dist/index.js"
34
36
  },
35
37
  "./composables": {
38
+ "types": "./dist/runtime/composables/index.d.ts",
36
39
  "import": "./dist/runtime/composables/index.js",
37
- "require": "./dist/runtime/composables/index.cjs",
38
- "types": "./dist/runtime/composables/index.d.ts"
40
+ "default": "./dist/runtime/composables/index.js"
39
41
  },
40
42
  "./types": {
43
+ "types": "./dist/types/index.d.ts",
41
44
  "import": "./dist/types/index.js",
42
- "require": "./dist/types/index.cjs",
43
- "types": "./dist/types/index.d.ts"
45
+ "default": "./dist/types/index.js"
44
46
  },
45
47
  "./isr": {
46
48
  "import": "./dist/runtime/isr-handler.js",
@@ -57,7 +59,8 @@
57
59
  },
58
60
  "scripts": {
59
61
  "validate": "npm run lint && npm test && npm run build && npm run e2e",
60
- "build": "tsc -p tsconfig.build.json && cp -r src/cli/create/templates dist/cli/create/templates",
62
+ "prebuild": "node scripts/clean-dist.mjs",
63
+ "build": "tsc -p tsconfig.build.json && node scripts/copy-templates.mjs",
61
64
  "dev": "tsc -p tsconfig.build.json --watch",
62
65
  "lint": "eslint",
63
66
  "test": "vitest run",
@@ -73,10 +76,10 @@
73
76
  "e2e:serve:ssr": "node dist/cli/index.js preview --root e2e/kitchen-sink --port 4175 --ssr",
74
77
  "e2e:serve:ssg": "node dist/cli/index.js preview --root e2e/kitchen-sink --port 4176",
75
78
  "e2e:serve:dev": "node dist/cli/index.js dev --root e2e/kitchen-sink --port 4177 --mode ssr",
76
- "e2e:run:spa": "cypress run --config baseUrl=http://localhost:4174 --env mode=spa",
77
- "e2e:run:ssr": "cypress run --config baseUrl=http://localhost:4175 --env mode=ssr",
78
- "e2e:run:ssg": "cypress run --config baseUrl=http://localhost:4176 --env mode=ssg",
79
- "e2e:run:dev": "cypress run --config baseUrl=http://localhost:4177 --env mode=dev",
79
+ "e2e:run:spa": "cypress run --config baseUrl=http://localhost:4174 --expose mode=spa",
80
+ "e2e:run:ssr": "cypress run --config baseUrl=http://localhost:4175 --expose mode=ssr",
81
+ "e2e:run:ssg": "cypress run --config baseUrl=http://localhost:4176 --expose mode=ssg",
82
+ "e2e:run:dev": "cypress run --config baseUrl=http://localhost:4177 --expose mode=dev",
80
83
  "e2e:spa": "npm run e2e:build:spa && start-server-and-test e2e:serve:spa http://localhost:4174 e2e:run:spa",
81
84
  "e2e:ssr": "npm run e2e:build:ssr && start-server-and-test e2e:serve:ssr http://localhost:4175 e2e:run:ssr",
82
85
  "e2e:ssg": "npm run e2e:build:ssg && start-server-and-test e2e:serve:ssg http://localhost:4176 e2e:run:ssg",
@@ -85,20 +88,20 @@
85
88
  "cypress:open": "cypress open"
86
89
  },
87
90
  "peerDependencies": {
88
- "@jasonshimmy/custom-elements-runtime": ">=3.4.0",
91
+ "@jasonshimmy/custom-elements-runtime": ">=3.9.0",
89
92
  "vite": ">=5.0.0"
90
93
  },
91
94
  "dependencies": {
92
95
  "commander": "^14.0.3",
93
96
  "fast-glob": "^3.3.3",
94
- "gray-matter": "^4.0.3",
95
97
  "magic-string": "^0.30.21",
96
98
  "marked": "^18.0.0",
97
99
  "minisearch": "^7.2.0",
98
- "pathe": "^2.0.3"
100
+ "pathe": "^2.0.3",
101
+ "yaml": "^2.9.0"
99
102
  },
100
103
  "devDependencies": {
101
- "@jasonshimmy/custom-elements-runtime": "^3.7.5",
104
+ "@jasonshimmy/custom-elements-runtime": "^3.9.0",
102
105
  "@types/node": "^25.6.0",
103
106
  "@vitest/coverage-v8": "^4.1.2",
104
107
  "cypress": "^15.13.1",
@@ -1,169 +0,0 @@
1
- ---
2
- applyTo: '**'
3
- ---
4
-
5
- You are an expert in TypeScript, JavaScript, HTML, CSS. Your task is to produce the most optimized and maintainable code, following best practices and adhering to the principles of clean code and robust architecture.
6
-
7
- ## Objective
8
-
9
- - Create a Web Component Runtime solution that is not only functional but also adheres to the best practices in performance, security, and maintainability.
10
- - When implementing features, prioritize simplicity and clarity in the codebase.
11
- - When communicating with the user, you don't need to ask for permission before making cleanups or optimizations. Instead, focus on delivering a solution that is efficient and easy to understand.
12
-
13
- ## Commands to Know
14
-
15
- - `npm run build`: Builds the project for production.
16
- - `npm run dev`: Starts the development server with hot-reloading.
17
- - `npm test`: Runs the test suite using Vitest.
18
- - `npm test:watch`: Runs the test suite using Vitest in development watch mode.
19
- - `npm run test:coverage`: Generates a code coverage report.
20
-
21
- ## Code Style and Structure
22
-
23
- - ALL CODE MUST BE: lightweight, developer friendly, strongly typed, performant, and scalable.
24
- - Write concise, technical TypeScript code with accurate examples.
25
- - Use functional and declarative programming patterns; avoid classes.
26
- - Prefer iteration and modularization over code duplication.
27
- - Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
28
- - Structure files: exported component, subcomponents, helpers, static content, types.
29
- - Use lowercase with dashes for directory names (e.g., `components/auth-wizard`).
30
- - Use kebab-case for file names (e.g., `auth-wizard.ts`).
31
- - Avoid using "this" keyword in functional components.
32
- - Prefer pure functions and avoid side effects.
33
- - Use immutable data structures where possible.
34
- - Use JSDoc comments for functions and components to improve IDE intellisense.
35
-
36
- ## Markdown Documentation
37
-
38
- All documentation written in the docs directory should be:
39
-
40
- - In Markdown format
41
- - Structured with clear headings and subheadings
42
- - Include code examples where applicable
43
- - Use consistent terminology and phrasing
44
- - Be 100% accurate with the actual code implementation
45
- - Be easy to read and understand
46
- - Be concise and to the point
47
- - Use emojis for titles
48
-
49
- ## Naming Conventions
50
-
51
- - Use lowercase with dashes for directories (e.g., components/auth-wizard).
52
- - Favor named exports for components.
53
-
54
- ## TypeScript Usage
55
-
56
- - Use strict TypeScript for all code; prefer interfaces over types.
57
- - Avoid enums; use maps instead.
58
- - Use functional components with TypeScript interfaces.
59
- - Never use "any" type; always prefer strongly typed definitions.
60
-
61
- ## Syntax and Formatting
62
-
63
- - Use the "function" keyword for pure functions.
64
- - Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements.
65
-
66
- ## UI and Styling
67
-
68
- - Generate Custom Elements using our lib/index.ts for components and styling.
69
- - Implement responsive design; use a mobile-first approach.
70
-
71
- ## Performance Optimization
72
-
73
- - Use TypeScript and JavaScript best practices to ensure high performance.
74
- - Always favor tree-shaking and code splitting.
75
- - Optimize images: use WebP format, include size data, implement lazy loading.
76
-
77
- ## Security and Performance
78
-
79
- - Implement proper error handling, user input validation, and secure coding practices.
80
- - Follow performance optimization techniques, such as reducing load times and improving rendering efficiency.
81
-
82
- ## Testing and Documentation
83
-
84
- - Write unit tests for components using Vitest.
85
- - Provide clear and concise comments for complex logic.
86
- - Use JSDoc comments for functions and components to improve IDE intellisense.
87
-
88
- ## Error Handling and Validation
89
-
90
- - Prioritize error handling and edge cases:
91
- - Use early returns for error conditions.
92
- - Implement guard clauses to handle preconditions and invalid states early.
93
- - Use custom error types for consistent error handling.
94
-
95
- ## Key Conventions - NON-NEGOTIABLE
96
-
97
- - NEVER GUESS OR ASSUME! Always make informed decisions based on available data in a project.
98
- - Always use strongly typed TypeScript.
99
- - Keep code lightweight and modular.
100
- - Do not use external dependencies.
101
- - Keep code performant.
102
- - Keep code secure.
103
- - Keep code developer friendly and easy to use.
104
- - Keep code easy to read and understand.
105
- - Keep code maintainable and scalable.
106
- - Always write tests for your code.
107
- - Always follow best practices in coding, security, and performance.
108
- - Always validate assumptions with actual data.
109
- - ALWAYS add new unit and e2e/integration tests for any new functionality.
110
- - ALWAYS document new functionality in the project's documentation files.
111
- - ALWAYS have the user validate all changes with `npm run validate` and report results back to you.
112
- - NEVER run Cypress tests yourself. ONLY the user runs Cypress. Always ask the user to run Cypress and report the results.
113
- - A change can only be considered complete when it meets all the above criteria and has been thoroughly tested and reviewed. THIS IS NON-NEGOTIABLE.
114
-
115
- ## Feature completion checklist (apply to every new feature or fix)
116
-
117
- Before declaring any change complete, ALL of the following must be satisfied:
118
-
119
- ### Documentation
120
- - [ ] All new features are documented in the relevant `docs/*.md` file with options, API reference, and examples.
121
- - [ ] If a composable was added, it has a full entry in `docs/composables.md`.
122
- - [ ] If the feature affects auto-imports, `docs/configuration.md` is updated.
123
- - [ ] If the feature affects routing, `docs/routing.md` is updated.
124
- - [ ] If the feature affects middleware, `docs/middleware.md` is updated.
125
- - [ ] Documentation is 100% accurate with the actual implementation.
126
-
127
- ### Unit tests
128
- - [ ] Vitest unit tests in `src/__tests__/` cover typical usage, edge cases, and error paths.
129
- - [ ] Existing test coverage has not been reduced.
130
-
131
- ### E2e tests
132
- - [ ] Cypress specs in `e2e/cypress/e2e/` cover the feature across all applicable build modes (SPA, SSR, SSG, dev).
133
- - [ ] Required kitchen-sink fixtures are added to `e2e/kitchen-sink/`.
134
- - [ ] Cypress is NOT run by the AI — the user runs `npm run e2e` and reports results.
135
-
136
- ### Auto-imports
137
- - [ ] New framework composables are added to `FRAMEWORK_IMPORTS` and `FRAMEWORK_IDENTIFIERS` in `src/plugin/transforms/auto-import.ts`.
138
- - [ ] Auto-import behavior is tested in `src/__tests__/plugin/transforms/auto-import.test.ts`.
139
-
140
- ### TypeScript
141
- - [ ] All new code uses strict TypeScript — no `any`, no implicit `any`.
142
- - [ ] New public types are exported from `src/types/`.
143
- - [ ] `npm run build` completes without TypeScript errors.
144
-
145
- ### Validation
146
- - [ ] `npm run lint && npm test && npm run build` passes clean before asking the user to run Cypress.
147
- - [ ] User runs `npm run validate` to confirm the full pipeline passes.
148
-
149
- ## Methodology
150
-
151
- 1. **System 2 Thinking**: Approach the problem with analytical rigor. Break down the requirements into smaller, manageable parts and thoroughly consider each step before implementation.
152
- 2. **Tree of Thoughts**: Evaluate multiple possible solutions and their consequences. Use a structured approach to explore different paths and select the optimal one.
153
- 3. **Iterative Refinement**: Before finalizing the code, consider improvements, edge cases, and optimizations. Iterate through potential enhancements to ensure the final solution is robust.
154
-
155
- ## Process:
156
-
157
- 1. **Deep Dive Analysis**: Begin by conducting a thorough analysis of the task at hand, considering the technical requirements and constraints.
158
- 2. **Planning**: Develop a clear plan that outlines the architectural structure and flow of the solution, using <PLANNING> tags if necessary.
159
- 3. **Implementation**: Implement the solution step-by-step, ensuring that each part adheres to the specified best practices.
160
- 4. **Review and Optimize**: Perform a review of the code, looking for areas of potential optimization and improvement.
161
- 5. **Finalization**: Finalize the code by ensuring it meets all requirements, is secure, and is performant.
162
-
163
- ### Coding Environment
164
-
165
- The user asks questions about the following coding languages:
166
-
167
- - TypeScript
168
- - HTML
169
- - CSS
@@ -1,257 +0,0 @@
1
- name: Publish to npm
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- - develop
8
-
9
- permissions:
10
- contents: write
11
-
12
- concurrency:
13
- group: release-${{ github.ref_name }}
14
- cancel-in-progress: false
15
-
16
- env:
17
- FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
18
-
19
- jobs:
20
- validate:
21
- name: Lint, test, build & e2e
22
- runs-on: ubuntu-latest
23
- timeout-minutes: 20
24
-
25
- steps:
26
- - name: Checkout code
27
- uses: actions/checkout@v4
28
- with:
29
- fetch-depth: 0
30
-
31
- - name: Use Node.js version from .nvmrc
32
- uses: actions/setup-node@v4
33
- with:
34
- node-version-file: .nvmrc
35
- registry-url: 'https://registry.npmjs.org/'
36
-
37
- - name: Cache node modules
38
- uses: actions/cache@v4
39
- with:
40
- path: node_modules
41
- key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
42
- restore-keys: |
43
- ${{ runner.os }}-node-
44
-
45
- - name: Install dependencies
46
- run: npm ci
47
-
48
- - name: Install Cypress system dependencies
49
- run: |
50
- sudo apt-get update -y
51
- sudo apt-get install -y \
52
- libgtk2.0-0t64 libgtk-3-0t64 libgbm-dev libnotify-dev \
53
- libnss3 libxss1 libasound2t64 libxtst6 xauth xvfb
54
-
55
- - name: Lint
56
- run: npm run lint
57
-
58
- - name: Unit tests
59
- run: npm test
60
-
61
- - name: Build library
62
- run: npm run build
63
-
64
- - name: E2E tests (SSR)
65
- run: xvfb-run --auto-servernum npm run e2e:ssr
66
-
67
- - name: E2E tests (SSG)
68
- run: xvfb-run --auto-servernum npm run e2e:ssg
69
-
70
- - name: E2E tests (SPA)
71
- run: xvfb-run --auto-servernum npm run e2e:spa
72
-
73
- release:
74
- name: Version & publish
75
- needs: validate
76
- runs-on: ubuntu-latest
77
- timeout-minutes: 15
78
-
79
- steps:
80
- - name: Checkout code
81
- uses: actions/checkout@v4
82
- with:
83
- fetch-depth: 0
84
-
85
- # Resolve the latest tag once so all subsequent steps share the same baseline.
86
- - name: Resolve baseline tag
87
- id: base
88
- run: |
89
- LATEST_TAG=$(git tag --sort=-version:refname | head -n1)
90
- if [ -z "$LATEST_TAG" ]; then
91
- COMMIT_RANGE="HEAD"
92
- else
93
- COMMIT_RANGE="${LATEST_TAG}..HEAD"
94
- fi
95
- echo "latest_tag=$LATEST_TAG" >> $GITHUB_OUTPUT
96
- echo "commit_range=$COMMIT_RANGE" >> $GITHUB_OUTPUT
97
- echo "Baseline tag: ${LATEST_TAG:-'(none - first release)'}"
98
- echo "Commit range: $COMMIT_RANGE"
99
-
100
- # Skip release if every commit since the last tag is chore: or docs:
101
- # Breaking variants (chore!: / docs!:) are intentionally not excluded.
102
- - name: Check if release is needed
103
- id: should_release
104
- run: |
105
- COMMIT_RANGE="${{ steps.base.outputs.commit_range }}"
106
- RELEASE_COMMITS=$(git log "$COMMIT_RANGE" --pretty=format:"%s" --no-merges \
107
- | grep -vE "^(chore|docs)(\([^)]+\))?:" || true)
108
- if [ -z "$RELEASE_COMMITS" ]; then
109
- echo "value=false" >> $GITHUB_OUTPUT
110
- echo "## Release skipped" >> $GITHUB_STEP_SUMMARY
111
- echo "All commits since the last release use \`chore:\` or \`docs:\` prefixes — nothing to publish." >> $GITHUB_STEP_SUMMARY
112
- else
113
- echo "value=true" >> $GITHUB_OUTPUT
114
- fi
115
-
116
- - name: Use Node.js version from .nvmrc
117
- if: steps.should_release.outputs.value == 'true'
118
- uses: actions/setup-node@v4
119
- with:
120
- node-version-file: .nvmrc
121
- registry-url: 'https://registry.npmjs.org/'
122
-
123
- - name: Cache node modules
124
- if: steps.should_release.outputs.value == 'true'
125
- uses: actions/cache@v4
126
- with:
127
- path: node_modules
128
- key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
129
- restore-keys: |
130
- ${{ runner.os }}-node-
131
-
132
- - name: Install dependencies
133
- if: steps.should_release.outputs.value == 'true'
134
- run: npm ci
135
-
136
- - name: Build library
137
- if: steps.should_release.outputs.value == 'true'
138
- run: npm run build
139
-
140
- - name: Configure Git
141
- if: steps.should_release.outputs.value == 'true'
142
- run: |
143
- git config user.name "GitHub Actions"
144
- git config user.email "actions@github.com"
145
- git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
146
-
147
- # Scan ALL commits since the last tag (not just HEAD) and handle the full
148
- # conventional-commits spec: type(scope)!: and BREAKING CHANGE: in body.
149
- - name: Determine version bump
150
- id: bump
151
- if: steps.should_release.outputs.value == 'true'
152
- run: |
153
- COMMIT_RANGE="${{ steps.base.outputs.commit_range }}"
154
-
155
- SUBJECTS=$(git log "$COMMIT_RANGE" --pretty=format:"%s" --no-merges)
156
- FULL_LOG=$(git log "$COMMIT_RANGE" --pretty=format:"%s%n%b" --no-merges)
157
-
158
- BUMP="patch"
159
-
160
- # Major: explicit BREAKING CHANGE footer OR ! after type/scope (e.g. feat!: / feat(scope)!:)
161
- if echo "$FULL_LOG" | grep -qE "^BREAKING CHANGE:" || \
162
- echo "$SUBJECTS" | grep -qE "^[a-z]+(\([^)]+\))?!:"; then
163
- BUMP="major"
164
- # Minor: feat: or feat(scope):
165
- elif echo "$SUBJECTS" | grep -qE "^feat(\([^)]+\))?:"; then
166
- BUMP="minor"
167
- fi
168
-
169
- echo "Bump type: $BUMP"
170
- echo "bump=$BUMP" >> $GITHUB_OUTPUT
171
-
172
- - name: Generate release notes
173
- if: steps.should_release.outputs.value == 'true'
174
- run: |
175
- COMMIT_RANGE="${{ steps.base.outputs.commit_range }}"
176
-
177
- COMMITS=$(git log "$COMMIT_RANGE" --pretty=format:"- %s (%h)" --no-merges \
178
- | grep -vE "^- (release:|chore: update changelog)" || true)
179
-
180
- if [ -z "$COMMITS" ]; then
181
- COMMITS="- No changes since last release"
182
- fi
183
-
184
- echo "$COMMITS" > commits.txt
185
-
186
- - name: Bump version
187
- id: version
188
- if: steps.should_release.outputs.value == 'true'
189
- run: |
190
- BUMP="${{ steps.bump.outputs.bump }}"
191
- if [[ "${{ github.ref_name }}" == "develop" ]]; then
192
- NEW_VERSION=$(npm version prerelease --preid=beta -m "release: %s [skip ci]")
193
- else
194
- NEW_VERSION=$(npm version "$BUMP" -m "release: %s [skip ci]")
195
- fi
196
- echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
197
- git push --follow-tags
198
-
199
- - name: Create release and update changelog
200
- if: steps.should_release.outputs.value == 'true'
201
- run: |
202
- VERSION="${{ steps.version.outputs.version }}"
203
- PREV_TAG="${{ steps.base.outputs.latest_tag }}"
204
- COMMITS=$(cat commits.txt)
205
- DATE=$(date +"%Y-%m-%d")
206
-
207
- if [ -n "$PREV_TAG" ]; then
208
- CHANGELOG_LINK="**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${VERSION}"
209
- else
210
- CHANGELOG_LINK="**Full Changelog**: https://github.com/${{ github.repository }}/commits/${VERSION}"
211
- fi
212
-
213
- RELEASE_NOTES=$(printf '## Release %s\n\n### Changes\n%s\n\n%s' \
214
- "$VERSION" "$COMMITS" "$CHANGELOG_LINK")
215
-
216
- # Update or create CHANGELOG.md
217
- if [ ! -f CHANGELOG.md ]; then
218
- printf "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n" > CHANGELOG.md
219
- fi
220
-
221
- {
222
- head -3 CHANGELOG.md
223
- printf "## [%s] - %s\n\n%s\n\n" "$VERSION" "$DATE" "$COMMITS"
224
- tail -n +4 CHANGELOG.md
225
- } > CHANGELOG.tmp && mv CHANGELOG.tmp CHANGELOG.md
226
-
227
- git add CHANGELOG.md
228
- git commit -m "chore: update changelog for ${VERSION} [skip ci]" || true
229
- git push
230
-
231
- # Use python3 for safe multi-line JSON encoding (avoids sed escaping pitfalls)
232
- ESCAPED_BODY=$(printf '%s' "$RELEASE_NOTES" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
233
-
234
- if [[ "${{ github.ref_name }}" == "develop" ]]; then
235
- PRERELEASE="true"
236
- RELEASE_NAME="${VERSION} (Beta)"
237
- else
238
- PRERELEASE="false"
239
- RELEASE_NAME="${VERSION}"
240
- fi
241
-
242
- curl -fsSL -X POST \
243
- -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
244
- -H "Accept: application/vnd.github.v3+json" \
245
- https://api.github.com/repos/${{ github.repository }}/releases \
246
- -d "{\"tag_name\":\"${VERSION}\",\"name\":\"${RELEASE_NAME}\",\"body\":${ESCAPED_BODY},\"prerelease\":${PRERELEASE}}"
247
-
248
- - name: Publish to npm
249
- if: steps.should_release.outputs.value == 'true'
250
- run: |
251
- if [[ "${{ github.ref_name }}" == "develop" ]]; then
252
- npm publish --tag beta
253
- else
254
- npm publish
255
- fi
256
- env:
257
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- v22.18.0