From c03442ecf09de085fe8a9393248f05d0605b57be Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 16 May 2026 15:00:55 +0000
Subject: [PATCH 1/4] chore: plan bootstrap single-flight mitigation
Agent-Logs-Url: https://github.com/furelid/sonicjs/sessions/57fd154d-2496-405b-8c12-d502940db821
---
package-lock.json | 45 +-
.../{chunk-CSQWOYGZ.js => chunk-46DCL763.js} | 4 +-
...-CSQWOYGZ.js.map => chunk-46DCL763.js.map} | 2 +-
packages/core/dist/chunk-5QK3FXKX.js.map | 1 -
...{chunk-QOZZJZ76.cjs => chunk-656GGECX.cjs} | 4 +-
...OZZJZ76.cjs.map => chunk-656GGECX.cjs.map} | 2 +-
...{chunk-ZUXOAZWZ.cjs => chunk-ABB34XUS.cjs} | 184 +++----
packages/core/dist/chunk-ABB34XUS.cjs.map | 1 +
packages/core/dist/chunk-BX75LZES.cjs.map | 1 -
.../{chunk-5QK3FXKX.js => chunk-DMPXZ6JJ.js} | 39 +-
packages/core/dist/chunk-DMPXZ6JJ.js.map | 1 +
.../{chunk-NDS4S4AG.js => chunk-FE77VWGD.js} | 8 +-
...-NDS4S4AG.js.map => chunk-FE77VWGD.js.map} | 2 +-
...{chunk-74BFRAQS.cjs => chunk-GLRZAPX6.cjs} | 8 +-
...4BFRAQS.cjs.map => chunk-GLRZAPX6.cjs.map} | 2 +-
packages/core/dist/chunk-GQEIPW3L.js.map | 1 -
...{chunk-7KR6GOY3.cjs => chunk-ICMNCCX2.cjs} | 4 +-
...KR6GOY3.cjs.map => chunk-ICMNCCX2.cjs.map} | 2 +-
...{chunk-BX75LZES.cjs => chunk-LPYFMGAK.cjs} | 500 ++++++++++++------
packages/core/dist/chunk-LPYFMGAK.cjs.map | 1 +
packages/core/dist/chunk-M2PKQJ6J.js.map | 1 -
packages/core/dist/chunk-NGTBJJXZ.js.map | 1 -
.../{chunk-CJOLOONT.js => chunk-NJVY2U43.js} | 4 +-
...-CJOLOONT.js.map => chunk-NJVY2U43.js.map} | 2 +-
.../{chunk-M2PKQJ6J.js => chunk-OO7BOO6H.js} | 212 +++++++-
packages/core/dist/chunk-OO7BOO6H.js.map | 1 +
.../{chunk-GQEIPW3L.js => chunk-QFWHAFEO.js} | 4 +-
...XWQVFWPW.cjs.map => chunk-QFWHAFEO.js.map} | 2 +-
...{chunk-V4V54BY3.cjs => chunk-TAOOLOUH.cjs} | 45 +-
packages/core/dist/chunk-TAOOLOUH.cjs.map | 1 +
.../{chunk-NGTBJJXZ.js => chunk-TFNTM3OA.js} | 184 +++----
packages/core/dist/chunk-TFNTM3OA.js.map | 1 +
packages/core/dist/chunk-V4V54BY3.cjs.map | 1 -
...{chunk-XWQVFWPW.cjs => chunk-WAEQXGCX.cjs} | 4 +-
packages/core/dist/chunk-WAEQXGCX.cjs.map | 1 +
packages/core/dist/chunk-ZUXOAZWZ.cjs.map | 1 -
packages/core/dist/index.cjs | 388 +++++++-------
packages/core/dist/index.cjs.map | 2 +-
packages/core/dist/index.js | 26 +-
packages/core/dist/index.js.map | 2 +-
packages/core/dist/middleware.cjs | 64 +--
packages/core/dist/middleware.d.cts | 19 +
packages/core/dist/middleware.d.ts | 19 +
packages/core/dist/middleware.js | 6 +-
packages/core/dist/migrations-2MVNZKQI.cjs | 13 +
...26.cjs.map => migrations-2MVNZKQI.cjs.map} | 2 +-
packages/core/dist/migrations-3CPSXQ26.cjs | 13 -
packages/core/dist/migrations-SMFIJBW2.js | 4 -
packages/core/dist/migrations-W7P2NBXW.js | 4 +
...JBW2.js.map => migrations-W7P2NBXW.js.map} | 2 +-
packages/core/dist/plugins.cjs | 18 +-
packages/core/dist/plugins.js | 2 +-
packages/core/dist/routes.cjs | 58 +-
packages/core/dist/routes.js | 12 +-
packages/core/dist/services.cjs | 78 +--
packages/core/dist/services.js | 6 +-
packages/core/dist/utils.cjs | 22 +-
packages/core/dist/utils.js | 2 +-
packages/core/src/db/migrations-bundle.ts | 2 +-
.../core/src/plugins/manifest-registry.ts | 2 +-
60 files changed, 1245 insertions(+), 798 deletions(-)
rename packages/core/dist/{chunk-CSQWOYGZ.js => chunk-46DCL763.js} (99%)
rename packages/core/dist/{chunk-CSQWOYGZ.js.map => chunk-46DCL763.js.map} (99%)
delete mode 100644 packages/core/dist/chunk-5QK3FXKX.js.map
rename packages/core/dist/{chunk-QOZZJZ76.cjs => chunk-656GGECX.cjs} (99%)
rename packages/core/dist/{chunk-QOZZJZ76.cjs.map => chunk-656GGECX.cjs.map} (99%)
rename packages/core/dist/{chunk-ZUXOAZWZ.cjs => chunk-ABB34XUS.cjs} (94%)
create mode 100644 packages/core/dist/chunk-ABB34XUS.cjs.map
delete mode 100644 packages/core/dist/chunk-BX75LZES.cjs.map
rename packages/core/dist/{chunk-5QK3FXKX.js => chunk-DMPXZ6JJ.js} (94%)
create mode 100644 packages/core/dist/chunk-DMPXZ6JJ.js.map
rename packages/core/dist/{chunk-NDS4S4AG.js => chunk-FE77VWGD.js} (99%)
rename packages/core/dist/{chunk-NDS4S4AG.js.map => chunk-FE77VWGD.js.map} (99%)
rename packages/core/dist/{chunk-74BFRAQS.cjs => chunk-GLRZAPX6.cjs} (99%)
rename packages/core/dist/{chunk-74BFRAQS.cjs.map => chunk-GLRZAPX6.cjs.map} (99%)
delete mode 100644 packages/core/dist/chunk-GQEIPW3L.js.map
rename packages/core/dist/{chunk-7KR6GOY3.cjs => chunk-ICMNCCX2.cjs} (99%)
rename packages/core/dist/{chunk-7KR6GOY3.cjs.map => chunk-ICMNCCX2.cjs.map} (99%)
rename packages/core/dist/{chunk-BX75LZES.cjs => chunk-LPYFMGAK.cjs} (98%)
create mode 100644 packages/core/dist/chunk-LPYFMGAK.cjs.map
delete mode 100644 packages/core/dist/chunk-M2PKQJ6J.js.map
delete mode 100644 packages/core/dist/chunk-NGTBJJXZ.js.map
rename packages/core/dist/{chunk-CJOLOONT.js => chunk-NJVY2U43.js} (99%)
rename packages/core/dist/{chunk-CJOLOONT.js.map => chunk-NJVY2U43.js.map} (99%)
rename packages/core/dist/{chunk-M2PKQJ6J.js => chunk-OO7BOO6H.js} (99%)
create mode 100644 packages/core/dist/chunk-OO7BOO6H.js.map
rename packages/core/dist/{chunk-GQEIPW3L.js => chunk-QFWHAFEO.js} (99%)
rename packages/core/dist/{chunk-XWQVFWPW.cjs.map => chunk-QFWHAFEO.js.map} (53%)
rename packages/core/dist/{chunk-V4V54BY3.cjs => chunk-TAOOLOUH.cjs} (93%)
create mode 100644 packages/core/dist/chunk-TAOOLOUH.cjs.map
rename packages/core/dist/{chunk-NGTBJJXZ.js => chunk-TFNTM3OA.js} (94%)
create mode 100644 packages/core/dist/chunk-TFNTM3OA.js.map
delete mode 100644 packages/core/dist/chunk-V4V54BY3.cjs.map
rename packages/core/dist/{chunk-XWQVFWPW.cjs => chunk-WAEQXGCX.cjs} (99%)
create mode 100644 packages/core/dist/chunk-WAEQXGCX.cjs.map
delete mode 100644 packages/core/dist/chunk-ZUXOAZWZ.cjs.map
create mode 100644 packages/core/dist/migrations-2MVNZKQI.cjs
rename packages/core/dist/{migrations-3CPSXQ26.cjs.map => migrations-2MVNZKQI.cjs.map} (76%)
delete mode 100644 packages/core/dist/migrations-3CPSXQ26.cjs
delete mode 100644 packages/core/dist/migrations-SMFIJBW2.js
create mode 100644 packages/core/dist/migrations-W7P2NBXW.js
rename packages/core/dist/{migrations-SMFIJBW2.js.map => migrations-W7P2NBXW.js.map} (77%)
diff --git a/package-lock.json b/package-lock.json
index 5e28dde35..92c3a6a72 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -70,7 +70,6 @@
"integrity": "sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@@ -173,6 +172,7 @@
"resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.8.0.tgz",
"integrity": "sha512-Hb4BkGNnvgCj3F9XzqjiFTpA5IGkjOXwGAOV13qtc27l2qNF8X9rzSp1H5hu8XewlC0DzYtQtZZIOYzRZDyuXg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -220,6 +220,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.42.0.tgz",
"integrity": "sha512-JLyyG7bb7XOda+w/sp8ch7rEVy6LnWs3qtxr6VJJ2XIINqGsY6U+0L3aJ6QFliBRNUeEAr2QBDxSm8u9Sal5uA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -235,6 +236,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.42.0.tgz",
"integrity": "sha512-SkCrvtZpdSWjNq9NGu/TtOg4TbzRuUToXlQqV6lLePa2s/WQlEyFw7QYjrz4itprWG9ASuH+StDlq7n49F2sBA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -250,6 +252,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.42.0.tgz",
"integrity": "sha512-6iiFbm2tRn6B2OqFv9XDTcw5LdWPudiJWIbRk+fsTX+hkPrPm4e1/SbU+lEYBciPoaTShLkDbRge4UePEyCPMQ==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">= 14.0.0"
}
@@ -259,6 +262,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.42.0.tgz",
"integrity": "sha512-iEokmw2k6FBa8g/TT7ClyEriaP/FUEmz3iczRoCklEHWSgoABMkaeYrxRXrA2yx76AN+gyZoC8FX0iCJ55dsOg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -274,6 +278,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.42.0.tgz",
"integrity": "sha512-ivVniRqX2ARd+jGvRHTxpWeOtO9VT+rK+OmiuRgkSunoTyxk0vjeDO7QkU7+lzBOXiYgakNjkZrBtIpW9c+muw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -289,6 +294,7 @@
"resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.42.0.tgz",
"integrity": "sha512-9+BIw6rerUfA+eLMIS2lF4mgoeBGTCIHiqb35PLn3699Rm3CaJXz03hChdwAWcA6SwGw0haYXYJa7LF0xI6EpA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -320,6 +326,7 @@
"resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.42.0.tgz",
"integrity": "sha512-MBkjRymf4BT6VOvMpJlg6kq8K+PkH9q+N+K4YMNdzTXlL40YwOa1wIWQ5LxP/Jhlz64kW5g9/oaMWY06Sy9dcw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -335,6 +342,7 @@
"resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.42.0.tgz",
"integrity": "sha512-kmLs7YfjT4cpr4FnhhRmnoSX4psh9KYZ9NAiWt/YcUV33m0B/Os5L4QId30zVXkOqAPAEpV5VbDPWep+/aoJdQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -350,6 +358,7 @@
"resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.42.0.tgz",
"integrity": "sha512-U5yZ8+Jj+A4ZC0IMfElpPcddQ9NCoawD1dKyWmjHP49nzN2Z4284IFVMAJWR6fq/0ddGf4OMjjYO9cnF8L+5tw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0",
"@algolia/requester-browser-xhr": "5.42.0",
@@ -365,6 +374,7 @@
"resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.42.0.tgz",
"integrity": "sha512-EbuxgteaYBlKgc2Fs3JzoPIKAIaevAIwmv1F+fakaEXeibG4pkmVNsyTUjpOZIgJ1kXeqNvDrcjRb6g3vYBJ9A==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0"
},
@@ -377,6 +387,7 @@
"resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.42.0.tgz",
"integrity": "sha512-4vnFvY5Q8QZL9eDNkywFLsk/eQCRBXCBpE8HWs8iUsFNHYoamiOxAeYMin0W/nszQj6abc+jNxMChHmejO+ftQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0"
},
@@ -389,6 +400,7 @@
"resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.42.0.tgz",
"integrity": "sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@algolia/client-common": "5.42.0"
},
@@ -1768,7 +1780,6 @@
"integrity": "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/code-frame": "^7.28.6",
"@babel/generator": "^7.28.6",
@@ -3969,7 +3980,6 @@
"resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.15.15.tgz",
"integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@libsql/core": "^0.15.14",
"@libsql/hrana-client": "^0.7.0",
@@ -4140,7 +4150,6 @@
"resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz",
"integrity": "sha512-0TTacJyZ9mDmY+VefuthVshaNIyCGZHJG2fMnGaDttCt8HmjUF7SizlHJpaCDoGnN635nK1wpzfpx/Xx5S4WnQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@mdx-js/mdx": "^3.0.0",
"source-map": "^0.7.0"
@@ -4200,7 +4209,6 @@
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz",
"integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/mdx": "^2.0.0"
},
@@ -4431,7 +4439,6 @@
"resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
"integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
"license": "MIT",
- "peer": true,
"engines": {
"node": "^14.21.3 || >=16"
},
@@ -5132,7 +5139,6 @@
"integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==",
"devOptional": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"playwright": "1.56.1"
},
@@ -6912,7 +6918,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz",
"integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"csstype": "^3.0.2"
}
@@ -7003,7 +7008,6 @@
"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.54.0",
"@typescript-eslint/types": "8.54.0",
@@ -7702,7 +7706,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -8231,7 +8234,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -9727,7 +9729,6 @@
"resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.2.tgz",
"integrity": "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==",
"license": "Apache-2.0",
- "peer": true,
"peerDependencies": {
"@aws-sdk/client-rds-data": ">=3",
"@cloudflare/workers-types": ">=4",
@@ -10246,7 +10247,6 @@
"dev": true,
"hasInstallScript": true,
"license": "MIT",
- "peer": true,
"bin": {
"esbuild": "bin/esbuild"
},
@@ -10325,7 +10325,6 @@
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -10511,7 +10510,6 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -12072,7 +12070,6 @@
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz",
"integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=16.9.0"
}
@@ -15285,7 +15282,6 @@
"resolved": "https://registry.npmjs.org/next/-/next-16.2.6.tgz",
"integrity": "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@next/env": "16.2.6",
"@swc/helpers": "0.5.15",
@@ -16156,7 +16152,6 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -16172,7 +16167,6 @@
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.3.0.tgz",
"integrity": "sha512-FxFz0qFhyBsGdIsb697f/EkvHzi5SZOhWAjxcx2dLt+Q532bAlhswcXGYB1yzjZ69kW8UoadFBw7TyNwlq96Iw==",
"license": "MIT",
- "peer": true,
"peerDependencies": {
"prettier": ">=2.0",
"typescript": ">=2.9",
@@ -17987,8 +17981,7 @@
"version": "4.1.16",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.16.tgz",
"integrity": "sha512-pONL5awpaQX4LN5eiv7moSiSPd/DLDzKVRJz8Q9PgzmAdd1R4307GQS2ZpfiN7ZmekdQrfhZZiSE5jkLR4WNaA==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/tapable": {
"version": "2.3.0",
@@ -18813,7 +18806,6 @@
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
"integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "~0.27.0",
"get-tsconfig": "^4.7.5"
@@ -19395,7 +19387,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -19481,7 +19472,6 @@
"resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz",
"integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"pathe": "^2.0.3"
}
@@ -19735,7 +19725,6 @@
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
"integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
"license": "MIT",
- "peer": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
@@ -19812,7 +19801,6 @@
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
@@ -20326,7 +20314,6 @@
"integrity": "sha512-xQroKAadK503CrmbzCISvQUjeuvEZzv6U0wlnlVFOi5i3gnzfH4onyQ29f3lzpe0FresAiTAd3aqK0Bi/jLI8w==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vitest/expect": "4.0.7",
"@vitest/mocker": "4.0.7",
@@ -21010,7 +20997,6 @@
"integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@@ -21254,7 +21240,6 @@
"integrity": "sha512-ZuEq1OdrJBS+NV+L5HMYPCzVn49a2O60slQiiLpG44jqtlOo+S167fWC76kEXteXLLLydeuRrluRel7WdOUa4g==",
"hasInstallScript": true,
"license": "Apache-2.0",
- "peer": true,
"bin": {
"workerd": "bin/workerd"
},
@@ -21274,7 +21259,6 @@
"resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.78.0.tgz",
"integrity": "sha512-He/vUhk4ih0D0eFmtNnlbT6Od8j+BEokaSR+oYjbVsH0SWIrIch+eHqfLRSBjBQaOoh6HCNxcafcIkBm2u0Hag==",
"license": "MIT OR Apache-2.0",
- "peer": true,
"dependencies": {
"@cloudflare/kv-asset-handler": "0.4.2",
"@cloudflare/unenv-preset": "2.16.0",
@@ -22081,7 +22065,6 @@
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
"integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
"license": "MIT",
- "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/packages/core/dist/chunk-CSQWOYGZ.js b/packages/core/dist/chunk-46DCL763.js
similarity index 99%
rename from packages/core/dist/chunk-CSQWOYGZ.js
rename to packages/core/dist/chunk-46DCL763.js
index c23915a20..a5655f5a5 100644
--- a/packages/core/dist/chunk-CSQWOYGZ.js
+++ b/packages/core/dist/chunk-46DCL763.js
@@ -2213,5 +2213,5 @@ var MigrationService = class {
};
export { MigrationService };
-//# sourceMappingURL=chunk-CSQWOYGZ.js.map
-//# sourceMappingURL=chunk-CSQWOYGZ.js.map
\ No newline at end of file
+//# sourceMappingURL=chunk-46DCL763.js.map
+//# sourceMappingURL=chunk-46DCL763.js.map
\ No newline at end of file
diff --git a/packages/core/dist/chunk-CSQWOYGZ.js.map b/packages/core/dist/chunk-46DCL763.js.map
similarity index 99%
rename from packages/core/dist/chunk-CSQWOYGZ.js.map
rename to packages/core/dist/chunk-46DCL763.js.map
index 2fa5fb3ee..0dce1846b 100644
--- a/packages/core/dist/chunk-CSQWOYGZ.js.map
+++ b/packages/core/dist/chunk-46DCL763.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/db/migrations-bundle.ts","../src/services/migrations.ts"],"names":["hasUserProfilesTable"],"mappings":"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","file":"chunk-CSQWOYGZ.js","sourcesContent":["/**\n * AUTO-GENERATED FILE - DO NOT EDIT\n * Generated by: scripts/generate-migrations.ts\n * Generated at: 2026-05-01T00:32:37.853Z\n *\n * This file contains all migration SQL bundled for use in Cloudflare Workers\n * where filesystem access is not available at runtime.\n */\n\nexport interface BundledMigration {\n id: string\n name: string\n filename: string\n description: string\n sql: string\n}\n\nexport const bundledMigrations: BundledMigration[] = [\n {\n id: '001',\n name: 'Initial Schema',\n filename: '001_initial_schema.sql',\n description: 'Migration 001: Initial Schema',\n sql: \"-- Initial schema for SonicJS AI\\n-- Create users table for authentication\\nCREATE TABLE IF NOT EXISTS users (\\n id TEXT PRIMARY KEY,\\n email TEXT NOT NULL UNIQUE,\\n username TEXT NOT NULL UNIQUE,\\n first_name TEXT NOT NULL,\\n last_name TEXT NOT NULL,\\n password_hash TEXT,\\n role TEXT NOT NULL DEFAULT 'viewer',\\n avatar TEXT,\\n is_active INTEGER NOT NULL DEFAULT 1,\\n last_login_at INTEGER,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create collections table for content schema definitions\\nCREATE TABLE IF NOT EXISTS collections (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n display_name TEXT NOT NULL,\\n description TEXT,\\n schema TEXT NOT NULL, -- JSON schema definition\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create content table for actual content data\\nCREATE TABLE IF NOT EXISTS content (\\n id TEXT PRIMARY KEY,\\n collection_id TEXT NOT NULL REFERENCES collections(id),\\n slug TEXT NOT NULL,\\n title TEXT NOT NULL,\\n data TEXT NOT NULL, -- JSON content data\\n status TEXT NOT NULL DEFAULT 'draft',\\n published_at INTEGER,\\n author_id TEXT NOT NULL REFERENCES users(id),\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create content_versions table for versioning\\nCREATE TABLE IF NOT EXISTS content_versions (\\n id TEXT PRIMARY KEY,\\n content_id TEXT NOT NULL REFERENCES content(id),\\n version INTEGER NOT NULL,\\n data TEXT NOT NULL, -- JSON data\\n author_id TEXT NOT NULL REFERENCES users(id),\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create media/files table with comprehensive R2 integration\\nCREATE TABLE IF NOT EXISTS media (\\n id TEXT PRIMARY KEY,\\n filename TEXT NOT NULL,\\n original_name TEXT NOT NULL,\\n mime_type TEXT NOT NULL,\\n size INTEGER NOT NULL,\\n width INTEGER,\\n height INTEGER,\\n folder TEXT NOT NULL DEFAULT 'uploads',\\n r2_key TEXT NOT NULL, -- R2 storage key\\n public_url TEXT NOT NULL, -- CDN URL\\n thumbnail_url TEXT, -- Cloudflare Images URL\\n alt TEXT,\\n caption TEXT,\\n tags TEXT, -- JSON array of tags\\n uploaded_by TEXT NOT NULL REFERENCES users(id),\\n uploaded_at INTEGER NOT NULL,\\n updated_at INTEGER,\\n published_at INTEGER,\\n scheduled_at INTEGER,\\n archived_at INTEGER,\\n deleted_at INTEGER\\n);\\n\\n-- Create API tokens table for programmatic access\\nCREATE TABLE IF NOT EXISTS api_tokens (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n token TEXT NOT NULL UNIQUE,\\n user_id TEXT NOT NULL REFERENCES users(id),\\n permissions TEXT NOT NULL, -- JSON array of permissions\\n expires_at INTEGER,\\n last_used_at INTEGER,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create workflow history table for content workflow tracking\\nCREATE TABLE IF NOT EXISTS workflow_history (\\n id TEXT PRIMARY KEY,\\n content_id TEXT NOT NULL REFERENCES content(id),\\n action TEXT NOT NULL,\\n from_status TEXT NOT NULL,\\n to_status TEXT NOT NULL,\\n user_id TEXT NOT NULL REFERENCES users(id),\\n comment TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_users_email ON users(email);\\nCREATE INDEX IF NOT EXISTS idx_users_username ON users(username);\\nCREATE INDEX IF NOT EXISTS idx_users_role ON users(role);\\n\\nCREATE INDEX IF NOT EXISTS idx_collections_name ON collections(name);\\nCREATE INDEX IF NOT EXISTS idx_collections_active ON collections(is_active);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_collection ON content(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_content_author ON content(author_id);\\nCREATE INDEX IF NOT EXISTS idx_content_status ON content(status);\\nCREATE INDEX IF NOT EXISTS idx_content_published ON content(published_at);\\nCREATE INDEX IF NOT EXISTS idx_content_slug ON content(slug);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_versions_content ON content_versions(content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_versions_version ON content_versions(version);\\n\\nCREATE INDEX IF NOT EXISTS idx_media_folder ON media(folder);\\nCREATE INDEX IF NOT EXISTS idx_media_type ON media(mime_type);\\nCREATE INDEX IF NOT EXISTS idx_media_uploaded_by ON media(uploaded_by);\\nCREATE INDEX IF NOT EXISTS idx_media_uploaded_at ON media(uploaded_at);\\nCREATE INDEX IF NOT EXISTS idx_media_deleted ON media(deleted_at);\\n\\nCREATE INDEX IF NOT EXISTS idx_api_tokens_user ON api_tokens(user_id);\\nCREATE INDEX IF NOT EXISTS idx_api_tokens_token ON api_tokens(token);\\n\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_content ON workflow_history(content_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_user ON workflow_history(user_id);\\n\\n-- Note: Admin user is created via the seed script with user-provided credentials\\n-- Run 'npm run seed' after migrations to create the admin user\\n\\n-- Insert sample collections\\nINSERT OR IGNORE INTO collections (\\n id, name, display_name, description, schema, \\n is_active, created_at, updated_at\\n) VALUES (\\n 'blog-posts-collection',\\n 'blog_posts',\\n 'Blog Posts',\\n 'Blog post content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"excerpt\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Excerpt\\\"},\\\"featured_image\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Featured Image\\\",\\\"format\\\":\\\"media\\\"},\\\"tags\\\":{\\\"type\\\":\\\"array\\\",\\\"title\\\":\\\"Tags\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"}},\\\"status\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Status\\\",\\\"enum\\\":[\\\"draft\\\",\\\"published\\\",\\\"archived\\\"],\\\"default\\\":\\\"draft\\\"}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n),\\n(\\n 'pages-collection',\\n 'pages',\\n 'Pages',\\n 'Static page content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"slug\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Slug\\\"},\\\"meta_description\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Meta Description\\\"},\\\"featured_image\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Featured Image\\\",\\\"format\\\":\\\"media\\\"}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n),\\n(\\n 'news-collection',\\n 'news',\\n 'News',\\n 'News article content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"publish_date\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Publish Date\\\",\\\"format\\\":\\\"date\\\"},\\\"author\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Author\\\"},\\\"category\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Category\\\",\\\"enum\\\":[\\\"technology\\\",\\\"business\\\",\\\"general\\\"]}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n);\\n\\n-- Note: Sample content can be created via the admin interface after the admin user is seeded\"\n },\n {\n id: '002',\n name: 'Faq Plugin',\n filename: '002_faq_plugin.sql',\n description: 'Migration 002: Faq Plugin',\n sql: \"-- FAQ Plugin Migration (DEPRECATED - Now managed by third-party plugin)\\n-- Creates FAQ table for the FAQ plugin\\n-- NOTE: This migration is kept for historical purposes. \\n-- The FAQ functionality is now provided by the faq-plugin third-party plugin.\\n\\nCREATE TABLE IF NOT EXISTS faqs (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n question TEXT NOT NULL,\\n answer TEXT NOT NULL,\\n category TEXT,\\n tags TEXT,\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_faqs_category ON faqs(category);\\nCREATE INDEX IF NOT EXISTS idx_faqs_published ON faqs(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_faqs_sort_order ON faqs(sortOrder);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS faqs_updated_at\\n AFTER UPDATE ON faqs\\nBEGIN\\n UPDATE faqs SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert sample FAQ data\\nINSERT OR IGNORE INTO faqs (question, answer, category, tags, isPublished, sortOrder) VALUES \\n('What is SonicJS AI?', \\n'SonicJS AI is a modern, TypeScript-first headless CMS built for Cloudflare''s edge platform. It provides a complete content management system with admin interface, API endpoints, and plugin architecture.',\\n'general',\\n'sonicjs, cms, cloudflare',\\n1,\\n1),\\n\\n('How do I get started with SonicJS AI?',\\n'To get started: 1) Clone the repository, 2) Install dependencies with npm install, 3) Set up your Cloudflare account and services, 4) Run the development server with npm run dev, 5) Access the admin interface at /admin.',\\n'general',\\n'getting-started, setup',\\n1,\\n2),\\n\\n('What technologies does SonicJS AI use?',\\n'SonicJS AI is built with: TypeScript for type safety, Hono.js as the web framework, Cloudflare D1 for the database, Cloudflare R2 for media storage, Cloudflare Workers for serverless execution, and Tailwind CSS for styling.',\\n'technical',\\n'technology-stack, typescript, cloudflare',\\n1,\\n3),\\n\\n('How do I create content in SonicJS AI?',\\n'Content creation is done through the admin interface. Navigate to /admin, log in with your credentials, go to Content section, select a collection, and click \\\"New Content\\\" to create articles, pages, or other content types.',\\n'general',\\n'content-creation, admin',\\n1,\\n4),\\n\\n('Is SonicJS AI free to use?',\\n'SonicJS AI is open source and free to use. You only pay for the Cloudflare services you consume (D1 database, R2 storage, Workers execution time). Cloudflare offers generous free tiers for development and small projects.',\\n'billing',\\n'pricing, open-source, cloudflare',\\n1,\\n5),\\n\\n('How do I add custom functionality?',\\n'SonicJS AI features a plugin system that allows you to extend functionality. You can create plugins using the PluginBuilder API, add custom routes, models, admin pages, and integrate with external services.',\\n'technical',\\n'plugins, customization, development',\\n1,\\n6),\\n\\n('Can I customize the admin interface?',\\n'Yes! The admin interface is built with TypeScript templates and can be customized. You can modify existing templates, create new components, add custom pages, and integrate your own styling while maintaining the dark theme.',\\n'technical',\\n'admin-interface, customization, templates',\\n1,\\n7),\\n\\n('How does authentication work?',\\n'SonicJS AI includes a built-in authentication system with JWT tokens, role-based access control (admin, editor, viewer), secure password hashing, and session management. Users can be managed through the admin interface.',\\n'technical',\\n'authentication, security, users',\\n1,\\n8);\"\n },\n {\n id: '003',\n name: 'Stage5 Enhancements',\n filename: '003_stage5_enhancements.sql',\n description: 'Migration 003: Stage5 Enhancements',\n sql: \"-- Stage 5: Advanced Content Management enhancements\\n-- Add scheduling and workflow features to content table\\n\\n-- Add content scheduling columns\\nALTER TABLE content ADD COLUMN scheduled_publish_at INTEGER;\\nALTER TABLE content ADD COLUMN scheduled_unpublish_at INTEGER;\\n\\n-- Add workflow and review columns\\nALTER TABLE content ADD COLUMN review_status TEXT DEFAULT 'none'; -- none, pending, approved, rejected\\nALTER TABLE content ADD COLUMN reviewer_id TEXT REFERENCES users(id);\\nALTER TABLE content ADD COLUMN reviewed_at INTEGER;\\nALTER TABLE content ADD COLUMN review_notes TEXT;\\n\\n-- Add content metadata\\nALTER TABLE content ADD COLUMN meta_title TEXT;\\nALTER TABLE content ADD COLUMN meta_description TEXT;\\nALTER TABLE content ADD COLUMN featured_image_id TEXT REFERENCES media(id);\\nALTER TABLE content ADD COLUMN content_type TEXT DEFAULT 'standard'; -- standard, template, component\\n\\n-- Create content_fields table for dynamic field definitions\\nCREATE TABLE IF NOT EXISTS content_fields (\\n id TEXT PRIMARY KEY,\\n collection_id TEXT NOT NULL REFERENCES collections(id),\\n field_name TEXT NOT NULL,\\n field_type TEXT NOT NULL, -- text, richtext, number, boolean, date, select, media, relationship\\n field_label TEXT NOT NULL,\\n field_options TEXT, -- JSON for select options, validation rules, etc.\\n field_order INTEGER NOT NULL DEFAULT 0,\\n is_required INTEGER NOT NULL DEFAULT 0,\\n is_searchable INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(collection_id, field_name)\\n);\\n\\n-- Create content_relationships table for content relationships\\nCREATE TABLE IF NOT EXISTS content_relationships (\\n id TEXT PRIMARY KEY,\\n source_content_id TEXT NOT NULL REFERENCES content(id),\\n target_content_id TEXT NOT NULL REFERENCES content(id),\\n relationship_type TEXT NOT NULL, -- references, tags, categories\\n created_at INTEGER NOT NULL,\\n UNIQUE(source_content_id, target_content_id, relationship_type)\\n);\\n\\n-- Create workflow_templates table for reusable workflows\\nCREATE TABLE IF NOT EXISTS workflow_templates (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n description TEXT,\\n collection_id TEXT REFERENCES collections(id), -- null means applies to all collections\\n workflow_steps TEXT NOT NULL, -- JSON array of workflow steps\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Add indexes for new columns\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_publish ON content(scheduled_publish_at);\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_unpublish ON content(scheduled_unpublish_at);\\nCREATE INDEX IF NOT EXISTS idx_content_review_status ON content(review_status);\\nCREATE INDEX IF NOT EXISTS idx_content_reviewer ON content(reviewer_id);\\nCREATE INDEX IF NOT EXISTS idx_content_content_type ON content(content_type);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_fields_collection ON content_fields(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_name ON content_fields(field_name);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_type ON content_fields(field_type);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_order ON content_fields(field_order);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_source ON content_relationships(source_content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_target ON content_relationships(target_content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_type ON content_relationships(relationship_type);\\n\\nCREATE INDEX IF NOT EXISTS idx_workflow_templates_collection ON workflow_templates(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_templates_active ON workflow_templates(is_active);\\n\\n-- Insert default workflow template\\nINSERT OR IGNORE INTO workflow_templates (\\n id, name, description, workflow_steps, is_active, created_at, updated_at\\n) VALUES (\\n 'default-content-workflow',\\n 'Default Content Workflow',\\n 'Standard content workflow: Draft → Review → Published',\\n '[\\n {\\\"step\\\": \\\"draft\\\", \\\"name\\\": \\\"Draft\\\", \\\"description\\\": \\\"Content is being created\\\", \\\"permissions\\\": [\\\"author\\\", \\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"review\\\", \\\"name\\\": \\\"Under Review\\\", \\\"description\\\": \\\"Content is pending review\\\", \\\"permissions\\\": [\\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"published\\\", \\\"name\\\": \\\"Published\\\", \\\"description\\\": \\\"Content is live\\\", \\\"permissions\\\": [\\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"archived\\\", \\\"name\\\": \\\"Archived\\\", \\\"description\\\": \\\"Content is archived\\\", \\\"permissions\\\": [\\\"admin\\\"]}\\n ]',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n);\\n\\n-- Insert enhanced field definitions for existing collections\\nINSERT OR IGNORE INTO content_fields (\\n id, collection_id, field_name, field_type, field_label, field_options, field_order, is_required, is_searchable, created_at, updated_at\\n) VALUES \\n-- Blog Posts fields\\n('blog-title-field', 'blog-posts-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter blog post title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-content-field', 'blog-posts-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"full\\\", \\\"height\\\": 400}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-excerpt-field', 'blog-posts-collection', 'excerpt', 'text', 'Excerpt', '{\\\"maxLength\\\": 500, \\\"rows\\\": 3, \\\"placeholder\\\": \\\"Brief description of the post\\\"}', 3, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-tags-field', 'blog-posts-collection', 'tags', 'select', 'Tags', '{\\\"multiple\\\": true, \\\"options\\\": [\\\"technology\\\", \\\"business\\\", \\\"tutorial\\\", \\\"news\\\", \\\"update\\\"], \\\"allowCustom\\\": true}', 4, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-featured-image-field', 'blog-posts-collection', 'featured_image', 'media', 'Featured Image', '{\\\"accept\\\": \\\"image/*\\\", \\\"maxSize\\\": \\\"5MB\\\"}', 5, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-publish-date-field', 'blog-posts-collection', 'publish_date', 'date', 'Publish Date', '{\\\"format\\\": \\\"YYYY-MM-DD\\\", \\\"defaultToday\\\": true}', 6, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-featured-field', 'blog-posts-collection', 'is_featured', 'boolean', 'Featured Post', '{\\\"default\\\": false}', 7, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n\\n-- Pages fields\\n('pages-title-field', 'pages-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter page title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-content-field', 'pages-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"full\\\", \\\"height\\\": 500}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-slug-field', 'pages-collection', 'slug', 'text', 'URL Slug', '{\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\"}', 3, 1, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-meta-desc-field', 'pages-collection', 'meta_description', 'text', 'Meta Description', '{\\\"maxLength\\\": 160, \\\"rows\\\": 2, \\\"placeholder\\\": \\\"SEO description for search engines\\\"}', 4, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-template-field', 'pages-collection', 'template', 'select', 'Page Template', '{\\\"options\\\": [\\\"default\\\", \\\"landing\\\", \\\"contact\\\", \\\"about\\\"], \\\"default\\\": \\\"default\\\"}', 5, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n\\n-- News fields\\n('news-title-field', 'news-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter news title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-content-field', 'news-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"news\\\", \\\"height\\\": 400}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-category-field', 'news-collection', 'category', 'select', 'Category', '{\\\"options\\\": [\\\"technology\\\", \\\"business\\\", \\\"politics\\\", \\\"sports\\\", \\\"entertainment\\\", \\\"health\\\"], \\\"required\\\": true}', 3, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-author-field', 'news-collection', 'author', 'text', 'Author', '{\\\"placeholder\\\": \\\"Author name\\\"}', 4, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-source-field', 'news-collection', 'source', 'text', 'Source', '{\\\"placeholder\\\": \\\"News source\\\"}', 5, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-priority-field', 'news-collection', 'priority', 'select', 'Priority', '{\\\"options\\\": [\\\"low\\\", \\\"normal\\\", \\\"high\\\", \\\"breaking\\\"], \\\"default\\\": \\\"normal\\\"}', 6, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000);\"\n },\n {\n id: '004',\n name: 'Stage6 User Management',\n filename: '004_stage6_user_management.sql',\n description: 'Migration 004: Stage6 User Management',\n sql: \"-- Stage 6: User Management & Permissions enhancements\\n-- Enhanced user system with profiles, teams, permissions, and activity logging\\n\\n-- Add user profile and preferences columns\\nALTER TABLE users ADD COLUMN phone TEXT;\\nALTER TABLE users ADD COLUMN bio TEXT;\\nALTER TABLE users ADD COLUMN avatar_url TEXT;\\nALTER TABLE users ADD COLUMN timezone TEXT DEFAULT 'UTC';\\nALTER TABLE users ADD COLUMN language TEXT DEFAULT 'en';\\nALTER TABLE users ADD COLUMN email_notifications INTEGER DEFAULT 1;\\nALTER TABLE users ADD COLUMN theme TEXT DEFAULT 'dark';\\nALTER TABLE users ADD COLUMN two_factor_enabled INTEGER DEFAULT 0;\\nALTER TABLE users ADD COLUMN two_factor_secret TEXT;\\nALTER TABLE users ADD COLUMN password_reset_token TEXT;\\nALTER TABLE users ADD COLUMN password_reset_expires INTEGER;\\nALTER TABLE users ADD COLUMN email_verified INTEGER DEFAULT 0;\\nALTER TABLE users ADD COLUMN email_verification_token TEXT;\\nALTER TABLE users ADD COLUMN invitation_token TEXT;\\nALTER TABLE users ADD COLUMN invited_by TEXT REFERENCES users(id);\\nALTER TABLE users ADD COLUMN invited_at INTEGER;\\nALTER TABLE users ADD COLUMN accepted_invitation_at INTEGER;\\n\\n-- Create teams table for team-based collaboration\\nCREATE TABLE IF NOT EXISTS teams (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n description TEXT,\\n slug TEXT NOT NULL UNIQUE,\\n owner_id TEXT NOT NULL REFERENCES users(id),\\n settings TEXT, -- JSON for team settings\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create team memberships table\\nCREATE TABLE IF NOT EXISTS team_memberships (\\n id TEXT PRIMARY KEY,\\n team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n role TEXT NOT NULL DEFAULT 'member', -- owner, admin, editor, member, viewer\\n permissions TEXT, -- JSON for specific permissions\\n joined_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(team_id, user_id)\\n);\\n\\n-- Create permissions table for granular access control\\nCREATE TABLE IF NOT EXISTS permissions (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n description TEXT,\\n category TEXT NOT NULL, -- content, users, collections, media, settings\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create role permissions mapping\\nCREATE TABLE IF NOT EXISTS role_permissions (\\n id TEXT PRIMARY KEY,\\n role TEXT NOT NULL,\\n permission_id TEXT NOT NULL REFERENCES permissions(id),\\n created_at INTEGER NOT NULL,\\n UNIQUE(role, permission_id)\\n);\\n\\n-- Create user sessions table for better session management\\nCREATE TABLE IF NOT EXISTS user_sessions (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n token_hash TEXT NOT NULL,\\n ip_address TEXT,\\n user_agent TEXT,\\n is_active INTEGER NOT NULL DEFAULT 1,\\n expires_at INTEGER NOT NULL,\\n created_at INTEGER NOT NULL,\\n last_used_at INTEGER\\n);\\n\\n-- Create activity log table for audit trails\\nCREATE TABLE IF NOT EXISTS activity_logs (\\n id TEXT PRIMARY KEY,\\n user_id TEXT REFERENCES users(id),\\n action TEXT NOT NULL,\\n resource_type TEXT, -- users, content, collections, media, etc.\\n resource_id TEXT,\\n details TEXT, -- JSON with additional details\\n ip_address TEXT,\\n user_agent TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create password history table for security\\nCREATE TABLE IF NOT EXISTS password_history (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n password_hash TEXT NOT NULL,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Insert default permissions\\nINSERT OR IGNORE INTO permissions (id, name, description, category, created_at) VALUES\\n ('perm_content_create', 'content.create', 'Create new content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_read', 'content.read', 'View content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_update', 'content.update', 'Edit existing content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_delete', 'content.delete', 'Delete content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_publish', 'content.publish', 'Publish/unpublish content', 'content', strftime('%s', 'now') * 1000),\\n \\n ('perm_collections_create', 'collections.create', 'Create new collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_read', 'collections.read', 'View collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_update', 'collections.update', 'Edit collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_delete', 'collections.delete', 'Delete collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_fields', 'collections.fields', 'Manage collection fields', 'collections', strftime('%s', 'now') * 1000),\\n \\n ('perm_media_upload', 'media.upload', 'Upload media files', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_read', 'media.read', 'View media files', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_update', 'media.update', 'Edit media metadata', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_delete', 'media.delete', 'Delete media files', 'media', strftime('%s', 'now') * 1000),\\n \\n ('perm_users_create', 'users.create', 'Invite new users', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_read', 'users.read', 'View user profiles', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_update', 'users.update', 'Edit user profiles', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_delete', 'users.delete', 'Deactivate users', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_roles', 'users.roles', 'Manage user roles', 'users', strftime('%s', 'now') * 1000),\\n \\n ('perm_settings_read', 'settings.read', 'View system settings', 'settings', strftime('%s', 'now') * 1000),\\n ('perm_settings_update', 'settings.update', 'Modify system settings', 'settings', strftime('%s', 'now') * 1000),\\n ('perm_activity_read', 'activity.read', 'View activity logs', 'settings', strftime('%s', 'now') * 1000);\\n\\n-- Assign permissions to default roles\\nINSERT OR IGNORE INTO role_permissions (id, role, permission_id, created_at) VALUES\\n -- Admin has all permissions\\n ('rp_admin_content_create', 'admin', 'perm_content_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_read', 'admin', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_update', 'admin', 'perm_content_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_delete', 'admin', 'perm_content_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_publish', 'admin', 'perm_content_publish', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_create', 'admin', 'perm_collections_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_read', 'admin', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_update', 'admin', 'perm_collections_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_delete', 'admin', 'perm_collections_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_fields', 'admin', 'perm_collections_fields', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_upload', 'admin', 'perm_media_upload', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_read', 'admin', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_update', 'admin', 'perm_media_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_delete', 'admin', 'perm_media_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_create', 'admin', 'perm_users_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_read', 'admin', 'perm_users_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_update', 'admin', 'perm_users_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_delete', 'admin', 'perm_users_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_roles', 'admin', 'perm_users_roles', strftime('%s', 'now') * 1000),\\n ('rp_admin_settings_read', 'admin', 'perm_settings_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_settings_update', 'admin', 'perm_settings_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_activity_read', 'admin', 'perm_activity_read', strftime('%s', 'now') * 1000),\\n \\n -- Editor permissions\\n ('rp_editor_content_create', 'editor', 'perm_content_create', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_read', 'editor', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_update', 'editor', 'perm_content_update', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_publish', 'editor', 'perm_content_publish', strftime('%s', 'now') * 1000),\\n ('rp_editor_collections_read', 'editor', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_upload', 'editor', 'perm_media_upload', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_read', 'editor', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_update', 'editor', 'perm_media_update', strftime('%s', 'now') * 1000),\\n ('rp_editor_users_read', 'editor', 'perm_users_read', strftime('%s', 'now') * 1000),\\n \\n -- Viewer permissions\\n ('rp_viewer_content_read', 'viewer', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_collections_read', 'viewer', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_media_read', 'viewer', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_users_read', 'viewer', 'perm_users_read', strftime('%s', 'now') * 1000);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_team_memberships_team_id ON team_memberships(team_id);\\nCREATE INDEX IF NOT EXISTS idx_team_memberships_user_id ON team_memberships(user_id);\\nCREATE INDEX IF NOT EXISTS idx_user_sessions_user_id ON user_sessions(user_id);\\nCREATE INDEX IF NOT EXISTS idx_user_sessions_token_hash ON user_sessions(token_hash);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_user_id ON activity_logs(user_id);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_created_at ON activity_logs(created_at);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_resource ON activity_logs(resource_type, resource_id);\\nCREATE INDEX IF NOT EXISTS idx_password_history_user_id ON password_history(user_id);\\nCREATE INDEX IF NOT EXISTS idx_users_email_verification_token ON users(email_verification_token);\\nCREATE INDEX IF NOT EXISTS idx_users_password_reset_token ON users(password_reset_token);\\nCREATE INDEX IF NOT EXISTS idx_users_invitation_token ON users(invitation_token);\"\n },\n {\n id: '005',\n name: 'Stage7 Workflow Automation',\n filename: '005_stage7_workflow_automation.sql',\n description: 'Migration 005: Stage7 Workflow Automation',\n sql: \"-- Stage 7: Workflow & Automation Migration\\n-- This migration adds workflow and automation capabilities to SonicJS\\n\\n-- Workflow States Table\\nCREATE TABLE IF NOT EXISTS workflow_states (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n color TEXT DEFAULT '#6B7280',\\n is_initial INTEGER DEFAULT 0,\\n is_final INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Insert default workflow states\\nINSERT OR IGNORE INTO workflow_states (id, name, description, color, is_initial, is_final) VALUES\\n('draft', 'Draft', 'Content is being worked on', '#F59E0B', 1, 0),\\n('pending-review', 'Pending Review', 'Content is waiting for review', '#3B82F6', 0, 0),\\n('approved', 'Approved', 'Content has been approved', '#10B981', 0, 0),\\n('published', 'Published', 'Content is live', '#059669', 0, 1),\\n('rejected', 'Rejected', 'Content was rejected', '#EF4444', 0, 1),\\n('archived', 'Archived', 'Content has been archived', '#6B7280', 0, 1);\\n\\n-- Workflows Table\\nCREATE TABLE IF NOT EXISTS workflows (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n collection_id TEXT,\\n is_active INTEGER DEFAULT 1,\\n auto_publish INTEGER DEFAULT 0,\\n require_approval INTEGER DEFAULT 1,\\n approval_levels INTEGER DEFAULT 1,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (collection_id) REFERENCES collections(id) ON DELETE CASCADE\\n);\\n\\n-- Workflow Transitions Table\\nCREATE TABLE IF NOT EXISTS workflow_transitions (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n workflow_id TEXT NOT NULL,\\n from_state_id TEXT NOT NULL,\\n to_state_id TEXT NOT NULL,\\n required_permission TEXT,\\n auto_transition INTEGER DEFAULT 0,\\n transition_conditions TEXT, -- JSON\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id) ON DELETE CASCADE,\\n FOREIGN KEY (from_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (to_state_id) REFERENCES workflow_states(id)\\n);\\n\\n-- Content Workflow Status Table\\nCREATE TABLE IF NOT EXISTS content_workflow_status (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n workflow_id TEXT NOT NULL,\\n current_state_id TEXT NOT NULL,\\n assigned_to TEXT,\\n due_date DATETIME,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id),\\n FOREIGN KEY (current_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (assigned_to) REFERENCES users(id),\\n UNIQUE(content_id, workflow_id)\\n);\\n\\n-- Workflow History Table\\nCREATE TABLE IF NOT EXISTS workflow_history (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n workflow_id TEXT NOT NULL,\\n from_state_id TEXT,\\n to_state_id TEXT NOT NULL,\\n user_id TEXT NOT NULL,\\n comment TEXT,\\n metadata TEXT, -- JSON\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id),\\n FOREIGN KEY (from_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (to_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Scheduled Content Table\\nCREATE TABLE IF NOT EXISTS scheduled_content (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n action TEXT NOT NULL, -- 'publish', 'unpublish', 'archive'\\n scheduled_at DATETIME NOT NULL,\\n timezone TEXT DEFAULT 'UTC',\\n user_id TEXT NOT NULL,\\n status TEXT DEFAULT 'pending', -- 'pending', 'completed', 'failed', 'cancelled'\\n executed_at DATETIME,\\n error_message TEXT,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Notifications Table\\nCREATE TABLE IF NOT EXISTS notifications (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n user_id TEXT NOT NULL,\\n type TEXT NOT NULL, -- 'workflow', 'schedule', 'system'\\n title TEXT NOT NULL,\\n message TEXT NOT NULL,\\n data TEXT, -- JSON\\n is_read INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE\\n);\\n\\n-- Notification Preferences Table\\nCREATE TABLE IF NOT EXISTS notification_preferences (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n user_id TEXT NOT NULL,\\n notification_type TEXT NOT NULL,\\n email_enabled INTEGER DEFAULT 1,\\n in_app_enabled INTEGER DEFAULT 1,\\n digest_frequency TEXT DEFAULT 'daily', -- 'immediate', 'hourly', 'daily', 'weekly'\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,\\n UNIQUE(user_id, notification_type)\\n);\\n\\n-- Webhooks Table\\nCREATE TABLE IF NOT EXISTS webhooks (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n url TEXT NOT NULL,\\n secret TEXT,\\n events TEXT NOT NULL, -- JSON array of event types\\n is_active INTEGER DEFAULT 1,\\n retry_count INTEGER DEFAULT 3,\\n timeout_seconds INTEGER DEFAULT 30,\\n last_success_at DATETIME,\\n last_failure_at DATETIME,\\n failure_count INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Webhook Deliveries Table\\nCREATE TABLE IF NOT EXISTS webhook_deliveries (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n webhook_id TEXT NOT NULL,\\n event_type TEXT NOT NULL,\\n payload TEXT NOT NULL, -- JSON\\n response_status INTEGER,\\n response_body TEXT,\\n attempt_count INTEGER DEFAULT 1,\\n delivered_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (webhook_id) REFERENCES webhooks(id) ON DELETE CASCADE\\n);\\n\\n-- Content Versions Table (for rollback functionality)\\nCREATE TABLE IF NOT EXISTS content_versions (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n version_number INTEGER NOT NULL,\\n title TEXT NOT NULL,\\n content TEXT NOT NULL,\\n fields TEXT, -- JSON\\n user_id TEXT NOT NULL,\\n change_summary TEXT,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id),\\n UNIQUE(content_id, version_number)\\n);\\n\\n-- Automation Rules Table\\nCREATE TABLE IF NOT EXISTS automation_rules (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n trigger_type TEXT NOT NULL, -- 'content_created', 'content_updated', 'workflow_transition', 'schedule'\\n trigger_conditions TEXT, -- JSON\\n action_type TEXT NOT NULL, -- 'workflow_transition', 'send_notification', 'webhook_call', 'auto_save'\\n action_config TEXT, -- JSON\\n is_active INTEGER DEFAULT 1,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Auto-save Drafts Table\\nCREATE TABLE IF NOT EXISTS auto_save_drafts (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT,\\n user_id TEXT NOT NULL,\\n title TEXT,\\n content TEXT,\\n fields TEXT, -- JSON\\n last_saved_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id),\\n UNIQUE(content_id, user_id)\\n);\\n\\n-- Add workflow-related columns to existing content table (skip existing columns)\\nALTER TABLE content ADD COLUMN workflow_state_id TEXT DEFAULT 'draft';\\nALTER TABLE content ADD COLUMN embargo_until DATETIME;\\nALTER TABLE content ADD COLUMN expires_at DATETIME;\\nALTER TABLE content ADD COLUMN version_number INTEGER DEFAULT 1;\\nALTER TABLE content ADD COLUMN is_auto_saved INTEGER DEFAULT 0;\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_status_content_id ON content_workflow_status(content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_status_workflow_id ON content_workflow_status(workflow_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_content_id ON workflow_history(content_id);\\nCREATE INDEX IF NOT EXISTS idx_scheduled_content_scheduled_at ON scheduled_content(scheduled_at);\\nCREATE INDEX IF NOT EXISTS idx_scheduled_content_status ON scheduled_content(status);\\nCREATE INDEX IF NOT EXISTS idx_notifications_user_id ON notifications(user_id);\\nCREATE INDEX IF NOT EXISTS idx_notifications_is_read ON notifications(is_read);\\nCREATE INDEX IF NOT EXISTS idx_content_versions_content_id ON content_versions(content_id);\\nCREATE INDEX IF NOT EXISTS idx_auto_save_drafts_user_id ON auto_save_drafts(user_id);\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_state ON content(workflow_state_id);\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_publish ON content(scheduled_publish_at);\\n\\n-- Insert default workflow for collections\\nINSERT OR IGNORE INTO workflows (id, name, description, collection_id, is_active, require_approval, approval_levels) \\nSELECT \\n 'default-' || id,\\n 'Default Workflow for ' || name,\\n 'Standard content approval workflow',\\n id,\\n 1,\\n 1,\\n 1\\nFROM collections;\\n\\n-- Insert default workflow transitions\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'draft',\\n 'pending-review',\\n 'content:submit'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'pending-review',\\n 'approved',\\n 'content:approve'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'approved',\\n 'published',\\n 'content:publish'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'pending-review',\\n 'rejected',\\n 'content:approve'\\nFROM workflows w;\\n\\n-- Insert default notification preferences for all users\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'workflow_assigned',\\n 1,\\n 1\\nFROM users;\\n\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'workflow_status_change',\\n 1,\\n 1\\nFROM users;\\n\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'content_scheduled',\\n 1,\\n 1\\nFROM users;\"\n },\n {\n id: '006',\n name: 'Plugin System',\n filename: '006_plugin_system.sql',\n description: 'Migration 006: Plugin System',\n sql: \"-- Plugin System Tables\\n-- Migration: 006_plugin_system\\n-- Description: Add plugin management system tables\\n\\n-- Plugins table\\nCREATE TABLE IF NOT EXISTS plugins (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n display_name TEXT NOT NULL,\\n description TEXT,\\n version TEXT NOT NULL,\\n author TEXT NOT NULL,\\n category TEXT NOT NULL,\\n icon TEXT,\\n status TEXT DEFAULT 'inactive' CHECK (status IN ('active', 'inactive', 'error')),\\n is_core BOOLEAN DEFAULT FALSE,\\n settings JSON,\\n permissions JSON,\\n dependencies JSON,\\n download_count INTEGER DEFAULT 0,\\n rating REAL DEFAULT 0,\\n installed_at INTEGER NOT NULL,\\n activated_at INTEGER,\\n last_updated INTEGER NOT NULL,\\n error_message TEXT,\\n created_at INTEGER DEFAULT (unixepoch()),\\n updated_at INTEGER DEFAULT (unixepoch())\\n);\\n\\n-- Plugin hooks table (registered hooks by plugins)\\nCREATE TABLE IF NOT EXISTS plugin_hooks (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n hook_name TEXT NOT NULL,\\n handler_name TEXT NOT NULL,\\n priority INTEGER DEFAULT 10,\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE,\\n UNIQUE(plugin_id, hook_name, handler_name)\\n);\\n\\n-- Plugin routes table\\nCREATE TABLE IF NOT EXISTS plugin_routes (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n path TEXT NOT NULL,\\n method TEXT NOT NULL,\\n handler_name TEXT NOT NULL,\\n middleware JSON,\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE,\\n UNIQUE(plugin_id, path, method)\\n);\\n\\n-- Plugin assets table (CSS, JS files provided by plugins)\\nCREATE TABLE IF NOT EXISTS plugin_assets (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n asset_type TEXT NOT NULL CHECK (asset_type IN ('css', 'js', 'image', 'font')),\\n asset_path TEXT NOT NULL,\\n load_order INTEGER DEFAULT 100,\\n load_location TEXT DEFAULT 'footer' CHECK (load_location IN ('header', 'footer')),\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE\\n);\\n\\n-- Plugin activity log\\nCREATE TABLE IF NOT EXISTS plugin_activity_log (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n action TEXT NOT NULL,\\n user_id TEXT,\\n details JSON,\\n timestamp INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE\\n);\\n\\n-- Create indexes\\nCREATE INDEX IF NOT EXISTS idx_plugins_status ON plugins(status);\\nCREATE INDEX IF NOT EXISTS idx_plugins_category ON plugins(category);\\nCREATE INDEX IF NOT EXISTS idx_plugin_hooks_plugin ON plugin_hooks(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_routes_plugin ON plugin_routes(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_assets_plugin ON plugin_assets(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_activity_plugin ON plugin_activity_log(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_activity_timestamp ON plugin_activity_log(timestamp);\\n\\n-- Insert core plugins\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES \\n(\\n 'core-auth',\\n 'core-auth',\\n 'Authentication System',\\n 'Core authentication and user management system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'security',\\n '🔐',\\n 'active',\\n TRUE,\\n '[\\\"manage:users\\\", \\\"manage:roles\\\", \\\"manage:permissions\\\"]',\\n unixepoch(),\\n unixepoch()\\n),\\n(\\n 'core-media',\\n 'core-media', \\n 'Media Manager',\\n 'Core media upload and management system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'media',\\n '📸',\\n 'active',\\n TRUE,\\n '[\\\"manage:media\\\", \\\"upload:files\\\"]',\\n unixepoch(),\\n unixepoch()\\n),\\n(\\n 'core-workflow',\\n 'core-workflow',\\n 'Workflow Engine',\\n 'Content workflow and approval system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'content',\\n '🔄',\\n 'active',\\n TRUE,\\n '[\\\"manage:workflows\\\", \\\"approve:content\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- FAQ Plugin will be added as a third-party plugin through the admin interface\\n\\n-- Add plugin management permission\\nINSERT OR IGNORE INTO permissions (id, name, description, category, created_at)\\nVALUES (\\n 'manage:plugins',\\n 'Manage Plugins',\\n 'Install, uninstall, activate, and configure plugins',\\n 'system',\\n unixepoch()\\n);\\n\\n-- Grant plugin management permission to admin role\\nINSERT OR IGNORE INTO role_permissions (id, role, permission_id, created_at)\\nVALUES ('role-perm-manage-plugins', 'admin', 'manage:plugins', unixepoch());\"\n },\n {\n id: '007',\n name: 'Demo Login Plugin',\n filename: '007_demo_login_plugin.sql',\n description: 'Migration 007: Demo Login Plugin',\n sql: \"-- Demo Login Plugin Migration\\n-- Migration: 007_demo_login_plugin\\n-- Description: Add demo login prefill plugin to the plugin registry\\n\\n-- Insert demo login plugin\\nINSERT INTO plugins (\\n id, name, display_name, description, version, author, category, icon, \\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'demo-login-prefill',\\n 'demo-login-plugin',\\n 'Demo Login Prefill',\\n 'Prefills login form with demo credentials (admin@sonicjs.com/sonicjs!) for easy site demonstration',\\n '1.0.0',\\n 'SonicJS',\\n 'demo',\\n '🎯',\\n 'inactive',\\n TRUE,\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\"\n },\n {\n id: '008',\n name: 'Fix Slug Validation',\n filename: '008_fix_slug_validation.sql',\n description: 'Migration 008: Fix Slug Validation',\n sql: \"-- Migration: Fix overly restrictive slug validation patterns\\n-- This migration relaxes the slug field validation to be more user-friendly\\n\\n-- Update the pages collection slug field to allow underscores and be less restrictive\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'pages-collection';\\n\\n-- Update blog posts slug field if it exists\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'blog-posts-collection';\\n\\n-- Update news slug field if it exists\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'news-collection';\\n\\n-- Update any other slug fields with the restrictive pattern\\nUPDATE content_fields \\nSET field_options = REPLACE(field_options, '\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\"', '\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\"')\\nWHERE field_options LIKE '%\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\"%';\"\n },\n {\n id: '009',\n name: 'System Logging',\n filename: '009_system_logging.sql',\n description: 'Migration 009: System Logging',\n sql: \"-- System Logging Tables\\n-- Migration: 009_system_logging\\n-- Description: Add system logging and configuration tables\\n\\n-- System logs table for tracking application events\\nCREATE TABLE IF NOT EXISTS system_logs (\\n id TEXT PRIMARY KEY,\\n level TEXT NOT NULL CHECK (level IN ('debug', 'info', 'warn', 'error', 'fatal')),\\n category TEXT NOT NULL CHECK (category IN ('auth', 'api', 'workflow', 'plugin', 'media', 'system', 'security', 'error')),\\n message TEXT NOT NULL,\\n data TEXT, -- JSON data\\n user_id TEXT,\\n session_id TEXT,\\n request_id TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n method TEXT,\\n url TEXT,\\n status_code INTEGER,\\n duration INTEGER, -- milliseconds\\n stack_trace TEXT,\\n tags TEXT, -- JSON array\\n source TEXT, -- source of the log entry\\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Log configuration table for managing log settings per category\\nCREATE TABLE IF NOT EXISTS log_config (\\n id TEXT PRIMARY KEY,\\n category TEXT NOT NULL UNIQUE CHECK (category IN ('auth', 'api', 'workflow', 'plugin', 'media', 'system', 'security', 'error')),\\n enabled BOOLEAN NOT NULL DEFAULT TRUE,\\n level TEXT NOT NULL DEFAULT 'info' CHECK (level IN ('debug', 'info', 'warn', 'error', 'fatal')),\\n retention_days INTEGER NOT NULL DEFAULT 30,\\n max_size_mb INTEGER NOT NULL DEFAULT 100,\\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\\n updated_at INTEGER NOT NULL DEFAULT (unixepoch())\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_system_logs_level ON system_logs(level);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_category ON system_logs(category);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_created_at ON system_logs(created_at);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_user_id ON system_logs(user_id);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_status_code ON system_logs(status_code);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_source ON system_logs(source);\\n\\n-- Insert default log configurations\\nINSERT OR IGNORE INTO log_config (id, category, enabled, level, retention_days, max_size_mb) VALUES\\n('log-config-auth', 'auth', TRUE, 'info', 90, 50),\\n('log-config-api', 'api', TRUE, 'info', 30, 100),\\n('log-config-workflow', 'workflow', TRUE, 'info', 60, 50),\\n('log-config-plugin', 'plugin', TRUE, 'warn', 30, 25),\\n('log-config-media', 'media', TRUE, 'info', 30, 50),\\n('log-config-system', 'system', TRUE, 'info', 90, 100),\\n('log-config-security', 'security', TRUE, 'warn', 180, 100),\\n('log-config-error', 'error', TRUE, 'error', 90, 200);\"\n },\n {\n id: '011',\n name: 'Config Managed Collections',\n filename: '011_config_managed_collections.sql',\n description: 'Migration 011: Config Managed Collections',\n sql: \"-- Migration: Add Config-Managed Collections Support\\n-- Description: Add 'managed' column to collections table to support config-based collection definitions\\n-- Created: 2025-10-03\\n\\n-- Add 'managed' column to collections table\\n-- This column indicates whether a collection is managed by configuration files (true) or user-created (false)\\n-- Managed collections cannot be edited through the admin UI\\n-- Use a safe approach to add the column only if it doesn't exist\\nALTER TABLE collections ADD COLUMN managed INTEGER DEFAULT 0 NOT NULL;\\n\\n-- Create an index on the managed column for faster queries\\nCREATE INDEX IF NOT EXISTS idx_collections_managed ON collections(managed);\\n\\n-- Create an index on managed + is_active for efficient filtering\\nCREATE INDEX IF NOT EXISTS idx_collections_managed_active ON collections(managed, is_active);\\n\"\n },\n {\n id: '012',\n name: 'Testimonials Plugin',\n filename: '012_testimonials_plugin.sql',\n description: 'Migration 012: Testimonials Plugin',\n sql: \"-- Testimonials Plugin Migration\\n-- Creates testimonials table for the testimonials plugin\\n-- This demonstrates a code-based collection defined in src/plugins/core-plugins/testimonials-plugin.ts\\n\\nCREATE TABLE IF NOT EXISTS testimonials (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n author_name TEXT NOT NULL,\\n author_title TEXT,\\n author_company TEXT,\\n testimonial_text TEXT NOT NULL,\\n rating INTEGER CHECK(rating >= 1 AND rating <= 5),\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_testimonials_published ON testimonials(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_testimonials_sort_order ON testimonials(sortOrder);\\nCREATE INDEX IF NOT EXISTS idx_testimonials_rating ON testimonials(rating);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS testimonials_updated_at\\n AFTER UPDATE ON testimonials\\nBEGIN\\n UPDATE testimonials SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert plugin record\\nINSERT OR IGNORE INTO plugins (name, display_name, description, version, status, category, settings) VALUES\\n('testimonials',\\n 'Customer Testimonials',\\n 'Manage customer testimonials and reviews with rating support. This is a code-based collection example.',\\n '1.0.0',\\n 'active',\\n 'content',\\n '{\\\"defaultPublished\\\": true, \\\"requireRating\\\": false}');\\n\\n-- Insert sample testimonial data\\nINSERT OR IGNORE INTO testimonials (author_name, author_title, author_company, testimonial_text, rating, isPublished, sortOrder) VALUES\\n('Jane Smith',\\n 'CTO',\\n 'TechStartup Inc',\\n 'SonicJS AI has transformed how we manage our content. The plugin architecture is brilliant and the edge deployment is blazing fast.',\\n 5,\\n 1,\\n 1),\\n\\n('Michael Chen',\\n 'Lead Developer',\\n 'Digital Agency Co',\\n 'We migrated from WordPress to SonicJS AI and couldn''t be happier. The TypeScript-first approach and modern tooling make development a joy.',\\n 5,\\n 1,\\n 2),\\n\\n('Sarah Johnson',\\n 'Product Manager',\\n 'E-commerce Solutions',\\n 'The headless CMS approach combined with Cloudflare Workers gives us unmatched performance. Our content is served globally with minimal latency.',\\n 4,\\n 1,\\n 3),\\n\\n('David Rodriguez',\\n 'Full Stack Developer',\\n 'Creative Studio',\\n 'Great CMS for modern web applications. The admin interface is clean and the API is well-designed. Plugin system is very flexible.',\\n 5,\\n 1,\\n 4),\\n\\n('Emily Watson',\\n 'Technical Director',\\n 'Media Company',\\n 'SonicJS AI solved our content distribution challenges. The R2 integration for media storage works flawlessly and scales effortlessly.',\\n 4,\\n 1,\\n 5);\\n\"\n },\n {\n id: '013',\n name: 'Code Examples Plugin',\n filename: '013_code_examples_plugin.sql',\n description: 'Migration 013: Code Examples Plugin',\n sql: \"-- Code Examples Plugin Migration\\n-- Creates code_examples table for the code examples plugin\\n-- This demonstrates a code-based collection for storing and managing code snippets\\n\\nCREATE TABLE IF NOT EXISTS code_examples (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n title TEXT NOT NULL,\\n description TEXT,\\n code TEXT NOT NULL,\\n language TEXT NOT NULL,\\n category TEXT,\\n tags TEXT,\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_code_examples_published ON code_examples(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_sort_order ON code_examples(sortOrder);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_language ON code_examples(language);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_category ON code_examples(category);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS code_examples_updated_at\\n AFTER UPDATE ON code_examples\\nBEGIN\\n UPDATE code_examples SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert plugin record\\nINSERT OR IGNORE INTO plugins (name, display_name, description, version, status, category, settings) VALUES\\n('code-examples',\\n 'Code Examples',\\n 'Manage code snippets and examples with syntax highlighting support. Perfect for documentation and tutorials.',\\n '1.0.0',\\n 'active',\\n 'content',\\n '{\\\"defaultPublished\\\": true, \\\"supportedLanguages\\\": [\\\"javascript\\\", \\\"typescript\\\", \\\"python\\\", \\\"go\\\", \\\"rust\\\", \\\"java\\\", \\\"php\\\", \\\"ruby\\\", \\\"sql\\\"]}');\\n\\n-- Insert sample code examples\\nINSERT OR IGNORE INTO code_examples (title, description, code, language, category, tags, isPublished, sortOrder) VALUES\\n('React useState Hook',\\n 'Basic example of using the useState hook in React for managing component state.',\\n 'import { useState } from ''react'';\\n\\nfunction Counter() {\\n const [count, setCount] = useState(0);\\n\\n return (\\n
\\n
Count: {count}
\\n \\n
\\n );\\n}\\n\\nexport default Counter;',\\n 'javascript',\\n 'frontend',\\n 'react,hooks,state',\\n 1,\\n 1),\\n\\n('TypeScript Interface Example',\\n 'Defining a TypeScript interface for type-safe objects.',\\n 'interface User {\\n id: string;\\n email: string;\\n name: string;\\n role: ''admin'' | ''editor'' | ''viewer'';\\n createdAt: Date;\\n}\\n\\nfunction greetUser(user: User): string {\\n return `Hello, ${user.name}!`;\\n}\\n\\nconst user: User = {\\n id: ''123'',\\n email: ''user@example.com'',\\n name: ''John Doe'',\\n role: ''admin'',\\n createdAt: new Date()\\n};\\n\\nconsole.log(greetUser(user));',\\n 'typescript',\\n 'backend',\\n 'typescript,types,interface',\\n 1,\\n 2),\\n\\n('Python List Comprehension',\\n 'Elegant way to create lists in Python using list comprehensions.',\\n '# Basic list comprehension\\nsquares = [x**2 for x in range(10)]\\nprint(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\\n\\n# With condition\\neven_squares = [x**2 for x in range(10) if x % 2 == 0]\\nprint(even_squares) # [0, 4, 16, 36, 64]\\n\\n# Nested list comprehension\\nmatrix = [[i+j for j in range(3)] for i in range(3)]\\nprint(matrix) # [[0, 1, 2], [1, 2, 3], [2, 3, 4]]',\\n 'python',\\n 'general',\\n 'python,lists,comprehension',\\n 1,\\n 3),\\n\\n('SQL Join Example',\\n 'Common SQL JOIN patterns for combining data from multiple tables.',\\n '-- INNER JOIN: Returns only matching rows\\nSELECT users.name, orders.total\\nFROM users\\nINNER JOIN orders ON users.id = orders.user_id;\\n\\n-- LEFT JOIN: Returns all users, even without orders\\nSELECT users.name, orders.total\\nFROM users\\nLEFT JOIN orders ON users.id = orders.user_id;\\n\\n-- Multiple JOINs\\nSELECT\\n users.name,\\n orders.order_date,\\n products.name AS product_name\\nFROM users\\nINNER JOIN orders ON users.id = orders.user_id\\nINNER JOIN order_items ON orders.id = order_items.order_id\\nINNER JOIN products ON order_items.product_id = products.id;',\\n 'sql',\\n 'database',\\n 'sql,joins,queries',\\n 1,\\n 4),\\n\\n('Go Error Handling',\\n 'Idiomatic error handling pattern in Go.',\\n 'package main\\n\\nimport (\\n\\t\\\"errors\\\"\\n\\t\\\"fmt\\\"\\n)\\n\\nfunc divide(a, b float64) (float64, error) {\\n\\tif b == 0 {\\n\\t\\treturn 0, errors.New(\\\"division by zero\\\")\\n\\t}\\n\\treturn a / b, nil\\n}\\n\\nfunc main() {\\n\\tresult, err := divide(10, 2)\\n\\tif err != nil {\\n\\t\\tfmt.Println(\\\"Error:\\\", err)\\n\\t\\treturn\\n\\t}\\n\\tfmt.Printf(\\\"Result: %.2f\\\\n\\\", result)\\n\\n\\t// This will error\\n\\t_, err = divide(10, 0)\\n\\tif err != nil {\\n\\t\\tfmt.Println(\\\"Error:\\\", err)\\n\\t}\\n}',\\n 'go',\\n 'backend',\\n 'go,error-handling,functions',\\n 1,\\n 5);\\n\"\n },\n {\n id: '014',\n name: 'Fix Plugin Registry',\n filename: '014_fix_plugin_registry.sql',\n description: 'Migration 014: Fix Plugin Registry',\n sql: \"-- Fix Plugin Registry\\n-- Migration: 014_fix_plugin_registry\\n-- Description: Add missing plugins and fix plugin name mismatches\\n\\n-- Note: Cannot easily update plugin names as they may be referenced elsewhere\\n-- Instead we'll add the missing plugins with correct names\\n\\n-- Insert missing plugins\\n\\n-- Core Analytics Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'core-analytics',\\n 'core-analytics',\\n 'Analytics & Tracking',\\n 'Core analytics tracking and reporting plugin with page views and event tracking',\\n '1.0.0',\\n 'SonicJS Team',\\n 'seo',\\n '📊',\\n 'active',\\n TRUE,\\n '[\\\"view:analytics\\\", \\\"manage:tracking\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- FAQ Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'faq-plugin',\\n 'faq-plugin',\\n 'FAQ Management',\\n 'Frequently Asked Questions management plugin with categories, search, and custom styling',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '❓',\\n 'active',\\n FALSE,\\n '[\\\"manage:faqs\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Seed Data Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'seed-data',\\n 'seed-data',\\n 'Seed Data Generator',\\n 'Generate realistic example users and content for testing and development',\\n '1.0.0',\\n 'SonicJS Team',\\n 'development',\\n '🌱',\\n 'inactive',\\n FALSE,\\n '[\\\"admin\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Database Tools Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'database-tools',\\n 'database-tools',\\n 'Database Tools',\\n 'Database management tools including truncate, backup, and validation',\\n '1.0.0',\\n 'SonicJS Team',\\n 'system',\\n '🗄️',\\n 'active',\\n FALSE,\\n '[\\\"manage:database\\\", \\\"admin\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '015',\n name: 'Add Remaining Plugins',\n filename: '015_add_remaining_plugins.sql',\n description: 'Migration 015: Add Remaining Plugins',\n sql: \"-- Add Remaining Plugins\\n-- Migration: 015_add_remaining_plugins\\n-- Description: Add all remaining core plugins that were missing from the registry\\n\\n-- Testimonials Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'testimonials-plugin',\\n 'testimonials-plugin',\\n 'Customer Testimonials',\\n 'Manage customer testimonials and reviews with rating support',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '⭐',\\n 'active',\\n FALSE,\\n '[\\\"manage:testimonials\\\"]',\\n '[]',\\n '{\\\"defaultPublished\\\": true, \\\"requireRating\\\": false}',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Code Examples Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'code-examples-plugin',\\n 'code-examples-plugin',\\n 'Code Examples',\\n 'Manage code snippets and examples with syntax highlighting support',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '💻',\\n 'active',\\n FALSE,\\n '[\\\"manage:code-examples\\\"]',\\n '[]',\\n '{\\\"defaultPublished\\\": true, \\\"supportedLanguages\\\": [\\\"javascript\\\", \\\"typescript\\\", \\\"python\\\", \\\"go\\\", \\\"rust\\\", \\\"java\\\", \\\"php\\\", \\\"ruby\\\", \\\"sql\\\"]}',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Workflow Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'workflow-plugin',\\n 'workflow-plugin',\\n 'Workflow Engine',\\n 'Content workflow management with approval chains, scheduling, and automation',\\n '1.0.0',\\n 'SonicJS Team',\\n 'content',\\n '🔄',\\n 'active',\\n TRUE,\\n '[\\\"manage:workflows\\\", \\\"approve:content\\\"]',\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Demo Login Plugin (already exists with correct name from migration 007, but let's ensure it's there)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'demo-login-plugin',\\n 'demo-login-plugin',\\n 'Demo Login Prefill',\\n 'Prefills login form with demo credentials for easy site demonstration',\\n '1.0.0',\\n 'SonicJS',\\n 'demo',\\n '🎯',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '016',\n name: 'Remove Duplicate Cache Plugin',\n filename: '016_remove_duplicate_cache_plugin.sql',\n description: 'Migration 016: Remove Duplicate Cache Plugin',\n sql: \"-- Migration: Remove duplicate cache plugin entry\\n-- Description: Removes the old 'cache' plugin (id: 'cache') that is a duplicate of 'core-cache'\\n-- This fixes the issue where Cache System appears twice in the plugins list\\n-- Created: 2025-10-14\\n\\n-- Remove the old 'cache' plugin entry if it exists\\n-- The correct plugin is 'core-cache' which is managed by plugin-bootstrap.ts\\nDELETE FROM plugins WHERE id = 'cache' AND name = 'cache';\\n\\n-- Clean up any related entries in plugin activity log\\nDELETE FROM plugin_activity_log WHERE plugin_id = 'cache';\\n\\n-- Clean up any related entries in plugin hooks\\nDELETE FROM plugin_hooks WHERE plugin_id = 'cache';\\n\\n-- Clean up any related entries in plugin routes\\nDELETE FROM plugin_routes WHERE plugin_id = 'cache';\\n\"\n },\n {\n id: '017',\n name: 'Auth Configurable Fields',\n filename: '017_auth_configurable_fields.sql',\n description: 'Migration 017: Auth Configurable Fields',\n sql: \"-- Migration: Make authentication fields configurable\\n-- This migration updates the core-auth plugin to support configurable required fields\\n\\n-- The settings will be stored in the plugins table as JSON\\n-- Default settings for core-auth plugin include:\\n-- {\\n-- \\\"requiredFields\\\": {\\n-- \\\"email\\\": { \\\"required\\\": true, \\\"minLength\\\": 5 },\\n-- \\\"password\\\": { \\\"required\\\": true, \\\"minLength\\\": 8 },\\n-- \\\"username\\\": { \\\"required\\\": true, \\\"minLength\\\": 3 },\\n-- \\\"firstName\\\": { \\\"required\\\": true, \\\"minLength\\\": 1 },\\n-- \\\"lastName\\\": { \\\"required\\\": true, \\\"minLength\\\": 1 }\\n-- },\\n-- \\\"validation\\\": {\\n-- \\\"emailFormat\\\": true,\\n-- \\\"allowDuplicateUsernames\\\": false\\n-- }\\n-- }\\n\\n-- Update core-auth plugin settings with configurable field requirements\\nUPDATE plugins\\nSET settings = json_object(\\n 'requiredFields', json_object(\\n 'email', json_object('required', 1, 'minLength', 5, 'label', 'Email', 'type', 'email'),\\n 'password', json_object('required', 1, 'minLength', 8, 'label', 'Password', 'type', 'password'),\\n 'username', json_object('required', 1, 'minLength', 3, 'label', 'Username', 'type', 'text'),\\n 'firstName', json_object('required', 1, 'minLength', 1, 'label', 'First Name', 'type', 'text'),\\n 'lastName', json_object('required', 1, 'minLength', 1, 'label', 'Last Name', 'type', 'text')\\n ),\\n 'validation', json_object(\\n 'emailFormat', 1,\\n 'allowDuplicateUsernames', 0,\\n 'passwordRequirements', json_object(\\n 'requireUppercase', 0,\\n 'requireLowercase', 0,\\n 'requireNumbers', 0,\\n 'requireSpecialChars', 0\\n )\\n ),\\n 'registration', json_object(\\n 'enabled', 1,\\n 'requireEmailVerification', 0,\\n 'defaultRole', 'viewer'\\n )\\n)\\nWHERE id = 'core-auth';\\n\\n-- If core-auth plugin doesn't exist, this migration will be handled by bootstrap\\n-- No need to insert here as plugin bootstrap handles initial plugin creation\\n\"\n },\n {\n id: '018',\n name: 'Settings Table',\n filename: '018_settings_table.sql',\n description: 'Migration 018: Settings Table',\n sql: \"-- Create settings table for storing application settings\\nCREATE TABLE IF NOT EXISTS settings (\\n id TEXT PRIMARY KEY,\\n category TEXT NOT NULL, -- 'general', 'appearance', 'security', etc.\\n key TEXT NOT NULL,\\n value TEXT NOT NULL, -- JSON value\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(category, key)\\n);\\n\\n-- Insert default general settings\\nINSERT OR IGNORE INTO settings (id, category, key, value, created_at, updated_at)\\nVALUES\\n (lower(hex(randomblob(16))), 'general', 'siteName', '\\\"SonicJS AI\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'siteDescription', '\\\"A modern headless CMS powered by AI\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'timezone', '\\\"UTC\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'language', '\\\"en\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'maintenanceMode', 'false', unixepoch() * 1000, unixepoch() * 1000);\\n\\n-- Create index for faster lookups\\nCREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category);\\nCREATE INDEX IF NOT EXISTS idx_settings_category_key ON settings(category, key);\\n\"\n },\n {\n id: '019',\n name: 'Remove Blog Posts Collection',\n filename: '019_remove_blog_posts_collection.sql',\n description: 'Migration 019: Remove Blog Posts Collection',\n sql: \"-- Migration: Remove blog_posts from database-managed collections\\n-- Description: Remove blog-posts-collection from the database so it can be managed by code-based collection\\n-- Created: 2025-11-04\\n\\n-- Delete content associated with blog-posts-collection\\nDELETE FROM content WHERE collection_id = 'blog-posts-collection';\\n\\n-- Delete content fields for blog-posts-collection\\nDELETE FROM content_fields WHERE collection_id = 'blog-posts-collection';\\n\\n-- Delete the blog-posts collection itself\\nDELETE FROM collections WHERE id = 'blog-posts-collection';\\n\\n-- The blog-posts collection will now be managed by the code-based collection\\n-- in src/collections/blog-posts.collection.ts\\n\"\n },\n {\n id: '020',\n name: 'Add Email Plugin',\n filename: '020_add_email_plugin.sql',\n description: 'Migration 020: Add Email Plugin',\n sql: \"-- Add Email Plugin\\n-- Migration: 020_add_email_plugin\\n-- Description: Add email plugin for transactional emails via Resend\\n\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'email',\\n 'email',\\n 'Email',\\n 'Send transactional emails using Resend',\\n '1.0.0-beta.1',\\n 'SonicJS Team',\\n 'utilities',\\n '📧',\\n 'inactive',\\n TRUE,\\n '[\\\"email:manage\\\", \\\"email:send\\\", \\\"email:view-logs\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '021',\n name: 'Add Magic Link Auth Plugin',\n filename: '021_add_magic_link_auth_plugin.sql',\n description: 'Migration 021: Add Magic Link Auth Plugin',\n sql: \"-- Add Magic Link Authentication Plugin\\n-- Migration: 021_add_magic_link_auth_plugin\\n-- Description: Add magic link authentication plugin for passwordless login\\n\\n-- Create magic_links table\\nCREATE TABLE IF NOT EXISTS magic_links (\\n id TEXT PRIMARY KEY,\\n user_email TEXT NOT NULL,\\n token TEXT NOT NULL UNIQUE,\\n expires_at INTEGER NOT NULL,\\n used INTEGER DEFAULT 0,\\n used_at INTEGER,\\n ip_address TEXT,\\n user_agent TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_magic_links_token ON magic_links(token);\\nCREATE INDEX IF NOT EXISTS idx_magic_links_email ON magic_links(user_email);\\nCREATE INDEX IF NOT EXISTS idx_magic_links_expires ON magic_links(expires_at);\\n\\n-- Register the plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'magic-link-auth',\\n 'magic-link-auth',\\n 'Magic Link Authentication',\\n 'Passwordless authentication via email magic links. Users receive a secure one-time link to sign in without entering a password.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'security',\\n '🔗',\\n 'inactive',\\n FALSE,\\n '[\\\"auth:manage\\\", \\\"auth:magic-link\\\"]',\\n '[\\\"email\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '022',\n name: 'Add Tinymce Plugin',\n filename: '022_add_tinymce_plugin.sql',\n description: 'Migration 022: Add Tinymce Plugin',\n sql: \"-- Add TinyMCE Rich Text Editor Plugin\\n-- Migration: 022_add_tinymce_plugin\\n-- Description: Add TinyMCE plugin for WYSIWYG rich text editing\\n\\n-- Register the plugin (active by default since it replaces hardcoded TinyMCE)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'tinymce-plugin',\\n 'tinymce-plugin',\\n 'TinyMCE Rich Text Editor',\\n 'Powerful WYSIWYG rich text editor for content creation. Provides a full-featured editor with formatting, media embedding, and customizable toolbars for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✏️',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"apiKey\\\":\\\"no-api-key\\\",\\\"defaultHeight\\\":300,\\\"defaultToolbar\\\":\\\"full\\\",\\\"skin\\\":\\\"oxide-dark\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '023',\n name: 'Add Easy Mdx Plugin',\n filename: '023_add_easy_mdx_plugin.sql',\n description: 'Migration 023: Add Easy Mdx Plugin',\n sql: \"-- Add EasyMDE Markdown Editor Plugin\\n-- Migration: 023_add_easy_mdx_plugin\\n-- Description: Add EasyMDE plugin for lightweight markdown editing\\n\\n-- Register the plugin (active by default)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'easy-mdx',\\n 'easy-mdx',\\n 'EasyMDE Markdown Editor',\\n 'Lightweight markdown editor with live preview. Provides a simple and efficient editor with markdown support for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '📝',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"defaultHeight\\\":400,\\\"theme\\\":\\\"dark\\\",\\\"toolbar\\\":\\\"full\\\",\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '024',\n name: 'Add Quill Editor Plugin',\n filename: '024_add_quill_editor_plugin.sql',\n description: 'Migration 024: Add Quill Editor Plugin',\n sql: \"-- Add Quill Rich Text Editor Plugin\\n-- Migration: 024_add_quill_editor_plugin\\n-- Description: Add Quill plugin for modern rich text editing\\n\\n-- Register the plugin (active by default)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'quill-editor',\\n 'quill-editor',\\n 'Quill Rich Text Editor',\\n 'Modern rich text editor for content creation. Provides a clean, intuitive WYSIWYG editor with customizable toolbars for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✍️',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"theme\\\":\\\"snow\\\",\\\"defaultHeight\\\":300,\\\"defaultToolbar\\\":\\\"full\\\",\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '025',\n name: 'Add Easymde Plugin',\n filename: '025_add_easymde_plugin.sql',\n description: 'Migration 025: Add Easymde Plugin',\n sql: \"-- Add EasyMDE Rich Text Editor Plugin\\n-- Migration: 025_add_easymde_plugin\\n-- Description: Add EasyMDE plugin for markdown-based rich text editing\\n\\n-- Register the plugin (inactive by default, replacing MDXEditor)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'easymde-editor',\\n 'easymde-editor',\\n 'EasyMDE Editor',\\n 'Lightweight markdown editor for content creation. Simple, elegant WYSIWYG markdown editor with live preview, toolbar, and dark mode support for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✍️',\\n 'inactive',\\n TRUE,\\n '[]',\\n '[]',\\n '{\\\"theme\\\":\\\"dark\\\",\\\"defaultHeight\\\":300,\\\"toolbar\\\":\\\"full\\\",\\\"spellChecker\\\":false,\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '026',\n name: 'Add Otp Login',\n filename: '026_add_otp_login.sql',\n description: 'Migration 026: Add Otp Login',\n sql: \"-- Add OTP Login Plugin\\n-- Migration: 021_add_otp_login\\n-- Description: Add OTP login plugin for passwordless authentication via email codes\\n\\n-- Create table for OTP codes\\nCREATE TABLE IF NOT EXISTS otp_codes (\\n id TEXT PRIMARY KEY,\\n user_email TEXT NOT NULL,\\n code TEXT NOT NULL,\\n expires_at INTEGER NOT NULL,\\n used INTEGER DEFAULT 0,\\n used_at INTEGER,\\n ip_address TEXT,\\n user_agent TEXT,\\n attempts INTEGER DEFAULT 0,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_otp_email_code ON otp_codes(user_email, code);\\nCREATE INDEX IF NOT EXISTS idx_otp_expires ON otp_codes(expires_at);\\nCREATE INDEX IF NOT EXISTS idx_otp_used ON otp_codes(used);\\n\\n-- Add plugin record\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'otp-login',\\n 'otp-login',\\n 'OTP Login',\\n 'Passwordless authentication via email one-time codes',\\n '1.0.0-beta.1',\\n 'SonicJS Team',\\n 'security',\\n '🔢',\\n 'inactive',\\n TRUE,\\n '[\\\"otp:manage\\\", \\\"otp:request\\\", \\\"otp:verify\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '027',\n name: 'Fix Slug Field Type',\n filename: '027_fix_slug_field_type.sql',\n description: 'Migration 027: Fix Slug Field Type',\n sql: \"-- Migration: Fix slug field type\\n-- Description: Update slug fields to use 'slug' field type instead of 'text' for proper auto-generation\\n-- Created: 2026-01-10\\n\\n-- Update pages collection slug field to use 'slug' field type\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'pages-collection';\\n\\n-- Update blog posts slug field if it exists\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'blog-posts-collection';\\n\\n-- Update news slug field if it exists\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'news-collection';\\n\"\n },\n {\n id: '028',\n name: 'Fix Slug Field Type In Schemas',\n filename: '028_fix_slug_field_type_in_schemas.sql',\n description: 'Migration 028: Fix Slug Field Type In Schemas',\n sql: \"-- Migration: Fix slug field type in collection schemas\\n-- Description: Update slug fields in collection schemas to use 'slug' type instead of 'string'\\n-- Created: 2026-01-10\\n\\n-- Update pages-collection schema\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'pages-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\\n-- Update blog-posts-collection schema if it exists\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'blog-posts-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\\n-- Update news-collection schema if it exists\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'news-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\"\n },\n {\n id: '029',\n name: 'Add Forms System',\n filename: '029_add_forms_system.sql',\n description: 'Migration 029: Add Forms System',\n sql: \"-- Migration: 029_add_forms_system.sql\\n-- Description: Add Form.io integration for advanced form building\\n-- Date: January 23, 2026\\n-- Phase: 1 - Database Schema\\n\\n-- =====================================================\\n-- Table: forms\\n-- Description: Stores form definitions and configuration\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS forms (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE, -- Machine name (e.g., \\\"contact-form\\\")\\n display_name TEXT NOT NULL, -- Human name (e.g., \\\"Contact Form\\\")\\n description TEXT, -- Optional description\\n category TEXT DEFAULT 'general', -- Form category (contact, survey, registration, etc.)\\n \\n -- Form.io schema (JSON)\\n formio_schema TEXT NOT NULL, -- Complete Form.io JSON schema\\n \\n -- Settings\\n settings TEXT, -- JSON: {\\n -- emailNotifications: true,\\n -- notifyEmail: \\\"admin@example.com\\\",\\n -- successMessage: \\\"Thank you!\\\",\\n -- redirectUrl: \\\"/thank-you\\\",\\n -- allowAnonymous: true,\\n -- requireAuth: false,\\n -- maxSubmissions: null,\\n -- submitButtonText: \\\"Submit\\\",\\n -- saveProgress: true,\\n -- webhookUrl: null\\n -- }\\n \\n -- Status & Management\\n is_active INTEGER DEFAULT 1, -- Active/inactive flag\\n is_public INTEGER DEFAULT 1, -- Public (anyone) vs private (auth required)\\n managed INTEGER DEFAULT 0, -- Code-managed (like collections)\\n \\n -- Metadata\\n icon TEXT, -- Optional icon for admin UI\\n color TEXT, -- Optional color (hex) for admin UI\\n tags TEXT, -- JSON array of tags\\n \\n -- Stats\\n submission_count INTEGER DEFAULT 0, -- Total submissions received\\n view_count INTEGER DEFAULT 0, -- Form views (optional tracking)\\n \\n -- Ownership\\n created_by TEXT REFERENCES users(id), -- User who created the form\\n updated_by TEXT REFERENCES users(id), -- User who last updated\\n \\n -- Timestamps\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for forms\\nCREATE INDEX IF NOT EXISTS idx_forms_name ON forms(name);\\nCREATE INDEX IF NOT EXISTS idx_forms_category ON forms(category);\\nCREATE INDEX IF NOT EXISTS idx_forms_active ON forms(is_active);\\nCREATE INDEX IF NOT EXISTS idx_forms_public ON forms(is_public);\\nCREATE INDEX IF NOT EXISTS idx_forms_created_by ON forms(created_by);\\n\\n-- =====================================================\\n-- Table: form_submissions\\n-- Description: Stores submitted form data\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS form_submissions (\\n id TEXT PRIMARY KEY,\\n form_id TEXT NOT NULL REFERENCES forms(id) ON DELETE CASCADE,\\n \\n -- Submission data\\n submission_data TEXT NOT NULL, -- JSON: The actual form data submitted\\n \\n -- Submission metadata\\n status TEXT DEFAULT 'pending', -- pending, reviewed, approved, rejected, spam\\n submission_number INTEGER, -- Sequential number per form\\n \\n -- User information (if authenticated)\\n user_id TEXT REFERENCES users(id), -- Submitter user ID (if logged in)\\n user_email TEXT, -- Email from form (or user account)\\n \\n -- Tracking information\\n ip_address TEXT, -- IP address of submitter\\n user_agent TEXT, -- Browser user agent\\n referrer TEXT, -- Page that referred to form\\n utm_source TEXT, -- UTM tracking params\\n utm_medium TEXT,\\n utm_campaign TEXT,\\n \\n -- Review/Processing\\n reviewed_by TEXT REFERENCES users(id), -- Admin who reviewed\\n reviewed_at INTEGER, -- Review timestamp\\n review_notes TEXT, -- Admin notes\\n \\n -- Flags\\n is_spam INTEGER DEFAULT 0, -- Spam flag\\n is_archived INTEGER DEFAULT 0, -- Archived flag\\n \\n -- Timestamps\\n submitted_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for submissions\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_form_id ON form_submissions(form_id);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_status ON form_submissions(status);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_user_id ON form_submissions(user_id);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_email ON form_submissions(user_email);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_submitted_at ON form_submissions(submitted_at);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_spam ON form_submissions(is_spam);\\n\\n-- Trigger to auto-increment submission_number per form\\nCREATE TRIGGER IF NOT EXISTS set_submission_number\\nAFTER INSERT ON form_submissions\\nBEGIN\\n UPDATE form_submissions \\n SET submission_number = (\\n SELECT COUNT(*) \\n FROM form_submissions \\n WHERE form_id = NEW.form_id \\n AND id <= NEW.id\\n )\\n WHERE id = NEW.id;\\nEND;\\n\\n-- Trigger to update form submission_count\\nCREATE TRIGGER IF NOT EXISTS increment_form_submission_count\\nAFTER INSERT ON form_submissions\\nBEGIN\\n UPDATE forms \\n SET submission_count = submission_count + 1,\\n updated_at = unixepoch() * 1000\\n WHERE id = NEW.form_id;\\nEND;\\n\\n-- =====================================================\\n-- Table: form_files (Optional)\\n-- Description: Link form submissions to uploaded files\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS form_files (\\n id TEXT PRIMARY KEY,\\n submission_id TEXT NOT NULL REFERENCES form_submissions(id) ON DELETE CASCADE,\\n media_id TEXT NOT NULL REFERENCES media(id) ON DELETE CASCADE,\\n field_name TEXT NOT NULL, -- Form field that uploaded this file\\n uploaded_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for form files\\nCREATE INDEX IF NOT EXISTS idx_form_files_submission ON form_files(submission_id);\\nCREATE INDEX IF NOT EXISTS idx_form_files_media ON form_files(media_id);\\n\\n-- =====================================================\\n-- Sample Data: Create a default contact form\\n-- =====================================================\\n\\nINSERT OR IGNORE INTO forms (\\n id,\\n name,\\n display_name,\\n description,\\n category,\\n formio_schema,\\n settings,\\n is_active,\\n is_public,\\n created_at,\\n updated_at\\n) VALUES (\\n 'default-contact-form',\\n 'contact',\\n 'Contact Form',\\n 'A simple contact form for getting in touch',\\n 'contact',\\n '{\\\"components\\\":[]}',\\n '{\\\"emailNotifications\\\":false,\\\"successMessage\\\":\\\"Thank you for your submission!\\\",\\\"submitButtonText\\\":\\\"Submit\\\",\\\"requireAuth\\\":false}',\\n 1,\\n 1,\\n unixepoch() * 1000,\\n unixepoch() * 1000\\n);\\n\"\n },\n {\n id: '030',\n name: 'Add Turnstile To Forms',\n filename: '030_add_turnstile_to_forms.sql',\n description: 'Migration 030: Add Turnstile To Forms',\n sql: \"-- Add Turnstile configuration to forms table\\n-- This allows per-form Turnstile settings with global fallback\\n\\n-- Add columns (D1 may not support CHECK constraints in ALTER TABLE)\\nALTER TABLE forms ADD COLUMN turnstile_enabled INTEGER DEFAULT 0;\\nALTER TABLE forms ADD COLUMN turnstile_settings TEXT;\\n\\n-- Set default to inherit global settings for existing forms\\nUPDATE forms \\nSET turnstile_settings = '{\\\"inherit\\\":true}' \\nWHERE turnstile_settings IS NULL;\\n\\n-- Add index for faster lookups\\nCREATE INDEX IF NOT EXISTS idx_forms_turnstile ON forms(turnstile_enabled);\\n\"\n },\n {\n id: '031',\n name: 'Ai Search Plugin',\n filename: '031_ai_search_plugin.sql',\n description: 'Migration 031: Ai Search Plugin',\n sql: \"-- AI Search plugin settings\\nCREATE TABLE IF NOT EXISTS ai_search_settings (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n enabled BOOLEAN DEFAULT 0,\\n ai_mode_enabled BOOLEAN DEFAULT 1,\\n selected_collections TEXT, -- JSON array of collection IDs to index\\n dismissed_collections TEXT, -- JSON array of collection IDs user chose not to index\\n autocomplete_enabled BOOLEAN DEFAULT 1,\\n cache_duration INTEGER DEFAULT 1, -- hours\\n results_limit INTEGER DEFAULT 20,\\n index_media BOOLEAN DEFAULT 0,\\n index_status TEXT, -- JSON object with status per collection\\n last_indexed_at INTEGER,\\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Search history/analytics\\nCREATE TABLE IF NOT EXISTS ai_search_history (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n query TEXT NOT NULL,\\n mode TEXT, -- 'ai' or 'keyword'\\n results_count INTEGER,\\n user_id INTEGER,\\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Index metadata tracking (per collection)\\nCREATE TABLE IF NOT EXISTS ai_search_index_meta (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n collection_id INTEGER NOT NULL,\\n collection_name TEXT NOT NULL, -- Cache collection name for display\\n total_items INTEGER DEFAULT 0,\\n indexed_items INTEGER DEFAULT 0,\\n last_sync_at INTEGER,\\n status TEXT DEFAULT 'pending', -- 'pending', 'indexing', 'completed', 'error'\\n error_message TEXT,\\n UNIQUE(collection_id)\\n);\\n\\n-- Indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_ai_search_history_created_at ON ai_search_history(created_at);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_history_mode ON ai_search_history(mode);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_index_meta_collection_id ON ai_search_index_meta(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_index_meta_status ON ai_search_index_meta(status);\\n\"\n },\n {\n id: '032',\n name: 'User Profiles',\n filename: '032_user_profiles.sql',\n description: 'Migration 032: User Profiles',\n sql: \"-- User Profiles Table (Core Migration)\\n-- Stores extended user profile data separate from auth concerns\\n-- Required by admin-users.ts for user edit page profile management\\n--\\n-- Originally introduced as app-level migration (my-sonicjs-app/migrations/018_user_profiles.sql)\\n-- in upstream PR #508. Core routes (admin-users.ts) were updated to query this table in PR #512,\\n-- but no corresponding core migration was added. This migration corrects that gap.\\n--\\n-- IF NOT EXISTS guards ensure idempotency for databases that already have the table\\n-- from the app-level migration.\\n\\nCREATE TABLE IF NOT EXISTS user_profiles (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL UNIQUE REFERENCES users(id) ON DELETE CASCADE,\\n\\n display_name TEXT,\\n bio TEXT,\\n company TEXT,\\n job_title TEXT,\\n website TEXT,\\n location TEXT,\\n date_of_birth INTEGER,\\n data TEXT DEFAULT '{}',\\n\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Index for fast user lookups\\nCREATE INDEX IF NOT EXISTS idx_user_profiles_user_id ON user_profiles(user_id);\\n\\n-- Trigger to auto-update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS user_profiles_updated_at\\n AFTER UPDATE ON user_profiles\\nBEGIN\\n UPDATE user_profiles SET updated_at = strftime('%s', 'now') * 1000 WHERE id = NEW.id;\\nEND;\\n\"\n },\n {\n id: '033',\n name: 'Form Content Integration',\n filename: '033_form_content_integration.sql',\n description: 'Migration 033: Form Content Integration',\n sql: \"-- Migration 033: Form-Content Integration\\n-- Adds bridge columns to link forms to collections and submissions to content items\\n\\n-- Add source_type and source_id to collections for form-derived collections\\nALTER TABLE collections ADD COLUMN source_type TEXT DEFAULT 'user';\\nALTER TABLE collections ADD COLUMN source_id TEXT;\\n\\n-- Index for efficient lookup of form-derived collections\\nCREATE INDEX IF NOT EXISTS idx_collections_source ON collections(source_type, source_id);\\n\\n-- Add content_id to form_submissions for linking to content items\\nALTER TABLE form_submissions ADD COLUMN content_id TEXT REFERENCES content(id);\\n\\n-- Index for efficient lookup by content_id\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_content_id ON form_submissions(content_id);\\n\\n-- Create system user for anonymous form submissions\\nINSERT OR IGNORE INTO users (id, email, username, first_name, last_name, password_hash, role, is_active, created_at, updated_at)\\nVALUES ('system-form-submission', 'system-forms@sonicjs.internal', 'system-forms', 'Form', 'Submission', NULL, 'viewer', 0, strftime('%s','now') * 1000, strftime('%s','now') * 1000);\\n\"\n },\n {\n id: '034',\n name: 'Security Audit Plugin',\n filename: '034_security_audit_plugin.sql',\n description: 'Migration 034: Security Audit Plugin',\n sql: \"-- Security Audit Plugin\\n-- Tracks login attempts, registrations, and security events for monitoring and brute-force detection\\n\\nCREATE TABLE IF NOT EXISTS security_events (\\n id TEXT PRIMARY KEY,\\n event_type TEXT NOT NULL,\\n severity TEXT NOT NULL DEFAULT 'info',\\n user_id TEXT,\\n email TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n country_code TEXT,\\n request_path TEXT,\\n request_method TEXT,\\n details TEXT,\\n fingerprint TEXT,\\n blocked INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL\\n);\\n\\nCREATE INDEX IF NOT EXISTS idx_security_events_type ON security_events(event_type);\\nCREATE INDEX IF NOT EXISTS idx_security_events_user ON security_events(user_id);\\nCREATE INDEX IF NOT EXISTS idx_security_events_email ON security_events(email);\\nCREATE INDEX IF NOT EXISTS idx_security_events_ip ON security_events(ip_address);\\nCREATE INDEX IF NOT EXISTS idx_security_events_severity ON security_events(severity);\\nCREATE INDEX IF NOT EXISTS idx_security_events_created ON security_events(created_at);\\nCREATE INDEX IF NOT EXISTS idx_security_events_fingerprint ON security_events(fingerprint);\\n\"\n },\n {\n id: '035',\n name: 'User Profiles Data Column',\n filename: '035_user_profiles_data_column.sql',\n description: 'Migration 035: User Profiles Data Column',\n sql: \"-- Migration 035: Add data column to user_profiles (no-op)\\n--\\n-- This migration originally added a missing 'data' column to user_profiles.\\n-- Migration 032 has since been updated to include the column in the CREATE TABLE,\\n-- so on fresh installs the column already exists by the time this runs.\\n--\\n-- The ALTER TABLE has been removed to prevent \\\"duplicate column name: data\\\" errors\\n-- during fresh installs (GitHub issue #771). Wrangler's migration runner does not\\n-- gracefully handle duplicate column errors like the runtime MigrationService does.\\n--\\n-- Existing databases that ran the old 032 (without the data column) get the column\\n-- added at runtime by the core MigrationService, which skips duplicate-column errors.\\n--\\n-- This file is kept as a no-op so that wrangler's migration tracking remains\\n-- consistent (it tracks migrations by filename).\\nSELECT 1;\\n\"\n },\n {\n id: '036',\n name: 'Analytics Events',\n filename: '036_analytics_events.sql',\n description: 'Migration 036: Analytics Events',\n sql: \"-- Migration 036: Analytics Events Table\\n-- Provides storage for user behavior event tracking (page views, custom events)\\n\\nCREATE TABLE IF NOT EXISTS analytics_events (\\n id TEXT PRIMARY KEY,\\n event TEXT NOT NULL,\\n category TEXT NOT NULL DEFAULT 'user-activity',\\n properties TEXT,\\n user_id TEXT,\\n session_id TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n path TEXT,\\n created_at INTEGER NOT NULL DEFAULT (unixepoch())\\n);\\n\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_event ON analytics_events(event);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_category ON analytics_events(category);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_user_id ON analytics_events(user_id);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_session_id ON analytics_events(session_id);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_created_at ON analytics_events(created_at);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_path ON analytics_events(path);\\n\"\n }\n]\n\n// Map for quick lookup by ID\nexport const migrationsByIdMap = new Map(\n bundledMigrations.map(m => [m.id, m])\n)\n\n// Get migration SQL by ID\nexport function getMigrationSQLById(id: string): string | null {\n return migrationsByIdMap.get(id)?.sql ?? null\n}\n\n// Get all migration info (without SQL for lighter payloads)\nexport function getMigrationList(): Array> {\n return bundledMigrations.map(({ sql, ...rest }) => rest)\n}\n","import { D1Database } from '@cloudflare/workers-types'\nimport { bundledMigrations, getMigrationSQLById, type BundledMigration } from '../db/migrations-bundle'\n\nexport interface Migration {\n id: string\n name: string\n filename: string\n description?: string\n applied: boolean\n appliedAt?: string\n size?: number\n}\n\nexport interface MigrationStatus {\n totalMigrations: number\n appliedMigrations: number\n pendingMigrations: number\n lastApplied?: string\n migrations: Migration[]\n}\n\nexport class MigrationService {\n constructor(private db: D1Database) {}\n\n /**\n * Initialize the migrations tracking table\n */\n async initializeMigrationsTable(): Promise {\n const createTableQuery = `\n CREATE TABLE IF NOT EXISTS migrations (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n filename TEXT NOT NULL,\n applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n checksum TEXT\n )\n `\n\n await this.db.prepare(createTableQuery).run()\n }\n\n /**\n * Get all available migrations from the bundled migrations\n */\n async getAvailableMigrations(): Promise {\n const migrations: Migration[] = []\n\n // Get applied migrations from database\n const appliedResult = await this.db.prepare(\n 'SELECT id, name, filename, applied_at FROM migrations ORDER BY applied_at ASC'\n ).all()\n\n const appliedMigrations = new Map(\n appliedResult.results?.map((row: any) => [row.id, row]) || []\n )\n\n // Auto-detect applied migrations by checking if their tables exist\n await this.autoDetectAppliedMigrations(appliedMigrations)\n\n // Use bundled migrations as the source of truth\n for (const bundled of bundledMigrations) {\n const applied = appliedMigrations.has(bundled.id)\n const appliedData = appliedMigrations.get(bundled.id)\n\n migrations.push({\n id: bundled.id,\n name: bundled.name,\n filename: bundled.filename,\n description: bundled.description,\n applied,\n appliedAt: applied ? appliedData?.applied_at : undefined,\n size: bundled.sql.length\n })\n }\n\n return migrations\n }\n\n /**\n * Auto-detect applied migrations by checking if their tables exist\n */\n private async autoDetectAppliedMigrations(appliedMigrations: Map): Promise {\n // Check if basic schema tables exist (migration 001)\n if (!appliedMigrations.has('001')) {\n const hasBasicTables = await this.checkTablesExist(['users', 'content', 'collections', 'media'])\n if (hasBasicTables) {\n appliedMigrations.set('001', {\n id: '001',\n applied_at: new Date().toISOString(),\n name: 'Initial Schema',\n filename: '001_initial_schema.sql'\n })\n await this.markMigrationApplied('001', 'Initial Schema', '001_initial_schema.sql')\n }\n }\n\n // Check if FAQ tables exist (migration 002)\n // Migration 002 creates only the 'faqs' table\n if (!appliedMigrations.has('002')) {\n const hasFaqTables = await this.checkTablesExist(['faqs'])\n if (hasFaqTables) {\n appliedMigrations.set('002', {\n id: '002',\n applied_at: new Date().toISOString(),\n name: 'Faq Plugin',\n filename: '002_faq_plugin.sql'\n })\n await this.markMigrationApplied('002', 'Faq Plugin', '002_faq_plugin.sql')\n }\n }\n\n // Check if stage 5 enhancement tables exist (migration 003)\n // Migration 003 creates content_fields, content_relationships, workflow_templates tables\n if (!appliedMigrations.has('003')) {\n const hasStage5Tables = await this.checkTablesExist(['content_fields', 'content_relationships', 'workflow_templates'])\n if (hasStage5Tables) {\n appliedMigrations.set('003', {\n id: '003',\n applied_at: new Date().toISOString(),\n name: 'Stage 5 Enhancements',\n filename: '003_stage5_enhancements.sql'\n })\n await this.markMigrationApplied('003', 'Stage 5 Enhancements', '003_stage5_enhancements.sql')\n }\n }\n\n // Check if testimonials table exists (migration 012)\n if (!appliedMigrations.has('012')) {\n const hasTestimonialsTables = await this.checkTablesExist(['testimonials'])\n if (hasTestimonialsTables) {\n appliedMigrations.set('012', {\n id: '012',\n applied_at: new Date().toISOString(),\n name: 'Testimonials Plugin',\n filename: '012_testimonials_plugin.sql'\n })\n await this.markMigrationApplied('012', 'Testimonials Plugin', '012_testimonials_plugin.sql')\n }\n }\n\n // Check if code_examples table exists (migration 013)\n if (!appliedMigrations.has('013')) {\n const hasCodeExamplesTables = await this.checkTablesExist(['code_examples'])\n if (hasCodeExamplesTables) {\n appliedMigrations.set('013', {\n id: '013',\n applied_at: new Date().toISOString(),\n name: 'Code Examples Plugin',\n filename: '013_code_examples_plugin.sql'\n })\n await this.markMigrationApplied('013', 'Code Examples Plugin', '013_code_examples_plugin.sql')\n }\n }\n\n // Check if user management tables exist (migration 004)\n if (!appliedMigrations.has('004')) {\n const hasUserTables = await this.checkTablesExist(['api_tokens', 'workflow_history'])\n if (hasUserTables) {\n appliedMigrations.set('004', {\n id: '004',\n applied_at: new Date().toISOString(),\n name: 'User Management',\n filename: '004_stage6_user_management.sql'\n })\n await this.markMigrationApplied('004', 'User Management', '004_stage6_user_management.sql')\n }\n }\n\n // Check if plugin system tables exist (migration 006)\n if (!appliedMigrations.has('006')) {\n const hasPluginTables = await this.checkTablesExist(['plugins', 'plugin_hooks'])\n if (hasPluginTables) {\n appliedMigrations.set('006', {\n id: '006',\n applied_at: new Date().toISOString(),\n name: 'Plugin System',\n filename: '006_plugin_system.sql'\n })\n await this.markMigrationApplied('006', 'Plugin System', '006_plugin_system.sql')\n }\n }\n\n // Check if managed column exists (migration 011)\n // This handles both cases:\n // 1. Migration not marked as applied but column exists -> mark as applied\n // 2. Migration marked as applied but column doesn't exist -> remove from applied (will re-run)\n const hasManagedColumn = await this.checkColumnExists('collections', 'managed')\n if (!appliedMigrations.has('011') && hasManagedColumn) {\n appliedMigrations.set('011', {\n id: '011',\n applied_at: new Date().toISOString(),\n name: 'Config Managed Collections',\n filename: '011_config_managed_collections.sql'\n })\n await this.markMigrationApplied('011', 'Config Managed Collections', '011_config_managed_collections.sql')\n } else if (appliedMigrations.has('011') && !hasManagedColumn) {\n // Migration was marked as applied but column doesn't exist - remove it so it will re-run\n console.log('[Migration] Migration 011 marked as applied but managed column missing - will re-run')\n appliedMigrations.delete('011')\n await this.removeMigrationApplied('011')\n }\n\n // Check if system_logs table exists (migration 009)\n if (!appliedMigrations.has('009')) {\n const hasLoggingTables = await this.checkTablesExist(['system_logs', 'log_config'])\n if (hasLoggingTables) {\n appliedMigrations.set('009', {\n id: '009',\n applied_at: new Date().toISOString(),\n name: 'System Logging',\n filename: '009_system_logging.sql'\n })\n await this.markMigrationApplied('009', 'System Logging', '009_system_logging.sql')\n }\n }\n\n // Check if settings table exists (migration 018)\n if (!appliedMigrations.has('018')) {\n const hasSettingsTable = await this.checkTablesExist(['settings'])\n if (hasSettingsTable) {\n appliedMigrations.set('018', {\n id: '018',\n applied_at: new Date().toISOString(),\n name: 'Settings Table',\n filename: '018_settings_table.sql'\n })\n await this.markMigrationApplied('018', 'Settings Table', '018_settings_table.sql')\n }\n }\n\n // Check if forms tables exist (migration 029)\n // Migration 029 was reassigned between releases: older versions used it for \"Ai Search Plugin\",\n // newer versions use it for \"Add Forms System\". This handles the case where 029 is marked as\n // applied (from the old AI Search migration) but the forms tables don't actually exist.\n const hasFormsTables = await this.checkTablesExist(['forms', 'form_submissions', 'form_files'])\n if (!appliedMigrations.has('029') && hasFormsTables) {\n appliedMigrations.set('029', {\n id: '029',\n applied_at: new Date().toISOString(),\n name: 'Add Forms System',\n filename: '029_add_forms_system.sql'\n })\n await this.markMigrationApplied('029', 'Add Forms System', '029_add_forms_system.sql')\n } else if (appliedMigrations.has('029') && !hasFormsTables) {\n // Migration was marked as applied (possibly from old \"Ai Search Plugin\" migration)\n // but forms tables don't exist - remove it so the forms migration will re-run\n console.log('[Migration] Migration 029 marked as applied but forms tables missing - will re-run')\n appliedMigrations.delete('029')\n await this.removeMigrationApplied('029')\n }\n\n // Check if user_profiles table exists (migration 032)\n // Table may already exist from app-level migration (my-sonicjs-app/migrations/018_user_profiles.sql)\n if (!appliedMigrations.has('032')) {\n const hasUserProfilesTable = await this.checkTablesExist(['user_profiles'])\n if (hasUserProfilesTable) {\n appliedMigrations.set('032', {\n id: '032',\n applied_at: new Date().toISOString(),\n name: 'User Profiles',\n filename: '032_user_profiles.sql'\n })\n await this.markMigrationApplied('032', 'User Profiles', '032_user_profiles.sql')\n }\n }\n\n // Ensure user_profiles.data column exists (migration 035 is now a no-op).\n // Databases that ran the old 032 (without data column) need the column added.\n // Migration 035 was converted to a no-op to fix #771 (duplicate column error\n // on fresh installs), so we add the column here if it's missing.\n const hasUserProfilesTable = await this.checkTablesExist(['user_profiles'])\n if (hasUserProfilesTable) {\n const hasDataColumn = await this.checkColumnExists('user_profiles', 'data')\n if (!hasDataColumn) {\n try {\n await this.db.prepare(`ALTER TABLE user_profiles ADD COLUMN data TEXT DEFAULT '{}'`).run()\n console.log('[Migration] Added missing data column to user_profiles')\n } catch (error) {\n // Column may have been added concurrently; ignore duplicate column errors\n const msg = error instanceof Error ? error.message : String(error)\n if (!msg.includes('duplicate column name')) {\n console.error('[Migration] Failed to add data column to user_profiles:', msg)\n }\n }\n }\n }\n\n // Mark migration 035 as applied since it's now a no-op (column handled above)\n if (!appliedMigrations.has('035')) {\n const hasDataCol = hasUserProfilesTable && await this.checkColumnExists('user_profiles', 'data')\n if (hasDataCol) {\n appliedMigrations.set('035', {\n id: '035',\n applied_at: new Date().toISOString(),\n name: 'User Profiles Data Column',\n filename: '035_user_profiles_data_column.sql'\n })\n await this.markMigrationApplied('035', 'User Profiles Data Column', '035_user_profiles_data_column.sql')\n }\n }\n }\n\n /**\n * Check if specific tables exist in the database\n */\n private async checkTablesExist(tableNames: string[]): Promise {\n try {\n for (const tableName of tableNames) {\n const result = await this.db.prepare(\n `SELECT name FROM sqlite_master WHERE type='table' AND name=?`\n ).bind(tableName).first()\n\n if (!result) {\n return false\n }\n }\n return true\n } catch (error) {\n return false\n }\n }\n\n /**\n * Check if a specific column exists in a table\n */\n private async checkColumnExists(tableName: string, columnName: string): Promise {\n try {\n const result = await this.db.prepare(\n `SELECT * FROM pragma_table_info(?) WHERE name = ?`\n ).bind(tableName, columnName).first()\n\n return !!result\n } catch (error) {\n return false\n }\n }\n\n /**\n * Get migration status summary\n */\n async getMigrationStatus(): Promise {\n await this.initializeMigrationsTable()\n\n const migrations = await this.getAvailableMigrations()\n const appliedMigrations = migrations.filter(m => m.applied)\n const pendingMigrations = migrations.filter(m => !m.applied)\n\n const lastApplied = appliedMigrations.length > 0\n ? appliedMigrations[appliedMigrations.length - 1]?.appliedAt\n : undefined\n\n return {\n totalMigrations: migrations.length,\n appliedMigrations: appliedMigrations.length,\n pendingMigrations: pendingMigrations.length,\n lastApplied,\n migrations\n }\n }\n\n /**\n * Mark a migration as applied\n */\n async markMigrationApplied(migrationId: string, name: string, filename: string): Promise {\n await this.initializeMigrationsTable()\n\n await this.db.prepare(\n 'INSERT OR REPLACE INTO migrations (id, name, filename, applied_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP)'\n ).bind(migrationId, name, filename).run()\n }\n\n /**\n * Remove a migration from the applied list (so it can be re-run)\n */\n async removeMigrationApplied(migrationId: string): Promise {\n await this.initializeMigrationsTable()\n\n await this.db.prepare(\n 'DELETE FROM migrations WHERE id = ?'\n ).bind(migrationId).run()\n }\n\n /**\n * Check if a specific migration has been applied\n */\n async isMigrationApplied(migrationId: string): Promise {\n await this.initializeMigrationsTable()\n\n const result = await this.db.prepare(\n 'SELECT COUNT(*) as count FROM migrations WHERE id = ?'\n ).bind(migrationId).first()\n\n return (result?.count as number) > 0\n }\n\n /**\n * Get the last applied migration\n */\n async getLastAppliedMigration(): Promise {\n await this.initializeMigrationsTable()\n\n const result = await this.db.prepare(\n 'SELECT id, name, filename, applied_at FROM migrations ORDER BY applied_at DESC LIMIT 1'\n ).first()\n\n if (!result) return null\n\n return {\n id: result.id as string,\n name: result.name as string,\n filename: result.filename as string,\n applied: true,\n appliedAt: result.applied_at as string\n }\n }\n\n /**\n * Run pending migrations\n */\n async runPendingMigrations(): Promise<{ success: boolean; message: string; applied: string[]; errors: string[] }> {\n await this.initializeMigrationsTable()\n\n const status = await this.getMigrationStatus()\n const pendingMigrations = status.migrations.filter(m => !m.applied)\n\n if (pendingMigrations.length === 0) {\n return {\n success: true,\n message: 'All migrations are up to date',\n applied: [],\n errors: []\n }\n }\n\n // Actually execute the migration files\n const applied: string[] = []\n const errors: string[] = []\n\n for (const migration of pendingMigrations) {\n try {\n console.log(`[Migration] Applying ${migration.id}: ${migration.name}`)\n await this.applyMigration(migration)\n await this.markMigrationApplied(migration.id, migration.name, migration.filename)\n applied.push(migration.id)\n console.log(`[Migration] Successfully applied ${migration.id}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(`[Migration] Failed to apply migration ${migration.id}:`, errorMessage)\n errors.push(`${migration.id}: ${errorMessage}`)\n // Continue with other migrations instead of stopping on first failure\n // This allows independent migrations to still be applied\n }\n }\n\n if (errors.length > 0 && applied.length === 0) {\n return {\n success: false,\n message: `Failed to apply migrations: ${errors.join('; ')}`,\n applied,\n errors\n }\n }\n\n return {\n success: true,\n message: applied.length > 0\n ? `Applied ${applied.length} migration(s)${errors.length > 0 ? ` (${errors.length} failed)` : ''}`\n : 'No migrations applied',\n applied,\n errors\n }\n }\n\n /**\n * Apply a specific migration\n */\n private async applyMigration(migration: Migration): Promise {\n // Get the actual migration SQL from the bundle\n const migrationSQL = getMigrationSQLById(migration.id)\n\n if (migrationSQL === null) {\n throw new Error(`Migration SQL not found for ${migration.id}`)\n }\n\n if (migrationSQL.trim() === '') {\n console.log(`[Migration] Skipping empty migration ${migration.id}`)\n return\n }\n\n // Split SQL into individual statements, handling triggers properly\n const statements = this.splitSQLStatements(migrationSQL)\n\n for (const statement of statements) {\n if (statement.trim()) {\n try {\n await this.db.prepare(statement).run()\n } catch (error) {\n // Check if it's a \"already exists\" type error and skip it\n const errorMessage = error instanceof Error ? error.message : String(error)\n if (errorMessage.includes('already exists') ||\n errorMessage.includes('duplicate column name') ||\n errorMessage.includes('UNIQUE constraint failed')) {\n console.log(`[Migration] Skipping (already exists): ${statement.substring(0, 50)}...`)\n continue\n }\n console.error(`[Migration] Error executing statement: ${statement.substring(0, 100)}...`)\n throw error\n }\n }\n }\n }\n\n /**\n * Split SQL into statements, handling CREATE TRIGGER properly\n */\n private splitSQLStatements(sql: string): string[] {\n const statements: string[] = []\n let current = ''\n let inTrigger = false\n\n const lines = sql.split('\\n')\n\n for (const line of lines) {\n const trimmed = line.trim()\n\n // Skip comments and empty lines\n if (trimmed.startsWith('--') || trimmed.length === 0) {\n continue\n }\n\n // Check if we're entering a trigger\n if (trimmed.toUpperCase().includes('CREATE TRIGGER')) {\n inTrigger = true\n }\n\n current += line + '\\n'\n\n // Check if we're exiting a trigger\n if (inTrigger && trimmed.toUpperCase() === 'END;') {\n statements.push(current.trim())\n current = ''\n inTrigger = false\n }\n // Check for regular statement end (not in trigger)\n else if (!inTrigger && trimmed.endsWith(';')) {\n statements.push(current.trim())\n current = ''\n }\n }\n\n // Add any remaining statement\n if (current.trim()) {\n statements.push(current.trim())\n }\n\n return statements.filter(s => s.length > 0)\n }\n\n /**\n * Validate database schema\n */\n async validateSchema(): Promise<{ valid: boolean; issues: string[] }> {\n const issues: string[] = []\n\n // Basic table existence checks\n const requiredTables = [\n 'users', 'content', 'collections', 'media'\n ]\n\n for (const table of requiredTables) {\n try {\n await this.db.prepare(`SELECT COUNT(*) FROM ${table} LIMIT 1`).first()\n } catch (error) {\n issues.push(`Missing table: ${table}`)\n }\n }\n\n // Check for managed column in collections\n const hasManagedColumn = await this.checkColumnExists('collections', 'managed')\n if (!hasManagedColumn) {\n issues.push('Missing column: collections.managed')\n }\n\n return {\n valid: issues.length === 0,\n issues\n }\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["../src/db/migrations-bundle.ts","../src/services/migrations.ts"],"names":["hasUserProfilesTable"],"mappings":";AAiBO,IAAM,iBAAA,GAAwC;AAAA,EACnD;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,gBAAA;AAAA,IACN,QAAA,EAAU,wBAAA;AAAA,IACV,WAAA,EAAa,+BAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA,6FAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,YAAA;AAAA,IACN,QAAA,EAAU,oBAAA;AAAA,IACV,WAAA,EAAa,2BAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6NAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,wBAAA;AAAA,IACN,QAAA,EAAU,gCAAA;AAAA,IACV,WAAA,EAAa,uCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,4BAAA;AAAA,IACN,QAAA,EAAU,oCAAA;AAAA,IACV,WAAA,EAAa,2CAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,uBAAA;AAAA,IACV,WAAA,EAAa,8BAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,4EAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,mBAAA;AAAA,IACN,QAAA,EAAU,2BAAA;AAAA,IACV,WAAA,EAAa,kCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,uDAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,gBAAA;AAAA,IACN,QAAA,EAAU,wBAAA;AAAA,IACV,WAAA,EAAa,+BAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,4BAAA;AAAA,IACN,QAAA,EAAU,oCAAA;AAAA,IACV,WAAA,EAAa,2CAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,sBAAA;AAAA,IACN,QAAA,EAAU,8BAAA;AAAA,IACV,WAAA,EAAa,qCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,uBAAA;AAAA,IACN,QAAA,EAAU,+BAAA;AAAA,IACV,WAAA,EAAa,sCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,+BAAA;AAAA,IACN,QAAA,EAAU,uCAAA;AAAA,IACV,WAAA,EAAa,8CAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,0BAAA;AAAA,IACN,QAAA,EAAU,kCAAA;AAAA,IACV,WAAA,EAAa,yCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,gBAAA;AAAA,IACN,QAAA,EAAU,wBAAA;AAAA,IACV,WAAA,EAAa,+BAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,8BAAA;AAAA,IACN,QAAA,EAAU,sCAAA;AAAA,IACV,WAAA,EAAa,6CAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,0BAAA;AAAA,IACV,WAAA,EAAa,iCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,4BAAA;AAAA,IACN,QAAA,EAAU,oCAAA;AAAA,IACV,WAAA,EAAa,2CAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,oBAAA;AAAA,IACN,QAAA,EAAU,4BAAA;AAAA,IACV,WAAA,EAAa,mCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,yBAAA;AAAA,IACN,QAAA,EAAU,iCAAA;AAAA,IACV,WAAA,EAAa,wCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,oBAAA;AAAA,IACN,QAAA,EAAU,4BAAA;AAAA,IACV,WAAA,EAAa,mCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,uBAAA;AAAA,IACV,WAAA,EAAa,8BAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,qBAAA;AAAA,IACN,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,oCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,gCAAA;AAAA,IACN,QAAA,EAAU,wCAAA;AAAA,IACV,WAAA,EAAa,+CAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,0BAAA;AAAA,IACV,WAAA,EAAa,iCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,wBAAA;AAAA,IACN,QAAA,EAAU,gCAAA;AAAA,IACV,WAAA,EAAa,uCAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,0BAAA;AAAA,IACV,WAAA,EAAa,iCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,eAAA;AAAA,IACN,QAAA,EAAU,uBAAA;AAAA,IACV,WAAA,EAAa,8BAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,0BAAA;AAAA,IACN,QAAA,EAAU,kCAAA;AAAA,IACV,WAAA,EAAa,yCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,uBAAA;AAAA,IACN,QAAA,EAAU,+BAAA;AAAA,IACV,WAAA,EAAa,sCAAA;AAAA,IACb,GAAA,EAAK;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,2BAAA;AAAA,IACN,QAAA,EAAU,mCAAA;AAAA,IACV,WAAA,EAAa,0CAAA;AAAA,IACb,GAAA,EAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GACP;AAAA,EACA;AAAA,IACE,EAAA,EAAI,KAAA;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,QAAA,EAAU,0BAAA;AAAA,IACV,WAAA,EAAa,iCAAA;AAAA,IACb,GAAA,EAAK;AAAA;AAET,CAAA;AAGO,IAAM,oBAAoB,IAAI,GAAA;AAAA,EACnC,kBAAkB,GAAA,CAAI,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,EAAA,EAAI,CAAC,CAAC;AACtC,CAAA;AAGO,SAAS,oBAAoB,EAAA,EAA2B;AAC7D,EAAA,OAAO,iBAAA,CAAkB,GAAA,CAAI,EAAE,CAAA,EAAG,GAAA,IAAO,IAAA;AAC3C;;;AC5PO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,EAAA,EAAgB;AAAhB,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAAA,EAAiB;AAAA;AAAA;AAAA;AAAA,EAKrC,MAAM,yBAAA,GAA2C;AAC/C,IAAA,MAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAAA;AAUzB,IAAA,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA,CAAQ,gBAAgB,EAAE,GAAA,EAAI;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAA,GAA+C;AACnD,IAAA,MAAM,aAA0B,EAAC;AAGjC,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA;AAAA,MAClC;AAAA,MACA,GAAA,EAAI;AAEN,IAAA,MAAM,oBAAoB,IAAI,GAAA;AAAA,MAC5B,aAAA,CAAc,OAAA,EAAS,GAAA,CAAI,CAAC,GAAA,KAAa,CAAC,GAAA,CAAI,EAAA,EAAI,GAAG,CAAC,CAAA,IAAK;AAAC,KAC9D;AAGA,IAAA,MAAM,IAAA,CAAK,4BAA4B,iBAAiB,CAAA;AAGxD,IAAA,KAAA,MAAW,WAAW,iBAAA,EAAmB;AACvC,MAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AAChD,MAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,GAAA,CAAI,OAAA,CAAQ,EAAE,CAAA;AAEpD,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAI,OAAA,CAAQ,EAAA;AAAA,QACZ,MAAM,OAAA,CAAQ,IAAA;AAAA,QACd,UAAU,OAAA,CAAQ,QAAA;AAAA,QAClB,aAAa,OAAA,CAAQ,WAAA;AAAA,QACrB,OAAA;AAAA,QACA,SAAA,EAAW,OAAA,GAAU,WAAA,EAAa,UAAA,GAAa,MAAA;AAAA,QAC/C,IAAA,EAAM,QAAQ,GAAA,CAAI;AAAA,OACnB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,UAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,4BAA4B,iBAAA,EAAoD;AAE5F,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,OAAA,EAAS,SAAA,EAAW,aAAA,EAAe,OAAO,CAAC,CAAA;AAC/F,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,gBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,gBAAA,EAAkB,wBAAwB,CAAA;AAAA,MACnF;AAAA,IACF;AAIA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,eAAe,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,MAAM,CAAC,CAAA;AACzD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,YAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,YAAA,EAAc,oBAAoB,CAAA;AAAA,MAC3E;AAAA,IACF;AAIA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,eAAA,GAAkB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,gBAAA,EAAkB,uBAAA,EAAyB,oBAAoB,CAAC,CAAA;AACrH,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,sBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,sBAAA,EAAwB,6BAA6B,CAAA;AAAA,MAC9F;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,wBAAwB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,cAAc,CAAC,CAAA;AAC1E,MAAA,IAAI,qBAAA,EAAuB;AACzB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,qBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,qBAAA,EAAuB,6BAA6B,CAAA;AAAA,MAC7F;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,wBAAwB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,eAAe,CAAC,CAAA;AAC3E,MAAA,IAAI,qBAAA,EAAuB;AACzB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,sBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,sBAAA,EAAwB,8BAA8B,CAAA;AAAA,MAC/F;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,gBAAgB,MAAM,IAAA,CAAK,iBAAiB,CAAC,YAAA,EAAc,kBAAkB,CAAC,CAAA;AACpF,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,iBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,iBAAA,EAAmB,gCAAgC,CAAA;AAAA,MAC5F;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,kBAAkB,MAAM,IAAA,CAAK,iBAAiB,CAAC,SAAA,EAAW,cAAc,CAAC,CAAA;AAC/E,MAAA,IAAI,eAAA,EAAiB;AACnB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,eAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,eAAA,EAAiB,uBAAuB,CAAA;AAAA,MACjF;AAAA,IACF;AAMA,IAAA,MAAM,gBAAA,GAAmB,MAAM,IAAA,CAAK,iBAAA,CAAkB,eAAe,SAAS,CAAA;AAC9E,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,KAAK,gBAAA,EAAkB;AACrD,MAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,QAC3B,EAAA,EAAI,KAAA;AAAA,QACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QACnC,IAAA,EAAM,4BAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACX,CAAA;AACD,MAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,4BAAA,EAA8B,oCAAoC,CAAA;AAAA,IAC3G,WAAW,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,IAAK,CAAC,gBAAA,EAAkB;AAE5D,MAAA,OAAA,CAAQ,IAAI,sFAAsF,CAAA;AAClG,MAAA,iBAAA,CAAkB,OAAO,KAAK,CAAA;AAC9B,MAAA,MAAM,IAAA,CAAK,uBAAuB,KAAK,CAAA;AAAA,IACzC;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,mBAAmB,MAAM,IAAA,CAAK,iBAAiB,CAAC,aAAA,EAAe,YAAY,CAAC,CAAA;AAClF,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,gBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,gBAAA,EAAkB,wBAAwB,CAAA;AAAA,MACnF;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,mBAAmB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,UAAU,CAAC,CAAA;AACjE,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,gBAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,gBAAA,EAAkB,wBAAwB,CAAA;AAAA,MACnF;AAAA,IACF;AAMA,IAAA,MAAM,cAAA,GAAiB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,OAAA,EAAS,kBAAA,EAAoB,YAAY,CAAC,CAAA;AAC9F,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,KAAK,cAAA,EAAgB;AACnD,MAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,QAC3B,EAAA,EAAI,KAAA;AAAA,QACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QACnC,IAAA,EAAM,kBAAA;AAAA,QACN,QAAA,EAAU;AAAA,OACX,CAAA;AACD,MAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,kBAAA,EAAoB,0BAA0B,CAAA;AAAA,IACvF,WAAW,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,IAAK,CAAC,cAAA,EAAgB;AAG1D,MAAA,OAAA,CAAQ,IAAI,oFAAoF,CAAA;AAChG,MAAA,iBAAA,CAAkB,OAAO,KAAK,CAAA;AAC9B,MAAA,MAAM,IAAA,CAAK,uBAAuB,KAAK,CAAA;AAAA,IACzC;AAIA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAMA,wBAAuB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,eAAe,CAAC,CAAA;AAC1E,MAAA,IAAIA,qBAAAA,EAAsB;AACxB,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,eAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,eAAA,EAAiB,uBAAuB,CAAA;AAAA,MACjF;AAAA,IACF;AAMA,IAAA,MAAM,uBAAuB,MAAM,IAAA,CAAK,gBAAA,CAAiB,CAAC,eAAe,CAAC,CAAA;AAC1E,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,iBAAA,CAAkB,iBAAiB,MAAM,CAAA;AAC1E,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA,CAAQ,CAAA,2DAAA,CAA6D,EAAE,GAAA,EAAI;AACzF,UAAA,OAAA,CAAQ,IAAI,wDAAwD,CAAA;AAAA,QACtE,SAAS,KAAA,EAAO;AAEd,UAAA,MAAM,MAAM,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACjE,UAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,uBAAuB,CAAA,EAAG;AAC1C,YAAA,OAAA,CAAQ,KAAA,CAAM,2DAA2D,GAAG,CAAA;AAAA,UAC9E;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,iBAAA,CAAkB,GAAA,CAAI,KAAK,CAAA,EAAG;AACjC,MAAA,MAAM,aAAa,oBAAA,IAAwB,MAAM,IAAA,CAAK,iBAAA,CAAkB,iBAAiB,MAAM,CAAA;AAC/F,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,iBAAA,CAAkB,IAAI,KAAA,EAAO;AAAA,UAC3B,EAAA,EAAI,KAAA;AAAA,UACJ,UAAA,EAAA,iBAAY,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,UACnC,IAAA,EAAM,2BAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACX,CAAA;AACD,QAAA,MAAM,IAAA,CAAK,oBAAA,CAAqB,KAAA,EAAO,2BAAA,EAA6B,mCAAmC,CAAA;AAAA,MACzG;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAiB,UAAA,EAAwC;AACrE,IAAA,IAAI;AACF,MAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,QAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA;AAAA,UAC3B,CAAA,4DAAA;AAAA,SACF,CAAE,IAAA,CAAK,SAAS,CAAA,CAAE,KAAA,EAAM;AAExB,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAA,CAAkB,SAAA,EAAmB,UAAA,EAAsC;AACvF,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA;AAAA,QAC3B,CAAA,iDAAA;AAAA,OACF,CAAE,IAAA,CAAK,SAAA,EAAW,UAAU,EAAE,KAAA,EAAM;AAEpC,MAAA,OAAO,CAAC,CAAC,MAAA;AAAA,IACX,SAAS,KAAA,EAAO;AACd,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,kBAAA,GAA+C;AACnD,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,UAAA,GAAa,MAAM,IAAA,CAAK,sBAAA,EAAuB;AACrD,IAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AAC1D,IAAA,MAAM,oBAAoB,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,EAAE,OAAO,CAAA;AAE3D,IAAA,MAAM,WAAA,GAAc,kBAAkB,MAAA,GAAS,CAAA,GAC3C,kBAAkB,iBAAA,CAAkB,MAAA,GAAS,CAAC,CAAA,EAAG,SAAA,GACjD,MAAA;AAEJ,IAAA,OAAO;AAAA,MACL,iBAAiB,UAAA,CAAW,MAAA;AAAA,MAC5B,mBAAmB,iBAAA,CAAkB,MAAA;AAAA,MACrC,mBAAmB,iBAAA,CAAkB,MAAA;AAAA,MACrC,WAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,CAAqB,WAAA,EAAqB,IAAA,EAAc,QAAA,EAAiC;AAC7F,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,KAAK,EAAA,CAAG,OAAA;AAAA,MACZ;AAAA,MACA,IAAA,CAAK,WAAA,EAAa,IAAA,EAAM,QAAQ,EAAE,GAAA,EAAI;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAAuB,WAAA,EAAoC;AAC/D,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,KAAK,EAAA,CAAG,OAAA;AAAA,MACZ;AAAA,KACF,CAAE,IAAA,CAAK,WAAW,CAAA,CAAE,GAAA,EAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,WAAA,EAAuC;AAC9D,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA;AAAA,MAC3B;AAAA,KACF,CAAE,IAAA,CAAK,WAAW,CAAA,CAAE,KAAA,EAAM;AAE1B,IAAA,OAAQ,QAAQ,KAAA,GAAmB,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,uBAAA,GAAqD;AACzD,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA;AAAA,MAC3B;AAAA,MACA,KAAA,EAAM;AAER,IAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,IAAA,OAAO;AAAA,MACL,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,OAAA,EAAS,IAAA;AAAA,MACT,WAAW,MAAA,CAAO;AAAA,KACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAA,GAA4G;AAChH,IAAA,MAAM,KAAK,yBAAA,EAA0B;AAErC,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,kBAAA,EAAmB;AAC7C,IAAA,MAAM,oBAAoB,MAAA,CAAO,UAAA,CAAW,OAAO,CAAA,CAAA,KAAK,CAAC,EAAE,OAAO,CAAA;AAElE,IAAA,IAAI,iBAAA,CAAkB,WAAW,CAAA,EAAG;AAClC,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS,+BAAA;AAAA,QACT,SAAS,EAAC;AAAA,QACV,QAAQ;AAAC,OACX;AAAA,IACF;AAGA,IAAA,MAAM,UAAoB,EAAC;AAC3B,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,KAAA,MAAW,aAAa,iBAAA,EAAmB;AACzC,MAAA,IAAI;AACF,QAAA,OAAA,CAAQ,IAAI,CAAA,qBAAA,EAAwB,SAAA,CAAU,EAAE,CAAA,EAAA,EAAK,SAAA,CAAU,IAAI,CAAA,CAAE,CAAA;AACrE,QAAA,MAAM,IAAA,CAAK,eAAe,SAAS,CAAA;AACnC,QAAA,MAAM,KAAK,oBAAA,CAAqB,SAAA,CAAU,IAAI,SAAA,CAAU,IAAA,EAAM,UAAU,QAAQ,CAAA;AAChF,QAAA,OAAA,CAAQ,IAAA,CAAK,UAAU,EAAE,CAAA;AACzB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,iCAAA,EAAoC,SAAA,CAAU,EAAE,CAAA,CAAE,CAAA;AAAA,MAChE,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,eAAe,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC1E,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,sCAAA,EAAyC,SAAA,CAAU,EAAE,KAAK,YAAY,CAAA;AACpF,QAAA,MAAA,CAAO,KAAK,CAAA,EAAG,SAAA,CAAU,EAAE,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE,CAAA;AAAA,MAGhD;AAAA,IACF;AAEA,IAAA,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,IAAK,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC7C,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,OAAA,EAAS,CAAA,4BAAA,EAA+B,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,QACzD,OAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,SAAS,OAAA,CAAQ,MAAA,GAAS,CAAA,GACtB,CAAA,QAAA,EAAW,QAAQ,MAAM,CAAA,aAAA,EAAgB,MAAA,CAAO,MAAA,GAAS,IAAI,CAAA,EAAA,EAAK,MAAA,CAAO,MAAM,CAAA,QAAA,CAAA,GAAa,EAAE,CAAA,CAAA,GAC9F,uBAAA;AAAA,MACJ,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eAAe,SAAA,EAAqC;AAEhE,IAAA,MAAM,YAAA,GAAe,mBAAA,CAAoB,SAAA,CAAU,EAAE,CAAA;AAErD,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,SAAA,CAAU,EAAE,CAAA,CAAE,CAAA;AAAA,IAC/D;AAEA,IAAA,IAAI,YAAA,CAAa,IAAA,EAAK,KAAM,EAAA,EAAI;AAC9B,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,qCAAA,EAAwC,SAAA,CAAU,EAAE,CAAA,CAAE,CAAA;AAClE,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,kBAAA,CAAmB,YAAY,CAAA;AAEvD,IAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,MAAA,IAAI,SAAA,CAAU,MAAK,EAAG;AACpB,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,CAAK,EAAA,CAAG,OAAA,CAAQ,SAAS,EAAE,GAAA,EAAI;AAAA,QACvC,SAAS,KAAA,EAAO;AAEd,UAAA,MAAM,eAAe,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC1E,UAAA,IAAI,YAAA,CAAa,QAAA,CAAS,gBAAgB,CAAA,IACtC,YAAA,CAAa,QAAA,CAAS,uBAAuB,CAAA,IAC7C,YAAA,CAAa,QAAA,CAAS,0BAA0B,CAAA,EAAG;AACrD,YAAA,OAAA,CAAQ,IAAI,CAAA,uCAAA,EAA0C,SAAA,CAAU,UAAU,CAAA,EAAG,EAAE,CAAC,CAAA,GAAA,CAAK,CAAA;AACrF,YAAA;AAAA,UACF;AACA,UAAA,OAAA,CAAQ,MAAM,CAAA,uCAAA,EAA0C,SAAA,CAAU,UAAU,CAAA,EAAG,GAAG,CAAC,CAAA,GAAA,CAAK,CAAA;AACxF,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,mBAAmB,GAAA,EAAuB;AAChD,IAAA,MAAM,aAAuB,EAAC;AAC9B,IAAA,IAAI,OAAA,GAAU,EAAA;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAE5B,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,MAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAG1B,MAAA,IAAI,QAAQ,UAAA,CAAW,IAAI,CAAA,IAAK,OAAA,CAAQ,WAAW,CAAA,EAAG;AACpD,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,CAAS,gBAAgB,CAAA,EAAG;AACpD,QAAA,SAAA,GAAY,IAAA;AAAA,MACd;AAEA,MAAA,OAAA,IAAW,IAAA,GAAO,IAAA;AAGlB,MAAA,IAAI,SAAA,IAAa,OAAA,CAAQ,WAAA,EAAY,KAAM,MAAA,EAAQ;AACjD,QAAA,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAC9B,QAAA,OAAA,GAAU,EAAA;AACV,QAAA,SAAA,GAAY,KAAA;AAAA,MACd,WAES,CAAC,SAAA,IAAa,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5C,QAAA,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAC9B,QAAA,OAAA,GAAU,EAAA;AAAA,MACZ;AAAA,IACF;AAGA,IAAA,IAAI,OAAA,CAAQ,MAAK,EAAG;AAClB,MAAA,UAAA,CAAW,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,CAAA;AAAA,IAChC;AAEA,IAAA,OAAO,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,SAAS,CAAC,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAAA,GAAgE;AACpE,IAAA,MAAM,SAAmB,EAAC;AAG1B,IAAA,MAAM,cAAA,GAAiB;AAAA,MACrB,OAAA;AAAA,MAAS,SAAA;AAAA,MAAW,aAAA;AAAA,MAAe;AAAA,KACrC;AAEA,IAAA,KAAA,MAAW,SAAS,cAAA,EAAgB;AAClC,MAAA,IAAI;AACF,QAAA,MAAM,KAAK,EAAA,CAAG,OAAA,CAAQ,wBAAwB,KAAK,CAAA,QAAA,CAAU,EAAE,KAAA,EAAM;AAAA,MACvE,SAAS,KAAA,EAAO;AACd,QAAA,MAAA,CAAO,IAAA,CAAK,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAE,CAAA;AAAA,MACvC;AAAA,IACF;AAGA,IAAA,MAAM,gBAAA,GAAmB,MAAM,IAAA,CAAK,iBAAA,CAAkB,eAAe,SAAS,CAAA;AAC9E,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,MAAA,MAAA,CAAO,KAAK,qCAAqC,CAAA;AAAA,IACnD;AAEA,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,OAAO,MAAA,KAAW,CAAA;AAAA,MACzB;AAAA,KACF;AAAA,EACF;AACF","file":"chunk-46DCL763.js","sourcesContent":["/**\n * AUTO-GENERATED FILE - DO NOT EDIT\n * Generated by: scripts/generate-migrations.ts\n * Generated at: 2026-05-16T15:00:21.459Z\n *\n * This file contains all migration SQL bundled for use in Cloudflare Workers\n * where filesystem access is not available at runtime.\n */\n\nexport interface BundledMigration {\n id: string\n name: string\n filename: string\n description: string\n sql: string\n}\n\nexport const bundledMigrations: BundledMigration[] = [\n {\n id: '001',\n name: 'Initial Schema',\n filename: '001_initial_schema.sql',\n description: 'Migration 001: Initial Schema',\n sql: \"-- Initial schema for SonicJS AI\\n-- Create users table for authentication\\nCREATE TABLE IF NOT EXISTS users (\\n id TEXT PRIMARY KEY,\\n email TEXT NOT NULL UNIQUE,\\n username TEXT NOT NULL UNIQUE,\\n first_name TEXT NOT NULL,\\n last_name TEXT NOT NULL,\\n password_hash TEXT,\\n role TEXT NOT NULL DEFAULT 'viewer',\\n avatar TEXT,\\n is_active INTEGER NOT NULL DEFAULT 1,\\n last_login_at INTEGER,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create collections table for content schema definitions\\nCREATE TABLE IF NOT EXISTS collections (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n display_name TEXT NOT NULL,\\n description TEXT,\\n schema TEXT NOT NULL, -- JSON schema definition\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create content table for actual content data\\nCREATE TABLE IF NOT EXISTS content (\\n id TEXT PRIMARY KEY,\\n collection_id TEXT NOT NULL REFERENCES collections(id),\\n slug TEXT NOT NULL,\\n title TEXT NOT NULL,\\n data TEXT NOT NULL, -- JSON content data\\n status TEXT NOT NULL DEFAULT 'draft',\\n published_at INTEGER,\\n author_id TEXT NOT NULL REFERENCES users(id),\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create content_versions table for versioning\\nCREATE TABLE IF NOT EXISTS content_versions (\\n id TEXT PRIMARY KEY,\\n content_id TEXT NOT NULL REFERENCES content(id),\\n version INTEGER NOT NULL,\\n data TEXT NOT NULL, -- JSON data\\n author_id TEXT NOT NULL REFERENCES users(id),\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create media/files table with comprehensive R2 integration\\nCREATE TABLE IF NOT EXISTS media (\\n id TEXT PRIMARY KEY,\\n filename TEXT NOT NULL,\\n original_name TEXT NOT NULL,\\n mime_type TEXT NOT NULL,\\n size INTEGER NOT NULL,\\n width INTEGER,\\n height INTEGER,\\n folder TEXT NOT NULL DEFAULT 'uploads',\\n r2_key TEXT NOT NULL, -- R2 storage key\\n public_url TEXT NOT NULL, -- CDN URL\\n thumbnail_url TEXT, -- Cloudflare Images URL\\n alt TEXT,\\n caption TEXT,\\n tags TEXT, -- JSON array of tags\\n uploaded_by TEXT NOT NULL REFERENCES users(id),\\n uploaded_at INTEGER NOT NULL,\\n updated_at INTEGER,\\n published_at INTEGER,\\n scheduled_at INTEGER,\\n archived_at INTEGER,\\n deleted_at INTEGER\\n);\\n\\n-- Create API tokens table for programmatic access\\nCREATE TABLE IF NOT EXISTS api_tokens (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n token TEXT NOT NULL UNIQUE,\\n user_id TEXT NOT NULL REFERENCES users(id),\\n permissions TEXT NOT NULL, -- JSON array of permissions\\n expires_at INTEGER,\\n last_used_at INTEGER,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create workflow history table for content workflow tracking\\nCREATE TABLE IF NOT EXISTS workflow_history (\\n id TEXT PRIMARY KEY,\\n content_id TEXT NOT NULL REFERENCES content(id),\\n action TEXT NOT NULL,\\n from_status TEXT NOT NULL,\\n to_status TEXT NOT NULL,\\n user_id TEXT NOT NULL REFERENCES users(id),\\n comment TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_users_email ON users(email);\\nCREATE INDEX IF NOT EXISTS idx_users_username ON users(username);\\nCREATE INDEX IF NOT EXISTS idx_users_role ON users(role);\\n\\nCREATE INDEX IF NOT EXISTS idx_collections_name ON collections(name);\\nCREATE INDEX IF NOT EXISTS idx_collections_active ON collections(is_active);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_collection ON content(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_content_author ON content(author_id);\\nCREATE INDEX IF NOT EXISTS idx_content_status ON content(status);\\nCREATE INDEX IF NOT EXISTS idx_content_published ON content(published_at);\\nCREATE INDEX IF NOT EXISTS idx_content_slug ON content(slug);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_versions_content ON content_versions(content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_versions_version ON content_versions(version);\\n\\nCREATE INDEX IF NOT EXISTS idx_media_folder ON media(folder);\\nCREATE INDEX IF NOT EXISTS idx_media_type ON media(mime_type);\\nCREATE INDEX IF NOT EXISTS idx_media_uploaded_by ON media(uploaded_by);\\nCREATE INDEX IF NOT EXISTS idx_media_uploaded_at ON media(uploaded_at);\\nCREATE INDEX IF NOT EXISTS idx_media_deleted ON media(deleted_at);\\n\\nCREATE INDEX IF NOT EXISTS idx_api_tokens_user ON api_tokens(user_id);\\nCREATE INDEX IF NOT EXISTS idx_api_tokens_token ON api_tokens(token);\\n\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_content ON workflow_history(content_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_user ON workflow_history(user_id);\\n\\n-- Note: Admin user is created via the seed script with user-provided credentials\\n-- Run 'npm run seed' after migrations to create the admin user\\n\\n-- Insert sample collections\\nINSERT OR IGNORE INTO collections (\\n id, name, display_name, description, schema, \\n is_active, created_at, updated_at\\n) VALUES (\\n 'blog-posts-collection',\\n 'blog_posts',\\n 'Blog Posts',\\n 'Blog post content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"excerpt\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Excerpt\\\"},\\\"featured_image\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Featured Image\\\",\\\"format\\\":\\\"media\\\"},\\\"tags\\\":{\\\"type\\\":\\\"array\\\",\\\"title\\\":\\\"Tags\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"}},\\\"status\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Status\\\",\\\"enum\\\":[\\\"draft\\\",\\\"published\\\",\\\"archived\\\"],\\\"default\\\":\\\"draft\\\"}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n),\\n(\\n 'pages-collection',\\n 'pages',\\n 'Pages',\\n 'Static page content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"slug\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Slug\\\"},\\\"meta_description\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Meta Description\\\"},\\\"featured_image\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Featured Image\\\",\\\"format\\\":\\\"media\\\"}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n),\\n(\\n 'news-collection',\\n 'news',\\n 'News',\\n 'News article content collection',\\n '{\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"title\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Title\\\",\\\"required\\\":true},\\\"content\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Content\\\",\\\"format\\\":\\\"richtext\\\"},\\\"publish_date\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Publish Date\\\",\\\"format\\\":\\\"date\\\"},\\\"author\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Author\\\"},\\\"category\\\":{\\\"type\\\":\\\"string\\\",\\\"title\\\":\\\"Category\\\",\\\"enum\\\":[\\\"technology\\\",\\\"business\\\",\\\"general\\\"]}},\\\"required\\\":[\\\"title\\\"]}',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n);\\n\\n-- Note: Sample content can be created via the admin interface after the admin user is seeded\"\n },\n {\n id: '002',\n name: 'Faq Plugin',\n filename: '002_faq_plugin.sql',\n description: 'Migration 002: Faq Plugin',\n sql: \"-- FAQ Plugin Migration (DEPRECATED - Now managed by third-party plugin)\\n-- Creates FAQ table for the FAQ plugin\\n-- NOTE: This migration is kept for historical purposes. \\n-- The FAQ functionality is now provided by the faq-plugin third-party plugin.\\n\\nCREATE TABLE IF NOT EXISTS faqs (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n question TEXT NOT NULL,\\n answer TEXT NOT NULL,\\n category TEXT,\\n tags TEXT,\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_faqs_category ON faqs(category);\\nCREATE INDEX IF NOT EXISTS idx_faqs_published ON faqs(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_faqs_sort_order ON faqs(sortOrder);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS faqs_updated_at\\n AFTER UPDATE ON faqs\\nBEGIN\\n UPDATE faqs SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert sample FAQ data\\nINSERT OR IGNORE INTO faqs (question, answer, category, tags, isPublished, sortOrder) VALUES \\n('What is SonicJS AI?', \\n'SonicJS AI is a modern, TypeScript-first headless CMS built for Cloudflare''s edge platform. It provides a complete content management system with admin interface, API endpoints, and plugin architecture.',\\n'general',\\n'sonicjs, cms, cloudflare',\\n1,\\n1),\\n\\n('How do I get started with SonicJS AI?',\\n'To get started: 1) Clone the repository, 2) Install dependencies with npm install, 3) Set up your Cloudflare account and services, 4) Run the development server with npm run dev, 5) Access the admin interface at /admin.',\\n'general',\\n'getting-started, setup',\\n1,\\n2),\\n\\n('What technologies does SonicJS AI use?',\\n'SonicJS AI is built with: TypeScript for type safety, Hono.js as the web framework, Cloudflare D1 for the database, Cloudflare R2 for media storage, Cloudflare Workers for serverless execution, and Tailwind CSS for styling.',\\n'technical',\\n'technology-stack, typescript, cloudflare',\\n1,\\n3),\\n\\n('How do I create content in SonicJS AI?',\\n'Content creation is done through the admin interface. Navigate to /admin, log in with your credentials, go to Content section, select a collection, and click \\\"New Content\\\" to create articles, pages, or other content types.',\\n'general',\\n'content-creation, admin',\\n1,\\n4),\\n\\n('Is SonicJS AI free to use?',\\n'SonicJS AI is open source and free to use. You only pay for the Cloudflare services you consume (D1 database, R2 storage, Workers execution time). Cloudflare offers generous free tiers for development and small projects.',\\n'billing',\\n'pricing, open-source, cloudflare',\\n1,\\n5),\\n\\n('How do I add custom functionality?',\\n'SonicJS AI features a plugin system that allows you to extend functionality. You can create plugins using the PluginBuilder API, add custom routes, models, admin pages, and integrate with external services.',\\n'technical',\\n'plugins, customization, development',\\n1,\\n6),\\n\\n('Can I customize the admin interface?',\\n'Yes! The admin interface is built with TypeScript templates and can be customized. You can modify existing templates, create new components, add custom pages, and integrate your own styling while maintaining the dark theme.',\\n'technical',\\n'admin-interface, customization, templates',\\n1,\\n7),\\n\\n('How does authentication work?',\\n'SonicJS AI includes a built-in authentication system with JWT tokens, role-based access control (admin, editor, viewer), secure password hashing, and session management. Users can be managed through the admin interface.',\\n'technical',\\n'authentication, security, users',\\n1,\\n8);\"\n },\n {\n id: '003',\n name: 'Stage5 Enhancements',\n filename: '003_stage5_enhancements.sql',\n description: 'Migration 003: Stage5 Enhancements',\n sql: \"-- Stage 5: Advanced Content Management enhancements\\n-- Add scheduling and workflow features to content table\\n\\n-- Add content scheduling columns\\nALTER TABLE content ADD COLUMN scheduled_publish_at INTEGER;\\nALTER TABLE content ADD COLUMN scheduled_unpublish_at INTEGER;\\n\\n-- Add workflow and review columns\\nALTER TABLE content ADD COLUMN review_status TEXT DEFAULT 'none'; -- none, pending, approved, rejected\\nALTER TABLE content ADD COLUMN reviewer_id TEXT REFERENCES users(id);\\nALTER TABLE content ADD COLUMN reviewed_at INTEGER;\\nALTER TABLE content ADD COLUMN review_notes TEXT;\\n\\n-- Add content metadata\\nALTER TABLE content ADD COLUMN meta_title TEXT;\\nALTER TABLE content ADD COLUMN meta_description TEXT;\\nALTER TABLE content ADD COLUMN featured_image_id TEXT REFERENCES media(id);\\nALTER TABLE content ADD COLUMN content_type TEXT DEFAULT 'standard'; -- standard, template, component\\n\\n-- Create content_fields table for dynamic field definitions\\nCREATE TABLE IF NOT EXISTS content_fields (\\n id TEXT PRIMARY KEY,\\n collection_id TEXT NOT NULL REFERENCES collections(id),\\n field_name TEXT NOT NULL,\\n field_type TEXT NOT NULL, -- text, richtext, number, boolean, date, select, media, relationship\\n field_label TEXT NOT NULL,\\n field_options TEXT, -- JSON for select options, validation rules, etc.\\n field_order INTEGER NOT NULL DEFAULT 0,\\n is_required INTEGER NOT NULL DEFAULT 0,\\n is_searchable INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(collection_id, field_name)\\n);\\n\\n-- Create content_relationships table for content relationships\\nCREATE TABLE IF NOT EXISTS content_relationships (\\n id TEXT PRIMARY KEY,\\n source_content_id TEXT NOT NULL REFERENCES content(id),\\n target_content_id TEXT NOT NULL REFERENCES content(id),\\n relationship_type TEXT NOT NULL, -- references, tags, categories\\n created_at INTEGER NOT NULL,\\n UNIQUE(source_content_id, target_content_id, relationship_type)\\n);\\n\\n-- Create workflow_templates table for reusable workflows\\nCREATE TABLE IF NOT EXISTS workflow_templates (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n description TEXT,\\n collection_id TEXT REFERENCES collections(id), -- null means applies to all collections\\n workflow_steps TEXT NOT NULL, -- JSON array of workflow steps\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Add indexes for new columns\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_publish ON content(scheduled_publish_at);\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_unpublish ON content(scheduled_unpublish_at);\\nCREATE INDEX IF NOT EXISTS idx_content_review_status ON content(review_status);\\nCREATE INDEX IF NOT EXISTS idx_content_reviewer ON content(reviewer_id);\\nCREATE INDEX IF NOT EXISTS idx_content_content_type ON content(content_type);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_fields_collection ON content_fields(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_name ON content_fields(field_name);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_type ON content_fields(field_type);\\nCREATE INDEX IF NOT EXISTS idx_content_fields_order ON content_fields(field_order);\\n\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_source ON content_relationships(source_content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_target ON content_relationships(target_content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_relationships_type ON content_relationships(relationship_type);\\n\\nCREATE INDEX IF NOT EXISTS idx_workflow_templates_collection ON workflow_templates(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_templates_active ON workflow_templates(is_active);\\n\\n-- Insert default workflow template\\nINSERT OR IGNORE INTO workflow_templates (\\n id, name, description, workflow_steps, is_active, created_at, updated_at\\n) VALUES (\\n 'default-content-workflow',\\n 'Default Content Workflow',\\n 'Standard content workflow: Draft → Review → Published',\\n '[\\n {\\\"step\\\": \\\"draft\\\", \\\"name\\\": \\\"Draft\\\", \\\"description\\\": \\\"Content is being created\\\", \\\"permissions\\\": [\\\"author\\\", \\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"review\\\", \\\"name\\\": \\\"Under Review\\\", \\\"description\\\": \\\"Content is pending review\\\", \\\"permissions\\\": [\\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"published\\\", \\\"name\\\": \\\"Published\\\", \\\"description\\\": \\\"Content is live\\\", \\\"permissions\\\": [\\\"editor\\\", \\\"admin\\\"]},\\n {\\\"step\\\": \\\"archived\\\", \\\"name\\\": \\\"Archived\\\", \\\"description\\\": \\\"Content is archived\\\", \\\"permissions\\\": [\\\"admin\\\"]}\\n ]',\\n 1,\\n strftime('%s', 'now') * 1000,\\n strftime('%s', 'now') * 1000\\n);\\n\\n-- Insert enhanced field definitions for existing collections\\nINSERT OR IGNORE INTO content_fields (\\n id, collection_id, field_name, field_type, field_label, field_options, field_order, is_required, is_searchable, created_at, updated_at\\n) VALUES \\n-- Blog Posts fields\\n('blog-title-field', 'blog-posts-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter blog post title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-content-field', 'blog-posts-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"full\\\", \\\"height\\\": 400}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-excerpt-field', 'blog-posts-collection', 'excerpt', 'text', 'Excerpt', '{\\\"maxLength\\\": 500, \\\"rows\\\": 3, \\\"placeholder\\\": \\\"Brief description of the post\\\"}', 3, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-tags-field', 'blog-posts-collection', 'tags', 'select', 'Tags', '{\\\"multiple\\\": true, \\\"options\\\": [\\\"technology\\\", \\\"business\\\", \\\"tutorial\\\", \\\"news\\\", \\\"update\\\"], \\\"allowCustom\\\": true}', 4, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-featured-image-field', 'blog-posts-collection', 'featured_image', 'media', 'Featured Image', '{\\\"accept\\\": \\\"image/*\\\", \\\"maxSize\\\": \\\"5MB\\\"}', 5, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-publish-date-field', 'blog-posts-collection', 'publish_date', 'date', 'Publish Date', '{\\\"format\\\": \\\"YYYY-MM-DD\\\", \\\"defaultToday\\\": true}', 6, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('blog-featured-field', 'blog-posts-collection', 'is_featured', 'boolean', 'Featured Post', '{\\\"default\\\": false}', 7, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n\\n-- Pages fields\\n('pages-title-field', 'pages-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter page title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-content-field', 'pages-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"full\\\", \\\"height\\\": 500}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-slug-field', 'pages-collection', 'slug', 'text', 'URL Slug', '{\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\"}', 3, 1, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-meta-desc-field', 'pages-collection', 'meta_description', 'text', 'Meta Description', '{\\\"maxLength\\\": 160, \\\"rows\\\": 2, \\\"placeholder\\\": \\\"SEO description for search engines\\\"}', 4, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('pages-template-field', 'pages-collection', 'template', 'select', 'Page Template', '{\\\"options\\\": [\\\"default\\\", \\\"landing\\\", \\\"contact\\\", \\\"about\\\"], \\\"default\\\": \\\"default\\\"}', 5, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n\\n-- News fields\\n('news-title-field', 'news-collection', 'title', 'text', 'Title', '{\\\"maxLength\\\": 200, \\\"placeholder\\\": \\\"Enter news title\\\"}', 1, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-content-field', 'news-collection', 'content', 'richtext', 'Content', '{\\\"toolbar\\\": \\\"news\\\", \\\"height\\\": 400}', 2, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-category-field', 'news-collection', 'category', 'select', 'Category', '{\\\"options\\\": [\\\"technology\\\", \\\"business\\\", \\\"politics\\\", \\\"sports\\\", \\\"entertainment\\\", \\\"health\\\"], \\\"required\\\": true}', 3, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-author-field', 'news-collection', 'author', 'text', 'Author', '{\\\"placeholder\\\": \\\"Author name\\\"}', 4, 1, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-source-field', 'news-collection', 'source', 'text', 'Source', '{\\\"placeholder\\\": \\\"News source\\\"}', 5, 0, 1, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000),\\n('news-priority-field', 'news-collection', 'priority', 'select', 'Priority', '{\\\"options\\\": [\\\"low\\\", \\\"normal\\\", \\\"high\\\", \\\"breaking\\\"], \\\"default\\\": \\\"normal\\\"}', 6, 0, 0, strftime('%s', 'now') * 1000, strftime('%s', 'now') * 1000);\"\n },\n {\n id: '004',\n name: 'Stage6 User Management',\n filename: '004_stage6_user_management.sql',\n description: 'Migration 004: Stage6 User Management',\n sql: \"-- Stage 6: User Management & Permissions enhancements\\n-- Enhanced user system with profiles, teams, permissions, and activity logging\\n\\n-- Add user profile and preferences columns\\nALTER TABLE users ADD COLUMN phone TEXT;\\nALTER TABLE users ADD COLUMN bio TEXT;\\nALTER TABLE users ADD COLUMN avatar_url TEXT;\\nALTER TABLE users ADD COLUMN timezone TEXT DEFAULT 'UTC';\\nALTER TABLE users ADD COLUMN language TEXT DEFAULT 'en';\\nALTER TABLE users ADD COLUMN email_notifications INTEGER DEFAULT 1;\\nALTER TABLE users ADD COLUMN theme TEXT DEFAULT 'dark';\\nALTER TABLE users ADD COLUMN two_factor_enabled INTEGER DEFAULT 0;\\nALTER TABLE users ADD COLUMN two_factor_secret TEXT;\\nALTER TABLE users ADD COLUMN password_reset_token TEXT;\\nALTER TABLE users ADD COLUMN password_reset_expires INTEGER;\\nALTER TABLE users ADD COLUMN email_verified INTEGER DEFAULT 0;\\nALTER TABLE users ADD COLUMN email_verification_token TEXT;\\nALTER TABLE users ADD COLUMN invitation_token TEXT;\\nALTER TABLE users ADD COLUMN invited_by TEXT REFERENCES users(id);\\nALTER TABLE users ADD COLUMN invited_at INTEGER;\\nALTER TABLE users ADD COLUMN accepted_invitation_at INTEGER;\\n\\n-- Create teams table for team-based collaboration\\nCREATE TABLE IF NOT EXISTS teams (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL,\\n description TEXT,\\n slug TEXT NOT NULL UNIQUE,\\n owner_id TEXT NOT NULL REFERENCES users(id),\\n settings TEXT, -- JSON for team settings\\n is_active INTEGER NOT NULL DEFAULT 1,\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Create team memberships table\\nCREATE TABLE IF NOT EXISTS team_memberships (\\n id TEXT PRIMARY KEY,\\n team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n role TEXT NOT NULL DEFAULT 'member', -- owner, admin, editor, member, viewer\\n permissions TEXT, -- JSON for specific permissions\\n joined_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(team_id, user_id)\\n);\\n\\n-- Create permissions table for granular access control\\nCREATE TABLE IF NOT EXISTS permissions (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n description TEXT,\\n category TEXT NOT NULL, -- content, users, collections, media, settings\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create role permissions mapping\\nCREATE TABLE IF NOT EXISTS role_permissions (\\n id TEXT PRIMARY KEY,\\n role TEXT NOT NULL,\\n permission_id TEXT NOT NULL REFERENCES permissions(id),\\n created_at INTEGER NOT NULL,\\n UNIQUE(role, permission_id)\\n);\\n\\n-- Create user sessions table for better session management\\nCREATE TABLE IF NOT EXISTS user_sessions (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n token_hash TEXT NOT NULL,\\n ip_address TEXT,\\n user_agent TEXT,\\n is_active INTEGER NOT NULL DEFAULT 1,\\n expires_at INTEGER NOT NULL,\\n created_at INTEGER NOT NULL,\\n last_used_at INTEGER\\n);\\n\\n-- Create activity log table for audit trails\\nCREATE TABLE IF NOT EXISTS activity_logs (\\n id TEXT PRIMARY KEY,\\n user_id TEXT REFERENCES users(id),\\n action TEXT NOT NULL,\\n resource_type TEXT, -- users, content, collections, media, etc.\\n resource_id TEXT,\\n details TEXT, -- JSON with additional details\\n ip_address TEXT,\\n user_agent TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create password history table for security\\nCREATE TABLE IF NOT EXISTS password_history (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,\\n password_hash TEXT NOT NULL,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Insert default permissions\\nINSERT OR IGNORE INTO permissions (id, name, description, category, created_at) VALUES\\n ('perm_content_create', 'content.create', 'Create new content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_read', 'content.read', 'View content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_update', 'content.update', 'Edit existing content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_delete', 'content.delete', 'Delete content', 'content', strftime('%s', 'now') * 1000),\\n ('perm_content_publish', 'content.publish', 'Publish/unpublish content', 'content', strftime('%s', 'now') * 1000),\\n \\n ('perm_collections_create', 'collections.create', 'Create new collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_read', 'collections.read', 'View collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_update', 'collections.update', 'Edit collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_delete', 'collections.delete', 'Delete collections', 'collections', strftime('%s', 'now') * 1000),\\n ('perm_collections_fields', 'collections.fields', 'Manage collection fields', 'collections', strftime('%s', 'now') * 1000),\\n \\n ('perm_media_upload', 'media.upload', 'Upload media files', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_read', 'media.read', 'View media files', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_update', 'media.update', 'Edit media metadata', 'media', strftime('%s', 'now') * 1000),\\n ('perm_media_delete', 'media.delete', 'Delete media files', 'media', strftime('%s', 'now') * 1000),\\n \\n ('perm_users_create', 'users.create', 'Invite new users', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_read', 'users.read', 'View user profiles', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_update', 'users.update', 'Edit user profiles', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_delete', 'users.delete', 'Deactivate users', 'users', strftime('%s', 'now') * 1000),\\n ('perm_users_roles', 'users.roles', 'Manage user roles', 'users', strftime('%s', 'now') * 1000),\\n \\n ('perm_settings_read', 'settings.read', 'View system settings', 'settings', strftime('%s', 'now') * 1000),\\n ('perm_settings_update', 'settings.update', 'Modify system settings', 'settings', strftime('%s', 'now') * 1000),\\n ('perm_activity_read', 'activity.read', 'View activity logs', 'settings', strftime('%s', 'now') * 1000);\\n\\n-- Assign permissions to default roles\\nINSERT OR IGNORE INTO role_permissions (id, role, permission_id, created_at) VALUES\\n -- Admin has all permissions\\n ('rp_admin_content_create', 'admin', 'perm_content_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_read', 'admin', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_update', 'admin', 'perm_content_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_delete', 'admin', 'perm_content_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_content_publish', 'admin', 'perm_content_publish', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_create', 'admin', 'perm_collections_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_read', 'admin', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_update', 'admin', 'perm_collections_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_delete', 'admin', 'perm_collections_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_collections_fields', 'admin', 'perm_collections_fields', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_upload', 'admin', 'perm_media_upload', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_read', 'admin', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_update', 'admin', 'perm_media_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_media_delete', 'admin', 'perm_media_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_create', 'admin', 'perm_users_create', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_read', 'admin', 'perm_users_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_update', 'admin', 'perm_users_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_delete', 'admin', 'perm_users_delete', strftime('%s', 'now') * 1000),\\n ('rp_admin_users_roles', 'admin', 'perm_users_roles', strftime('%s', 'now') * 1000),\\n ('rp_admin_settings_read', 'admin', 'perm_settings_read', strftime('%s', 'now') * 1000),\\n ('rp_admin_settings_update', 'admin', 'perm_settings_update', strftime('%s', 'now') * 1000),\\n ('rp_admin_activity_read', 'admin', 'perm_activity_read', strftime('%s', 'now') * 1000),\\n \\n -- Editor permissions\\n ('rp_editor_content_create', 'editor', 'perm_content_create', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_read', 'editor', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_update', 'editor', 'perm_content_update', strftime('%s', 'now') * 1000),\\n ('rp_editor_content_publish', 'editor', 'perm_content_publish', strftime('%s', 'now') * 1000),\\n ('rp_editor_collections_read', 'editor', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_upload', 'editor', 'perm_media_upload', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_read', 'editor', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_editor_media_update', 'editor', 'perm_media_update', strftime('%s', 'now') * 1000),\\n ('rp_editor_users_read', 'editor', 'perm_users_read', strftime('%s', 'now') * 1000),\\n \\n -- Viewer permissions\\n ('rp_viewer_content_read', 'viewer', 'perm_content_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_collections_read', 'viewer', 'perm_collections_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_media_read', 'viewer', 'perm_media_read', strftime('%s', 'now') * 1000),\\n ('rp_viewer_users_read', 'viewer', 'perm_users_read', strftime('%s', 'now') * 1000);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_team_memberships_team_id ON team_memberships(team_id);\\nCREATE INDEX IF NOT EXISTS idx_team_memberships_user_id ON team_memberships(user_id);\\nCREATE INDEX IF NOT EXISTS idx_user_sessions_user_id ON user_sessions(user_id);\\nCREATE INDEX IF NOT EXISTS idx_user_sessions_token_hash ON user_sessions(token_hash);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_user_id ON activity_logs(user_id);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_created_at ON activity_logs(created_at);\\nCREATE INDEX IF NOT EXISTS idx_activity_logs_resource ON activity_logs(resource_type, resource_id);\\nCREATE INDEX IF NOT EXISTS idx_password_history_user_id ON password_history(user_id);\\nCREATE INDEX IF NOT EXISTS idx_users_email_verification_token ON users(email_verification_token);\\nCREATE INDEX IF NOT EXISTS idx_users_password_reset_token ON users(password_reset_token);\\nCREATE INDEX IF NOT EXISTS idx_users_invitation_token ON users(invitation_token);\"\n },\n {\n id: '005',\n name: 'Stage7 Workflow Automation',\n filename: '005_stage7_workflow_automation.sql',\n description: 'Migration 005: Stage7 Workflow Automation',\n sql: \"-- Stage 7: Workflow & Automation Migration\\n-- This migration adds workflow and automation capabilities to SonicJS\\n\\n-- Workflow States Table\\nCREATE TABLE IF NOT EXISTS workflow_states (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n color TEXT DEFAULT '#6B7280',\\n is_initial INTEGER DEFAULT 0,\\n is_final INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Insert default workflow states\\nINSERT OR IGNORE INTO workflow_states (id, name, description, color, is_initial, is_final) VALUES\\n('draft', 'Draft', 'Content is being worked on', '#F59E0B', 1, 0),\\n('pending-review', 'Pending Review', 'Content is waiting for review', '#3B82F6', 0, 0),\\n('approved', 'Approved', 'Content has been approved', '#10B981', 0, 0),\\n('published', 'Published', 'Content is live', '#059669', 0, 1),\\n('rejected', 'Rejected', 'Content was rejected', '#EF4444', 0, 1),\\n('archived', 'Archived', 'Content has been archived', '#6B7280', 0, 1);\\n\\n-- Workflows Table\\nCREATE TABLE IF NOT EXISTS workflows (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n collection_id TEXT,\\n is_active INTEGER DEFAULT 1,\\n auto_publish INTEGER DEFAULT 0,\\n require_approval INTEGER DEFAULT 1,\\n approval_levels INTEGER DEFAULT 1,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (collection_id) REFERENCES collections(id) ON DELETE CASCADE\\n);\\n\\n-- Workflow Transitions Table\\nCREATE TABLE IF NOT EXISTS workflow_transitions (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n workflow_id TEXT NOT NULL,\\n from_state_id TEXT NOT NULL,\\n to_state_id TEXT NOT NULL,\\n required_permission TEXT,\\n auto_transition INTEGER DEFAULT 0,\\n transition_conditions TEXT, -- JSON\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id) ON DELETE CASCADE,\\n FOREIGN KEY (from_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (to_state_id) REFERENCES workflow_states(id)\\n);\\n\\n-- Content Workflow Status Table\\nCREATE TABLE IF NOT EXISTS content_workflow_status (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n workflow_id TEXT NOT NULL,\\n current_state_id TEXT NOT NULL,\\n assigned_to TEXT,\\n due_date DATETIME,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id),\\n FOREIGN KEY (current_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (assigned_to) REFERENCES users(id),\\n UNIQUE(content_id, workflow_id)\\n);\\n\\n-- Workflow History Table\\nCREATE TABLE IF NOT EXISTS workflow_history (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n workflow_id TEXT NOT NULL,\\n from_state_id TEXT,\\n to_state_id TEXT NOT NULL,\\n user_id TEXT NOT NULL,\\n comment TEXT,\\n metadata TEXT, -- JSON\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (workflow_id) REFERENCES workflows(id),\\n FOREIGN KEY (from_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (to_state_id) REFERENCES workflow_states(id),\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Scheduled Content Table\\nCREATE TABLE IF NOT EXISTS scheduled_content (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n action TEXT NOT NULL, -- 'publish', 'unpublish', 'archive'\\n scheduled_at DATETIME NOT NULL,\\n timezone TEXT DEFAULT 'UTC',\\n user_id TEXT NOT NULL,\\n status TEXT DEFAULT 'pending', -- 'pending', 'completed', 'failed', 'cancelled'\\n executed_at DATETIME,\\n error_message TEXT,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Notifications Table\\nCREATE TABLE IF NOT EXISTS notifications (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n user_id TEXT NOT NULL,\\n type TEXT NOT NULL, -- 'workflow', 'schedule', 'system'\\n title TEXT NOT NULL,\\n message TEXT NOT NULL,\\n data TEXT, -- JSON\\n is_read INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE\\n);\\n\\n-- Notification Preferences Table\\nCREATE TABLE IF NOT EXISTS notification_preferences (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n user_id TEXT NOT NULL,\\n notification_type TEXT NOT NULL,\\n email_enabled INTEGER DEFAULT 1,\\n in_app_enabled INTEGER DEFAULT 1,\\n digest_frequency TEXT DEFAULT 'daily', -- 'immediate', 'hourly', 'daily', 'weekly'\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,\\n UNIQUE(user_id, notification_type)\\n);\\n\\n-- Webhooks Table\\nCREATE TABLE IF NOT EXISTS webhooks (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n url TEXT NOT NULL,\\n secret TEXT,\\n events TEXT NOT NULL, -- JSON array of event types\\n is_active INTEGER DEFAULT 1,\\n retry_count INTEGER DEFAULT 3,\\n timeout_seconds INTEGER DEFAULT 30,\\n last_success_at DATETIME,\\n last_failure_at DATETIME,\\n failure_count INTEGER DEFAULT 0,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Webhook Deliveries Table\\nCREATE TABLE IF NOT EXISTS webhook_deliveries (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n webhook_id TEXT NOT NULL,\\n event_type TEXT NOT NULL,\\n payload TEXT NOT NULL, -- JSON\\n response_status INTEGER,\\n response_body TEXT,\\n attempt_count INTEGER DEFAULT 1,\\n delivered_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (webhook_id) REFERENCES webhooks(id) ON DELETE CASCADE\\n);\\n\\n-- Content Versions Table (for rollback functionality)\\nCREATE TABLE IF NOT EXISTS content_versions (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT NOT NULL,\\n version_number INTEGER NOT NULL,\\n title TEXT NOT NULL,\\n content TEXT NOT NULL,\\n fields TEXT, -- JSON\\n user_id TEXT NOT NULL,\\n change_summary TEXT,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id),\\n UNIQUE(content_id, version_number)\\n);\\n\\n-- Automation Rules Table\\nCREATE TABLE IF NOT EXISTS automation_rules (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n name TEXT NOT NULL,\\n description TEXT,\\n trigger_type TEXT NOT NULL, -- 'content_created', 'content_updated', 'workflow_transition', 'schedule'\\n trigger_conditions TEXT, -- JSON\\n action_type TEXT NOT NULL, -- 'workflow_transition', 'send_notification', 'webhook_call', 'auto_save'\\n action_config TEXT, -- JSON\\n is_active INTEGER DEFAULT 1,\\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\\n);\\n\\n-- Auto-save Drafts Table\\nCREATE TABLE IF NOT EXISTS auto_save_drafts (\\n id TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16)))),\\n content_id TEXT,\\n user_id TEXT NOT NULL,\\n title TEXT,\\n content TEXT,\\n fields TEXT, -- JSON\\n last_saved_at DATETIME DEFAULT CURRENT_TIMESTAMP,\\n FOREIGN KEY (content_id) REFERENCES content(id) ON DELETE CASCADE,\\n FOREIGN KEY (user_id) REFERENCES users(id),\\n UNIQUE(content_id, user_id)\\n);\\n\\n-- Add workflow-related columns to existing content table (skip existing columns)\\nALTER TABLE content ADD COLUMN workflow_state_id TEXT DEFAULT 'draft';\\nALTER TABLE content ADD COLUMN embargo_until DATETIME;\\nALTER TABLE content ADD COLUMN expires_at DATETIME;\\nALTER TABLE content ADD COLUMN version_number INTEGER DEFAULT 1;\\nALTER TABLE content ADD COLUMN is_auto_saved INTEGER DEFAULT 0;\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_status_content_id ON content_workflow_status(content_id);\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_status_workflow_id ON content_workflow_status(workflow_id);\\nCREATE INDEX IF NOT EXISTS idx_workflow_history_content_id ON workflow_history(content_id);\\nCREATE INDEX IF NOT EXISTS idx_scheduled_content_scheduled_at ON scheduled_content(scheduled_at);\\nCREATE INDEX IF NOT EXISTS idx_scheduled_content_status ON scheduled_content(status);\\nCREATE INDEX IF NOT EXISTS idx_notifications_user_id ON notifications(user_id);\\nCREATE INDEX IF NOT EXISTS idx_notifications_is_read ON notifications(is_read);\\nCREATE INDEX IF NOT EXISTS idx_content_versions_content_id ON content_versions(content_id);\\nCREATE INDEX IF NOT EXISTS idx_auto_save_drafts_user_id ON auto_save_drafts(user_id);\\nCREATE INDEX IF NOT EXISTS idx_content_workflow_state ON content(workflow_state_id);\\nCREATE INDEX IF NOT EXISTS idx_content_scheduled_publish ON content(scheduled_publish_at);\\n\\n-- Insert default workflow for collections\\nINSERT OR IGNORE INTO workflows (id, name, description, collection_id, is_active, require_approval, approval_levels) \\nSELECT \\n 'default-' || id,\\n 'Default Workflow for ' || name,\\n 'Standard content approval workflow',\\n id,\\n 1,\\n 1,\\n 1\\nFROM collections;\\n\\n-- Insert default workflow transitions\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'draft',\\n 'pending-review',\\n 'content:submit'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'pending-review',\\n 'approved',\\n 'content:approve'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'approved',\\n 'published',\\n 'content:publish'\\nFROM workflows w;\\n\\nINSERT OR IGNORE INTO workflow_transitions (workflow_id, from_state_id, to_state_id, required_permission) \\nSELECT \\n w.id,\\n 'pending-review',\\n 'rejected',\\n 'content:approve'\\nFROM workflows w;\\n\\n-- Insert default notification preferences for all users\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'workflow_assigned',\\n 1,\\n 1\\nFROM users;\\n\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'workflow_status_change',\\n 1,\\n 1\\nFROM users;\\n\\nINSERT OR IGNORE INTO notification_preferences (user_id, notification_type, email_enabled, in_app_enabled)\\nSELECT \\n id,\\n 'content_scheduled',\\n 1,\\n 1\\nFROM users;\"\n },\n {\n id: '006',\n name: 'Plugin System',\n filename: '006_plugin_system.sql',\n description: 'Migration 006: Plugin System',\n sql: \"-- Plugin System Tables\\n-- Migration: 006_plugin_system\\n-- Description: Add plugin management system tables\\n\\n-- Plugins table\\nCREATE TABLE IF NOT EXISTS plugins (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE,\\n display_name TEXT NOT NULL,\\n description TEXT,\\n version TEXT NOT NULL,\\n author TEXT NOT NULL,\\n category TEXT NOT NULL,\\n icon TEXT,\\n status TEXT DEFAULT 'inactive' CHECK (status IN ('active', 'inactive', 'error')),\\n is_core BOOLEAN DEFAULT FALSE,\\n settings JSON,\\n permissions JSON,\\n dependencies JSON,\\n download_count INTEGER DEFAULT 0,\\n rating REAL DEFAULT 0,\\n installed_at INTEGER NOT NULL,\\n activated_at INTEGER,\\n last_updated INTEGER NOT NULL,\\n error_message TEXT,\\n created_at INTEGER DEFAULT (unixepoch()),\\n updated_at INTEGER DEFAULT (unixepoch())\\n);\\n\\n-- Plugin hooks table (registered hooks by plugins)\\nCREATE TABLE IF NOT EXISTS plugin_hooks (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n hook_name TEXT NOT NULL,\\n handler_name TEXT NOT NULL,\\n priority INTEGER DEFAULT 10,\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE,\\n UNIQUE(plugin_id, hook_name, handler_name)\\n);\\n\\n-- Plugin routes table\\nCREATE TABLE IF NOT EXISTS plugin_routes (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n path TEXT NOT NULL,\\n method TEXT NOT NULL,\\n handler_name TEXT NOT NULL,\\n middleware JSON,\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE,\\n UNIQUE(plugin_id, path, method)\\n);\\n\\n-- Plugin assets table (CSS, JS files provided by plugins)\\nCREATE TABLE IF NOT EXISTS plugin_assets (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n asset_type TEXT NOT NULL CHECK (asset_type IN ('css', 'js', 'image', 'font')),\\n asset_path TEXT NOT NULL,\\n load_order INTEGER DEFAULT 100,\\n load_location TEXT DEFAULT 'footer' CHECK (load_location IN ('header', 'footer')),\\n is_active BOOLEAN DEFAULT TRUE,\\n created_at INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE\\n);\\n\\n-- Plugin activity log\\nCREATE TABLE IF NOT EXISTS plugin_activity_log (\\n id TEXT PRIMARY KEY,\\n plugin_id TEXT NOT NULL,\\n action TEXT NOT NULL,\\n user_id TEXT,\\n details JSON,\\n timestamp INTEGER DEFAULT (unixepoch()),\\n FOREIGN KEY (plugin_id) REFERENCES plugins(id) ON DELETE CASCADE\\n);\\n\\n-- Create indexes\\nCREATE INDEX IF NOT EXISTS idx_plugins_status ON plugins(status);\\nCREATE INDEX IF NOT EXISTS idx_plugins_category ON plugins(category);\\nCREATE INDEX IF NOT EXISTS idx_plugin_hooks_plugin ON plugin_hooks(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_routes_plugin ON plugin_routes(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_assets_plugin ON plugin_assets(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_activity_plugin ON plugin_activity_log(plugin_id);\\nCREATE INDEX IF NOT EXISTS idx_plugin_activity_timestamp ON plugin_activity_log(timestamp);\\n\\n-- Insert core plugins\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES \\n(\\n 'core-auth',\\n 'core-auth',\\n 'Authentication System',\\n 'Core authentication and user management system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'security',\\n '🔐',\\n 'active',\\n TRUE,\\n '[\\\"manage:users\\\", \\\"manage:roles\\\", \\\"manage:permissions\\\"]',\\n unixepoch(),\\n unixepoch()\\n),\\n(\\n 'core-media',\\n 'core-media', \\n 'Media Manager',\\n 'Core media upload and management system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'media',\\n '📸',\\n 'active',\\n TRUE,\\n '[\\\"manage:media\\\", \\\"upload:files\\\"]',\\n unixepoch(),\\n unixepoch()\\n),\\n(\\n 'core-workflow',\\n 'core-workflow',\\n 'Workflow Engine',\\n 'Content workflow and approval system',\\n '1.0.0',\\n 'SonicJS Team',\\n 'content',\\n '🔄',\\n 'active',\\n TRUE,\\n '[\\\"manage:workflows\\\", \\\"approve:content\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- FAQ Plugin will be added as a third-party plugin through the admin interface\\n\\n-- Add plugin management permission\\nINSERT OR IGNORE INTO permissions (id, name, description, category, created_at)\\nVALUES (\\n 'manage:plugins',\\n 'Manage Plugins',\\n 'Install, uninstall, activate, and configure plugins',\\n 'system',\\n unixepoch()\\n);\\n\\n-- Grant plugin management permission to admin role\\nINSERT OR IGNORE INTO role_permissions (id, role, permission_id, created_at)\\nVALUES ('role-perm-manage-plugins', 'admin', 'manage:plugins', unixepoch());\"\n },\n {\n id: '007',\n name: 'Demo Login Plugin',\n filename: '007_demo_login_plugin.sql',\n description: 'Migration 007: Demo Login Plugin',\n sql: \"-- Demo Login Plugin Migration\\n-- Migration: 007_demo_login_plugin\\n-- Description: Add demo login prefill plugin to the plugin registry\\n\\n-- Insert demo login plugin\\nINSERT INTO plugins (\\n id, name, display_name, description, version, author, category, icon, \\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'demo-login-prefill',\\n 'demo-login-plugin',\\n 'Demo Login Prefill',\\n 'Prefills login form with demo credentials (admin@sonicjs.com/sonicjs!) for easy site demonstration',\\n '1.0.0',\\n 'SonicJS',\\n 'demo',\\n '🎯',\\n 'inactive',\\n TRUE,\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\"\n },\n {\n id: '008',\n name: 'Fix Slug Validation',\n filename: '008_fix_slug_validation.sql',\n description: 'Migration 008: Fix Slug Validation',\n sql: \"-- Migration: Fix overly restrictive slug validation patterns\\n-- This migration relaxes the slug field validation to be more user-friendly\\n\\n-- Update the pages collection slug field to allow underscores and be less restrictive\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'pages-collection';\\n\\n-- Update blog posts slug field if it exists\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'blog-posts-collection';\\n\\n-- Update news slug field if it exists\\nUPDATE content_fields \\nSET field_options = '{\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\", \\\"placeholder\\\": \\\"url-friendly-slug\\\", \\\"help\\\": \\\"Use letters, numbers, underscores, and hyphens only\\\"}'\\nWHERE field_name = 'slug' AND collection_id = 'news-collection';\\n\\n-- Update any other slug fields with the restrictive pattern\\nUPDATE content_fields \\nSET field_options = REPLACE(field_options, '\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\"', '\\\"pattern\\\": \\\"^[a-zA-Z0-9_-]+$\\\"')\\nWHERE field_options LIKE '%\\\"pattern\\\": \\\"^[a-z0-9-]+$\\\"%';\"\n },\n {\n id: '009',\n name: 'System Logging',\n filename: '009_system_logging.sql',\n description: 'Migration 009: System Logging',\n sql: \"-- System Logging Tables\\n-- Migration: 009_system_logging\\n-- Description: Add system logging and configuration tables\\n\\n-- System logs table for tracking application events\\nCREATE TABLE IF NOT EXISTS system_logs (\\n id TEXT PRIMARY KEY,\\n level TEXT NOT NULL CHECK (level IN ('debug', 'info', 'warn', 'error', 'fatal')),\\n category TEXT NOT NULL CHECK (category IN ('auth', 'api', 'workflow', 'plugin', 'media', 'system', 'security', 'error')),\\n message TEXT NOT NULL,\\n data TEXT, -- JSON data\\n user_id TEXT,\\n session_id TEXT,\\n request_id TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n method TEXT,\\n url TEXT,\\n status_code INTEGER,\\n duration INTEGER, -- milliseconds\\n stack_trace TEXT,\\n tags TEXT, -- JSON array\\n source TEXT, -- source of the log entry\\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\\n FOREIGN KEY (user_id) REFERENCES users(id)\\n);\\n\\n-- Log configuration table for managing log settings per category\\nCREATE TABLE IF NOT EXISTS log_config (\\n id TEXT PRIMARY KEY,\\n category TEXT NOT NULL UNIQUE CHECK (category IN ('auth', 'api', 'workflow', 'plugin', 'media', 'system', 'security', 'error')),\\n enabled BOOLEAN NOT NULL DEFAULT TRUE,\\n level TEXT NOT NULL DEFAULT 'info' CHECK (level IN ('debug', 'info', 'warn', 'error', 'fatal')),\\n retention_days INTEGER NOT NULL DEFAULT 30,\\n max_size_mb INTEGER NOT NULL DEFAULT 100,\\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\\n updated_at INTEGER NOT NULL DEFAULT (unixepoch())\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_system_logs_level ON system_logs(level);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_category ON system_logs(category);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_created_at ON system_logs(created_at);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_user_id ON system_logs(user_id);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_status_code ON system_logs(status_code);\\nCREATE INDEX IF NOT EXISTS idx_system_logs_source ON system_logs(source);\\n\\n-- Insert default log configurations\\nINSERT OR IGNORE INTO log_config (id, category, enabled, level, retention_days, max_size_mb) VALUES\\n('log-config-auth', 'auth', TRUE, 'info', 90, 50),\\n('log-config-api', 'api', TRUE, 'info', 30, 100),\\n('log-config-workflow', 'workflow', TRUE, 'info', 60, 50),\\n('log-config-plugin', 'plugin', TRUE, 'warn', 30, 25),\\n('log-config-media', 'media', TRUE, 'info', 30, 50),\\n('log-config-system', 'system', TRUE, 'info', 90, 100),\\n('log-config-security', 'security', TRUE, 'warn', 180, 100),\\n('log-config-error', 'error', TRUE, 'error', 90, 200);\"\n },\n {\n id: '011',\n name: 'Config Managed Collections',\n filename: '011_config_managed_collections.sql',\n description: 'Migration 011: Config Managed Collections',\n sql: \"-- Migration: Add Config-Managed Collections Support\\n-- Description: Add 'managed' column to collections table to support config-based collection definitions\\n-- Created: 2025-10-03\\n\\n-- Add 'managed' column to collections table\\n-- This column indicates whether a collection is managed by configuration files (true) or user-created (false)\\n-- Managed collections cannot be edited through the admin UI\\n-- Use a safe approach to add the column only if it doesn't exist\\nALTER TABLE collections ADD COLUMN managed INTEGER DEFAULT 0 NOT NULL;\\n\\n-- Create an index on the managed column for faster queries\\nCREATE INDEX IF NOT EXISTS idx_collections_managed ON collections(managed);\\n\\n-- Create an index on managed + is_active for efficient filtering\\nCREATE INDEX IF NOT EXISTS idx_collections_managed_active ON collections(managed, is_active);\\n\"\n },\n {\n id: '012',\n name: 'Testimonials Plugin',\n filename: '012_testimonials_plugin.sql',\n description: 'Migration 012: Testimonials Plugin',\n sql: \"-- Testimonials Plugin Migration\\n-- Creates testimonials table for the testimonials plugin\\n-- This demonstrates a code-based collection defined in src/plugins/core-plugins/testimonials-plugin.ts\\n\\nCREATE TABLE IF NOT EXISTS testimonials (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n author_name TEXT NOT NULL,\\n author_title TEXT,\\n author_company TEXT,\\n testimonial_text TEXT NOT NULL,\\n rating INTEGER CHECK(rating >= 1 AND rating <= 5),\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_testimonials_published ON testimonials(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_testimonials_sort_order ON testimonials(sortOrder);\\nCREATE INDEX IF NOT EXISTS idx_testimonials_rating ON testimonials(rating);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS testimonials_updated_at\\n AFTER UPDATE ON testimonials\\nBEGIN\\n UPDATE testimonials SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert plugin record\\nINSERT OR IGNORE INTO plugins (name, display_name, description, version, status, category, settings) VALUES\\n('testimonials',\\n 'Customer Testimonials',\\n 'Manage customer testimonials and reviews with rating support. This is a code-based collection example.',\\n '1.0.0',\\n 'active',\\n 'content',\\n '{\\\"defaultPublished\\\": true, \\\"requireRating\\\": false}');\\n\\n-- Insert sample testimonial data\\nINSERT OR IGNORE INTO testimonials (author_name, author_title, author_company, testimonial_text, rating, isPublished, sortOrder) VALUES\\n('Jane Smith',\\n 'CTO',\\n 'TechStartup Inc',\\n 'SonicJS AI has transformed how we manage our content. The plugin architecture is brilliant and the edge deployment is blazing fast.',\\n 5,\\n 1,\\n 1),\\n\\n('Michael Chen',\\n 'Lead Developer',\\n 'Digital Agency Co',\\n 'We migrated from WordPress to SonicJS AI and couldn''t be happier. The TypeScript-first approach and modern tooling make development a joy.',\\n 5,\\n 1,\\n 2),\\n\\n('Sarah Johnson',\\n 'Product Manager',\\n 'E-commerce Solutions',\\n 'The headless CMS approach combined with Cloudflare Workers gives us unmatched performance. Our content is served globally with minimal latency.',\\n 4,\\n 1,\\n 3),\\n\\n('David Rodriguez',\\n 'Full Stack Developer',\\n 'Creative Studio',\\n 'Great CMS for modern web applications. The admin interface is clean and the API is well-designed. Plugin system is very flexible.',\\n 5,\\n 1,\\n 4),\\n\\n('Emily Watson',\\n 'Technical Director',\\n 'Media Company',\\n 'SonicJS AI solved our content distribution challenges. The R2 integration for media storage works flawlessly and scales effortlessly.',\\n 4,\\n 1,\\n 5);\\n\"\n },\n {\n id: '013',\n name: 'Code Examples Plugin',\n filename: '013_code_examples_plugin.sql',\n description: 'Migration 013: Code Examples Plugin',\n sql: \"-- Code Examples Plugin Migration\\n-- Creates code_examples table for the code examples plugin\\n-- This demonstrates a code-based collection for storing and managing code snippets\\n\\nCREATE TABLE IF NOT EXISTS code_examples (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n title TEXT NOT NULL,\\n description TEXT,\\n code TEXT NOT NULL,\\n language TEXT NOT NULL,\\n category TEXT,\\n tags TEXT,\\n isPublished INTEGER NOT NULL DEFAULT 1,\\n sortOrder INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))\\n);\\n\\n-- Create indexes for better performance\\nCREATE INDEX IF NOT EXISTS idx_code_examples_published ON code_examples(isPublished);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_sort_order ON code_examples(sortOrder);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_language ON code_examples(language);\\nCREATE INDEX IF NOT EXISTS idx_code_examples_category ON code_examples(category);\\n\\n-- Create trigger to update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS code_examples_updated_at\\n AFTER UPDATE ON code_examples\\nBEGIN\\n UPDATE code_examples SET updated_at = strftime('%s', 'now') WHERE id = NEW.id;\\nEND;\\n\\n-- Insert plugin record\\nINSERT OR IGNORE INTO plugins (name, display_name, description, version, status, category, settings) VALUES\\n('code-examples',\\n 'Code Examples',\\n 'Manage code snippets and examples with syntax highlighting support. Perfect for documentation and tutorials.',\\n '1.0.0',\\n 'active',\\n 'content',\\n '{\\\"defaultPublished\\\": true, \\\"supportedLanguages\\\": [\\\"javascript\\\", \\\"typescript\\\", \\\"python\\\", \\\"go\\\", \\\"rust\\\", \\\"java\\\", \\\"php\\\", \\\"ruby\\\", \\\"sql\\\"]}');\\n\\n-- Insert sample code examples\\nINSERT OR IGNORE INTO code_examples (title, description, code, language, category, tags, isPublished, sortOrder) VALUES\\n('React useState Hook',\\n 'Basic example of using the useState hook in React for managing component state.',\\n 'import { useState } from ''react'';\\n\\nfunction Counter() {\\n const [count, setCount] = useState(0);\\n\\n return (\\n
\\n
Count: {count}
\\n \\n
\\n );\\n}\\n\\nexport default Counter;',\\n 'javascript',\\n 'frontend',\\n 'react,hooks,state',\\n 1,\\n 1),\\n\\n('TypeScript Interface Example',\\n 'Defining a TypeScript interface for type-safe objects.',\\n 'interface User {\\n id: string;\\n email: string;\\n name: string;\\n role: ''admin'' | ''editor'' | ''viewer'';\\n createdAt: Date;\\n}\\n\\nfunction greetUser(user: User): string {\\n return `Hello, ${user.name}!`;\\n}\\n\\nconst user: User = {\\n id: ''123'',\\n email: ''user@example.com'',\\n name: ''John Doe'',\\n role: ''admin'',\\n createdAt: new Date()\\n};\\n\\nconsole.log(greetUser(user));',\\n 'typescript',\\n 'backend',\\n 'typescript,types,interface',\\n 1,\\n 2),\\n\\n('Python List Comprehension',\\n 'Elegant way to create lists in Python using list comprehensions.',\\n '# Basic list comprehension\\nsquares = [x**2 for x in range(10)]\\nprint(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]\\n\\n# With condition\\neven_squares = [x**2 for x in range(10) if x % 2 == 0]\\nprint(even_squares) # [0, 4, 16, 36, 64]\\n\\n# Nested list comprehension\\nmatrix = [[i+j for j in range(3)] for i in range(3)]\\nprint(matrix) # [[0, 1, 2], [1, 2, 3], [2, 3, 4]]',\\n 'python',\\n 'general',\\n 'python,lists,comprehension',\\n 1,\\n 3),\\n\\n('SQL Join Example',\\n 'Common SQL JOIN patterns for combining data from multiple tables.',\\n '-- INNER JOIN: Returns only matching rows\\nSELECT users.name, orders.total\\nFROM users\\nINNER JOIN orders ON users.id = orders.user_id;\\n\\n-- LEFT JOIN: Returns all users, even without orders\\nSELECT users.name, orders.total\\nFROM users\\nLEFT JOIN orders ON users.id = orders.user_id;\\n\\n-- Multiple JOINs\\nSELECT\\n users.name,\\n orders.order_date,\\n products.name AS product_name\\nFROM users\\nINNER JOIN orders ON users.id = orders.user_id\\nINNER JOIN order_items ON orders.id = order_items.order_id\\nINNER JOIN products ON order_items.product_id = products.id;',\\n 'sql',\\n 'database',\\n 'sql,joins,queries',\\n 1,\\n 4),\\n\\n('Go Error Handling',\\n 'Idiomatic error handling pattern in Go.',\\n 'package main\\n\\nimport (\\n\\t\\\"errors\\\"\\n\\t\\\"fmt\\\"\\n)\\n\\nfunc divide(a, b float64) (float64, error) {\\n\\tif b == 0 {\\n\\t\\treturn 0, errors.New(\\\"division by zero\\\")\\n\\t}\\n\\treturn a / b, nil\\n}\\n\\nfunc main() {\\n\\tresult, err := divide(10, 2)\\n\\tif err != nil {\\n\\t\\tfmt.Println(\\\"Error:\\\", err)\\n\\t\\treturn\\n\\t}\\n\\tfmt.Printf(\\\"Result: %.2f\\\\n\\\", result)\\n\\n\\t// This will error\\n\\t_, err = divide(10, 0)\\n\\tif err != nil {\\n\\t\\tfmt.Println(\\\"Error:\\\", err)\\n\\t}\\n}',\\n 'go',\\n 'backend',\\n 'go,error-handling,functions',\\n 1,\\n 5);\\n\"\n },\n {\n id: '014',\n name: 'Fix Plugin Registry',\n filename: '014_fix_plugin_registry.sql',\n description: 'Migration 014: Fix Plugin Registry',\n sql: \"-- Fix Plugin Registry\\n-- Migration: 014_fix_plugin_registry\\n-- Description: Add missing plugins and fix plugin name mismatches\\n\\n-- Note: Cannot easily update plugin names as they may be referenced elsewhere\\n-- Instead we'll add the missing plugins with correct names\\n\\n-- Insert missing plugins\\n\\n-- Core Analytics Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'core-analytics',\\n 'core-analytics',\\n 'Analytics & Tracking',\\n 'Core analytics tracking and reporting plugin with page views and event tracking',\\n '1.0.0',\\n 'SonicJS Team',\\n 'seo',\\n '📊',\\n 'active',\\n TRUE,\\n '[\\\"view:analytics\\\", \\\"manage:tracking\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- FAQ Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'faq-plugin',\\n 'faq-plugin',\\n 'FAQ Management',\\n 'Frequently Asked Questions management plugin with categories, search, and custom styling',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '❓',\\n 'active',\\n FALSE,\\n '[\\\"manage:faqs\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Seed Data Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'seed-data',\\n 'seed-data',\\n 'Seed Data Generator',\\n 'Generate realistic example users and content for testing and development',\\n '1.0.0',\\n 'SonicJS Team',\\n 'development',\\n '🌱',\\n 'inactive',\\n FALSE,\\n '[\\\"admin\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Database Tools Plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'database-tools',\\n 'database-tools',\\n 'Database Tools',\\n 'Database management tools including truncate, backup, and validation',\\n '1.0.0',\\n 'SonicJS Team',\\n 'system',\\n '🗄️',\\n 'active',\\n FALSE,\\n '[\\\"manage:database\\\", \\\"admin\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '015',\n name: 'Add Remaining Plugins',\n filename: '015_add_remaining_plugins.sql',\n description: 'Migration 015: Add Remaining Plugins',\n sql: \"-- Add Remaining Plugins\\n-- Migration: 015_add_remaining_plugins\\n-- Description: Add all remaining core plugins that were missing from the registry\\n\\n-- Testimonials Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'testimonials-plugin',\\n 'testimonials-plugin',\\n 'Customer Testimonials',\\n 'Manage customer testimonials and reviews with rating support',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '⭐',\\n 'active',\\n FALSE,\\n '[\\\"manage:testimonials\\\"]',\\n '[]',\\n '{\\\"defaultPublished\\\": true, \\\"requireRating\\\": false}',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Code Examples Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'code-examples-plugin',\\n 'code-examples-plugin',\\n 'Code Examples',\\n 'Manage code snippets and examples with syntax highlighting support',\\n '1.0.0',\\n 'SonicJS',\\n 'content',\\n '💻',\\n 'active',\\n FALSE,\\n '[\\\"manage:code-examples\\\"]',\\n '[]',\\n '{\\\"defaultPublished\\\": true, \\\"supportedLanguages\\\": [\\\"javascript\\\", \\\"typescript\\\", \\\"python\\\", \\\"go\\\", \\\"rust\\\", \\\"java\\\", \\\"php\\\", \\\"ruby\\\", \\\"sql\\\"]}',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Workflow Plugin (with correct name)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'workflow-plugin',\\n 'workflow-plugin',\\n 'Workflow Engine',\\n 'Content workflow management with approval chains, scheduling, and automation',\\n '1.0.0',\\n 'SonicJS Team',\\n 'content',\\n '🔄',\\n 'active',\\n TRUE,\\n '[\\\"manage:workflows\\\", \\\"approve:content\\\"]',\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\\n\\n-- Demo Login Plugin (already exists with correct name from migration 007, but let's ensure it's there)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'demo-login-plugin',\\n 'demo-login-plugin',\\n 'Demo Login Prefill',\\n 'Prefills login form with demo credentials for easy site demonstration',\\n '1.0.0',\\n 'SonicJS',\\n 'demo',\\n '🎯',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '016',\n name: 'Remove Duplicate Cache Plugin',\n filename: '016_remove_duplicate_cache_plugin.sql',\n description: 'Migration 016: Remove Duplicate Cache Plugin',\n sql: \"-- Migration: Remove duplicate cache plugin entry\\n-- Description: Removes the old 'cache' plugin (id: 'cache') that is a duplicate of 'core-cache'\\n-- This fixes the issue where Cache System appears twice in the plugins list\\n-- Created: 2025-10-14\\n\\n-- Remove the old 'cache' plugin entry if it exists\\n-- The correct plugin is 'core-cache' which is managed by plugin-bootstrap.ts\\nDELETE FROM plugins WHERE id = 'cache' AND name = 'cache';\\n\\n-- Clean up any related entries in plugin activity log\\nDELETE FROM plugin_activity_log WHERE plugin_id = 'cache';\\n\\n-- Clean up any related entries in plugin hooks\\nDELETE FROM plugin_hooks WHERE plugin_id = 'cache';\\n\\n-- Clean up any related entries in plugin routes\\nDELETE FROM plugin_routes WHERE plugin_id = 'cache';\\n\"\n },\n {\n id: '017',\n name: 'Auth Configurable Fields',\n filename: '017_auth_configurable_fields.sql',\n description: 'Migration 017: Auth Configurable Fields',\n sql: \"-- Migration: Make authentication fields configurable\\n-- This migration updates the core-auth plugin to support configurable required fields\\n\\n-- The settings will be stored in the plugins table as JSON\\n-- Default settings for core-auth plugin include:\\n-- {\\n-- \\\"requiredFields\\\": {\\n-- \\\"email\\\": { \\\"required\\\": true, \\\"minLength\\\": 5 },\\n-- \\\"password\\\": { \\\"required\\\": true, \\\"minLength\\\": 8 },\\n-- \\\"username\\\": { \\\"required\\\": true, \\\"minLength\\\": 3 },\\n-- \\\"firstName\\\": { \\\"required\\\": true, \\\"minLength\\\": 1 },\\n-- \\\"lastName\\\": { \\\"required\\\": true, \\\"minLength\\\": 1 }\\n-- },\\n-- \\\"validation\\\": {\\n-- \\\"emailFormat\\\": true,\\n-- \\\"allowDuplicateUsernames\\\": false\\n-- }\\n-- }\\n\\n-- Update core-auth plugin settings with configurable field requirements\\nUPDATE plugins\\nSET settings = json_object(\\n 'requiredFields', json_object(\\n 'email', json_object('required', 1, 'minLength', 5, 'label', 'Email', 'type', 'email'),\\n 'password', json_object('required', 1, 'minLength', 8, 'label', 'Password', 'type', 'password'),\\n 'username', json_object('required', 1, 'minLength', 3, 'label', 'Username', 'type', 'text'),\\n 'firstName', json_object('required', 1, 'minLength', 1, 'label', 'First Name', 'type', 'text'),\\n 'lastName', json_object('required', 1, 'minLength', 1, 'label', 'Last Name', 'type', 'text')\\n ),\\n 'validation', json_object(\\n 'emailFormat', 1,\\n 'allowDuplicateUsernames', 0,\\n 'passwordRequirements', json_object(\\n 'requireUppercase', 0,\\n 'requireLowercase', 0,\\n 'requireNumbers', 0,\\n 'requireSpecialChars', 0\\n )\\n ),\\n 'registration', json_object(\\n 'enabled', 1,\\n 'requireEmailVerification', 0,\\n 'defaultRole', 'viewer'\\n )\\n)\\nWHERE id = 'core-auth';\\n\\n-- If core-auth plugin doesn't exist, this migration will be handled by bootstrap\\n-- No need to insert here as plugin bootstrap handles initial plugin creation\\n\"\n },\n {\n id: '018',\n name: 'Settings Table',\n filename: '018_settings_table.sql',\n description: 'Migration 018: Settings Table',\n sql: \"-- Create settings table for storing application settings\\nCREATE TABLE IF NOT EXISTS settings (\\n id TEXT PRIMARY KEY,\\n category TEXT NOT NULL, -- 'general', 'appearance', 'security', etc.\\n key TEXT NOT NULL,\\n value TEXT NOT NULL, -- JSON value\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL,\\n UNIQUE(category, key)\\n);\\n\\n-- Insert default general settings\\nINSERT OR IGNORE INTO settings (id, category, key, value, created_at, updated_at)\\nVALUES\\n (lower(hex(randomblob(16))), 'general', 'siteName', '\\\"SonicJS AI\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'siteDescription', '\\\"A modern headless CMS powered by AI\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'timezone', '\\\"UTC\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'language', '\\\"en\\\"', unixepoch() * 1000, unixepoch() * 1000),\\n (lower(hex(randomblob(16))), 'general', 'maintenanceMode', 'false', unixepoch() * 1000, unixepoch() * 1000);\\n\\n-- Create index for faster lookups\\nCREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category);\\nCREATE INDEX IF NOT EXISTS idx_settings_category_key ON settings(category, key);\\n\"\n },\n {\n id: '019',\n name: 'Remove Blog Posts Collection',\n filename: '019_remove_blog_posts_collection.sql',\n description: 'Migration 019: Remove Blog Posts Collection',\n sql: \"-- Migration: Remove blog_posts from database-managed collections\\n-- Description: Remove blog-posts-collection from the database so it can be managed by code-based collection\\n-- Created: 2025-11-04\\n\\n-- Delete content associated with blog-posts-collection\\nDELETE FROM content WHERE collection_id = 'blog-posts-collection';\\n\\n-- Delete content fields for blog-posts-collection\\nDELETE FROM content_fields WHERE collection_id = 'blog-posts-collection';\\n\\n-- Delete the blog-posts collection itself\\nDELETE FROM collections WHERE id = 'blog-posts-collection';\\n\\n-- The blog-posts collection will now be managed by the code-based collection\\n-- in src/collections/blog-posts.collection.ts\\n\"\n },\n {\n id: '020',\n name: 'Add Email Plugin',\n filename: '020_add_email_plugin.sql',\n description: 'Migration 020: Add Email Plugin',\n sql: \"-- Add Email Plugin\\n-- Migration: 020_add_email_plugin\\n-- Description: Add email plugin for transactional emails via Resend\\n\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'email',\\n 'email',\\n 'Email',\\n 'Send transactional emails using Resend',\\n '1.0.0-beta.1',\\n 'SonicJS Team',\\n 'utilities',\\n '📧',\\n 'inactive',\\n TRUE,\\n '[\\\"email:manage\\\", \\\"email:send\\\", \\\"email:view-logs\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '021',\n name: 'Add Magic Link Auth Plugin',\n filename: '021_add_magic_link_auth_plugin.sql',\n description: 'Migration 021: Add Magic Link Auth Plugin',\n sql: \"-- Add Magic Link Authentication Plugin\\n-- Migration: 021_add_magic_link_auth_plugin\\n-- Description: Add magic link authentication plugin for passwordless login\\n\\n-- Create magic_links table\\nCREATE TABLE IF NOT EXISTS magic_links (\\n id TEXT PRIMARY KEY,\\n user_email TEXT NOT NULL,\\n token TEXT NOT NULL UNIQUE,\\n expires_at INTEGER NOT NULL,\\n used INTEGER DEFAULT 0,\\n used_at INTEGER,\\n ip_address TEXT,\\n user_agent TEXT,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_magic_links_token ON magic_links(token);\\nCREATE INDEX IF NOT EXISTS idx_magic_links_email ON magic_links(user_email);\\nCREATE INDEX IF NOT EXISTS idx_magic_links_expires ON magic_links(expires_at);\\n\\n-- Register the plugin\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, installed_at, last_updated\\n) VALUES (\\n 'magic-link-auth',\\n 'magic-link-auth',\\n 'Magic Link Authentication',\\n 'Passwordless authentication via email magic links. Users receive a secure one-time link to sign in without entering a password.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'security',\\n '🔗',\\n 'inactive',\\n FALSE,\\n '[\\\"auth:manage\\\", \\\"auth:magic-link\\\"]',\\n '[\\\"email\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '022',\n name: 'Add Tinymce Plugin',\n filename: '022_add_tinymce_plugin.sql',\n description: 'Migration 022: Add Tinymce Plugin',\n sql: \"-- Add TinyMCE Rich Text Editor Plugin\\n-- Migration: 022_add_tinymce_plugin\\n-- Description: Add TinyMCE plugin for WYSIWYG rich text editing\\n\\n-- Register the plugin (active by default since it replaces hardcoded TinyMCE)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'tinymce-plugin',\\n 'tinymce-plugin',\\n 'TinyMCE Rich Text Editor',\\n 'Powerful WYSIWYG rich text editor for content creation. Provides a full-featured editor with formatting, media embedding, and customizable toolbars for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✏️',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"apiKey\\\":\\\"no-api-key\\\",\\\"defaultHeight\\\":300,\\\"defaultToolbar\\\":\\\"full\\\",\\\"skin\\\":\\\"oxide-dark\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '023',\n name: 'Add Easy Mdx Plugin',\n filename: '023_add_easy_mdx_plugin.sql',\n description: 'Migration 023: Add Easy Mdx Plugin',\n sql: \"-- Add EasyMDE Markdown Editor Plugin\\n-- Migration: 023_add_easy_mdx_plugin\\n-- Description: Add EasyMDE plugin for lightweight markdown editing\\n\\n-- Register the plugin (active by default)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'easy-mdx',\\n 'easy-mdx',\\n 'EasyMDE Markdown Editor',\\n 'Lightweight markdown editor with live preview. Provides a simple and efficient editor with markdown support for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '📝',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"defaultHeight\\\":400,\\\"theme\\\":\\\"dark\\\",\\\"toolbar\\\":\\\"full\\\",\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '024',\n name: 'Add Quill Editor Plugin',\n filename: '024_add_quill_editor_plugin.sql',\n description: 'Migration 024: Add Quill Editor Plugin',\n sql: \"-- Add Quill Rich Text Editor Plugin\\n-- Migration: 024_add_quill_editor_plugin\\n-- Description: Add Quill plugin for modern rich text editing\\n\\n-- Register the plugin (active by default)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'quill-editor',\\n 'quill-editor',\\n 'Quill Rich Text Editor',\\n 'Modern rich text editor for content creation. Provides a clean, intuitive WYSIWYG editor with customizable toolbars for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✍️',\\n 'active',\\n FALSE,\\n '[]',\\n '[]',\\n '{\\\"theme\\\":\\\"snow\\\",\\\"defaultHeight\\\":300,\\\"defaultToolbar\\\":\\\"full\\\",\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '025',\n name: 'Add Easymde Plugin',\n filename: '025_add_easymde_plugin.sql',\n description: 'Migration 025: Add Easymde Plugin',\n sql: \"-- Add EasyMDE Rich Text Editor Plugin\\n-- Migration: 025_add_easymde_plugin\\n-- Description: Add EasyMDE plugin for markdown-based rich text editing\\n\\n-- Register the plugin (inactive by default, replacing MDXEditor)\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, dependencies, settings, installed_at, last_updated\\n) VALUES (\\n 'easymde-editor',\\n 'easymde-editor',\\n 'EasyMDE Editor',\\n 'Lightweight markdown editor for content creation. Simple, elegant WYSIWYG markdown editor with live preview, toolbar, and dark mode support for richtext fields.',\\n '1.0.0',\\n 'SonicJS Team',\\n 'editor',\\n '✍️',\\n 'inactive',\\n TRUE,\\n '[]',\\n '[]',\\n '{\\\"theme\\\":\\\"dark\\\",\\\"defaultHeight\\\":300,\\\"toolbar\\\":\\\"full\\\",\\\"spellChecker\\\":false,\\\"placeholder\\\":\\\"Start writing your content...\\\"}',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '026',\n name: 'Add Otp Login',\n filename: '026_add_otp_login.sql',\n description: 'Migration 026: Add Otp Login',\n sql: \"-- Add OTP Login Plugin\\n-- Migration: 021_add_otp_login\\n-- Description: Add OTP login plugin for passwordless authentication via email codes\\n\\n-- Create table for OTP codes\\nCREATE TABLE IF NOT EXISTS otp_codes (\\n id TEXT PRIMARY KEY,\\n user_email TEXT NOT NULL,\\n code TEXT NOT NULL,\\n expires_at INTEGER NOT NULL,\\n used INTEGER DEFAULT 0,\\n used_at INTEGER,\\n ip_address TEXT,\\n user_agent TEXT,\\n attempts INTEGER DEFAULT 0,\\n created_at INTEGER NOT NULL\\n);\\n\\n-- Create indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_otp_email_code ON otp_codes(user_email, code);\\nCREATE INDEX IF NOT EXISTS idx_otp_expires ON otp_codes(expires_at);\\nCREATE INDEX IF NOT EXISTS idx_otp_used ON otp_codes(used);\\n\\n-- Add plugin record\\nINSERT OR IGNORE INTO plugins (\\n id, name, display_name, description, version, author, category, icon,\\n status, is_core, permissions, installed_at, last_updated\\n) VALUES (\\n 'otp-login',\\n 'otp-login',\\n 'OTP Login',\\n 'Passwordless authentication via email one-time codes',\\n '1.0.0-beta.1',\\n 'SonicJS Team',\\n 'security',\\n '🔢',\\n 'inactive',\\n TRUE,\\n '[\\\"otp:manage\\\", \\\"otp:request\\\", \\\"otp:verify\\\"]',\\n unixepoch(),\\n unixepoch()\\n);\\n\"\n },\n {\n id: '027',\n name: 'Fix Slug Field Type',\n filename: '027_fix_slug_field_type.sql',\n description: 'Migration 027: Fix Slug Field Type',\n sql: \"-- Migration: Fix slug field type\\n-- Description: Update slug fields to use 'slug' field type instead of 'text' for proper auto-generation\\n-- Created: 2026-01-10\\n\\n-- Update pages collection slug field to use 'slug' field type\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'pages-collection';\\n\\n-- Update blog posts slug field if it exists\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'blog-posts-collection';\\n\\n-- Update news slug field if it exists\\nUPDATE content_fields \\nSET field_type = 'slug'\\nWHERE field_name = 'slug' AND collection_id = 'news-collection';\\n\"\n },\n {\n id: '028',\n name: 'Fix Slug Field Type In Schemas',\n filename: '028_fix_slug_field_type_in_schemas.sql',\n description: 'Migration 028: Fix Slug Field Type In Schemas',\n sql: \"-- Migration: Fix slug field type in collection schemas\\n-- Description: Update slug fields in collection schemas to use 'slug' type instead of 'string'\\n-- Created: 2026-01-10\\n\\n-- Update pages-collection schema\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'pages-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\\n-- Update blog-posts-collection schema if it exists\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'blog-posts-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\\n-- Update news-collection schema if it exists\\nUPDATE collections \\nSET schema = REPLACE(\\n schema,\\n '\\\"slug\\\":{\\\"type\\\":\\\"string\\\"',\\n '\\\"slug\\\":{\\\"type\\\":\\\"slug\\\"'\\n)\\nWHERE id = 'news-collection' AND schema LIKE '%\\\"slug\\\":{\\\"type\\\":\\\"string\\\"%';\\n\"\n },\n {\n id: '029',\n name: 'Add Forms System',\n filename: '029_add_forms_system.sql',\n description: 'Migration 029: Add Forms System',\n sql: \"-- Migration: 029_add_forms_system.sql\\n-- Description: Add Form.io integration for advanced form building\\n-- Date: January 23, 2026\\n-- Phase: 1 - Database Schema\\n\\n-- =====================================================\\n-- Table: forms\\n-- Description: Stores form definitions and configuration\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS forms (\\n id TEXT PRIMARY KEY,\\n name TEXT NOT NULL UNIQUE, -- Machine name (e.g., \\\"contact-form\\\")\\n display_name TEXT NOT NULL, -- Human name (e.g., \\\"Contact Form\\\")\\n description TEXT, -- Optional description\\n category TEXT DEFAULT 'general', -- Form category (contact, survey, registration, etc.)\\n \\n -- Form.io schema (JSON)\\n formio_schema TEXT NOT NULL, -- Complete Form.io JSON schema\\n \\n -- Settings\\n settings TEXT, -- JSON: {\\n -- emailNotifications: true,\\n -- notifyEmail: \\\"admin@example.com\\\",\\n -- successMessage: \\\"Thank you!\\\",\\n -- redirectUrl: \\\"/thank-you\\\",\\n -- allowAnonymous: true,\\n -- requireAuth: false,\\n -- maxSubmissions: null,\\n -- submitButtonText: \\\"Submit\\\",\\n -- saveProgress: true,\\n -- webhookUrl: null\\n -- }\\n \\n -- Status & Management\\n is_active INTEGER DEFAULT 1, -- Active/inactive flag\\n is_public INTEGER DEFAULT 1, -- Public (anyone) vs private (auth required)\\n managed INTEGER DEFAULT 0, -- Code-managed (like collections)\\n \\n -- Metadata\\n icon TEXT, -- Optional icon for admin UI\\n color TEXT, -- Optional color (hex) for admin UI\\n tags TEXT, -- JSON array of tags\\n \\n -- Stats\\n submission_count INTEGER DEFAULT 0, -- Total submissions received\\n view_count INTEGER DEFAULT 0, -- Form views (optional tracking)\\n \\n -- Ownership\\n created_by TEXT REFERENCES users(id), -- User who created the form\\n updated_by TEXT REFERENCES users(id), -- User who last updated\\n \\n -- Timestamps\\n created_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for forms\\nCREATE INDEX IF NOT EXISTS idx_forms_name ON forms(name);\\nCREATE INDEX IF NOT EXISTS idx_forms_category ON forms(category);\\nCREATE INDEX IF NOT EXISTS idx_forms_active ON forms(is_active);\\nCREATE INDEX IF NOT EXISTS idx_forms_public ON forms(is_public);\\nCREATE INDEX IF NOT EXISTS idx_forms_created_by ON forms(created_by);\\n\\n-- =====================================================\\n-- Table: form_submissions\\n-- Description: Stores submitted form data\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS form_submissions (\\n id TEXT PRIMARY KEY,\\n form_id TEXT NOT NULL REFERENCES forms(id) ON DELETE CASCADE,\\n \\n -- Submission data\\n submission_data TEXT NOT NULL, -- JSON: The actual form data submitted\\n \\n -- Submission metadata\\n status TEXT DEFAULT 'pending', -- pending, reviewed, approved, rejected, spam\\n submission_number INTEGER, -- Sequential number per form\\n \\n -- User information (if authenticated)\\n user_id TEXT REFERENCES users(id), -- Submitter user ID (if logged in)\\n user_email TEXT, -- Email from form (or user account)\\n \\n -- Tracking information\\n ip_address TEXT, -- IP address of submitter\\n user_agent TEXT, -- Browser user agent\\n referrer TEXT, -- Page that referred to form\\n utm_source TEXT, -- UTM tracking params\\n utm_medium TEXT,\\n utm_campaign TEXT,\\n \\n -- Review/Processing\\n reviewed_by TEXT REFERENCES users(id), -- Admin who reviewed\\n reviewed_at INTEGER, -- Review timestamp\\n review_notes TEXT, -- Admin notes\\n \\n -- Flags\\n is_spam INTEGER DEFAULT 0, -- Spam flag\\n is_archived INTEGER DEFAULT 0, -- Archived flag\\n \\n -- Timestamps\\n submitted_at INTEGER NOT NULL,\\n updated_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for submissions\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_form_id ON form_submissions(form_id);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_status ON form_submissions(status);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_user_id ON form_submissions(user_id);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_email ON form_submissions(user_email);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_submitted_at ON form_submissions(submitted_at);\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_spam ON form_submissions(is_spam);\\n\\n-- Trigger to auto-increment submission_number per form\\nCREATE TRIGGER IF NOT EXISTS set_submission_number\\nAFTER INSERT ON form_submissions\\nBEGIN\\n UPDATE form_submissions \\n SET submission_number = (\\n SELECT COUNT(*) \\n FROM form_submissions \\n WHERE form_id = NEW.form_id \\n AND id <= NEW.id\\n )\\n WHERE id = NEW.id;\\nEND;\\n\\n-- Trigger to update form submission_count\\nCREATE TRIGGER IF NOT EXISTS increment_form_submission_count\\nAFTER INSERT ON form_submissions\\nBEGIN\\n UPDATE forms \\n SET submission_count = submission_count + 1,\\n updated_at = unixepoch() * 1000\\n WHERE id = NEW.form_id;\\nEND;\\n\\n-- =====================================================\\n-- Table: form_files (Optional)\\n-- Description: Link form submissions to uploaded files\\n-- =====================================================\\n\\nCREATE TABLE IF NOT EXISTS form_files (\\n id TEXT PRIMARY KEY,\\n submission_id TEXT NOT NULL REFERENCES form_submissions(id) ON DELETE CASCADE,\\n media_id TEXT NOT NULL REFERENCES media(id) ON DELETE CASCADE,\\n field_name TEXT NOT NULL, -- Form field that uploaded this file\\n uploaded_at INTEGER NOT NULL\\n);\\n\\n-- Indexes for form files\\nCREATE INDEX IF NOT EXISTS idx_form_files_submission ON form_files(submission_id);\\nCREATE INDEX IF NOT EXISTS idx_form_files_media ON form_files(media_id);\\n\\n-- =====================================================\\n-- Sample Data: Create a default contact form\\n-- =====================================================\\n\\nINSERT OR IGNORE INTO forms (\\n id,\\n name,\\n display_name,\\n description,\\n category,\\n formio_schema,\\n settings,\\n is_active,\\n is_public,\\n created_at,\\n updated_at\\n) VALUES (\\n 'default-contact-form',\\n 'contact',\\n 'Contact Form',\\n 'A simple contact form for getting in touch',\\n 'contact',\\n '{\\\"components\\\":[]}',\\n '{\\\"emailNotifications\\\":false,\\\"successMessage\\\":\\\"Thank you for your submission!\\\",\\\"submitButtonText\\\":\\\"Submit\\\",\\\"requireAuth\\\":false}',\\n 1,\\n 1,\\n unixepoch() * 1000,\\n unixepoch() * 1000\\n);\\n\"\n },\n {\n id: '030',\n name: 'Add Turnstile To Forms',\n filename: '030_add_turnstile_to_forms.sql',\n description: 'Migration 030: Add Turnstile To Forms',\n sql: \"-- Add Turnstile configuration to forms table\\n-- This allows per-form Turnstile settings with global fallback\\n\\n-- Add columns (D1 may not support CHECK constraints in ALTER TABLE)\\nALTER TABLE forms ADD COLUMN turnstile_enabled INTEGER DEFAULT 0;\\nALTER TABLE forms ADD COLUMN turnstile_settings TEXT;\\n\\n-- Set default to inherit global settings for existing forms\\nUPDATE forms \\nSET turnstile_settings = '{\\\"inherit\\\":true}' \\nWHERE turnstile_settings IS NULL;\\n\\n-- Add index for faster lookups\\nCREATE INDEX IF NOT EXISTS idx_forms_turnstile ON forms(turnstile_enabled);\\n\"\n },\n {\n id: '031',\n name: 'Ai Search Plugin',\n filename: '031_ai_search_plugin.sql',\n description: 'Migration 031: Ai Search Plugin',\n sql: \"-- AI Search plugin settings\\nCREATE TABLE IF NOT EXISTS ai_search_settings (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n enabled BOOLEAN DEFAULT 0,\\n ai_mode_enabled BOOLEAN DEFAULT 1,\\n selected_collections TEXT, -- JSON array of collection IDs to index\\n dismissed_collections TEXT, -- JSON array of collection IDs user chose not to index\\n autocomplete_enabled BOOLEAN DEFAULT 1,\\n cache_duration INTEGER DEFAULT 1, -- hours\\n results_limit INTEGER DEFAULT 20,\\n index_media BOOLEAN DEFAULT 0,\\n index_status TEXT, -- JSON object with status per collection\\n last_indexed_at INTEGER,\\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000),\\n updated_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Search history/analytics\\nCREATE TABLE IF NOT EXISTS ai_search_history (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n query TEXT NOT NULL,\\n mode TEXT, -- 'ai' or 'keyword'\\n results_count INTEGER,\\n user_id INTEGER,\\n created_at INTEGER DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Index metadata tracking (per collection)\\nCREATE TABLE IF NOT EXISTS ai_search_index_meta (\\n id INTEGER PRIMARY KEY AUTOINCREMENT,\\n collection_id INTEGER NOT NULL,\\n collection_name TEXT NOT NULL, -- Cache collection name for display\\n total_items INTEGER DEFAULT 0,\\n indexed_items INTEGER DEFAULT 0,\\n last_sync_at INTEGER,\\n status TEXT DEFAULT 'pending', -- 'pending', 'indexing', 'completed', 'error'\\n error_message TEXT,\\n UNIQUE(collection_id)\\n);\\n\\n-- Indexes for performance\\nCREATE INDEX IF NOT EXISTS idx_ai_search_history_created_at ON ai_search_history(created_at);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_history_mode ON ai_search_history(mode);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_index_meta_collection_id ON ai_search_index_meta(collection_id);\\nCREATE INDEX IF NOT EXISTS idx_ai_search_index_meta_status ON ai_search_index_meta(status);\\n\"\n },\n {\n id: '032',\n name: 'User Profiles',\n filename: '032_user_profiles.sql',\n description: 'Migration 032: User Profiles',\n sql: \"-- User Profiles Table (Core Migration)\\n-- Stores extended user profile data separate from auth concerns\\n-- Required by admin-users.ts for user edit page profile management\\n--\\n-- Originally introduced as app-level migration (my-sonicjs-app/migrations/018_user_profiles.sql)\\n-- in upstream PR #508. Core routes (admin-users.ts) were updated to query this table in PR #512,\\n-- but no corresponding core migration was added. This migration corrects that gap.\\n--\\n-- IF NOT EXISTS guards ensure idempotency for databases that already have the table\\n-- from the app-level migration.\\n\\nCREATE TABLE IF NOT EXISTS user_profiles (\\n id TEXT PRIMARY KEY,\\n user_id TEXT NOT NULL UNIQUE REFERENCES users(id) ON DELETE CASCADE,\\n\\n display_name TEXT,\\n bio TEXT,\\n company TEXT,\\n job_title TEXT,\\n website TEXT,\\n location TEXT,\\n date_of_birth INTEGER,\\n data TEXT DEFAULT '{}',\\n\\n created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),\\n updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000)\\n);\\n\\n-- Index for fast user lookups\\nCREATE INDEX IF NOT EXISTS idx_user_profiles_user_id ON user_profiles(user_id);\\n\\n-- Trigger to auto-update updated_at timestamp\\nCREATE TRIGGER IF NOT EXISTS user_profiles_updated_at\\n AFTER UPDATE ON user_profiles\\nBEGIN\\n UPDATE user_profiles SET updated_at = strftime('%s', 'now') * 1000 WHERE id = NEW.id;\\nEND;\\n\"\n },\n {\n id: '033',\n name: 'Form Content Integration',\n filename: '033_form_content_integration.sql',\n description: 'Migration 033: Form Content Integration',\n sql: \"-- Migration 033: Form-Content Integration\\n-- Adds bridge columns to link forms to collections and submissions to content items\\n\\n-- Add source_type and source_id to collections for form-derived collections\\nALTER TABLE collections ADD COLUMN source_type TEXT DEFAULT 'user';\\nALTER TABLE collections ADD COLUMN source_id TEXT;\\n\\n-- Index for efficient lookup of form-derived collections\\nCREATE INDEX IF NOT EXISTS idx_collections_source ON collections(source_type, source_id);\\n\\n-- Add content_id to form_submissions for linking to content items\\nALTER TABLE form_submissions ADD COLUMN content_id TEXT REFERENCES content(id);\\n\\n-- Index for efficient lookup by content_id\\nCREATE INDEX IF NOT EXISTS idx_form_submissions_content_id ON form_submissions(content_id);\\n\\n-- Create system user for anonymous form submissions\\nINSERT OR IGNORE INTO users (id, email, username, first_name, last_name, password_hash, role, is_active, created_at, updated_at)\\nVALUES ('system-form-submission', 'system-forms@sonicjs.internal', 'system-forms', 'Form', 'Submission', NULL, 'viewer', 0, strftime('%s','now') * 1000, strftime('%s','now') * 1000);\\n\"\n },\n {\n id: '034',\n name: 'Security Audit Plugin',\n filename: '034_security_audit_plugin.sql',\n description: 'Migration 034: Security Audit Plugin',\n sql: \"-- Security Audit Plugin\\n-- Tracks login attempts, registrations, and security events for monitoring and brute-force detection\\n\\nCREATE TABLE IF NOT EXISTS security_events (\\n id TEXT PRIMARY KEY,\\n event_type TEXT NOT NULL,\\n severity TEXT NOT NULL DEFAULT 'info',\\n user_id TEXT,\\n email TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n country_code TEXT,\\n request_path TEXT,\\n request_method TEXT,\\n details TEXT,\\n fingerprint TEXT,\\n blocked INTEGER NOT NULL DEFAULT 0,\\n created_at INTEGER NOT NULL\\n);\\n\\nCREATE INDEX IF NOT EXISTS idx_security_events_type ON security_events(event_type);\\nCREATE INDEX IF NOT EXISTS idx_security_events_user ON security_events(user_id);\\nCREATE INDEX IF NOT EXISTS idx_security_events_email ON security_events(email);\\nCREATE INDEX IF NOT EXISTS idx_security_events_ip ON security_events(ip_address);\\nCREATE INDEX IF NOT EXISTS idx_security_events_severity ON security_events(severity);\\nCREATE INDEX IF NOT EXISTS idx_security_events_created ON security_events(created_at);\\nCREATE INDEX IF NOT EXISTS idx_security_events_fingerprint ON security_events(fingerprint);\\n\"\n },\n {\n id: '035',\n name: 'User Profiles Data Column',\n filename: '035_user_profiles_data_column.sql',\n description: 'Migration 035: User Profiles Data Column',\n sql: \"-- Migration 035: Add data column to user_profiles (no-op)\\n--\\n-- This migration originally added a missing 'data' column to user_profiles.\\n-- Migration 032 has since been updated to include the column in the CREATE TABLE,\\n-- so on fresh installs the column already exists by the time this runs.\\n--\\n-- The ALTER TABLE has been removed to prevent \\\"duplicate column name: data\\\" errors\\n-- during fresh installs (GitHub issue #771). Wrangler's migration runner does not\\n-- gracefully handle duplicate column errors like the runtime MigrationService does.\\n--\\n-- Existing databases that ran the old 032 (without the data column) get the column\\n-- added at runtime by the core MigrationService, which skips duplicate-column errors.\\n--\\n-- This file is kept as a no-op so that wrangler's migration tracking remains\\n-- consistent (it tracks migrations by filename).\\nSELECT 1;\\n\"\n },\n {\n id: '036',\n name: 'Analytics Events',\n filename: '036_analytics_events.sql',\n description: 'Migration 036: Analytics Events',\n sql: \"-- Migration 036: Analytics Events Table\\n-- Provides storage for user behavior event tracking (page views, custom events)\\n\\nCREATE TABLE IF NOT EXISTS analytics_events (\\n id TEXT PRIMARY KEY,\\n event TEXT NOT NULL,\\n category TEXT NOT NULL DEFAULT 'user-activity',\\n properties TEXT,\\n user_id TEXT,\\n session_id TEXT,\\n ip_address TEXT,\\n user_agent TEXT,\\n path TEXT,\\n created_at INTEGER NOT NULL DEFAULT (unixepoch())\\n);\\n\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_event ON analytics_events(event);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_category ON analytics_events(category);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_user_id ON analytics_events(user_id);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_session_id ON analytics_events(session_id);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_created_at ON analytics_events(created_at);\\nCREATE INDEX IF NOT EXISTS idx_analytics_events_path ON analytics_events(path);\\n\"\n }\n]\n\n// Map for quick lookup by ID\nexport const migrationsByIdMap = new Map(\n bundledMigrations.map(m => [m.id, m])\n)\n\n// Get migration SQL by ID\nexport function getMigrationSQLById(id: string): string | null {\n return migrationsByIdMap.get(id)?.sql ?? null\n}\n\n// Get all migration info (without SQL for lighter payloads)\nexport function getMigrationList(): Array> {\n return bundledMigrations.map(({ sql, ...rest }) => rest)\n}\n","import { D1Database } from '@cloudflare/workers-types'\nimport { bundledMigrations, getMigrationSQLById, type BundledMigration } from '../db/migrations-bundle'\n\nexport interface Migration {\n id: string\n name: string\n filename: string\n description?: string\n applied: boolean\n appliedAt?: string\n size?: number\n}\n\nexport interface MigrationStatus {\n totalMigrations: number\n appliedMigrations: number\n pendingMigrations: number\n lastApplied?: string\n migrations: Migration[]\n}\n\nexport class MigrationService {\n constructor(private db: D1Database) {}\n\n /**\n * Initialize the migrations tracking table\n */\n async initializeMigrationsTable(): Promise {\n const createTableQuery = `\n CREATE TABLE IF NOT EXISTS migrations (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n filename TEXT NOT NULL,\n applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n checksum TEXT\n )\n `\n\n await this.db.prepare(createTableQuery).run()\n }\n\n /**\n * Get all available migrations from the bundled migrations\n */\n async getAvailableMigrations(): Promise {\n const migrations: Migration[] = []\n\n // Get applied migrations from database\n const appliedResult = await this.db.prepare(\n 'SELECT id, name, filename, applied_at FROM migrations ORDER BY applied_at ASC'\n ).all()\n\n const appliedMigrations = new Map(\n appliedResult.results?.map((row: any) => [row.id, row]) || []\n )\n\n // Auto-detect applied migrations by checking if their tables exist\n await this.autoDetectAppliedMigrations(appliedMigrations)\n\n // Use bundled migrations as the source of truth\n for (const bundled of bundledMigrations) {\n const applied = appliedMigrations.has(bundled.id)\n const appliedData = appliedMigrations.get(bundled.id)\n\n migrations.push({\n id: bundled.id,\n name: bundled.name,\n filename: bundled.filename,\n description: bundled.description,\n applied,\n appliedAt: applied ? appliedData?.applied_at : undefined,\n size: bundled.sql.length\n })\n }\n\n return migrations\n }\n\n /**\n * Auto-detect applied migrations by checking if their tables exist\n */\n private async autoDetectAppliedMigrations(appliedMigrations: Map): Promise {\n // Check if basic schema tables exist (migration 001)\n if (!appliedMigrations.has('001')) {\n const hasBasicTables = await this.checkTablesExist(['users', 'content', 'collections', 'media'])\n if (hasBasicTables) {\n appliedMigrations.set('001', {\n id: '001',\n applied_at: new Date().toISOString(),\n name: 'Initial Schema',\n filename: '001_initial_schema.sql'\n })\n await this.markMigrationApplied('001', 'Initial Schema', '001_initial_schema.sql')\n }\n }\n\n // Check if FAQ tables exist (migration 002)\n // Migration 002 creates only the 'faqs' table\n if (!appliedMigrations.has('002')) {\n const hasFaqTables = await this.checkTablesExist(['faqs'])\n if (hasFaqTables) {\n appliedMigrations.set('002', {\n id: '002',\n applied_at: new Date().toISOString(),\n name: 'Faq Plugin',\n filename: '002_faq_plugin.sql'\n })\n await this.markMigrationApplied('002', 'Faq Plugin', '002_faq_plugin.sql')\n }\n }\n\n // Check if stage 5 enhancement tables exist (migration 003)\n // Migration 003 creates content_fields, content_relationships, workflow_templates tables\n if (!appliedMigrations.has('003')) {\n const hasStage5Tables = await this.checkTablesExist(['content_fields', 'content_relationships', 'workflow_templates'])\n if (hasStage5Tables) {\n appliedMigrations.set('003', {\n id: '003',\n applied_at: new Date().toISOString(),\n name: 'Stage 5 Enhancements',\n filename: '003_stage5_enhancements.sql'\n })\n await this.markMigrationApplied('003', 'Stage 5 Enhancements', '003_stage5_enhancements.sql')\n }\n }\n\n // Check if testimonials table exists (migration 012)\n if (!appliedMigrations.has('012')) {\n const hasTestimonialsTables = await this.checkTablesExist(['testimonials'])\n if (hasTestimonialsTables) {\n appliedMigrations.set('012', {\n id: '012',\n applied_at: new Date().toISOString(),\n name: 'Testimonials Plugin',\n filename: '012_testimonials_plugin.sql'\n })\n await this.markMigrationApplied('012', 'Testimonials Plugin', '012_testimonials_plugin.sql')\n }\n }\n\n // Check if code_examples table exists (migration 013)\n if (!appliedMigrations.has('013')) {\n const hasCodeExamplesTables = await this.checkTablesExist(['code_examples'])\n if (hasCodeExamplesTables) {\n appliedMigrations.set('013', {\n id: '013',\n applied_at: new Date().toISOString(),\n name: 'Code Examples Plugin',\n filename: '013_code_examples_plugin.sql'\n })\n await this.markMigrationApplied('013', 'Code Examples Plugin', '013_code_examples_plugin.sql')\n }\n }\n\n // Check if user management tables exist (migration 004)\n if (!appliedMigrations.has('004')) {\n const hasUserTables = await this.checkTablesExist(['api_tokens', 'workflow_history'])\n if (hasUserTables) {\n appliedMigrations.set('004', {\n id: '004',\n applied_at: new Date().toISOString(),\n name: 'User Management',\n filename: '004_stage6_user_management.sql'\n })\n await this.markMigrationApplied('004', 'User Management', '004_stage6_user_management.sql')\n }\n }\n\n // Check if plugin system tables exist (migration 006)\n if (!appliedMigrations.has('006')) {\n const hasPluginTables = await this.checkTablesExist(['plugins', 'plugin_hooks'])\n if (hasPluginTables) {\n appliedMigrations.set('006', {\n id: '006',\n applied_at: new Date().toISOString(),\n name: 'Plugin System',\n filename: '006_plugin_system.sql'\n })\n await this.markMigrationApplied('006', 'Plugin System', '006_plugin_system.sql')\n }\n }\n\n // Check if managed column exists (migration 011)\n // This handles both cases:\n // 1. Migration not marked as applied but column exists -> mark as applied\n // 2. Migration marked as applied but column doesn't exist -> remove from applied (will re-run)\n const hasManagedColumn = await this.checkColumnExists('collections', 'managed')\n if (!appliedMigrations.has('011') && hasManagedColumn) {\n appliedMigrations.set('011', {\n id: '011',\n applied_at: new Date().toISOString(),\n name: 'Config Managed Collections',\n filename: '011_config_managed_collections.sql'\n })\n await this.markMigrationApplied('011', 'Config Managed Collections', '011_config_managed_collections.sql')\n } else if (appliedMigrations.has('011') && !hasManagedColumn) {\n // Migration was marked as applied but column doesn't exist - remove it so it will re-run\n console.log('[Migration] Migration 011 marked as applied but managed column missing - will re-run')\n appliedMigrations.delete('011')\n await this.removeMigrationApplied('011')\n }\n\n // Check if system_logs table exists (migration 009)\n if (!appliedMigrations.has('009')) {\n const hasLoggingTables = await this.checkTablesExist(['system_logs', 'log_config'])\n if (hasLoggingTables) {\n appliedMigrations.set('009', {\n id: '009',\n applied_at: new Date().toISOString(),\n name: 'System Logging',\n filename: '009_system_logging.sql'\n })\n await this.markMigrationApplied('009', 'System Logging', '009_system_logging.sql')\n }\n }\n\n // Check if settings table exists (migration 018)\n if (!appliedMigrations.has('018')) {\n const hasSettingsTable = await this.checkTablesExist(['settings'])\n if (hasSettingsTable) {\n appliedMigrations.set('018', {\n id: '018',\n applied_at: new Date().toISOString(),\n name: 'Settings Table',\n filename: '018_settings_table.sql'\n })\n await this.markMigrationApplied('018', 'Settings Table', '018_settings_table.sql')\n }\n }\n\n // Check if forms tables exist (migration 029)\n // Migration 029 was reassigned between releases: older versions used it for \"Ai Search Plugin\",\n // newer versions use it for \"Add Forms System\". This handles the case where 029 is marked as\n // applied (from the old AI Search migration) but the forms tables don't actually exist.\n const hasFormsTables = await this.checkTablesExist(['forms', 'form_submissions', 'form_files'])\n if (!appliedMigrations.has('029') && hasFormsTables) {\n appliedMigrations.set('029', {\n id: '029',\n applied_at: new Date().toISOString(),\n name: 'Add Forms System',\n filename: '029_add_forms_system.sql'\n })\n await this.markMigrationApplied('029', 'Add Forms System', '029_add_forms_system.sql')\n } else if (appliedMigrations.has('029') && !hasFormsTables) {\n // Migration was marked as applied (possibly from old \"Ai Search Plugin\" migration)\n // but forms tables don't exist - remove it so the forms migration will re-run\n console.log('[Migration] Migration 029 marked as applied but forms tables missing - will re-run')\n appliedMigrations.delete('029')\n await this.removeMigrationApplied('029')\n }\n\n // Check if user_profiles table exists (migration 032)\n // Table may already exist from app-level migration (my-sonicjs-app/migrations/018_user_profiles.sql)\n if (!appliedMigrations.has('032')) {\n const hasUserProfilesTable = await this.checkTablesExist(['user_profiles'])\n if (hasUserProfilesTable) {\n appliedMigrations.set('032', {\n id: '032',\n applied_at: new Date().toISOString(),\n name: 'User Profiles',\n filename: '032_user_profiles.sql'\n })\n await this.markMigrationApplied('032', 'User Profiles', '032_user_profiles.sql')\n }\n }\n\n // Ensure user_profiles.data column exists (migration 035 is now a no-op).\n // Databases that ran the old 032 (without data column) need the column added.\n // Migration 035 was converted to a no-op to fix #771 (duplicate column error\n // on fresh installs), so we add the column here if it's missing.\n const hasUserProfilesTable = await this.checkTablesExist(['user_profiles'])\n if (hasUserProfilesTable) {\n const hasDataColumn = await this.checkColumnExists('user_profiles', 'data')\n if (!hasDataColumn) {\n try {\n await this.db.prepare(`ALTER TABLE user_profiles ADD COLUMN data TEXT DEFAULT '{}'`).run()\n console.log('[Migration] Added missing data column to user_profiles')\n } catch (error) {\n // Column may have been added concurrently; ignore duplicate column errors\n const msg = error instanceof Error ? error.message : String(error)\n if (!msg.includes('duplicate column name')) {\n console.error('[Migration] Failed to add data column to user_profiles:', msg)\n }\n }\n }\n }\n\n // Mark migration 035 as applied since it's now a no-op (column handled above)\n if (!appliedMigrations.has('035')) {\n const hasDataCol = hasUserProfilesTable && await this.checkColumnExists('user_profiles', 'data')\n if (hasDataCol) {\n appliedMigrations.set('035', {\n id: '035',\n applied_at: new Date().toISOString(),\n name: 'User Profiles Data Column',\n filename: '035_user_profiles_data_column.sql'\n })\n await this.markMigrationApplied('035', 'User Profiles Data Column', '035_user_profiles_data_column.sql')\n }\n }\n }\n\n /**\n * Check if specific tables exist in the database\n */\n private async checkTablesExist(tableNames: string[]): Promise {\n try {\n for (const tableName of tableNames) {\n const result = await this.db.prepare(\n `SELECT name FROM sqlite_master WHERE type='table' AND name=?`\n ).bind(tableName).first()\n\n if (!result) {\n return false\n }\n }\n return true\n } catch (error) {\n return false\n }\n }\n\n /**\n * Check if a specific column exists in a table\n */\n private async checkColumnExists(tableName: string, columnName: string): Promise {\n try {\n const result = await this.db.prepare(\n `SELECT * FROM pragma_table_info(?) WHERE name = ?`\n ).bind(tableName, columnName).first()\n\n return !!result\n } catch (error) {\n return false\n }\n }\n\n /**\n * Get migration status summary\n */\n async getMigrationStatus(): Promise {\n await this.initializeMigrationsTable()\n\n const migrations = await this.getAvailableMigrations()\n const appliedMigrations = migrations.filter(m => m.applied)\n const pendingMigrations = migrations.filter(m => !m.applied)\n\n const lastApplied = appliedMigrations.length > 0\n ? appliedMigrations[appliedMigrations.length - 1]?.appliedAt\n : undefined\n\n return {\n totalMigrations: migrations.length,\n appliedMigrations: appliedMigrations.length,\n pendingMigrations: pendingMigrations.length,\n lastApplied,\n migrations\n }\n }\n\n /**\n * Mark a migration as applied\n */\n async markMigrationApplied(migrationId: string, name: string, filename: string): Promise {\n await this.initializeMigrationsTable()\n\n await this.db.prepare(\n 'INSERT OR REPLACE INTO migrations (id, name, filename, applied_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP)'\n ).bind(migrationId, name, filename).run()\n }\n\n /**\n * Remove a migration from the applied list (so it can be re-run)\n */\n async removeMigrationApplied(migrationId: string): Promise {\n await this.initializeMigrationsTable()\n\n await this.db.prepare(\n 'DELETE FROM migrations WHERE id = ?'\n ).bind(migrationId).run()\n }\n\n /**\n * Check if a specific migration has been applied\n */\n async isMigrationApplied(migrationId: string): Promise {\n await this.initializeMigrationsTable()\n\n const result = await this.db.prepare(\n 'SELECT COUNT(*) as count FROM migrations WHERE id = ?'\n ).bind(migrationId).first()\n\n return (result?.count as number) > 0\n }\n\n /**\n * Get the last applied migration\n */\n async getLastAppliedMigration(): Promise {\n await this.initializeMigrationsTable()\n\n const result = await this.db.prepare(\n 'SELECT id, name, filename, applied_at FROM migrations ORDER BY applied_at DESC LIMIT 1'\n ).first()\n\n if (!result) return null\n\n return {\n id: result.id as string,\n name: result.name as string,\n filename: result.filename as string,\n applied: true,\n appliedAt: result.applied_at as string\n }\n }\n\n /**\n * Run pending migrations\n */\n async runPendingMigrations(): Promise<{ success: boolean; message: string; applied: string[]; errors: string[] }> {\n await this.initializeMigrationsTable()\n\n const status = await this.getMigrationStatus()\n const pendingMigrations = status.migrations.filter(m => !m.applied)\n\n if (pendingMigrations.length === 0) {\n return {\n success: true,\n message: 'All migrations are up to date',\n applied: [],\n errors: []\n }\n }\n\n // Actually execute the migration files\n const applied: string[] = []\n const errors: string[] = []\n\n for (const migration of pendingMigrations) {\n try {\n console.log(`[Migration] Applying ${migration.id}: ${migration.name}`)\n await this.applyMigration(migration)\n await this.markMigrationApplied(migration.id, migration.name, migration.filename)\n applied.push(migration.id)\n console.log(`[Migration] Successfully applied ${migration.id}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(`[Migration] Failed to apply migration ${migration.id}:`, errorMessage)\n errors.push(`${migration.id}: ${errorMessage}`)\n // Continue with other migrations instead of stopping on first failure\n // This allows independent migrations to still be applied\n }\n }\n\n if (errors.length > 0 && applied.length === 0) {\n return {\n success: false,\n message: `Failed to apply migrations: ${errors.join('; ')}`,\n applied,\n errors\n }\n }\n\n return {\n success: true,\n message: applied.length > 0\n ? `Applied ${applied.length} migration(s)${errors.length > 0 ? ` (${errors.length} failed)` : ''}`\n : 'No migrations applied',\n applied,\n errors\n }\n }\n\n /**\n * Apply a specific migration\n */\n private async applyMigration(migration: Migration): Promise {\n // Get the actual migration SQL from the bundle\n const migrationSQL = getMigrationSQLById(migration.id)\n\n if (migrationSQL === null) {\n throw new Error(`Migration SQL not found for ${migration.id}`)\n }\n\n if (migrationSQL.trim() === '') {\n console.log(`[Migration] Skipping empty migration ${migration.id}`)\n return\n }\n\n // Split SQL into individual statements, handling triggers properly\n const statements = this.splitSQLStatements(migrationSQL)\n\n for (const statement of statements) {\n if (statement.trim()) {\n try {\n await this.db.prepare(statement).run()\n } catch (error) {\n // Check if it's a \"already exists\" type error and skip it\n const errorMessage = error instanceof Error ? error.message : String(error)\n if (errorMessage.includes('already exists') ||\n errorMessage.includes('duplicate column name') ||\n errorMessage.includes('UNIQUE constraint failed')) {\n console.log(`[Migration] Skipping (already exists): ${statement.substring(0, 50)}...`)\n continue\n }\n console.error(`[Migration] Error executing statement: ${statement.substring(0, 100)}...`)\n throw error\n }\n }\n }\n }\n\n /**\n * Split SQL into statements, handling CREATE TRIGGER properly\n */\n private splitSQLStatements(sql: string): string[] {\n const statements: string[] = []\n let current = ''\n let inTrigger = false\n\n const lines = sql.split('\\n')\n\n for (const line of lines) {\n const trimmed = line.trim()\n\n // Skip comments and empty lines\n if (trimmed.startsWith('--') || trimmed.length === 0) {\n continue\n }\n\n // Check if we're entering a trigger\n if (trimmed.toUpperCase().includes('CREATE TRIGGER')) {\n inTrigger = true\n }\n\n current += line + '\\n'\n\n // Check if we're exiting a trigger\n if (inTrigger && trimmed.toUpperCase() === 'END;') {\n statements.push(current.trim())\n current = ''\n inTrigger = false\n }\n // Check for regular statement end (not in trigger)\n else if (!inTrigger && trimmed.endsWith(';')) {\n statements.push(current.trim())\n current = ''\n }\n }\n\n // Add any remaining statement\n if (current.trim()) {\n statements.push(current.trim())\n }\n\n return statements.filter(s => s.length > 0)\n }\n\n /**\n * Validate database schema\n */\n async validateSchema(): Promise<{ valid: boolean; issues: string[] }> {\n const issues: string[] = []\n\n // Basic table existence checks\n const requiredTables = [\n 'users', 'content', 'collections', 'media'\n ]\n\n for (const table of requiredTables) {\n try {\n await this.db.prepare(`SELECT COUNT(*) FROM ${table} LIMIT 1`).first()\n } catch (error) {\n issues.push(`Missing table: ${table}`)\n }\n }\n\n // Check for managed column in collections\n const hasManagedColumn = await this.checkColumnExists('collections', 'managed')\n if (!hasManagedColumn) {\n issues.push('Missing column: collections.managed')\n }\n\n return {\n valid: issues.length === 0,\n issues\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/packages/core/dist/chunk-5QK3FXKX.js.map b/packages/core/dist/chunk-5QK3FXKX.js.map
deleted file mode 100644
index a83ba3fef..000000000
--- a/packages/core/dist/chunk-5QK3FXKX.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/middleware/bootstrap.ts","../src/middleware/auth.ts","../src/middleware/metrics.ts","../src/middleware/csrf.ts","../src/middleware/rate-limit.ts","../src/middleware/security-headers.ts","../src/middleware/index.ts"],"names":["result","JWT_SECRET_FALLBACK","getCookie","setCookie"],"mappings":"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","file":"chunk-5QK3FXKX.js","sourcesContent":["import { Context, Next } from \"hono\";\nimport { syncCollections } from \"../services/collection-sync\";\nimport { syncAllFormCollections } from \"../services/form-collection-sync\";\nimport { MigrationService } from \"../services/migrations\";\nimport { PluginBootstrapService } from \"../services/plugin-bootstrap\";\nimport type { SonicJSConfig } from \"../app\";\n\ntype Bindings = {\n DB: D1Database;\n KV: KVNamespace;\n JWT_SECRET?: string;\n CORS_ORIGINS?: string;\n ENVIRONMENT?: string;\n};\n\n// Track if bootstrap has been run in this worker instance\nlet bootstrapComplete = false;\n\n/**\n * Verify security-critical environment configuration at startup.\n * Logs warnings in development, throws in production to prevent\n * insecure deployments from silently running.\n */\nexport function verifySecurityConfig(env: Bindings): void {\n const warnings: string[] = [];\n\n // Check JWT secret\n if (!env.JWT_SECRET) {\n warnings.push(\n \"JWT_SECRET is not set — using hardcoded fallback. Set via `wrangler secret put JWT_SECRET`\"\n );\n } else if (env.JWT_SECRET.includes(\"change-in-production\")) {\n warnings.push(\n \"JWT_SECRET contains the default value — tokens are forgeable. Generate a strong random secret\"\n );\n }\n\n // Check CORS origins\n if (!env.CORS_ORIGINS) {\n warnings.push(\n \"CORS_ORIGINS is not set — all cross-origin API requests will be rejected\"\n );\n }\n\n // Check environment designation\n if (!env.ENVIRONMENT) {\n warnings.push(\n \"ENVIRONMENT is not set — HSTS header will not be applied. Set to \\\"production\\\" or \\\"development\\\"\"\n );\n }\n\n if (warnings.length === 0) {\n return;\n }\n\n const isProduction = env.ENVIRONMENT === \"production\";\n\n for (const warning of warnings) {\n console.warn(`[SonicJS Security] ${warning}`);\n }\n\n if (isProduction) {\n // In production, a missing or default JWT_SECRET is a hard failure —\n // every token issued would be forgeable by anyone reading the source code.\n const hasCritical =\n !env.JWT_SECRET || env.JWT_SECRET.includes(\"change-in-production\");\n if (hasCritical) {\n throw new Error(\n \"[SonicJS Security] CRITICAL: Production deployment is missing a secure JWT_SECRET. \" +\n \"Set it via `wrangler secret put JWT_SECRET` before deploying.\"\n );\n }\n }\n}\n\n/**\n * Bootstrap middleware that ensures system initialization\n * Runs once per worker instance\n */\nexport function bootstrapMiddleware(config: SonicJSConfig = {}) {\n return async (c: Context<{ Bindings: Bindings }>, next: Next) => {\n // Skip if already bootstrapped in this worker instance\n if (bootstrapComplete) {\n return next();\n }\n\n // Skip bootstrap for static assets and health checks\n const path = c.req.path;\n if (\n path.startsWith(\"/images/\") ||\n path.startsWith(\"/assets/\") ||\n path === \"/health\" ||\n path.endsWith(\".js\") ||\n path.endsWith(\".css\") ||\n path.endsWith(\".png\") ||\n path.endsWith(\".jpg\") ||\n path.endsWith(\".ico\")\n ) {\n return next();\n }\n\n try {\n console.log(\"[Bootstrap] Starting system initialization...\");\n\n // 1. Run database migrations first\n console.log(\"[Bootstrap] Running database migrations...\");\n const migrationService = new MigrationService(c.env.DB);\n await migrationService.runPendingMigrations();\n\n // 2. Sync collection configurations\n console.log(\"[Bootstrap] Syncing collection configurations...\");\n try {\n await syncCollections(c.env.DB);\n } catch (error) {\n console.error(\"[Bootstrap] Error syncing collections:\", error);\n // Continue bootstrap even if collection sync fails\n }\n\n // 2b. Sync form-derived shadow collections\n console.log(\"[Bootstrap] Syncing form collections...\");\n try {\n await syncAllFormCollections(c.env.DB);\n } catch (error) {\n console.error(\"[Bootstrap] Error syncing form collections:\", error);\n }\n\n // 3. Bootstrap core plugins (unless disableAll is set)\n if (!config.plugins?.disableAll) {\n console.log(\"[Bootstrap] Bootstrapping core plugins...\");\n const bootstrapService = new PluginBootstrapService(c.env.DB);\n\n // Check if bootstrap is needed\n const needsBootstrap = await bootstrapService.isBootstrapNeeded();\n if (needsBootstrap) {\n await bootstrapService.bootstrapCorePlugins();\n }\n } else {\n console.log(\"[Bootstrap] Plugin bootstrap skipped (disableAll is true)\");\n }\n\n // Mark bootstrap as complete for this worker instance\n bootstrapComplete = true;\n console.log(\"[Bootstrap] System initialization completed\");\n } catch (error) {\n console.error(\"[Bootstrap] Error during system initialization:\", error);\n // Don't prevent the app from starting, but log the error\n }\n\n // 4. Verify security configuration (outside try/catch so critical\n // errors in production propagate and prevent insecure deployments)\n verifySecurityConfig(c.env as Bindings);\n\n return next();\n };\n}\n\n/**\n * Reset bootstrap flag (useful for testing)\n */\nexport function resetBootstrap() {\n bootstrapComplete = false;\n}\n","import { sign, verify } from 'hono/jwt'\nimport { Context, Next } from 'hono'\nimport { getCookie, setCookie } from 'hono/cookie'\n\ntype JWTPayload = {\n userId: string\n email: string\n role: string\n exp: number\n iat: number\n}\n\n// Fallback JWT secret for local development only (no wrangler secret set)\nconst JWT_SECRET_FALLBACK = 'your-super-secret-jwt-key-change-in-production'\n\n// Default JWT TTL: 30 days. Can be overridden via JWT_EXPIRES_IN env var.\nconst DEFAULT_JWT_EXPIRES_IN_SECONDS = 60 * 60 * 24 * 30\n\n/**\n * Parse a TTL string like \"30d\", \"12h\", \"3600s\", or a bare number-of-seconds\n * into a seconds value. Returns null if the input is missing/unparseable.\n */\nfunction parseDuration(input: string | number | undefined | null): number | null {\n if (input === undefined || input === null || input === '') return null\n if (typeof input === 'number' && Number.isFinite(input) && input > 0) {\n return Math.floor(input)\n }\n const raw = String(input).trim()\n if (/^\\d+$/.test(raw)) {\n const n = parseInt(raw, 10)\n return n > 0 ? n : null\n }\n const match = raw.match(/^(\\d+)\\s*(s|sec|secs|seconds|m|min|mins|minutes|h|hr|hrs|hours|d|day|days)$/i)\n if (!match) return null\n const value = parseInt(match[1]!, 10)\n const unit = match[2]!.toLowerCase()\n if (unit.startsWith('s')) return value\n if (unit.startsWith('m')) return value * 60\n if (unit.startsWith('h')) return value * 60 * 60\n if (unit.startsWith('d')) return value * 60 * 60 * 24\n return null\n}\n\n/**\n * Resolve the JWT expiry in seconds from the environment.\n * Honors `JWT_EXPIRES_IN` (seconds or \"30d\"/\"12h\"/\"3600s\") with a 30-day default.\n */\nexport function getJwtExpirySeconds(env?: Record | null): number {\n const configured = parseDuration(env?.JWT_EXPIRES_IN)\n return configured ?? DEFAULT_JWT_EXPIRES_IN_SECONDS\n}\n\n/**\n * Resolve the JWT expiry in seconds. Precedence: `JWT_EXPIRES_IN` env var\n * (authoritative ceiling) → `settings.security.jwtExpiresIn` DB value\n * (admin-configurable) → 30-day default.\n *\n * The env var wins so operators can cap runtime overrides — admins can adjust\n * the TTL from /admin/settings/security, but an env var, if set, always wins.\n * DB failures fall back to env/default so auth never breaks if the settings\n * table is unreachable.\n */\nexport async function getJwtExpirySecondsFromDb(\n db: { prepare: (query: string) => any } | null | undefined,\n env?: Record | null\n): Promise {\n const envParsed = parseDuration(env?.JWT_EXPIRES_IN)\n if (envParsed) return envParsed\n\n if (db) {\n try {\n const row = await db\n .prepare(\"SELECT value FROM settings WHERE category = 'security' AND key = 'jwtExpiresIn'\")\n .first() as { value: string } | null\n if (row?.value) {\n let stored: any = row.value\n try { stored = JSON.parse(row.value) } catch { /* value may already be a bare string */ }\n const parsed = parseDuration(stored)\n if (parsed) return parsed\n }\n } catch (err) {\n console.warn('Failed to read jwtExpiresIn from settings, falling back to default:', err)\n }\n }\n return DEFAULT_JWT_EXPIRES_IN_SECONDS\n}\n\n/**\n * Resolve the refresh grace window (seconds) for `/auth/refresh`. Precedence:\n * `JWT_REFRESH_GRACE_SECONDS` env var → `settings.security.jwtRefreshGraceSeconds`\n * DB value → 7-day default.\n */\nexport async function getJwtRefreshGraceSecondsFromDb(\n db: { prepare: (query: string) => any } | null | undefined,\n env?: Record | null\n): Promise {\n const DEFAULT_GRACE = 60 * 60 * 24 * 7\n const envParsed = parseDuration(env?.JWT_REFRESH_GRACE_SECONDS)\n if (envParsed) return envParsed\n\n if (db) {\n try {\n const row = await db\n .prepare(\"SELECT value FROM settings WHERE category = 'security' AND key = 'jwtRefreshGraceSeconds'\")\n .first() as { value: string } | null\n if (row?.value) {\n let stored: any = row.value\n try { stored = JSON.parse(row.value) } catch { /* may be bare */ }\n const parsed = parseDuration(stored)\n if (parsed) return parsed\n }\n } catch (err) {\n console.warn('Failed to read jwtRefreshGraceSeconds from settings:', err)\n }\n }\n return DEFAULT_GRACE\n}\n\n/**\n * Decode a JWT payload without verifying the signature. Returns null on any\n * parsing failure. Callers MUST independently verify the signature before\n * trusting this value — used from the grace-window refresh path where the\n * signature is verified explicitly via `verifyHs256Signature`.\n */\nfunction decodeJwtPayload(token: string): JWTPayload | null {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return null\n const b64 = parts[1]!.replace(/-/g, '+').replace(/_/g, '/')\n const padded = b64 + '='.repeat((4 - (b64.length % 4)) % 4)\n const json = atob(padded)\n const obj = JSON.parse(json)\n if (!obj || typeof obj.exp !== 'number') return null\n return obj as JWTPayload\n } catch {\n return null\n }\n}\n\nfunction base64UrlToBytes(b64url: string): Uint8Array {\n const b64 = b64url.replace(/-/g, '+').replace(/_/g, '/')\n const padded = b64 + '='.repeat((4 - (b64.length % 4)) % 4)\n const bin = atob(padded)\n const bytes = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i)\n return bytes\n}\n\n/**\n * Verify a JWT's HS256 signature using Web Crypto, independent of hono/jwt.\n * Returns true iff the signature matches the header.payload portion.\n */\nasync function verifyHs256Signature(token: string, secret: string): Promise {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return false\n const encoder = new TextEncoder()\n const key = await crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['verify']\n )\n const signature = base64UrlToBytes(parts[2]!)\n const message = encoder.encode(`${parts[0]}.${parts[1]}`)\n return await crypto.subtle.verify('HMAC', key, signature, message)\n } catch {\n return false\n }\n}\n\nexport class AuthManager {\n static async generateToken(\n userId: string,\n email: string,\n role: string,\n secret?: string,\n expiresInSeconds?: number\n ): Promise {\n const ttl = expiresInSeconds && expiresInSeconds > 0\n ? Math.floor(expiresInSeconds)\n : DEFAULT_JWT_EXPIRES_IN_SECONDS\n const now = Math.floor(Date.now() / 1000)\n const payload: JWTPayload = {\n userId,\n email,\n role,\n exp: now + ttl,\n iat: now\n }\n\n return await sign(payload, secret || JWT_SECRET_FALLBACK, 'HS256')\n }\n\n /**\n * Verify a token's signature and expiration.\n *\n * If `graceSeconds` > 0, tokens whose `exp` is within the grace window\n * (i.e. expired by no more than `graceSeconds`) are still returned. This\n * supports a sliding-session refresh endpoint that accepts recently-expired\n * tokens. Signature failures always return null.\n */\n static async verifyToken(\n token: string,\n secret?: string,\n graceSeconds: number = 0\n ): Promise {\n const effectiveSecret = secret || JWT_SECRET_FALLBACK\n try {\n let payload: JWTPayload | null = null\n try {\n payload = await verify(token, effectiveSecret, 'HS256') as JWTPayload\n } catch (verifyError: any) {\n // hono/jwt checks `exp` before signature, so a bad-signature token\n // that happens to be expired will throw JwtTokenExpired here. For\n // the grace window, we still require a valid HS256 signature before\n // accepting the payload.\n const name = verifyError?.name || ''\n const message = String(verifyError?.message || '')\n const isExpired = name === 'JwtTokenExpired' || message.includes('expired')\n if (!isExpired || graceSeconds <= 0) {\n throw verifyError\n }\n const signatureValid = await verifyHs256Signature(token, effectiveSecret)\n if (!signatureValid) return null\n const decoded = decodeJwtPayload(token)\n if (!decoded) return null\n payload = decoded\n }\n\n if (!payload) return null\n\n const now = Math.floor(Date.now() / 1000)\n if (payload.exp < now - Math.max(0, Math.floor(graceSeconds))) {\n return null\n }\n\n return payload\n } catch (error) {\n console.error('Token verification failed:', error)\n return null\n }\n }\n\n static async hashPassword(password: string): Promise {\n const iterations = 100000\n const salt = new Uint8Array(16)\n crypto.getRandomValues(salt)\n\n const encoder = new TextEncoder()\n const keyMaterial = await crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits']\n )\n\n const hashBuffer = await crypto.subtle.deriveBits(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: 'SHA-256'\n },\n keyMaterial,\n 256\n )\n\n const saltHex = Array.from(salt).map(b => b.toString(16).padStart(2, '0')).join('')\n const hashHex = Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2, '0')).join('')\n\n return `pbkdf2:${iterations}:${saltHex}:${hashHex}`\n }\n\n static async hashPasswordLegacy(password: string): Promise {\n const encoder = new TextEncoder()\n const data = encoder.encode(password + 'salt-change-in-production')\n const hashBuffer = await crypto.subtle.digest('SHA-256', data)\n const hashArray = Array.from(new Uint8Array(hashBuffer))\n return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')\n }\n\n static async verifyPassword(password: string, storedHash: string): Promise {\n if (storedHash.startsWith('pbkdf2:')) {\n // PBKDF2 format: pbkdf2:::\n const parts = storedHash.split(':')\n if (parts.length !== 4) return false\n\n const iterationsStr = parts[1]!\n const saltHex = parts[2]!\n const expectedHashHex = parts[3]!\n const iterations = parseInt(iterationsStr, 10)\n\n const saltBytes = saltHex.match(/.{2}/g)\n if (!saltBytes) return false\n const salt = new Uint8Array(saltBytes.map(byte => parseInt(byte, 16)))\n\n const encoder = new TextEncoder()\n const keyMaterial = await crypto.subtle.importKey(\n 'raw',\n encoder.encode(password),\n 'PBKDF2',\n false,\n ['deriveBits']\n )\n\n const hashBuffer = await crypto.subtle.deriveBits(\n {\n name: 'PBKDF2',\n salt,\n iterations,\n hash: 'SHA-256'\n },\n keyMaterial,\n 256\n )\n\n const actualHashHex = Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2, '0')).join('')\n\n // Constant-time comparison\n if (actualHashHex.length !== expectedHashHex.length) return false\n let result = 0\n for (let i = 0; i < actualHashHex.length; i++) {\n result |= actualHashHex.charCodeAt(i) ^ expectedHashHex.charCodeAt(i)\n }\n return result === 0\n }\n\n // Legacy SHA-256 format (no colons in hash)\n const legacyHash = await this.hashPasswordLegacy(password)\n // Constant-time comparison for legacy too\n if (legacyHash.length !== storedHash.length) return false\n let result = 0\n for (let i = 0; i < legacyHash.length; i++) {\n result |= legacyHash.charCodeAt(i) ^ storedHash.charCodeAt(i)\n }\n return result === 0\n }\n\n static isLegacyHash(storedHash: string): boolean {\n return !storedHash.startsWith('pbkdf2:')\n }\n\n /**\n * Set authentication cookie - useful for plugins implementing alternative auth methods\n * @param c - Hono context\n * @param token - JWT token to set in cookie\n * @param options - Optional cookie configuration\n */\n static setAuthCookie(c: Context, token: string, options?: {\n maxAge?: number\n secure?: boolean\n httpOnly?: boolean\n sameSite?: 'Strict' | 'Lax' | 'None'\n }): void {\n setCookie(c, 'auth_token', token, {\n httpOnly: options?.httpOnly ?? true,\n secure: options?.secure ?? true,\n sameSite: options?.sameSite ?? 'Strict',\n maxAge: options?.maxAge ?? getJwtExpirySeconds((c as any)?.env)\n })\n }\n}\n\n// Middleware to require authentication\nexport const requireAuth = () => {\n return async (c: Context, next: Next) => {\n try {\n // Try to get token from Authorization header\n let token = c.req.header('Authorization')?.replace('Bearer ', '')\n\n // If no header token, try cookie\n if (!token) {\n token = getCookie(c, 'auth_token')\n }\n\n if (!token) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Please login to access the admin area')\n }\n return c.json({ error: 'Authentication required' }, 401)\n }\n\n // Try to get cached token verification from KV\n const kv = c.env?.KV\n let payload: JWTPayload | null = null\n\n if (kv) {\n const cacheKey = `auth:${token.substring(0, 20)}` // Use token prefix as key\n const cached = await kv.get(cacheKey, 'json')\n if (cached) {\n payload = cached as JWTPayload\n }\n }\n\n // If not cached, verify token\n if (!payload) {\n const jwtSecret = (c.env as any)?.JWT_SECRET\n payload = await AuthManager.verifyToken(token, jwtSecret)\n\n // Cache the verified payload for 5 minutes\n if (payload && kv) {\n const cacheKey = `auth:${token.substring(0, 20)}`\n await kv.put(cacheKey, JSON.stringify(payload), { expirationTtl: 300 })\n }\n }\n\n if (!payload) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Your session has expired, please login again')\n }\n return c.json({ error: 'Invalid or expired token' }, 401)\n }\n\n // Add user info to context\n c.set('user', payload)\n\n return await next()\n } catch (error) {\n console.error('Auth middleware error:', error)\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Authentication failed, please login again')\n }\n return c.json({ error: 'Authentication failed' }, 401)\n }\n }\n}\n\n// Middleware to require specific role\nexport const requireRole = (requiredRole: string | string[]) => {\n return async (c: Context, next: Next) => {\n const user = c.get('user') as JWTPayload\n \n if (!user) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=Please login to access the admin area')\n }\n return c.json({ error: 'Authentication required' }, 401)\n }\n \n const roles = Array.isArray(requiredRole) ? requiredRole : [requiredRole]\n \n if (!roles.includes(user.role)) {\n // Check if this is a browser request (HTML accept header)\n const acceptHeader = c.req.header('Accept') || ''\n if (acceptHeader.includes('text/html')) {\n return c.redirect('/auth/login?error=You do not have permission to access this area')\n }\n return c.json({ error: 'Insufficient permissions' }, 403)\n }\n \n return await next()\n }\n}\n\n// Optional auth middleware (doesn't block if no token)\nexport const optionalAuth = () => {\n return async (c: Context, next: Next) => {\n try {\n let token = c.req.header('Authorization')?.replace('Bearer ', '')\n \n if (!token) {\n token = getCookie(c, 'auth_token')\n }\n \n if (token) {\n const jwtSecret = (c.env as any)?.JWT_SECRET\n const payload = await AuthManager.verifyToken(token, jwtSecret)\n if (payload) {\n c.set('user', payload)\n }\n }\n \n return await next()\n } catch (error) {\n // Don't block on auth errors in optional auth\n console.error('Optional auth error:', error)\n return await next()\n }\n }\n}\n","import { MiddlewareHandler } from 'hono'\nimport { metricsTracker } from '../utils/metrics'\n\n/**\n * Middleware to track all HTTP requests for real-time analytics\n * Excludes the metrics endpoint itself to avoid inflating the count\n */\nexport const metricsMiddleware = (): MiddlewareHandler => {\n return async (c, next) => {\n const path = new URL(c.req.url).pathname\n\n // Don't track the metrics endpoint itself to avoid self-inflating counts\n if (path !== '/admin/dashboard/api/metrics') {\n metricsTracker.recordRequest()\n }\n\n // Continue with the request\n await next()\n }\n}\n","/**\n * CSRF Protection Middleware — Signed Double-Submit Cookie\n *\n * Stateless CSRF protection for Cloudflare Workers (no session store needed).\n * Token format: `.` where HMAC-SHA256 is keyed with JWT_SECRET.\n *\n * Flow:\n * GET — ensureCsrfCookie(): reuse existing valid cookie or set a new one\n * POST/PUT/DELETE/PATCH — validate X-CSRF-Token header === csrf_token cookie, HMAC valid\n *\n * Exempt:\n * - Safe methods (GET, HEAD, OPTIONS)\n * - Auth routes that create sessions (/auth/login*, /auth/register*, etc.)\n * - Public form submissions (/forms/*, /api/forms/*) — NOT /admin/forms/*\n * - Requests with no auth_token cookie (Bearer-only or API-key-only)\n */\n\nimport type { Context, Next } from 'hono'\nimport { getCookie, setCookie } from 'hono/cookie'\n\n// Fallback secret — mirrors auth.ts behavior for local dev without wrangler secret\nconst JWT_SECRET_FALLBACK = 'your-super-secret-jwt-key-change-in-production'\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/** Convert ArrayBuffer to URL-safe base64 (no padding). */\nexport function arrayBufferToBase64Url(buffer: ArrayBuffer): string {\n const bytes = new Uint8Array(buffer)\n let binary = ''\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]!)\n }\n return btoa(binary).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n}\n\n/** Import a string key for HMAC-SHA256. */\nasync function getHmacKey(secret: string): Promise {\n const encoder = new TextEncoder()\n return crypto.subtle.importKey(\n 'raw',\n encoder.encode(secret),\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign', 'verify']\n )\n}\n\n// ============================================================================\n// Token Generation & Validation\n// ============================================================================\n\n/**\n * Generate a signed CSRF token: `.`\n * - nonce = 32 random bytes, base64url-encoded\n * - signature = HMAC-SHA256(nonce, secret), base64url-encoded\n */\nexport async function generateCsrfToken(secret: string): Promise {\n const nonceBytes = new Uint8Array(32)\n crypto.getRandomValues(nonceBytes)\n const nonce = arrayBufferToBase64Url(nonceBytes.buffer)\n\n const key = await getHmacKey(secret)\n const encoder = new TextEncoder()\n const signatureBuffer = await crypto.subtle.sign('HMAC', key, encoder.encode(nonce))\n const signature = arrayBufferToBase64Url(signatureBuffer)\n\n return `${nonce}.${signature}`\n}\n\n/**\n * Validate a signed CSRF token.\n *\n * Checks that the token has the correct `.` format and that\n * the HMAC signature is valid for the given secret. Uses crypto.subtle.verify\n * which provides constant-time comparison.\n *\n * NOTE: No expiry check here — by design. The security property of signed\n * double-submit comes from the unpredictability of the nonce + the\n * secret-bound HMAC, not from time-bounding. The cookie's maxAge (86400s)\n * handles expiry at the browser level.\n */\nexport async function validateCsrfToken(token: string, secret: string): Promise {\n if (!token || typeof token !== 'string') return false\n\n const dotIndex = token.indexOf('.')\n if (dotIndex === -1) return false\n\n const nonce = token.substring(0, dotIndex)\n const signature = token.substring(dotIndex + 1)\n\n if (!nonce || !signature) return false\n\n try {\n const key = await getHmacKey(secret)\n const encoder = new TextEncoder()\n\n // Decode the signature from base64url\n const sigPadded = signature.replace(/-/g, '+').replace(/_/g, '/')\n const sigBinary = atob(sigPadded)\n const sigBytes = new Uint8Array(sigBinary.length)\n for (let i = 0; i < sigBinary.length; i++) {\n sigBytes[i] = sigBinary.charCodeAt(i)\n }\n\n // crypto.subtle.verify is constant-time\n return await crypto.subtle.verify('HMAC', key, sigBytes.buffer, encoder.encode(nonce))\n } catch {\n return false\n }\n}\n\n// ============================================================================\n// Default Exempt Paths\n// ============================================================================\n\nconst DEFAULT_EXEMPT_PATHS = [\n '/auth/login',\n '/auth/register',\n '/auth/seed-admin',\n '/auth/accept-invitation',\n '/auth/reset-password',\n '/auth/request-password-reset',\n '/auth/otp',\n '/auth/magic-link',\n '/auth/verify',\n '/api/stripe/webhook',\n '/api/events',\n]\n\n/**\n * Check whether a request path is exempt from CSRF validation.\n * - Exact match or startsWith for auth routes (e.g. /auth/login/form)\n * - /forms/* and /api/forms/* are exempt (public submissions)\n * - /api/search* is exempt (read-only POST for complex query params)\n * - /admin/forms/* is NOT exempt\n */\nfunction isExemptPath(path: string, extraExemptPaths: string[] = []): boolean {\n // Public form routes — NOT /admin/forms/*\n if (path.startsWith('/forms/') || path.startsWith('/api/forms/') || path === '/forms' || path === '/api/forms') {\n return true\n }\n\n // Search API — read-only POST (includes /api/search/click, /api/search/facet-click)\n if (path.startsWith('/api/search')) {\n return true\n }\n\n const allExempt = [...DEFAULT_EXEMPT_PATHS, ...extraExemptPaths]\n for (const exempt of allExempt) {\n if (path === exempt || path.startsWith(exempt + '/')) {\n return true\n }\n }\n\n return false\n}\n\n// ============================================================================\n// Middleware\n// ============================================================================\n\nexport interface CsrfOptions {\n /** Additional paths to exempt from CSRF validation. */\n exemptPaths?: string[]\n}\n\n/**\n * CSRF protection middleware (Signed Double-Submit Cookie).\n *\n * - GET/HEAD/OPTIONS: ensure a valid csrf_token cookie exists\n * - POST/PUT/DELETE/PATCH: validate X-CSRF-Token header matches cookie, HMAC valid\n * - Exempt: auth routes, public /forms/*, Bearer-only, API-key-only\n */\nexport function csrfProtection(options: CsrfOptions = {}) {\n return async (c: Context, next: Next): Promise => {\n const method = c.req.method.toUpperCase()\n const path = new URL(c.req.url).pathname\n const secret = c.env?.JWT_SECRET || JWT_SECRET_FALLBACK\n\n // Warn if using fallback secret in production\n if (c.env?.ENVIRONMENT === 'production' && !c.env?.JWT_SECRET) {\n console.warn(\n '[CSRF] WARNING: JWT_SECRET is not set in production. ' +\n 'CSRF tokens are signed with the fallback key, which is insecure.'\n )\n }\n\n // Safe methods — just ensure cookie, then pass through\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS') {\n await ensureCsrfCookie(c, secret)\n await next()\n return\n }\n\n // Exempt paths — pass through without validation\n if (isExemptPath(path, options.exemptPaths)) {\n await next()\n return\n }\n\n // Bearer-only or API-key-only requests (no auth_token cookie) — exempt\n const authCookie = getCookie(c, 'auth_token')\n if (!authCookie) {\n await next()\n return\n }\n\n // Requests with an Authorization header use token-based auth — the cookie\n // is incidental and CSRF protection is unnecessary (the attacker cannot\n // forge the Authorization header from a cross-origin page).\n const authHeader = c.req.header('Authorization')\n if (authHeader) {\n await next()\n return\n }\n\n // State-changing request with cookie auth — validate CSRF\n const cookieToken = getCookie(c, 'csrf_token')\n let headerToken = c.req.header('X-CSRF-Token')\n\n // Fallback: check _csrf field in form-encoded body (regular HTML form submissions)\n if (!headerToken) {\n const contentType = c.req.header('Content-Type') || ''\n if (contentType.includes('application/x-www-form-urlencoded') || contentType.includes('multipart/form-data')) {\n try {\n const body = await c.req.parseBody()\n headerToken = body['_csrf'] as string | undefined\n } catch {\n // Body not parseable — leave headerToken undefined\n }\n }\n }\n\n if (!cookieToken || !headerToken) {\n return csrfError(c, 'CSRF token missing')\n }\n\n if (cookieToken !== headerToken) {\n return csrfError(c, 'CSRF token mismatch')\n }\n\n const isValid = await validateCsrfToken(cookieToken, secret)\n if (!isValid) {\n return csrfError(c, 'CSRF token invalid')\n }\n\n await next()\n }\n}\n\n/**\n * Ensure a valid CSRF cookie exists. Check-then-reuse: if the existing cookie\n * has a valid HMAC signature, reuse it (no new Set-Cookie header). Only\n * generate a fresh token when the cookie is missing or has an invalid signature.\n */\nasync function ensureCsrfCookie(c: Context, secret: string): Promise {\n const existing = getCookie(c, 'csrf_token')\n\n if (existing) {\n const isValid = await validateCsrfToken(existing, secret)\n if (isValid) {\n // Reuse existing valid token — no Set-Cookie needed\n c.set('csrfToken', existing)\n return\n }\n }\n\n // Generate fresh token\n const token = await generateCsrfToken(secret)\n c.set('csrfToken', token)\n\n const isDev = c.env?.ENVIRONMENT === 'development' || !c.env?.ENVIRONMENT\n setCookie(c, 'csrf_token', token, {\n httpOnly: false, // JS must read this cookie\n secure: !isDev,\n sameSite: 'Strict',\n path: '/',\n maxAge: 86400, // 24 hours — browser-side expiry\n })\n}\n\n/** Return a 403 CSRF error — HTML for browser requests, JSON for API. */\nfunction csrfError(c: Context, message: string): Response {\n const accept = c.req.header('Accept') || ''\n if (accept.includes('text/html')) {\n return c.html(\n `403 Forbidden` +\n `
403 Forbidden
${message}
`,\n 403\n )\n }\n return c.json({ error: message, status: 403 }, 403)\n}\n","import { Context, Next } from 'hono'\n\ninterface RateLimitOptions {\n max: number\n windowMs: number\n keyPrefix: string\n}\n\ninterface RateLimitEntry {\n count: number\n resetAt: number\n}\n\n/**\n * KV-based sliding window rate limiter middleware.\n * Gracefully skips if CACHE_KV binding is not available.\n */\nexport function rateLimit(options: RateLimitOptions) {\n const { max, windowMs, keyPrefix } = options\n\n return async (c: Context, next: Next) => {\n const kv = (c.env as any)?.CACHE_KV\n if (!kv) {\n // No KV binding available — skip rate limiting\n return await next()\n }\n\n const ip = c.req.header('cf-connecting-ip') || c.req.header('x-forwarded-for') || 'unknown'\n const key = `ratelimit:${keyPrefix}:${ip}`\n\n try {\n const now = Date.now()\n const stored = await kv.get(key, 'json') as RateLimitEntry | null\n\n let entry: RateLimitEntry\n if (stored && stored.resetAt > now) {\n entry = stored\n } else {\n entry = { count: 0, resetAt: now + windowMs }\n }\n\n entry.count++\n\n // Calculate TTL in seconds (KV expiration)\n const ttlSeconds = Math.ceil((entry.resetAt - now) / 1000)\n\n if (entry.count > max) {\n // Store the updated count even when rejecting\n await kv.put(key, JSON.stringify(entry), { expirationTtl: Math.max(ttlSeconds, 60) })\n\n const retryAfter = Math.ceil((entry.resetAt - now) / 1000)\n c.header('Retry-After', String(retryAfter))\n c.header('X-RateLimit-Limit', String(max))\n c.header('X-RateLimit-Remaining', '0')\n c.header('X-RateLimit-Reset', String(Math.ceil(entry.resetAt / 1000)))\n return c.json({ error: 'Too many requests. Please try again later.' }, 429)\n }\n\n await kv.put(key, JSON.stringify(entry), { expirationTtl: Math.max(ttlSeconds, 60) })\n\n c.header('X-RateLimit-Limit', String(max))\n c.header('X-RateLimit-Remaining', String(max - entry.count))\n c.header('X-RateLimit-Reset', String(Math.ceil(entry.resetAt / 1000)))\n\n return await next()\n } catch (error) {\n // Rate limiting should never break the app\n console.error('Rate limiter error (non-fatal):', error)\n return await next()\n }\n }\n}\n","import { Context, Next } from 'hono'\n\n/**\n * Security headers middleware.\n * Sets standard security headers on every response.\n * Skips HSTS in development to avoid local dev issues.\n */\nexport const securityHeadersMiddleware = () => {\n return async (c: Context, next: Next) => {\n await next()\n\n c.header('X-Content-Type-Options', 'nosniff')\n c.header('X-Frame-Options', 'SAMEORIGIN')\n c.header('Referrer-Policy', 'strict-origin-when-cross-origin')\n c.header('Permissions-Policy', 'camera=(), microphone=(), geolocation=()')\n\n // Only set HSTS in non-development environments\n const environment = (c.env as any)?.ENVIRONMENT\n if (environment !== 'development') {\n c.header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains')\n }\n }\n}\n","/**\n * Middleware Module Exports\n *\n * Request processing middleware for SonicJS\n *\n * Note: Most middleware is currently in the monolith and will be migrated later.\n * For now, we only export the bootstrap middleware which is used for system initialization.\n */\n\n// Bootstrap middleware\nexport { bootstrapMiddleware, verifySecurityConfig } from './bootstrap'\n\n// Auth middleware\nexport {\n AuthManager,\n requireAuth,\n requireRole,\n optionalAuth,\n getJwtExpirySeconds,\n getJwtExpirySecondsFromDb,\n getJwtRefreshGraceSecondsFromDb,\n} from './auth'\n\n// Metrics middleware\nexport { metricsMiddleware } from './metrics'\n\n// CSRF protection middleware\nexport { csrfProtection, generateCsrfToken, validateCsrfToken } from './csrf'\n\n// Rate limiting middleware\nexport { rateLimit } from './rate-limit'\n\n// Re-export types and functions that are referenced but implemented in monolith\n// These are placeholder exports to maintain API compatibility\nexport type Permission = string\nexport type UserPermissions = {\n userId: string\n permissions: Permission[]\n}\n\n// Middleware stubs - these return pass-through middleware that call next()\nexport const loggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const detailedLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const securityLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const performanceLoggingMiddleware: any = () => async (_c: any, next: any) => await next()\nexport const cacheHeaders: any = () => async (_c: any, next: any) => await next()\nexport const compressionMiddleware: any = async (_c: any, next: any) => await next()\nexport { securityHeadersMiddleware as securityHeaders } from './security-headers'\n\n// Other stubs\nexport const PermissionManager: any = {}\nexport const requirePermission: any = () => async (_c: any, next: any) => await next()\nexport const requireAnyPermission: any = () => async (_c: any, next: any) => await next()\nexport const logActivity: any = () => {}\nexport const requireActivePlugin: any = () => async (_c: any, next: any) => await next()\nexport const requireActivePlugins: any = () => async (_c: any, next: any) => await next()\nexport const getActivePlugins: any = () => []\nexport const isPluginActive: any = () => false\n"]}
\ No newline at end of file
diff --git a/packages/core/dist/chunk-QOZZJZ76.cjs b/packages/core/dist/chunk-656GGECX.cjs
similarity index 99%
rename from packages/core/dist/chunk-QOZZJZ76.cjs
rename to packages/core/dist/chunk-656GGECX.cjs
index e233a25e0..90b8a6a00 100644
--- a/packages/core/dist/chunk-QOZZJZ76.cjs
+++ b/packages/core/dist/chunk-656GGECX.cjs
@@ -1802,5 +1802,5 @@ exports.syncCollection = syncCollection;
exports.syncCollections = syncCollections;
exports.syncFormCollection = syncFormCollection;
exports.validateCollectionConfig = validateCollectionConfig;
-//# sourceMappingURL=chunk-QOZZJZ76.cjs.map
-//# sourceMappingURL=chunk-QOZZJZ76.cjs.map
\ No newline at end of file
+//# sourceMappingURL=chunk-656GGECX.cjs.map
+//# sourceMappingURL=chunk-656GGECX.cjs.map
\ No newline at end of file
diff --git a/packages/core/dist/chunk-QOZZJZ76.cjs.map b/packages/core/dist/chunk-656GGECX.cjs.map
similarity index 99%
rename from packages/core/dist/chunk-QOZZJZ76.cjs.map
rename to packages/core/dist/chunk-656GGECX.cjs.map
index 13bd928b4..7f5b5d76f 100644
--- a/packages/core/dist/chunk-QOZZJZ76.cjs.map
+++ b/packages/core/dist/chunk-656GGECX.cjs.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/services/collection-loader.ts","../src/services/collection-sync.ts","../src/services/form-collection-sync.ts","../src/services/plugin-service.ts","../src/plugins/manifest-registry.ts","../src/services/plugin-bootstrap.ts"],"names":[],"mappings":"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","file":"chunk-QOZZJZ76.cjs","sourcesContent":["/**\n * Collection Loader Service\n *\n * Loads collection configuration files from the collections directory.\n * Supports both development (reading from filesystem) and production (bundled).\n */\n\nimport { CollectionConfig, CollectionConfigModule } from '../types/collection-config'\n\n// Global registry for externally registered collections\nconst registeredCollections: CollectionConfig[] = []\n\n/**\n * Register collections from the application code\n * This should be called before creating the app\n */\nexport function registerCollections(collections: CollectionConfig[]): void {\n for (const config of collections) {\n // Validate required fields\n if (!config.name || !config.displayName || !config.schema) {\n console.error(`Invalid collection config: missing required fields`, config)\n continue\n }\n\n // Set defaults\n const normalizedConfig: CollectionConfig = {\n ...config,\n managed: config.managed !== undefined ? config.managed : true,\n isActive: config.isActive !== undefined ? config.isActive : true\n }\n\n registeredCollections.push(normalizedConfig)\n console.log(`✓ Registered collection: ${config.name}`)\n }\n}\n\n/**\n * Load all collection configurations from the collections directory\n */\nexport async function loadCollectionConfigs(): Promise {\n const collections: CollectionConfig[] = [...registeredCollections]\n\n // Log registered collections summary\n if (registeredCollections.length > 0) {\n console.log(`📦 Found ${registeredCollections.length} registered collection(s) from application`)\n } else {\n console.log(`⚠️ No collections registered. Make sure to call registerCollections() in your app's index.ts`)\n console.log(` Example: import myCollection from './collections/my-collection.collection'`)\n console.log(` registerCollections([myCollection])`)\n }\n\n try {\n // Import all collection files dynamically from core package\n // In production, these will be bundled with the application\n const modules = (import.meta as any).glob?.('../collections/*.collection.ts', { eager: true }) || {}\n let coreCollectionCount = 0\n\n for (const [path, module] of Object.entries(modules)) {\n try {\n const configModule = module as CollectionConfigModule\n\n if (!configModule.default) {\n console.warn(`Collection file ${path} does not export a default config`)\n continue\n }\n\n const config = configModule.default\n\n // Validate required fields\n if (!config.name || !config.displayName || !config.schema) {\n console.error(`Invalid collection config in ${path}: missing required fields`)\n continue\n }\n\n // Set defaults\n const normalizedConfig: CollectionConfig = {\n ...config,\n managed: config.managed !== undefined ? config.managed : true,\n isActive: config.isActive !== undefined ? config.isActive : true\n }\n\n collections.push(normalizedConfig)\n coreCollectionCount++\n console.log(`✓ Loaded core collection: ${config.name}`)\n } catch (error) {\n console.error(`Error loading collection from ${path}:`, error)\n }\n }\n\n console.log(`📊 Collection summary: ${collections.length} total (${registeredCollections.length} from app, ${coreCollectionCount} from core)`)\n return collections\n } catch (error) {\n console.error('Error loading collection configurations:', error)\n return collections // Return registered collections even if core loading fails\n }\n}\n\n/**\n * Load a specific collection configuration by name\n * Note: This function requires implementation in the consuming application\n * as it depends on project-specific collection files\n */\nexport async function loadCollectionConfig(name: string): Promise {\n try {\n // Dynamic imports are not supported in library builds\n // This should be implemented in the consuming application\n console.warn('loadCollectionConfig requires implementation in consuming application')\n return null\n } catch (error) {\n console.error(`Error loading collection ${name}:`, error)\n return null\n }\n}\n\n/**\n * Get list of all available collection config file names\n */\nexport async function getAvailableCollectionNames(): Promise {\n try {\n const modules = (import.meta as any).glob?.('../collections/*.collection.ts') || {}\n const names: string[] = []\n\n for (const path of Object.keys(modules)) {\n // Extract collection name from path\n // e.g., '../collections/blog-posts.collection.ts' -> 'blog-posts'\n const match = path.match(/\\/([^/]+)\\.collection\\.ts$/)\n if (match && match[1]) {\n names.push(match[1])\n }\n }\n\n return names\n } catch (error) {\n console.error('Error getting collection names:', error)\n return []\n }\n}\n\n/**\n * Validate a collection configuration\n */\nexport function validateCollectionConfig(config: CollectionConfig): { valid: boolean; errors: string[] } {\n const errors: string[] = []\n\n // Required fields\n if (!config.name) {\n errors.push('Collection name is required')\n } else if (!/^[a-z0-9_-]+$/.test(config.name)) {\n errors.push('Collection name must contain only lowercase letters, numbers, underscores, and hyphens')\n }\n\n if (!config.displayName) {\n errors.push('Display name is required')\n }\n\n if (!config.schema) {\n errors.push('Schema is required')\n } else {\n // Validate schema structure\n if (config.schema.type !== 'object') {\n errors.push('Schema type must be \"object\"')\n }\n\n if (!config.schema.properties || typeof config.schema.properties !== 'object') {\n errors.push('Schema must have properties')\n }\n\n // Validate field types\n for (const [fieldName, fieldConfig] of Object.entries(config.schema.properties || {})) {\n if (!fieldConfig.type) {\n errors.push(`Field \"${fieldName}\" is missing type`)\n }\n\n // Validate reference fields\n if (fieldConfig.type === 'reference' && !fieldConfig.collection) {\n errors.push(`Reference field \"${fieldName}\" is missing collection property`)\n }\n\n const layoutValue = fieldConfig.objectLayout\n if (layoutValue !== undefined) {\n if (fieldConfig.type !== 'object') {\n errors.push(`Field \"${fieldName}\" uses objectLayout but is not an object field`)\n } else if (!['nested', 'flat'].includes(layoutValue)) {\n errors.push(`Object field \"${fieldName}\" has invalid objectLayout. Use \"nested\" or \"flat\"`)\n }\n }\n\n // Validate select fields\n if (['select', 'multiselect', 'radio'].includes(fieldConfig.type) && !fieldConfig.enum) {\n errors.push(`Select field \"${fieldName}\" is missing enum options`)\n }\n }\n }\n\n return {\n valid: errors.length === 0,\n errors\n }\n}\n","/**\n * Collection Sync Service\n *\n * Syncs collection configurations from code to the database.\n * Handles create, update, and validation of config-managed collections.\n */\n\nimport { CollectionConfig, CollectionSyncResult } from '../types/collection-config'\nimport { loadCollectionConfigs, validateCollectionConfig } from './collection-loader'\n\n/**\n * Sync all collection configurations to the database\n */\nexport async function syncCollections(db: D1Database): Promise {\n console.log('🔄 Starting collection sync...')\n\n const results: CollectionSyncResult[] = []\n const configs = await loadCollectionConfigs()\n\n if (configs.length === 0) {\n console.log('⚠️ No collection configurations found')\n return results\n }\n\n for (const config of configs) {\n const result = await syncCollection(db, config)\n results.push(result)\n }\n\n const created = results.filter(r => r.status === 'created').length\n const updated = results.filter(r => r.status === 'updated').length\n const unchanged = results.filter(r => r.status === 'unchanged').length\n const errors = results.filter(r => r.status === 'error').length\n\n console.log(`✅ Collection sync complete: ${created} created, ${updated} updated, ${unchanged} unchanged, ${errors} errors`)\n\n return results\n}\n\n/**\n * Sync a single collection configuration to the database\n */\nexport async function syncCollection(db: D1Database, config: CollectionConfig): Promise {\n try {\n // Validate config\n const validation = validateCollectionConfig(config)\n if (!validation.valid) {\n return {\n name: config.name,\n status: 'error',\n error: `Validation failed: ${validation.errors.join(', ')}`\n }\n }\n\n // Check if collection exists\n const existingStmt = db.prepare('SELECT * FROM collections WHERE name = ?')\n const existing = await existingStmt.bind(config.name).first() as any\n\n const now = Date.now()\n const collectionId = existing?.id || `col-${config.name}-${crypto.randomUUID().slice(0, 8)}`\n\n // Prepare collection data\n const schemaJson = JSON.stringify(config.schema)\n const isActive = config.isActive !== false ? 1 : 0\n const managed = config.managed !== false ? 1 : 0\n\n if (!existing) {\n // Create new collection\n const insertStmt = db.prepare(`\n INSERT INTO collections (id, name, display_name, description, schema, is_active, managed, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n\n await insertStmt.bind(\n collectionId,\n config.name,\n config.displayName,\n config.description || null,\n schemaJson,\n isActive,\n managed,\n now,\n now\n ).run()\n\n console.log(` ✓ Created collection: ${config.name}`)\n\n return {\n name: config.name,\n status: 'created',\n message: `Created collection \"${config.displayName}\"`\n }\n } else {\n // Check if update is needed\n const existingSchema = existing.schema ? JSON.stringify(existing.schema) : '{}'\n const existingDisplayName = existing.display_name\n const existingDescription = existing.description\n const existingIsActive = existing.is_active\n const existingManaged = existing.managed\n\n const needsUpdate =\n schemaJson !== existingSchema ||\n config.displayName !== existingDisplayName ||\n (config.description || null) !== existingDescription ||\n isActive !== existingIsActive ||\n managed !== existingManaged\n\n if (!needsUpdate) {\n return {\n name: config.name,\n status: 'unchanged',\n message: `Collection \"${config.displayName}\" is up to date`\n }\n }\n\n // Update existing collection\n const updateStmt = db.prepare(`\n UPDATE collections\n SET display_name = ?, description = ?, schema = ?, is_active = ?, managed = ?, updated_at = ?\n WHERE name = ?\n `)\n\n await updateStmt.bind(\n config.displayName,\n config.description || null,\n schemaJson,\n isActive,\n managed,\n now,\n config.name\n ).run()\n\n console.log(` ✓ Updated collection: ${config.name}`)\n\n return {\n name: config.name,\n status: 'updated',\n message: `Updated collection \"${config.displayName}\"`\n }\n }\n } catch (error) {\n console.error(` ✗ Error syncing collection ${config.name}:`, error)\n\n return {\n name: config.name,\n status: 'error',\n error: error instanceof Error ? error.message : 'Unknown error'\n }\n }\n}\n\n/**\n * Check if a collection is managed by config\n */\nexport async function isCollectionManaged(db: D1Database, collectionName: string): Promise {\n try {\n const stmt = db.prepare('SELECT managed FROM collections WHERE name = ?')\n const result = await stmt.bind(collectionName).first() as any\n\n return result?.managed === 1\n } catch (error) {\n console.error(`Error checking if collection is managed:`, error)\n return false\n }\n}\n\n/**\n * Get all managed collections from database\n */\nexport async function getManagedCollections(db: D1Database): Promise {\n try {\n const stmt = db.prepare('SELECT name FROM collections WHERE managed = 1')\n const { results } = await stmt.all()\n\n return (results || []).map((row: any) => row.name)\n } catch (error) {\n console.error('Error getting managed collections:', error)\n return []\n }\n}\n\n/**\n * Remove collections that are no longer in config files\n * (Only removes managed collections that aren't in the config)\n */\nexport async function cleanupRemovedCollections(db: D1Database): Promise {\n try {\n const configs = await loadCollectionConfigs()\n const configNames = new Set(configs.map(c => c.name))\n const managedCollections = await getManagedCollections(db)\n const removed: string[] = []\n\n for (const managedName of managedCollections) {\n if (!configNames.has(managedName)) {\n // This managed collection no longer has a config file\n // Mark as inactive instead of deleting (safer)\n const updateStmt = db.prepare(`\n UPDATE collections\n SET is_active = 0, updated_at = ?\n WHERE name = ? AND managed = 1\n `)\n\n await updateStmt.bind(Date.now(), managedName).run()\n removed.push(managedName)\n console.log(` ⚠️ Deactivated removed collection: ${managedName}`)\n }\n }\n\n return removed\n } catch (error) {\n console.error('Error cleaning up removed collections:', error)\n return []\n }\n}\n\n/**\n * Full sync: sync all configs and cleanup removed\n */\nexport async function fullCollectionSync(db: D1Database): Promise<{\n results: CollectionSyncResult[]\n removed: string[]\n}> {\n const results = await syncCollections(db)\n const removed = await cleanupRemovedCollections(db)\n\n return { results, removed }\n}\n","/**\n * Form-Collection Sync Service\n *\n * Bridge logic that creates \"shadow collections\" for forms and\n * dual-writes form submissions to the content table, enabling\n * unified content management for form submissions.\n */\n\nconst SYSTEM_FORM_USER_ID = 'system-form-submission'\n\n/**\n * Convert Form.io component type to collection schema field type\n */\nfunction mapFormioTypeToSchemaType(component: any): { type: string; [key: string]: any } {\n switch (component.type) {\n case 'textfield':\n case 'textarea':\n case 'password':\n case 'phoneNumber':\n case 'url':\n return { type: 'string', title: component.label || component.key }\n case 'email':\n return { type: 'string', format: 'email', title: component.label || component.key }\n case 'number':\n case 'currency':\n return { type: 'number', title: component.label || component.key }\n case 'checkbox':\n return { type: 'boolean', title: component.label || component.key }\n case 'select':\n case 'radio': {\n const enumValues = (component.data?.values || component.values || []).map((v: any) => v.value)\n const enumLabels = (component.data?.values || component.values || []).map((v: any) => v.label)\n return {\n type: 'select',\n title: component.label || component.key,\n enum: enumValues,\n enumLabels\n }\n }\n case 'selectboxes':\n return { type: 'object', title: component.label || component.key }\n case 'datetime':\n case 'day':\n case 'time':\n return { type: 'string', format: 'date-time', title: component.label || component.key }\n case 'file':\n case 'signature':\n return { type: 'string', title: component.label || component.key }\n case 'address':\n return { type: 'object', title: component.label || component.key }\n case 'hidden':\n return { type: 'string', title: component.label || component.key }\n default:\n return { type: 'string', title: component.label || component.key }\n }\n}\n\n/**\n * Recursively extract field components from a Form.io schema,\n * skipping layout-only components (panels, columns, fieldsets, etc.)\n */\nfunction extractFieldComponents(components: any[]): any[] {\n const fields: any[] = []\n if (!components) return fields\n\n for (const comp of components) {\n // Layout components — recurse into children\n if (comp.type === 'panel' || comp.type === 'fieldset' || comp.type === 'well' || comp.type === 'tabs') {\n if (comp.components) {\n fields.push(...extractFieldComponents(comp.components))\n }\n continue\n }\n if (comp.type === 'columns' && comp.columns) {\n for (const col of comp.columns) {\n if (col.components) {\n fields.push(...extractFieldComponents(col.components))\n }\n }\n continue\n }\n if (comp.type === 'table' && comp.rows) {\n for (const row of comp.rows) {\n if (Array.isArray(row)) {\n for (const cell of row) {\n if (cell.components) {\n fields.push(...extractFieldComponents(cell.components))\n }\n }\n }\n }\n continue\n }\n // Skip buttons and non-input layout elements\n if (comp.type === 'button' || comp.type === 'htmlelement' || comp.type === 'content') {\n continue\n }\n // Skip turnstile (not data)\n if (comp.type === 'turnstile') {\n continue\n }\n // It's a real field\n if (comp.key) {\n fields.push(comp)\n }\n // Recurse into sub-components for containers\n if (comp.components) {\n fields.push(...extractFieldComponents(comp.components))\n }\n }\n return fields\n}\n\n/**\n * Convert a Form.io schema into a collection JSON schema definition\n */\nexport function deriveCollectionSchemaFromFormio(formioSchema: any): any {\n const components = formioSchema?.components || []\n const fieldComponents = extractFieldComponents(components)\n\n const properties: Record = {\n // Always include a title field for the content item\n title: { type: 'string', title: 'Title', required: true }\n }\n const required: string[] = ['title']\n\n for (const comp of fieldComponents) {\n const key = comp.key\n if (!key || key === 'submit' || key === 'title') continue\n const fieldDef = mapFormioTypeToSchemaType(comp)\n if (comp.validate?.required) {\n fieldDef.required = true\n required.push(key)\n }\n properties[key] = fieldDef\n }\n\n return { type: 'object', properties, required }\n}\n\n/**\n * Derive a human-readable title from form submission data\n */\nexport function deriveSubmissionTitle(data: Record, formDisplayName: string): string {\n // Try common fields in order of preference\n const candidates = ['name', 'fullName', 'full_name', 'firstName', 'first_name']\n for (const key of candidates) {\n if (data[key] && typeof data[key] === 'string' && data[key].trim()) {\n // Append last name if available\n if (key === 'firstName' || key === 'first_name') {\n const last = data['lastName'] || data['last_name'] || data['lastname'] || ''\n if (last) return `${data[key].trim()} ${last.trim()}`\n }\n return data[key].trim()\n }\n }\n // Try email\n if (data.email && typeof data.email === 'string' && data.email.trim()) {\n return data.email.trim()\n }\n // Try subject\n if (data.subject && typeof data.subject === 'string' && data.subject.trim()) {\n return data.subject.trim()\n }\n // Fallback\n const dateStr = new Date().toLocaleDateString('en-US', {\n year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'\n })\n return `${formDisplayName} - ${dateStr}`\n}\n\n/**\n * Map form submission status to content status.\n * Form submissions are complete data — they default to 'published'.\n * Only rejected/spam submissions get demoted.\n */\nexport function mapFormStatusToContentStatus(formStatus: string): string {\n switch (formStatus) {\n case 'pending': return 'published'\n case 'reviewed': return 'published'\n case 'approved': return 'published'\n case 'rejected': return 'archived'\n case 'spam': return 'deleted'\n default: return 'published'\n }\n}\n\n/**\n * Create or update a shadow collection for a given form\n */\nexport async function syncFormCollection(db: D1Database, form: {\n id: string\n name: string\n display_name: string\n description?: string | null\n formio_schema: any\n is_active: number | boolean\n}): Promise<{ collectionId: string; status: 'created' | 'updated' | 'unchanged' }> {\n const collectionName = `form_${form.name}`\n const displayName = `${form.display_name} (Form)`\n\n // Parse formio_schema\n const formioSchema = typeof form.formio_schema === 'string'\n ? JSON.parse(form.formio_schema)\n : form.formio_schema\n\n const schema = deriveCollectionSchemaFromFormio(formioSchema)\n const schemaJson = JSON.stringify(schema)\n const now = Date.now()\n const isActive = form.is_active ? 1 : 0\n\n // Check if shadow collection already exists\n const existing = await db.prepare(\n 'SELECT id, schema, display_name, description, is_active FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n\n if (!existing) {\n // Create new shadow collection\n const collectionId = `col-form-${form.name}-${crypto.randomUUID().slice(0, 8)}`\n\n await db.prepare(`\n INSERT INTO collections (id, name, display_name, description, schema, is_active, managed, source_type, source_id, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, 1, 'form', ?, ?, ?)\n `).bind(\n collectionId,\n collectionName,\n displayName,\n form.description || null,\n schemaJson,\n isActive,\n form.id,\n now,\n now\n ).run()\n\n console.log(`[FormSync] Created shadow collection: ${collectionName}`)\n return { collectionId, status: 'created' }\n }\n\n // Check if update needed\n const existingSchema = existing.schema ? JSON.stringify(typeof existing.schema === 'string' ? JSON.parse(existing.schema) : existing.schema) : '{}'\n const needsUpdate =\n schemaJson !== existingSchema ||\n displayName !== existing.display_name ||\n (form.description || null) !== existing.description ||\n isActive !== existing.is_active\n\n if (!needsUpdate) {\n return { collectionId: existing.id, status: 'unchanged' }\n }\n\n await db.prepare(`\n UPDATE collections SET display_name = ?, description = ?, schema = ?, is_active = ?, updated_at = ?\n WHERE id = ?\n `).bind(\n displayName,\n form.description || null,\n schemaJson,\n isActive,\n now,\n existing.id\n ).run()\n\n console.log(`[FormSync] Updated shadow collection: ${collectionName}`)\n return { collectionId: existing.id, status: 'updated' }\n}\n\n/**\n * Sync all active forms to shadow collections\n */\nexport async function syncAllFormCollections(db: D1Database): Promise {\n try {\n // Check if forms table exists\n const tableCheck = await db.prepare(\n \"SELECT name FROM sqlite_master WHERE type='table' AND name='forms'\"\n ).first()\n if (!tableCheck) {\n console.log('[FormSync] Forms table does not exist, skipping form sync')\n return\n }\n\n const { results: forms } = await db.prepare(\n 'SELECT id, name, display_name, description, formio_schema, is_active FROM forms'\n ).all()\n\n if (!forms || forms.length === 0) {\n console.log('[FormSync] No forms found, skipping')\n return\n }\n\n let created = 0\n let updated = 0\n\n for (const form of forms) {\n try {\n const result = await syncFormCollection(db, form as any)\n if (result.status === 'created') created++\n if (result.status === 'updated') updated++\n\n // Backfill existing submissions that don't have content_id\n await backfillFormSubmissions(db, form.id as string, result.collectionId)\n } catch (error) {\n console.error(`[FormSync] Error syncing form ${form.name}:`, error)\n }\n }\n\n console.log(`[FormSync] Sync complete: ${created} created, ${updated} updated out of ${forms.length} forms`)\n } catch (error) {\n console.error('[FormSync] Error syncing form collections:', error)\n }\n}\n\n/**\n * Create a content item from a form submission\n */\nexport async function createContentFromSubmission(\n db: D1Database,\n submissionData: Record,\n form: { id: string; name: string; display_name: string },\n submissionId: string,\n metadata: {\n ipAddress?: string | null\n userAgent?: string | null\n userEmail?: string | null\n userId?: string | null\n } = {}\n): Promise {\n try {\n // Find the shadow collection\n let collection = await db.prepare(\n 'SELECT id FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n\n if (!collection) {\n // Shadow collection missing — try to create it on the fly\n console.warn(`[FormSync] No shadow collection found for form ${form.name}, attempting to create...`)\n try {\n const fullForm = await db.prepare(\n 'SELECT id, name, display_name, description, formio_schema, is_active FROM forms WHERE id = ?'\n ).bind(form.id).first() as any\n\n if (fullForm) {\n const schema = typeof fullForm.formio_schema === 'string'\n ? JSON.parse(fullForm.formio_schema)\n : fullForm.formio_schema\n const result = await syncFormCollection(db, {\n id: fullForm.id,\n name: fullForm.name,\n display_name: fullForm.display_name,\n description: fullForm.description,\n formio_schema: schema,\n is_active: fullForm.is_active ?? 1\n })\n // Re-query the collection\n collection = await db.prepare(\n 'SELECT id FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n console.log(`[FormSync] On-the-fly sync result: ${result.status}, collectionId: ${result.collectionId}`)\n }\n } catch (syncErr) {\n console.error('[FormSync] On-the-fly shadow collection creation failed:', syncErr)\n }\n\n if (!collection) {\n console.error(`[FormSync] Still no shadow collection for form ${form.name} after recovery attempt`)\n return null\n }\n }\n\n const contentId = crypto.randomUUID()\n const now = Date.now()\n\n const title = deriveSubmissionTitle(submissionData, form.display_name)\n const slug = `submission-${submissionId.slice(0, 8)}`\n\n // Build content data with embedded metadata\n const contentData: Record = {\n title,\n ...submissionData,\n _submission_metadata: {\n submissionId,\n formId: form.id,\n formName: form.name,\n email: metadata.userEmail || submissionData.email || null,\n ipAddress: metadata.ipAddress || null,\n userAgent: metadata.userAgent || null,\n submittedAt: now\n }\n }\n\n const authorId = metadata.userId || SYSTEM_FORM_USER_ID\n\n // Ensure the system user exists (D1 enforces foreign keys)\n if (authorId === SYSTEM_FORM_USER_ID) {\n const systemUser = await db.prepare('SELECT id FROM users WHERE id = ?').bind(SYSTEM_FORM_USER_ID).first()\n if (!systemUser) {\n console.log('[FormSync] System form user missing, creating...')\n const sysNow = Date.now()\n await db.prepare(`\n INSERT OR IGNORE INTO users (id, email, username, first_name, last_name, password_hash, role, is_active, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, NULL, 'viewer', 0, ?, ?)\n `).bind(SYSTEM_FORM_USER_ID, 'system-forms@sonicjs.internal', 'system-forms', 'Form', 'Submission', sysNow, sysNow).run()\n }\n }\n\n console.log(`[FormSync] Inserting content: id=${contentId}, collection=${collection.id}, slug=${slug}, title=${title}, author=${authorId}`)\n\n await db.prepare(`\n INSERT INTO content (id, collection_id, slug, title, data, status, author_id, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, 'published', ?, ?, ?)\n `).bind(\n contentId,\n collection.id,\n slug,\n title,\n JSON.stringify(contentData),\n authorId,\n now,\n now\n ).run()\n\n // Link submission to content\n await db.prepare(\n 'UPDATE form_submissions SET content_id = ? WHERE id = ?'\n ).bind(contentId, submissionId).run()\n\n console.log(`[FormSync] Content created successfully: ${contentId}`)\n return contentId\n } catch (error) {\n console.error('[FormSync] Error creating content from submission:', error)\n return null\n }\n}\n\n/**\n * Backfill existing form submissions that don't have a content_id\n */\nexport async function backfillFormSubmissions(\n db: D1Database,\n formId: string,\n collectionId: string\n): Promise {\n try {\n const { results: submissions } = await db.prepare(\n 'SELECT id, submission_data, user_email, ip_address, user_agent, user_id, submitted_at FROM form_submissions WHERE form_id = ? AND content_id IS NULL'\n ).bind(formId).all()\n\n if (!submissions || submissions.length === 0) {\n return 0\n }\n\n // Get form info\n const form = await db.prepare(\n 'SELECT id, name, display_name FROM forms WHERE id = ?'\n ).bind(formId).first() as any\n\n if (!form) return 0\n\n let count = 0\n for (const sub of submissions) {\n try {\n const submissionData = typeof sub.submission_data === 'string'\n ? JSON.parse(sub.submission_data as string)\n : sub.submission_data\n\n const contentId = await createContentFromSubmission(\n db,\n submissionData,\n { id: form.id, name: form.name, display_name: form.display_name },\n sub.id as string,\n {\n ipAddress: sub.ip_address as string | null,\n userAgent: sub.user_agent as string | null,\n userEmail: sub.user_email as string | null,\n userId: sub.user_id as string | null\n }\n )\n if (contentId) count++\n } catch (error) {\n console.error(`[FormSync] Error backfilling submission ${sub.id}:`, error)\n }\n }\n\n if (count > 0) {\n console.log(`[FormSync] Backfilled ${count} submissions for form ${formId}`)\n }\n return count\n } catch (error) {\n console.error('[FormSync] Error backfilling submissions:', error)\n return 0\n }\n}\n","import type { D1Database } from '@cloudflare/workers-types'\n// Note: PLUGIN_REGISTRY and CORE_PLUGIN_IDS are project-specific\n// They should be passed as parameters to the service in the consuming application\n// import { PLUGIN_REGISTRY, CORE_PLUGIN_IDS } from '../plugins/plugin-registry'\n\nexport interface PluginData {\n id: string\n name: string\n display_name: string\n description: string\n version: string\n author: string\n category: string\n icon: string\n status: 'active' | 'inactive' | 'error'\n is_core: boolean\n settings?: any\n permissions?: string[]\n dependencies?: string[]\n download_count: number\n rating: number\n installed_at: number\n activated_at?: number\n last_updated: number\n error_message?: string\n}\n\nexport interface PluginStats {\n total: number\n active: number\n inactive: number\n errors: number\n uninstalled: number\n}\n\nexport class PluginService {\n constructor(private db: D1Database) {}\n\n async getAllPlugins(): Promise {\n // Ensure all plugins from registry exist in database (auto-install if missing)\n await this.ensureAllPluginsExist()\n\n const stmt = this.db.prepare(`\n SELECT * FROM plugins\n ORDER BY is_core DESC, display_name ASC\n `)\n\n const { results } = await stmt.all()\n return (results || []).map(this.mapPluginFromDb)\n }\n\n /**\n * Ensure all plugins from the registry exist in the database\n * Auto-installs any newly detected plugins with inactive status\n *\n * Note: This method should be overridden or configured with a plugin registry\n * in the consuming application\n */\n private async ensureAllPluginsExist(): Promise {\n // This functionality requires a project-specific PLUGIN_REGISTRY\n // In the consuming application, you should pass the registry to this service\n console.log('[PluginService] ensureAllPluginsExist - requires PLUGIN_REGISTRY configuration')\n }\n\n async getPlugin(pluginId: string): Promise {\n const stmt = this.db.prepare('SELECT * FROM plugins WHERE id = ?')\n const plugin = await stmt.bind(pluginId).first()\n \n if (!plugin) return null\n return this.mapPluginFromDb(plugin)\n }\n\n async getPluginByName(name: string): Promise {\n const stmt = this.db.prepare('SELECT * FROM plugins WHERE name = ?')\n const plugin = await stmt.bind(name).first()\n \n if (!plugin) return null\n return this.mapPluginFromDb(plugin)\n }\n\n async getPluginStats(): Promise {\n const stmt = this.db.prepare(`\n SELECT \n COUNT(*) as total,\n COUNT(CASE WHEN status = 'active' THEN 1 END) as active,\n COUNT(CASE WHEN status = 'inactive' THEN 1 END) as inactive,\n COUNT(CASE WHEN status = 'error' THEN 1 END) as errors\n FROM plugins\n `)\n \n const stats = await stmt.first() as any\n return {\n total: stats.total || 0,\n active: stats.active || 0,\n inactive: stats.inactive || 0,\n errors: stats.errors || 0,\n uninstalled: 0\n }\n }\n\n async installPlugin(pluginData: Partial): Promise {\n const id = pluginData.id || `plugin-${Date.now()}`\n const now = Math.floor(Date.now() / 1000)\n \n const stmt = this.db.prepare(`\n INSERT INTO plugins (\n id, name, display_name, description, version, author, category, icon,\n status, is_core, settings, permissions, dependencies, download_count, \n rating, installed_at, last_updated\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id,\n pluginData.name || id,\n pluginData.display_name || 'Unnamed Plugin',\n pluginData.description || '',\n pluginData.version || '1.0.0',\n pluginData.author || 'Unknown',\n pluginData.category || 'utilities',\n pluginData.icon || '🔌',\n 'inactive',\n pluginData.is_core || false,\n JSON.stringify(pluginData.settings || {}),\n JSON.stringify(pluginData.permissions || []),\n JSON.stringify(pluginData.dependencies || []),\n pluginData.download_count || 0,\n pluginData.rating || 0,\n now,\n now\n ).run()\n \n // Log the installation\n await this.logActivity(id, 'installed', null, { version: pluginData.version })\n \n const installed = await this.getPlugin(id)\n if (!installed) throw new Error('Failed to install plugin')\n \n return installed\n }\n\n async uninstallPlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n if (plugin.is_core) throw new Error('Cannot uninstall core plugins')\n \n // First deactivate if active\n if (plugin.status === 'active') {\n await this.deactivatePlugin(pluginId)\n }\n \n // Delete the plugin\n const stmt = this.db.prepare('DELETE FROM plugins WHERE id = ?')\n await stmt.bind(pluginId).run()\n \n // Log the uninstallation\n await this.logActivity(pluginId, 'uninstalled', null, { name: plugin.name })\n }\n\n async activatePlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n // Check dependencies\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n await this.checkDependencies(plugin.dependencies)\n }\n \n const now = Math.floor(Date.now() / 1000)\n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'active', activated_at = ?, error_message = NULL \n WHERE id = ?\n `)\n \n await stmt.bind(now, pluginId).run()\n \n // Log the activation\n await this.logActivity(pluginId, 'activated', null)\n }\n\n async deactivatePlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n // Check if other plugins depend on this one\n await this.checkDependents(plugin.name)\n \n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'inactive', activated_at = NULL \n WHERE id = ?\n `)\n \n await stmt.bind(pluginId).run()\n \n // Log the deactivation\n await this.logActivity(pluginId, 'deactivated', null)\n }\n\n async updatePluginSettings(pluginId: string, settings: any): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n const stmt = this.db.prepare(`\n UPDATE plugins \n SET settings = ?, updated_at = unixepoch() \n WHERE id = ?\n `)\n \n await stmt.bind(JSON.stringify(settings), pluginId).run()\n \n // Log the settings update\n await this.logActivity(pluginId, 'settings_updated', null)\n }\n\n async setPluginError(pluginId: string, error: string): Promise {\n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'error', error_message = ? \n WHERE id = ?\n `)\n \n await stmt.bind(error, pluginId).run()\n \n // Log the error\n await this.logActivity(pluginId, 'error', null, { error })\n }\n\n async getPluginActivity(pluginId: string, limit: number = 10): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_activity_log \n WHERE plugin_id = ? \n ORDER BY timestamp DESC \n LIMIT ?\n `)\n \n const { results } = await stmt.bind(pluginId, limit).all()\n return (results || []).map((row: any) => ({\n id: row.id,\n action: row.action,\n userId: row.user_id,\n details: row.details ? JSON.parse(row.details) : null,\n timestamp: row.timestamp\n }))\n }\n\n async registerHook(pluginId: string, hookName: string, handlerName: string, priority: number = 10): Promise {\n const id = `hook-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_hooks (id, plugin_id, hook_name, handler_name, priority)\n VALUES (?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(id, pluginId, hookName, handlerName, priority).run()\n }\n\n async registerRoute(pluginId: string, path: string, method: string, handlerName: string, middleware?: any[]): Promise {\n const id = `route-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_routes (id, plugin_id, path, method, handler_name, middleware)\n VALUES (?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id, \n pluginId, \n path, \n method, \n handlerName, \n JSON.stringify(middleware || [])\n ).run()\n }\n\n async getPluginHooks(pluginId: string): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_hooks \n WHERE plugin_id = ? AND is_active = TRUE\n ORDER BY priority ASC\n `)\n \n const { results } = await stmt.bind(pluginId).all()\n return results || []\n }\n\n async getPluginRoutes(pluginId: string): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_routes \n WHERE plugin_id = ? AND is_active = TRUE\n `)\n \n const { results } = await stmt.bind(pluginId).all()\n return results || []\n }\n\n private async checkDependencies(dependencies: string[]): Promise {\n for (const dep of dependencies) {\n const plugin = await this.getPluginByName(dep)\n if (!plugin || plugin.status !== 'active') {\n throw new Error(`Required dependency '${dep}' is not active`)\n }\n }\n }\n\n private async checkDependents(pluginName: string): Promise {\n const stmt = this.db.prepare(`\n SELECT id, display_name FROM plugins \n WHERE status = 'active' \n AND dependencies LIKE ?\n `)\n \n const { results } = await stmt.bind(`%\"${pluginName}\"%`).all()\n if (results && results.length > 0) {\n const names = results.map((p: any) => p.display_name).join(', ')\n throw new Error(`Cannot deactivate. The following plugins depend on this one: ${names}`)\n }\n }\n\n private async logActivity(pluginId: string, action: string, userId: string | null, details?: any): Promise {\n const id = `activity-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_activity_log (id, plugin_id, action, user_id, details)\n VALUES (?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id,\n pluginId,\n action,\n userId,\n details ? JSON.stringify(details) : null\n ).run()\n }\n\n private mapPluginFromDb(row: any): PluginData {\n return {\n id: row.id,\n name: row.name,\n display_name: row.display_name,\n description: row.description,\n version: row.version,\n author: row.author,\n category: row.category,\n icon: row.icon,\n status: row.status,\n is_core: row.is_core === 1,\n settings: row.settings ? JSON.parse(row.settings) : undefined,\n permissions: row.permissions ? JSON.parse(row.permissions) : undefined,\n dependencies: row.dependencies ? JSON.parse(row.dependencies) : undefined,\n download_count: row.download_count || 0,\n rating: row.rating || 0,\n installed_at: row.installed_at,\n activated_at: row.activated_at,\n last_updated: row.last_updated,\n error_message: row.error_message\n }\n }\n}\n","/**\n * Plugin Registry - AUTO-GENERATED\n *\n * Generated by: packages/scripts/generate-plugin-registry.mjs\n * Generated at: 2026-05-01T00:32:37.025Z\n * Source: All manifest.json files in src/plugins/\n *\n * DO NOT EDIT MANUALLY - run the generator script instead.\n * To add a new plugin, create a manifest.json in the plugin directory.\n */\n\nexport interface PluginRegistryEntry {\n id: string\n codeName: string\n displayName: string\n description: string\n version: string\n author: string\n category: string\n iconEmoji: string\n is_core: boolean\n permissions: string[]\n dependencies: string[]\n defaultSettings: Record\n adminMenu: {\n label: string\n icon: string\n path: string\n order: number\n } | null\n}\n\n/**\n * All discovered plugins, keyed by plugin ID.\n */\nexport const PLUGIN_REGISTRY: Record = {\n 'ai-search': {\n \"id\": \"ai-search\",\n \"codeName\": \"ai-search-plugin\",\n \"displayName\": \"AI Search\",\n \"description\": \"Advanced search with Cloudflare AI Search. Full-text search, semantic search, and advanced filtering across all content collections.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔍\",\n \"is_core\": true,\n \"permissions\": [\n \"settings:write\",\n \"admin:access\",\n \"content:read\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enabled\": true,\n \"ai_mode_enabled\": true,\n \"selected_collections\": [],\n \"dismissed_collections\": [],\n \"autocomplete_enabled\": true,\n \"cache_duration\": 1,\n \"results_limit\": 20,\n \"index_media\": false\n },\n \"adminMenu\": {\n \"label\": \"AI Search\",\n \"icon\": \"magnifying-glass\",\n \"path\": \"/admin/plugins/ai-search\",\n \"order\": 50\n }\n },\n\n 'code-examples-plugin': {\n \"id\": \"code-examples-plugin\",\n \"codeName\": \"code-examples-plugin\",\n \"displayName\": \"Code Examples\",\n \"description\": \"Code snippets and examples library with syntax highlighting and categorization\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"💻\",\n \"is_core\": false,\n \"permissions\": [\n \"code-examples:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'core-analytics': {\n \"id\": \"core-analytics\",\n \"codeName\": \"core-analytics\",\n \"displayName\": \"Analytics & Insights\",\n \"description\": \"Core analytics system for tracking page views, user behavior, and content performance. Provides dashboards and reports with real-time metrics\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"seo\",\n \"iconEmoji\": \"📊\",\n \"is_core\": true,\n \"permissions\": [\n \"analytics:view\",\n \"analytics:export\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Analytics\",\n \"icon\": \"chart-bar\",\n \"path\": \"/admin/analytics\",\n \"order\": 50\n }\n },\n\n 'core-auth': {\n \"id\": \"core-auth\",\n \"codeName\": \"core-auth\",\n \"displayName\": \"Authentication System\",\n \"description\": \"Core authentication and user management system with role-based access control, session management, and security features\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔐\",\n \"is_core\": true,\n \"permissions\": [\n \"manage:users\",\n \"manage:roles\",\n \"manage:permissions\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"requiredFields\": {\n \"email\": {\n \"required\": true,\n \"minLength\": 5,\n \"label\": \"Email\",\n \"type\": \"email\"\n },\n \"password\": {\n \"required\": true,\n \"minLength\": 8,\n \"label\": \"Password\",\n \"type\": \"password\"\n },\n \"username\": {\n \"required\": true,\n \"minLength\": 3,\n \"label\": \"Username\",\n \"type\": \"text\"\n },\n \"firstName\": {\n \"required\": true,\n \"minLength\": 1,\n \"label\": \"First Name\",\n \"type\": \"text\"\n },\n \"lastName\": {\n \"required\": true,\n \"minLength\": 1,\n \"label\": \"Last Name\",\n \"type\": \"text\"\n }\n },\n \"validation\": {\n \"emailFormat\": true,\n \"allowDuplicateUsernames\": false,\n \"passwordRequirements\": {\n \"requireUppercase\": false,\n \"requireLowercase\": false,\n \"requireNumbers\": false,\n \"requireSpecialChars\": false\n }\n },\n \"registration\": {\n \"enabled\": true,\n \"requireEmailVerification\": false,\n \"defaultRole\": \"viewer\"\n }\n },\n \"adminMenu\": null\n },\n\n 'core-cache': {\n \"id\": \"core-cache\",\n \"codeName\": \"core-cache\",\n \"displayName\": \"Cache System\",\n \"description\": \"Three-tiered caching system with in-memory and KV storage. Provides automatic caching for content, users, media, and API responses with configurable TTL and invalidation patterns.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS\",\n \"category\": \"system\",\n \"iconEmoji\": \"⚡\",\n \"is_core\": true,\n \"permissions\": [\n \"cache.view\",\n \"cache.clear\",\n \"cache.invalidate\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableMemoryCache\": true,\n \"enableKVCache\": true,\n \"enableDatabaseCache\": true,\n \"defaultTTL\": 3600\n },\n \"adminMenu\": null\n },\n\n 'core-media': {\n \"id\": \"core-media\",\n \"codeName\": \"core-media\",\n \"displayName\": \"Media Manager\",\n \"description\": \"Core media upload and management system with support for images, videos, and documents. Includes automatic optimization, thumbnail generation, and cloud storage integration\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"media\",\n \"iconEmoji\": \"📸\",\n \"is_core\": true,\n \"permissions\": [\n \"manage:media\",\n \"upload:files\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Media\",\n \"icon\": \"image\",\n \"path\": \"/admin/media\",\n \"order\": 30\n }\n },\n\n 'database-tools': {\n \"id\": \"database-tools\",\n \"codeName\": \"database-tools\",\n \"displayName\": \"Database Tools\",\n \"description\": \"Database management and administration tools including migrations, backups, and query execution\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"development\",\n \"iconEmoji\": \"🗄️\",\n \"is_core\": false,\n \"permissions\": [\n \"database:admin\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableTruncate\": true,\n \"enableBackup\": true,\n \"enableValidation\": true,\n \"requireConfirmation\": true\n },\n \"adminMenu\": null\n },\n\n 'demo-login-plugin': {\n \"id\": \"demo-login-plugin\",\n \"codeName\": \"demo-login-plugin\",\n \"displayName\": \"Demo Login\",\n \"description\": \"Quick demo login functionality for testing and demonstrations\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"🎯\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [\n \"core-auth\"\n ],\n \"defaultSettings\": {\n \"enableNotice\": true,\n \"demoEmail\": \"admin@sonicjs.com\",\n \"demoPassword\": \"sonicjs!\"\n },\n \"adminMenu\": null\n },\n\n 'design': {\n \"id\": \"design\",\n \"codeName\": \"design\",\n \"displayName\": \"Design System\",\n \"description\": \"Design system management including themes, components, and UI customization. Provides a visual interface for managing design tokens, typography, colors, and component library.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"🎨\",\n \"is_core\": false,\n \"permissions\": [\n \"design.view\",\n \"design.edit\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"defaultTheme\": \"light\",\n \"customCSS\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"Design\",\n \"icon\": \"palette\",\n \"path\": \"/admin/design\",\n \"order\": 80\n }\n },\n\n 'easy-mdx': {\n \"id\": \"easy-mdx\",\n \"codeName\": \"easy-mdx\",\n \"displayName\": \"EasyMDE Markdown Editor\",\n \"description\": \"Lightweight markdown editor with live preview. Provides a simple and efficient editor with markdown support for richtext fields.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"📝\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"defaultHeight\": 400,\n \"theme\": \"dark\",\n \"toolbar\": \"full\",\n \"placeholder\": \"Start writing your content...\"\n },\n \"adminMenu\": null\n },\n\n 'email': {\n \"id\": \"email\",\n \"codeName\": \"email\",\n \"displayName\": \"Email\",\n \"description\": \"Send transactional emails using Resend\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"📧\",\n \"is_core\": false,\n \"permissions\": [\n \"email:manage\",\n \"email:send\",\n \"email:view-logs\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"apiKey\": \"\",\n \"fromEmail\": \"\",\n \"fromName\": \"\",\n \"replyTo\": \"\",\n \"logoUrl\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"Email\",\n \"icon\": \"envelope\",\n \"path\": \"/admin/plugins/email/settings\",\n \"order\": 80\n }\n },\n\n 'global-variables': {\n \"id\": \"global-variables\",\n \"codeName\": \"global-variables\",\n \"displayName\": \"Global Variables\",\n \"description\": \"Dynamic content variables with inline token support. Manage key-value variables via admin UI and use {variable_key} syntax in rich text fields for server-side resolution. Includes full CRUD admin page.\",\n \"version\": \"1.1.0\",\n \"author\": \"SonicJS Community\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔤\",\n \"is_core\": false,\n \"permissions\": [\n \"global-variables:manage\",\n \"global-variables:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableResolution\": true,\n \"cacheEnabled\": true,\n \"cacheTTL\": 300\n },\n \"adminMenu\": {\n \"label\": \"Global Variables\",\n \"icon\": \"variable\",\n \"path\": \"/admin/global-variables\",\n \"order\": 45\n }\n },\n\n 'hello-world': {\n \"id\": \"hello-world\",\n \"codeName\": \"hello-world\",\n \"displayName\": \"Hello World\",\n \"description\": \"A simple Hello World plugin demonstration\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"👋\",\n \"is_core\": false,\n \"permissions\": [\n \"hello-world:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Hello World\",\n \"icon\": \"hand-raised\",\n \"path\": \"/admin/hello-world\",\n \"order\": 90\n }\n },\n\n 'magic-link-auth': {\n \"id\": \"magic-link-auth\",\n \"codeName\": \"magic-link-auth\",\n \"displayName\": \"Magic Link Authentication\",\n \"description\": \"Passwordless authentication via email magic links. Users receive a secure one-time link to sign in without entering a password.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔗\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [\n \"email\"\n ],\n \"defaultSettings\": {\n \"linkExpiryMinutes\": 15,\n \"rateLimitPerHour\": 5,\n \"allowNewUsers\": true\n },\n \"adminMenu\": null\n },\n\n 'oauth-providers': {\n \"id\": \"oauth-providers\",\n \"codeName\": \"oauth-providers\",\n \"displayName\": \"OAuth Providers\",\n \"description\": \"OAuth2/OIDC social login with GitHub, Google, and more\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"authentication\",\n \"iconEmoji\": \"🔑\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"providers\": {\n \"github\": {\n \"clientId\": \"\",\n \"clientSecret\": \"\",\n \"enabled\": false\n },\n \"google\": {\n \"clientId\": \"\",\n \"clientSecret\": \"\",\n \"enabled\": false\n }\n }\n },\n \"adminMenu\": null\n },\n\n 'otp-login': {\n \"id\": \"otp-login\",\n \"codeName\": \"otp-login\",\n \"displayName\": \"OTP Login\",\n \"description\": \"Passwordless authentication via email one-time codes\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔢\",\n \"is_core\": false,\n \"permissions\": [\n \"otp:manage\",\n \"otp:request\",\n \"otp:verify\"\n ],\n \"dependencies\": [\n \"email\"\n ],\n \"defaultSettings\": {\n \"codeLength\": 6,\n \"codeExpiryMinutes\": 10,\n \"maxAttempts\": 3,\n \"rateLimitPerHour\": 5,\n \"allowNewUserRegistration\": false,\n \"logoUrl\": \"\",\n \"logoWidth\": 150,\n \"logoBorderWidth\": 0,\n \"logoBorderColor\": \"#ffffff\",\n \"loginUrl\": \"\",\n \"loginButtonText\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"OTP Login\",\n \"icon\": \"key\",\n \"path\": \"/admin/plugins/otp-login/settings\",\n \"order\": 85\n }\n },\n\n 'quill-editor': {\n \"id\": \"quill-editor\",\n \"codeName\": \"quill-editor\",\n \"displayName\": \"Quill Rich Text Editor\",\n \"description\": \"Quill WYSIWYG editor integration for rich text editing. Lightweight, modern editor with customizable toolbars and dark mode support.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"✍️\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"version\": \"2.0.2\",\n \"defaultHeight\": 300,\n \"defaultToolbar\": \"full\",\n \"theme\": \"snow\"\n },\n \"adminMenu\": null\n },\n\n 'redirect-management': {\n \"id\": \"redirect-management\",\n \"codeName\": \"redirect-management\",\n \"displayName\": \"Redirect Management\",\n \"description\": \"URL redirect management with exact, partial, and regex matching\",\n \"version\": \"1.0.0\",\n \"author\": \"ahaas\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"↪️\",\n \"is_core\": false,\n \"permissions\": [\n \"redirect.manage\",\n \"redirect.view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enabled\": true,\n \"autoOffloadEnabled\": false\n },\n \"adminMenu\": {\n \"label\": \"Redirects\",\n \"icon\": \"arrow-right\",\n \"path\": \"/admin/redirects\",\n \"order\": 85\n }\n },\n\n 'security-audit': {\n \"id\": \"security-audit\",\n \"codeName\": \"security-audit\",\n \"displayName\": \"Security Audit\",\n \"description\": \"Security event logging, brute-force detection, and analytics dashboard. Monitors login attempts, registrations, lockouts, and suspicious activity.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🛡️\",\n \"is_core\": false,\n \"permissions\": [\n \"security-audit:view\",\n \"security-audit:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"retention\": {\n \"daysToKeep\": 90,\n \"maxEvents\": 100000,\n \"autoPurge\": true\n },\n \"bruteForce\": {\n \"enabled\": true,\n \"maxFailedAttemptsPerIP\": 10,\n \"maxFailedAttemptsPerEmail\": 5,\n \"windowMinutes\": 15,\n \"lockoutDurationMinutes\": 30,\n \"alertThreshold\": 20\n },\n \"logging\": {\n \"logSuccessfulLogins\": true,\n \"logLogouts\": true,\n \"logRegistrations\": true,\n \"logPasswordResets\": true,\n \"logPermissionDenied\": true\n }\n },\n \"adminMenu\": {\n \"label\": \"Security Audit\",\n \"icon\": \"shield-check\",\n \"path\": \"/admin/plugins/security-audit\",\n \"order\": 85\n }\n },\n\n 'seed-data': {\n \"id\": \"seed-data\",\n \"codeName\": \"seed-data\",\n \"displayName\": \"Seed Data Generator\",\n \"description\": \"Development tool for generating sample data and testing content. Useful for demos and development environments\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"development\",\n \"iconEmoji\": \"🌱\",\n \"is_core\": false,\n \"permissions\": [\n \"seed-data:generate\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"userCount\": 20,\n \"contentCount\": 200,\n \"defaultPassword\": \"password123\"\n },\n \"adminMenu\": null\n },\n\n 'shortcodes': {\n \"id\": \"shortcodes\",\n \"codeName\": \"shortcodes\",\n \"displayName\": \"Shortcodes\",\n \"description\": \"Registered shortcode functions for dynamic content. Use [[shortcode_name param=\\\"value\\\"]] syntax in rich text fields for server-side resolution. Includes handler registry, CRUD admin, and live preview.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Community\",\n \"category\": \"content\",\n \"iconEmoji\": \"\",\n \"is_core\": false,\n \"permissions\": [\n \"shortcodes:manage\",\n \"shortcodes:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Shortcodes\",\n \"icon\": \"bolt\",\n \"path\": \"/admin/shortcodes\",\n \"order\": 46\n }\n },\n\n 'stripe': {\n \"id\": \"stripe\",\n \"codeName\": \"stripe\",\n \"displayName\": \"Stripe Subscriptions\",\n \"description\": \"Stripe subscription management with webhook handling, checkout sessions, and subscription gating\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"payments\",\n \"iconEmoji\": \"💳\",\n \"is_core\": true,\n \"permissions\": [\n \"stripe:manage\",\n \"stripe:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"stripeSecretKey\": \"\",\n \"stripeWebhookSecret\": \"\",\n \"stripePriceId\": \"\",\n \"successUrl\": \"/admin/dashboard\",\n \"cancelUrl\": \"/admin/dashboard\"\n },\n \"adminMenu\": {\n \"label\": \"Stripe\",\n \"icon\": \"credit-card\",\n \"path\": \"/admin/plugins/stripe\",\n \"order\": 90\n }\n },\n\n 'testimonials-plugin': {\n \"id\": \"testimonials-plugin\",\n \"codeName\": \"testimonials-plugin\",\n \"displayName\": \"Testimonials\",\n \"description\": \"Customer testimonials and reviews management with display widgets and ratings\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"💬\",\n \"is_core\": false,\n \"permissions\": [\n \"testimonials:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'tinymce-plugin': {\n \"id\": \"tinymce-plugin\",\n \"codeName\": \"tinymce-plugin\",\n \"displayName\": \"TinyMCE Rich Text Editor\",\n \"description\": \"Powerful WYSIWYG rich text editor for content creation. Provides a full-featured editor with formatting, media embedding, and customizable toolbars for richtext fields.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"📝\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"apiKey\": \"no-api-key\",\n \"defaultHeight\": 300,\n \"defaultToolbar\": \"full\",\n \"skin\": \"oxide-dark\"\n },\n \"adminMenu\": null\n },\n\n 'turnstile': {\n \"id\": \"turnstile\",\n \"codeName\": \"turnstile-plugin\",\n \"displayName\": \"Cloudflare Turnstile\",\n \"description\": \"CAPTCHA-free bot protection using Cloudflare Turnstile. Provides reusable verification for any form.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS\",\n \"category\": \"security\",\n \"iconEmoji\": \"🛡️\",\n \"is_core\": true,\n \"permissions\": [\n \"settings:write\",\n \"admin:access\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"siteKey\": \"\",\n \"secretKey\": \"\",\n \"theme\": \"auto\",\n \"size\": \"normal\",\n \"mode\": \"managed\",\n \"appearance\": \"always\",\n \"preClearanceEnabled\": false,\n \"preClearanceLevel\": \"managed\",\n \"enabled\": false\n },\n \"adminMenu\": {\n \"label\": \"Turnstile\",\n \"icon\": \"shield-check\",\n \"path\": \"/admin/plugins/turnstile/settings\",\n \"order\": 100\n }\n },\n\n 'user-profiles': {\n \"id\": \"user-profiles\",\n \"codeName\": \"user-profiles\",\n \"displayName\": \"User Profiles\",\n \"description\": \"Configurable custom profile fields for users\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"users\",\n \"iconEmoji\": \"👤\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'workflow-plugin': {\n \"id\": \"workflow-plugin\",\n \"codeName\": \"workflow-plugin\",\n \"displayName\": \"Workflow Engine\",\n \"description\": \"Content workflow and approval system with customizable states, transitions, and review processes\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔄\",\n \"is_core\": false,\n \"permissions\": [\n \"workflow:manage\",\n \"workflow:approve\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableApprovalChains\": true,\n \"enableScheduling\": true,\n \"enableAutomation\": true,\n \"enableNotifications\": true\n },\n \"adminMenu\": null\n }\n} as const\n\n/**\n * All plugin IDs.\n */\nexport const ALL_PLUGIN_IDS = Object.keys(PLUGIN_REGISTRY)\n\n/**\n * Plugins that have their own admin page (have an adminMenu entry).\n */\nexport const PLUGINS_WITH_ADMIN_PAGES = ALL_PLUGIN_IDS.filter(\n id => PLUGIN_REGISTRY[id]?.adminMenu !== null\n)\n\n/**\n * Look up a plugin by its codeName (the `name` field stored in the DB).\n * Falls back to id lookup if no codeName match.\n */\nexport function findPluginByCodeName(codeName: string): PluginRegistryEntry | undefined {\n return Object.values(PLUGIN_REGISTRY).find(p => p.codeName === codeName)\n || PLUGIN_REGISTRY[codeName]\n}\n\n/**\n * Get a plugin by ID.\n */\nexport function getPlugin(id: string): PluginRegistryEntry | undefined {\n return PLUGIN_REGISTRY[id]\n}\n","import type { D1Database } from \"@cloudflare/workers-types\";\nimport { PluginService } from \"./plugin-service\";\nimport { PLUGIN_REGISTRY } from \"../plugins/manifest-registry\";\nimport type { PluginRegistryEntry } from \"../plugins/manifest-registry\";\n\nexport interface CorePlugin {\n id: string;\n name: string;\n display_name: string;\n description: string;\n version: string;\n author: string;\n category: string;\n icon: string;\n permissions: string[];\n dependencies: string[];\n settings?: any;\n}\n\n/**\n * Build the CORE_PLUGINS list from the auto-generated registry.\n * To add a new bootstrapped plugin, create a manifest.json and\n * run: node packages/scripts/generate-plugin-registry.mjs\n *\n * Only plugins that are in the BOOTSTRAP_PLUGIN_IDS list will be\n * auto-installed on first boot. Edit this list to control which\n * plugins are bootstrapped.\n */\nconst BOOTSTRAP_PLUGIN_IDS = [\n \"core-auth\",\n \"core-media\",\n \"database-tools\",\n \"seed-data\",\n \"core-cache\",\n \"workflow-plugin\",\n \"easy-mdx\",\n \"ai-search\",\n \"oauth-providers\",\n \"global-variables\",\n \"user-profiles\",\n \"stripe\",\n];\n\nfunction registryToCorePlugin(entry: PluginRegistryEntry): CorePlugin {\n return {\n id: entry.id,\n name: entry.codeName,\n display_name: entry.displayName,\n description: entry.description,\n version: entry.version,\n author: entry.author,\n category: entry.category,\n icon: entry.iconEmoji,\n permissions: entry.permissions,\n dependencies: entry.dependencies,\n settings: entry.defaultSettings,\n };\n}\n\nexport class PluginBootstrapService {\n private pluginService: PluginService;\n\n constructor(private db: D1Database) {\n this.pluginService = new PluginService(db);\n }\n\n /**\n * Core plugins derived from the auto-generated plugin registry.\n * Only plugins listed in BOOTSTRAP_PLUGIN_IDS are included.\n */\n private readonly CORE_PLUGINS: CorePlugin[] = BOOTSTRAP_PLUGIN_IDS\n .filter((id) => PLUGIN_REGISTRY[id] !== undefined)\n .map((id) => registryToCorePlugin(PLUGIN_REGISTRY[id]!));\n\n /**\n * Bootstrap all core plugins - install them if they don't exist\n */\n async bootstrapCorePlugins(): Promise {\n console.log(\"[PluginBootstrap] Starting core plugin bootstrap process...\");\n\n try {\n // Check each core plugin\n for (const corePlugin of this.CORE_PLUGINS) {\n await this.ensurePluginInstalled(corePlugin);\n }\n\n console.log(\n \"[PluginBootstrap] Core plugin bootstrap completed successfully\"\n );\n } catch (error) {\n console.error(\"[PluginBootstrap] Error during plugin bootstrap:\", error);\n throw error;\n }\n }\n\n /**\n * Ensure a specific plugin is installed\n */\n private async ensurePluginInstalled(plugin: CorePlugin): Promise {\n try {\n // Check if plugin already exists\n const existingPlugin = await this.pluginService.getPlugin(plugin.id);\n\n if (existingPlugin) {\n console.log(\n `[PluginBootstrap] Plugin already installed: ${plugin.display_name} (status: ${existingPlugin.status})`\n );\n\n // Update plugin if version changed\n if (existingPlugin.version !== plugin.version) {\n console.log(\n `[PluginBootstrap] Updating plugin version: ${plugin.display_name} from ${existingPlugin.version} to ${plugin.version}`\n );\n await this.updatePlugin(plugin);\n }\n\n // ALWAYS ensure core-auth is active (critical for system functionality)\n if (plugin.id === 'core-auth' && existingPlugin.status !== 'active') {\n console.log(\n `[PluginBootstrap] Core-auth plugin is inactive, activating it now...`\n );\n await this.pluginService.activatePlugin(plugin.id);\n }\n\n // Only auto-activate on first install, respect user's activation state on subsequent boots\n } else {\n // Install the plugin\n console.log(\n `[PluginBootstrap] Installing plugin: ${plugin.display_name}`\n );\n await this.pluginService.installPlugin({\n ...plugin,\n is_core: plugin.name.startsWith(\"core-\"),\n });\n\n // Activate plugins immediately after installation\n console.log(\n `[PluginBootstrap] Activating newly installed plugin: ${plugin.display_name}`\n );\n await this.pluginService.activatePlugin(plugin.id);\n }\n } catch (error) {\n console.error(\n `[PluginBootstrap] Error ensuring plugin ${plugin.display_name}:`,\n error\n );\n // Don't throw - continue with other plugins\n }\n }\n\n /**\n * Update an existing plugin\n */\n private async updatePlugin(plugin: CorePlugin): Promise {\n const now = Math.floor(Date.now() / 1000);\n\n const stmt = this.db.prepare(`\n UPDATE plugins\n SET\n version = ?,\n description = ?,\n permissions = ?,\n settings = ?,\n last_updated = ?\n WHERE id = ?\n `);\n\n await stmt\n .bind(\n plugin.version,\n plugin.description,\n JSON.stringify(plugin.permissions),\n JSON.stringify(plugin.settings || {}),\n now,\n plugin.id\n )\n .run();\n }\n\n /**\n * Check if bootstrap is needed (first run detection)\n */\n async isBootstrapNeeded(): Promise {\n try {\n // Check if any core plugins are missing\n for (const corePlugin of this.CORE_PLUGINS.filter((p) =>\n p.name.startsWith(\"core-\")\n )) {\n const exists = await this.pluginService.getPlugin(corePlugin.id);\n if (!exists) {\n return true;\n }\n }\n return false;\n } catch (error) {\n // If there's an error (like table doesn't exist), we need bootstrap\n console.error(\n \"[PluginBootstrap] Error checking bootstrap status:\",\n error\n );\n return true;\n }\n }\n\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["../src/services/collection-loader.ts","../src/services/collection-sync.ts","../src/services/form-collection-sync.ts","../src/services/plugin-service.ts","../src/plugins/manifest-registry.ts","../src/services/plugin-bootstrap.ts"],"names":[],"mappings":"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","file":"chunk-656GGECX.cjs","sourcesContent":["/**\n * Collection Loader Service\n *\n * Loads collection configuration files from the collections directory.\n * Supports both development (reading from filesystem) and production (bundled).\n */\n\nimport { CollectionConfig, CollectionConfigModule } from '../types/collection-config'\n\n// Global registry for externally registered collections\nconst registeredCollections: CollectionConfig[] = []\n\n/**\n * Register collections from the application code\n * This should be called before creating the app\n */\nexport function registerCollections(collections: CollectionConfig[]): void {\n for (const config of collections) {\n // Validate required fields\n if (!config.name || !config.displayName || !config.schema) {\n console.error(`Invalid collection config: missing required fields`, config)\n continue\n }\n\n // Set defaults\n const normalizedConfig: CollectionConfig = {\n ...config,\n managed: config.managed !== undefined ? config.managed : true,\n isActive: config.isActive !== undefined ? config.isActive : true\n }\n\n registeredCollections.push(normalizedConfig)\n console.log(`✓ Registered collection: ${config.name}`)\n }\n}\n\n/**\n * Load all collection configurations from the collections directory\n */\nexport async function loadCollectionConfigs(): Promise {\n const collections: CollectionConfig[] = [...registeredCollections]\n\n // Log registered collections summary\n if (registeredCollections.length > 0) {\n console.log(`📦 Found ${registeredCollections.length} registered collection(s) from application`)\n } else {\n console.log(`⚠️ No collections registered. Make sure to call registerCollections() in your app's index.ts`)\n console.log(` Example: import myCollection from './collections/my-collection.collection'`)\n console.log(` registerCollections([myCollection])`)\n }\n\n try {\n // Import all collection files dynamically from core package\n // In production, these will be bundled with the application\n const modules = (import.meta as any).glob?.('../collections/*.collection.ts', { eager: true }) || {}\n let coreCollectionCount = 0\n\n for (const [path, module] of Object.entries(modules)) {\n try {\n const configModule = module as CollectionConfigModule\n\n if (!configModule.default) {\n console.warn(`Collection file ${path} does not export a default config`)\n continue\n }\n\n const config = configModule.default\n\n // Validate required fields\n if (!config.name || !config.displayName || !config.schema) {\n console.error(`Invalid collection config in ${path}: missing required fields`)\n continue\n }\n\n // Set defaults\n const normalizedConfig: CollectionConfig = {\n ...config,\n managed: config.managed !== undefined ? config.managed : true,\n isActive: config.isActive !== undefined ? config.isActive : true\n }\n\n collections.push(normalizedConfig)\n coreCollectionCount++\n console.log(`✓ Loaded core collection: ${config.name}`)\n } catch (error) {\n console.error(`Error loading collection from ${path}:`, error)\n }\n }\n\n console.log(`📊 Collection summary: ${collections.length} total (${registeredCollections.length} from app, ${coreCollectionCount} from core)`)\n return collections\n } catch (error) {\n console.error('Error loading collection configurations:', error)\n return collections // Return registered collections even if core loading fails\n }\n}\n\n/**\n * Load a specific collection configuration by name\n * Note: This function requires implementation in the consuming application\n * as it depends on project-specific collection files\n */\nexport async function loadCollectionConfig(name: string): Promise {\n try {\n // Dynamic imports are not supported in library builds\n // This should be implemented in the consuming application\n console.warn('loadCollectionConfig requires implementation in consuming application')\n return null\n } catch (error) {\n console.error(`Error loading collection ${name}:`, error)\n return null\n }\n}\n\n/**\n * Get list of all available collection config file names\n */\nexport async function getAvailableCollectionNames(): Promise {\n try {\n const modules = (import.meta as any).glob?.('../collections/*.collection.ts') || {}\n const names: string[] = []\n\n for (const path of Object.keys(modules)) {\n // Extract collection name from path\n // e.g., '../collections/blog-posts.collection.ts' -> 'blog-posts'\n const match = path.match(/\\/([^/]+)\\.collection\\.ts$/)\n if (match && match[1]) {\n names.push(match[1])\n }\n }\n\n return names\n } catch (error) {\n console.error('Error getting collection names:', error)\n return []\n }\n}\n\n/**\n * Validate a collection configuration\n */\nexport function validateCollectionConfig(config: CollectionConfig): { valid: boolean; errors: string[] } {\n const errors: string[] = []\n\n // Required fields\n if (!config.name) {\n errors.push('Collection name is required')\n } else if (!/^[a-z0-9_-]+$/.test(config.name)) {\n errors.push('Collection name must contain only lowercase letters, numbers, underscores, and hyphens')\n }\n\n if (!config.displayName) {\n errors.push('Display name is required')\n }\n\n if (!config.schema) {\n errors.push('Schema is required')\n } else {\n // Validate schema structure\n if (config.schema.type !== 'object') {\n errors.push('Schema type must be \"object\"')\n }\n\n if (!config.schema.properties || typeof config.schema.properties !== 'object') {\n errors.push('Schema must have properties')\n }\n\n // Validate field types\n for (const [fieldName, fieldConfig] of Object.entries(config.schema.properties || {})) {\n if (!fieldConfig.type) {\n errors.push(`Field \"${fieldName}\" is missing type`)\n }\n\n // Validate reference fields\n if (fieldConfig.type === 'reference' && !fieldConfig.collection) {\n errors.push(`Reference field \"${fieldName}\" is missing collection property`)\n }\n\n const layoutValue = fieldConfig.objectLayout\n if (layoutValue !== undefined) {\n if (fieldConfig.type !== 'object') {\n errors.push(`Field \"${fieldName}\" uses objectLayout but is not an object field`)\n } else if (!['nested', 'flat'].includes(layoutValue)) {\n errors.push(`Object field \"${fieldName}\" has invalid objectLayout. Use \"nested\" or \"flat\"`)\n }\n }\n\n // Validate select fields\n if (['select', 'multiselect', 'radio'].includes(fieldConfig.type) && !fieldConfig.enum) {\n errors.push(`Select field \"${fieldName}\" is missing enum options`)\n }\n }\n }\n\n return {\n valid: errors.length === 0,\n errors\n }\n}\n","/**\n * Collection Sync Service\n *\n * Syncs collection configurations from code to the database.\n * Handles create, update, and validation of config-managed collections.\n */\n\nimport { CollectionConfig, CollectionSyncResult } from '../types/collection-config'\nimport { loadCollectionConfigs, validateCollectionConfig } from './collection-loader'\n\n/**\n * Sync all collection configurations to the database\n */\nexport async function syncCollections(db: D1Database): Promise {\n console.log('🔄 Starting collection sync...')\n\n const results: CollectionSyncResult[] = []\n const configs = await loadCollectionConfigs()\n\n if (configs.length === 0) {\n console.log('⚠️ No collection configurations found')\n return results\n }\n\n for (const config of configs) {\n const result = await syncCollection(db, config)\n results.push(result)\n }\n\n const created = results.filter(r => r.status === 'created').length\n const updated = results.filter(r => r.status === 'updated').length\n const unchanged = results.filter(r => r.status === 'unchanged').length\n const errors = results.filter(r => r.status === 'error').length\n\n console.log(`✅ Collection sync complete: ${created} created, ${updated} updated, ${unchanged} unchanged, ${errors} errors`)\n\n return results\n}\n\n/**\n * Sync a single collection configuration to the database\n */\nexport async function syncCollection(db: D1Database, config: CollectionConfig): Promise {\n try {\n // Validate config\n const validation = validateCollectionConfig(config)\n if (!validation.valid) {\n return {\n name: config.name,\n status: 'error',\n error: `Validation failed: ${validation.errors.join(', ')}`\n }\n }\n\n // Check if collection exists\n const existingStmt = db.prepare('SELECT * FROM collections WHERE name = ?')\n const existing = await existingStmt.bind(config.name).first() as any\n\n const now = Date.now()\n const collectionId = existing?.id || `col-${config.name}-${crypto.randomUUID().slice(0, 8)}`\n\n // Prepare collection data\n const schemaJson = JSON.stringify(config.schema)\n const isActive = config.isActive !== false ? 1 : 0\n const managed = config.managed !== false ? 1 : 0\n\n if (!existing) {\n // Create new collection\n const insertStmt = db.prepare(`\n INSERT INTO collections (id, name, display_name, description, schema, is_active, managed, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n\n await insertStmt.bind(\n collectionId,\n config.name,\n config.displayName,\n config.description || null,\n schemaJson,\n isActive,\n managed,\n now,\n now\n ).run()\n\n console.log(` ✓ Created collection: ${config.name}`)\n\n return {\n name: config.name,\n status: 'created',\n message: `Created collection \"${config.displayName}\"`\n }\n } else {\n // Check if update is needed\n const existingSchema = existing.schema ? JSON.stringify(existing.schema) : '{}'\n const existingDisplayName = existing.display_name\n const existingDescription = existing.description\n const existingIsActive = existing.is_active\n const existingManaged = existing.managed\n\n const needsUpdate =\n schemaJson !== existingSchema ||\n config.displayName !== existingDisplayName ||\n (config.description || null) !== existingDescription ||\n isActive !== existingIsActive ||\n managed !== existingManaged\n\n if (!needsUpdate) {\n return {\n name: config.name,\n status: 'unchanged',\n message: `Collection \"${config.displayName}\" is up to date`\n }\n }\n\n // Update existing collection\n const updateStmt = db.prepare(`\n UPDATE collections\n SET display_name = ?, description = ?, schema = ?, is_active = ?, managed = ?, updated_at = ?\n WHERE name = ?\n `)\n\n await updateStmt.bind(\n config.displayName,\n config.description || null,\n schemaJson,\n isActive,\n managed,\n now,\n config.name\n ).run()\n\n console.log(` ✓ Updated collection: ${config.name}`)\n\n return {\n name: config.name,\n status: 'updated',\n message: `Updated collection \"${config.displayName}\"`\n }\n }\n } catch (error) {\n console.error(` ✗ Error syncing collection ${config.name}:`, error)\n\n return {\n name: config.name,\n status: 'error',\n error: error instanceof Error ? error.message : 'Unknown error'\n }\n }\n}\n\n/**\n * Check if a collection is managed by config\n */\nexport async function isCollectionManaged(db: D1Database, collectionName: string): Promise {\n try {\n const stmt = db.prepare('SELECT managed FROM collections WHERE name = ?')\n const result = await stmt.bind(collectionName).first() as any\n\n return result?.managed === 1\n } catch (error) {\n console.error(`Error checking if collection is managed:`, error)\n return false\n }\n}\n\n/**\n * Get all managed collections from database\n */\nexport async function getManagedCollections(db: D1Database): Promise {\n try {\n const stmt = db.prepare('SELECT name FROM collections WHERE managed = 1')\n const { results } = await stmt.all()\n\n return (results || []).map((row: any) => row.name)\n } catch (error) {\n console.error('Error getting managed collections:', error)\n return []\n }\n}\n\n/**\n * Remove collections that are no longer in config files\n * (Only removes managed collections that aren't in the config)\n */\nexport async function cleanupRemovedCollections(db: D1Database): Promise {\n try {\n const configs = await loadCollectionConfigs()\n const configNames = new Set(configs.map(c => c.name))\n const managedCollections = await getManagedCollections(db)\n const removed: string[] = []\n\n for (const managedName of managedCollections) {\n if (!configNames.has(managedName)) {\n // This managed collection no longer has a config file\n // Mark as inactive instead of deleting (safer)\n const updateStmt = db.prepare(`\n UPDATE collections\n SET is_active = 0, updated_at = ?\n WHERE name = ? AND managed = 1\n `)\n\n await updateStmt.bind(Date.now(), managedName).run()\n removed.push(managedName)\n console.log(` ⚠️ Deactivated removed collection: ${managedName}`)\n }\n }\n\n return removed\n } catch (error) {\n console.error('Error cleaning up removed collections:', error)\n return []\n }\n}\n\n/**\n * Full sync: sync all configs and cleanup removed\n */\nexport async function fullCollectionSync(db: D1Database): Promise<{\n results: CollectionSyncResult[]\n removed: string[]\n}> {\n const results = await syncCollections(db)\n const removed = await cleanupRemovedCollections(db)\n\n return { results, removed }\n}\n","/**\n * Form-Collection Sync Service\n *\n * Bridge logic that creates \"shadow collections\" for forms and\n * dual-writes form submissions to the content table, enabling\n * unified content management for form submissions.\n */\n\nconst SYSTEM_FORM_USER_ID = 'system-form-submission'\n\n/**\n * Convert Form.io component type to collection schema field type\n */\nfunction mapFormioTypeToSchemaType(component: any): { type: string; [key: string]: any } {\n switch (component.type) {\n case 'textfield':\n case 'textarea':\n case 'password':\n case 'phoneNumber':\n case 'url':\n return { type: 'string', title: component.label || component.key }\n case 'email':\n return { type: 'string', format: 'email', title: component.label || component.key }\n case 'number':\n case 'currency':\n return { type: 'number', title: component.label || component.key }\n case 'checkbox':\n return { type: 'boolean', title: component.label || component.key }\n case 'select':\n case 'radio': {\n const enumValues = (component.data?.values || component.values || []).map((v: any) => v.value)\n const enumLabels = (component.data?.values || component.values || []).map((v: any) => v.label)\n return {\n type: 'select',\n title: component.label || component.key,\n enum: enumValues,\n enumLabels\n }\n }\n case 'selectboxes':\n return { type: 'object', title: component.label || component.key }\n case 'datetime':\n case 'day':\n case 'time':\n return { type: 'string', format: 'date-time', title: component.label || component.key }\n case 'file':\n case 'signature':\n return { type: 'string', title: component.label || component.key }\n case 'address':\n return { type: 'object', title: component.label || component.key }\n case 'hidden':\n return { type: 'string', title: component.label || component.key }\n default:\n return { type: 'string', title: component.label || component.key }\n }\n}\n\n/**\n * Recursively extract field components from a Form.io schema,\n * skipping layout-only components (panels, columns, fieldsets, etc.)\n */\nfunction extractFieldComponents(components: any[]): any[] {\n const fields: any[] = []\n if (!components) return fields\n\n for (const comp of components) {\n // Layout components — recurse into children\n if (comp.type === 'panel' || comp.type === 'fieldset' || comp.type === 'well' || comp.type === 'tabs') {\n if (comp.components) {\n fields.push(...extractFieldComponents(comp.components))\n }\n continue\n }\n if (comp.type === 'columns' && comp.columns) {\n for (const col of comp.columns) {\n if (col.components) {\n fields.push(...extractFieldComponents(col.components))\n }\n }\n continue\n }\n if (comp.type === 'table' && comp.rows) {\n for (const row of comp.rows) {\n if (Array.isArray(row)) {\n for (const cell of row) {\n if (cell.components) {\n fields.push(...extractFieldComponents(cell.components))\n }\n }\n }\n }\n continue\n }\n // Skip buttons and non-input layout elements\n if (comp.type === 'button' || comp.type === 'htmlelement' || comp.type === 'content') {\n continue\n }\n // Skip turnstile (not data)\n if (comp.type === 'turnstile') {\n continue\n }\n // It's a real field\n if (comp.key) {\n fields.push(comp)\n }\n // Recurse into sub-components for containers\n if (comp.components) {\n fields.push(...extractFieldComponents(comp.components))\n }\n }\n return fields\n}\n\n/**\n * Convert a Form.io schema into a collection JSON schema definition\n */\nexport function deriveCollectionSchemaFromFormio(formioSchema: any): any {\n const components = formioSchema?.components || []\n const fieldComponents = extractFieldComponents(components)\n\n const properties: Record = {\n // Always include a title field for the content item\n title: { type: 'string', title: 'Title', required: true }\n }\n const required: string[] = ['title']\n\n for (const comp of fieldComponents) {\n const key = comp.key\n if (!key || key === 'submit' || key === 'title') continue\n const fieldDef = mapFormioTypeToSchemaType(comp)\n if (comp.validate?.required) {\n fieldDef.required = true\n required.push(key)\n }\n properties[key] = fieldDef\n }\n\n return { type: 'object', properties, required }\n}\n\n/**\n * Derive a human-readable title from form submission data\n */\nexport function deriveSubmissionTitle(data: Record, formDisplayName: string): string {\n // Try common fields in order of preference\n const candidates = ['name', 'fullName', 'full_name', 'firstName', 'first_name']\n for (const key of candidates) {\n if (data[key] && typeof data[key] === 'string' && data[key].trim()) {\n // Append last name if available\n if (key === 'firstName' || key === 'first_name') {\n const last = data['lastName'] || data['last_name'] || data['lastname'] || ''\n if (last) return `${data[key].trim()} ${last.trim()}`\n }\n return data[key].trim()\n }\n }\n // Try email\n if (data.email && typeof data.email === 'string' && data.email.trim()) {\n return data.email.trim()\n }\n // Try subject\n if (data.subject && typeof data.subject === 'string' && data.subject.trim()) {\n return data.subject.trim()\n }\n // Fallback\n const dateStr = new Date().toLocaleDateString('en-US', {\n year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'\n })\n return `${formDisplayName} - ${dateStr}`\n}\n\n/**\n * Map form submission status to content status.\n * Form submissions are complete data — they default to 'published'.\n * Only rejected/spam submissions get demoted.\n */\nexport function mapFormStatusToContentStatus(formStatus: string): string {\n switch (formStatus) {\n case 'pending': return 'published'\n case 'reviewed': return 'published'\n case 'approved': return 'published'\n case 'rejected': return 'archived'\n case 'spam': return 'deleted'\n default: return 'published'\n }\n}\n\n/**\n * Create or update a shadow collection for a given form\n */\nexport async function syncFormCollection(db: D1Database, form: {\n id: string\n name: string\n display_name: string\n description?: string | null\n formio_schema: any\n is_active: number | boolean\n}): Promise<{ collectionId: string; status: 'created' | 'updated' | 'unchanged' }> {\n const collectionName = `form_${form.name}`\n const displayName = `${form.display_name} (Form)`\n\n // Parse formio_schema\n const formioSchema = typeof form.formio_schema === 'string'\n ? JSON.parse(form.formio_schema)\n : form.formio_schema\n\n const schema = deriveCollectionSchemaFromFormio(formioSchema)\n const schemaJson = JSON.stringify(schema)\n const now = Date.now()\n const isActive = form.is_active ? 1 : 0\n\n // Check if shadow collection already exists\n const existing = await db.prepare(\n 'SELECT id, schema, display_name, description, is_active FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n\n if (!existing) {\n // Create new shadow collection\n const collectionId = `col-form-${form.name}-${crypto.randomUUID().slice(0, 8)}`\n\n await db.prepare(`\n INSERT INTO collections (id, name, display_name, description, schema, is_active, managed, source_type, source_id, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, 1, 'form', ?, ?, ?)\n `).bind(\n collectionId,\n collectionName,\n displayName,\n form.description || null,\n schemaJson,\n isActive,\n form.id,\n now,\n now\n ).run()\n\n console.log(`[FormSync] Created shadow collection: ${collectionName}`)\n return { collectionId, status: 'created' }\n }\n\n // Check if update needed\n const existingSchema = existing.schema ? JSON.stringify(typeof existing.schema === 'string' ? JSON.parse(existing.schema) : existing.schema) : '{}'\n const needsUpdate =\n schemaJson !== existingSchema ||\n displayName !== existing.display_name ||\n (form.description || null) !== existing.description ||\n isActive !== existing.is_active\n\n if (!needsUpdate) {\n return { collectionId: existing.id, status: 'unchanged' }\n }\n\n await db.prepare(`\n UPDATE collections SET display_name = ?, description = ?, schema = ?, is_active = ?, updated_at = ?\n WHERE id = ?\n `).bind(\n displayName,\n form.description || null,\n schemaJson,\n isActive,\n now,\n existing.id\n ).run()\n\n console.log(`[FormSync] Updated shadow collection: ${collectionName}`)\n return { collectionId: existing.id, status: 'updated' }\n}\n\n/**\n * Sync all active forms to shadow collections\n */\nexport async function syncAllFormCollections(db: D1Database): Promise {\n try {\n // Check if forms table exists\n const tableCheck = await db.prepare(\n \"SELECT name FROM sqlite_master WHERE type='table' AND name='forms'\"\n ).first()\n if (!tableCheck) {\n console.log('[FormSync] Forms table does not exist, skipping form sync')\n return\n }\n\n const { results: forms } = await db.prepare(\n 'SELECT id, name, display_name, description, formio_schema, is_active FROM forms'\n ).all()\n\n if (!forms || forms.length === 0) {\n console.log('[FormSync] No forms found, skipping')\n return\n }\n\n let created = 0\n let updated = 0\n\n for (const form of forms) {\n try {\n const result = await syncFormCollection(db, form as any)\n if (result.status === 'created') created++\n if (result.status === 'updated') updated++\n\n // Backfill existing submissions that don't have content_id\n await backfillFormSubmissions(db, form.id as string, result.collectionId)\n } catch (error) {\n console.error(`[FormSync] Error syncing form ${form.name}:`, error)\n }\n }\n\n console.log(`[FormSync] Sync complete: ${created} created, ${updated} updated out of ${forms.length} forms`)\n } catch (error) {\n console.error('[FormSync] Error syncing form collections:', error)\n }\n}\n\n/**\n * Create a content item from a form submission\n */\nexport async function createContentFromSubmission(\n db: D1Database,\n submissionData: Record,\n form: { id: string; name: string; display_name: string },\n submissionId: string,\n metadata: {\n ipAddress?: string | null\n userAgent?: string | null\n userEmail?: string | null\n userId?: string | null\n } = {}\n): Promise {\n try {\n // Find the shadow collection\n let collection = await db.prepare(\n 'SELECT id FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n\n if (!collection) {\n // Shadow collection missing — try to create it on the fly\n console.warn(`[FormSync] No shadow collection found for form ${form.name}, attempting to create...`)\n try {\n const fullForm = await db.prepare(\n 'SELECT id, name, display_name, description, formio_schema, is_active FROM forms WHERE id = ?'\n ).bind(form.id).first() as any\n\n if (fullForm) {\n const schema = typeof fullForm.formio_schema === 'string'\n ? JSON.parse(fullForm.formio_schema)\n : fullForm.formio_schema\n const result = await syncFormCollection(db, {\n id: fullForm.id,\n name: fullForm.name,\n display_name: fullForm.display_name,\n description: fullForm.description,\n formio_schema: schema,\n is_active: fullForm.is_active ?? 1\n })\n // Re-query the collection\n collection = await db.prepare(\n 'SELECT id FROM collections WHERE source_type = ? AND source_id = ?'\n ).bind('form', form.id).first() as any\n console.log(`[FormSync] On-the-fly sync result: ${result.status}, collectionId: ${result.collectionId}`)\n }\n } catch (syncErr) {\n console.error('[FormSync] On-the-fly shadow collection creation failed:', syncErr)\n }\n\n if (!collection) {\n console.error(`[FormSync] Still no shadow collection for form ${form.name} after recovery attempt`)\n return null\n }\n }\n\n const contentId = crypto.randomUUID()\n const now = Date.now()\n\n const title = deriveSubmissionTitle(submissionData, form.display_name)\n const slug = `submission-${submissionId.slice(0, 8)}`\n\n // Build content data with embedded metadata\n const contentData: Record = {\n title,\n ...submissionData,\n _submission_metadata: {\n submissionId,\n formId: form.id,\n formName: form.name,\n email: metadata.userEmail || submissionData.email || null,\n ipAddress: metadata.ipAddress || null,\n userAgent: metadata.userAgent || null,\n submittedAt: now\n }\n }\n\n const authorId = metadata.userId || SYSTEM_FORM_USER_ID\n\n // Ensure the system user exists (D1 enforces foreign keys)\n if (authorId === SYSTEM_FORM_USER_ID) {\n const systemUser = await db.prepare('SELECT id FROM users WHERE id = ?').bind(SYSTEM_FORM_USER_ID).first()\n if (!systemUser) {\n console.log('[FormSync] System form user missing, creating...')\n const sysNow = Date.now()\n await db.prepare(`\n INSERT OR IGNORE INTO users (id, email, username, first_name, last_name, password_hash, role, is_active, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, NULL, 'viewer', 0, ?, ?)\n `).bind(SYSTEM_FORM_USER_ID, 'system-forms@sonicjs.internal', 'system-forms', 'Form', 'Submission', sysNow, sysNow).run()\n }\n }\n\n console.log(`[FormSync] Inserting content: id=${contentId}, collection=${collection.id}, slug=${slug}, title=${title}, author=${authorId}`)\n\n await db.prepare(`\n INSERT INTO content (id, collection_id, slug, title, data, status, author_id, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, 'published', ?, ?, ?)\n `).bind(\n contentId,\n collection.id,\n slug,\n title,\n JSON.stringify(contentData),\n authorId,\n now,\n now\n ).run()\n\n // Link submission to content\n await db.prepare(\n 'UPDATE form_submissions SET content_id = ? WHERE id = ?'\n ).bind(contentId, submissionId).run()\n\n console.log(`[FormSync] Content created successfully: ${contentId}`)\n return contentId\n } catch (error) {\n console.error('[FormSync] Error creating content from submission:', error)\n return null\n }\n}\n\n/**\n * Backfill existing form submissions that don't have a content_id\n */\nexport async function backfillFormSubmissions(\n db: D1Database,\n formId: string,\n collectionId: string\n): Promise {\n try {\n const { results: submissions } = await db.prepare(\n 'SELECT id, submission_data, user_email, ip_address, user_agent, user_id, submitted_at FROM form_submissions WHERE form_id = ? AND content_id IS NULL'\n ).bind(formId).all()\n\n if (!submissions || submissions.length === 0) {\n return 0\n }\n\n // Get form info\n const form = await db.prepare(\n 'SELECT id, name, display_name FROM forms WHERE id = ?'\n ).bind(formId).first() as any\n\n if (!form) return 0\n\n let count = 0\n for (const sub of submissions) {\n try {\n const submissionData = typeof sub.submission_data === 'string'\n ? JSON.parse(sub.submission_data as string)\n : sub.submission_data\n\n const contentId = await createContentFromSubmission(\n db,\n submissionData,\n { id: form.id, name: form.name, display_name: form.display_name },\n sub.id as string,\n {\n ipAddress: sub.ip_address as string | null,\n userAgent: sub.user_agent as string | null,\n userEmail: sub.user_email as string | null,\n userId: sub.user_id as string | null\n }\n )\n if (contentId) count++\n } catch (error) {\n console.error(`[FormSync] Error backfilling submission ${sub.id}:`, error)\n }\n }\n\n if (count > 0) {\n console.log(`[FormSync] Backfilled ${count} submissions for form ${formId}`)\n }\n return count\n } catch (error) {\n console.error('[FormSync] Error backfilling submissions:', error)\n return 0\n }\n}\n","import type { D1Database } from '@cloudflare/workers-types'\n// Note: PLUGIN_REGISTRY and CORE_PLUGIN_IDS are project-specific\n// They should be passed as parameters to the service in the consuming application\n// import { PLUGIN_REGISTRY, CORE_PLUGIN_IDS } from '../plugins/plugin-registry'\n\nexport interface PluginData {\n id: string\n name: string\n display_name: string\n description: string\n version: string\n author: string\n category: string\n icon: string\n status: 'active' | 'inactive' | 'error'\n is_core: boolean\n settings?: any\n permissions?: string[]\n dependencies?: string[]\n download_count: number\n rating: number\n installed_at: number\n activated_at?: number\n last_updated: number\n error_message?: string\n}\n\nexport interface PluginStats {\n total: number\n active: number\n inactive: number\n errors: number\n uninstalled: number\n}\n\nexport class PluginService {\n constructor(private db: D1Database) {}\n\n async getAllPlugins(): Promise {\n // Ensure all plugins from registry exist in database (auto-install if missing)\n await this.ensureAllPluginsExist()\n\n const stmt = this.db.prepare(`\n SELECT * FROM plugins\n ORDER BY is_core DESC, display_name ASC\n `)\n\n const { results } = await stmt.all()\n return (results || []).map(this.mapPluginFromDb)\n }\n\n /**\n * Ensure all plugins from the registry exist in the database\n * Auto-installs any newly detected plugins with inactive status\n *\n * Note: This method should be overridden or configured with a plugin registry\n * in the consuming application\n */\n private async ensureAllPluginsExist(): Promise {\n // This functionality requires a project-specific PLUGIN_REGISTRY\n // In the consuming application, you should pass the registry to this service\n console.log('[PluginService] ensureAllPluginsExist - requires PLUGIN_REGISTRY configuration')\n }\n\n async getPlugin(pluginId: string): Promise {\n const stmt = this.db.prepare('SELECT * FROM plugins WHERE id = ?')\n const plugin = await stmt.bind(pluginId).first()\n \n if (!plugin) return null\n return this.mapPluginFromDb(plugin)\n }\n\n async getPluginByName(name: string): Promise {\n const stmt = this.db.prepare('SELECT * FROM plugins WHERE name = ?')\n const plugin = await stmt.bind(name).first()\n \n if (!plugin) return null\n return this.mapPluginFromDb(plugin)\n }\n\n async getPluginStats(): Promise {\n const stmt = this.db.prepare(`\n SELECT \n COUNT(*) as total,\n COUNT(CASE WHEN status = 'active' THEN 1 END) as active,\n COUNT(CASE WHEN status = 'inactive' THEN 1 END) as inactive,\n COUNT(CASE WHEN status = 'error' THEN 1 END) as errors\n FROM plugins\n `)\n \n const stats = await stmt.first() as any\n return {\n total: stats.total || 0,\n active: stats.active || 0,\n inactive: stats.inactive || 0,\n errors: stats.errors || 0,\n uninstalled: 0\n }\n }\n\n async installPlugin(pluginData: Partial): Promise {\n const id = pluginData.id || `plugin-${Date.now()}`\n const now = Math.floor(Date.now() / 1000)\n \n const stmt = this.db.prepare(`\n INSERT INTO plugins (\n id, name, display_name, description, version, author, category, icon,\n status, is_core, settings, permissions, dependencies, download_count, \n rating, installed_at, last_updated\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id,\n pluginData.name || id,\n pluginData.display_name || 'Unnamed Plugin',\n pluginData.description || '',\n pluginData.version || '1.0.0',\n pluginData.author || 'Unknown',\n pluginData.category || 'utilities',\n pluginData.icon || '🔌',\n 'inactive',\n pluginData.is_core || false,\n JSON.stringify(pluginData.settings || {}),\n JSON.stringify(pluginData.permissions || []),\n JSON.stringify(pluginData.dependencies || []),\n pluginData.download_count || 0,\n pluginData.rating || 0,\n now,\n now\n ).run()\n \n // Log the installation\n await this.logActivity(id, 'installed', null, { version: pluginData.version })\n \n const installed = await this.getPlugin(id)\n if (!installed) throw new Error('Failed to install plugin')\n \n return installed\n }\n\n async uninstallPlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n if (plugin.is_core) throw new Error('Cannot uninstall core plugins')\n \n // First deactivate if active\n if (plugin.status === 'active') {\n await this.deactivatePlugin(pluginId)\n }\n \n // Delete the plugin\n const stmt = this.db.prepare('DELETE FROM plugins WHERE id = ?')\n await stmt.bind(pluginId).run()\n \n // Log the uninstallation\n await this.logActivity(pluginId, 'uninstalled', null, { name: plugin.name })\n }\n\n async activatePlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n // Check dependencies\n if (plugin.dependencies && plugin.dependencies.length > 0) {\n await this.checkDependencies(plugin.dependencies)\n }\n \n const now = Math.floor(Date.now() / 1000)\n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'active', activated_at = ?, error_message = NULL \n WHERE id = ?\n `)\n \n await stmt.bind(now, pluginId).run()\n \n // Log the activation\n await this.logActivity(pluginId, 'activated', null)\n }\n\n async deactivatePlugin(pluginId: string): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n // Check if other plugins depend on this one\n await this.checkDependents(plugin.name)\n \n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'inactive', activated_at = NULL \n WHERE id = ?\n `)\n \n await stmt.bind(pluginId).run()\n \n // Log the deactivation\n await this.logActivity(pluginId, 'deactivated', null)\n }\n\n async updatePluginSettings(pluginId: string, settings: any): Promise {\n const plugin = await this.getPlugin(pluginId)\n if (!plugin) throw new Error('Plugin not found')\n \n const stmt = this.db.prepare(`\n UPDATE plugins \n SET settings = ?, updated_at = unixepoch() \n WHERE id = ?\n `)\n \n await stmt.bind(JSON.stringify(settings), pluginId).run()\n \n // Log the settings update\n await this.logActivity(pluginId, 'settings_updated', null)\n }\n\n async setPluginError(pluginId: string, error: string): Promise {\n const stmt = this.db.prepare(`\n UPDATE plugins \n SET status = 'error', error_message = ? \n WHERE id = ?\n `)\n \n await stmt.bind(error, pluginId).run()\n \n // Log the error\n await this.logActivity(pluginId, 'error', null, { error })\n }\n\n async getPluginActivity(pluginId: string, limit: number = 10): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_activity_log \n WHERE plugin_id = ? \n ORDER BY timestamp DESC \n LIMIT ?\n `)\n \n const { results } = await stmt.bind(pluginId, limit).all()\n return (results || []).map((row: any) => ({\n id: row.id,\n action: row.action,\n userId: row.user_id,\n details: row.details ? JSON.parse(row.details) : null,\n timestamp: row.timestamp\n }))\n }\n\n async registerHook(pluginId: string, hookName: string, handlerName: string, priority: number = 10): Promise {\n const id = `hook-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_hooks (id, plugin_id, hook_name, handler_name, priority)\n VALUES (?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(id, pluginId, hookName, handlerName, priority).run()\n }\n\n async registerRoute(pluginId: string, path: string, method: string, handlerName: string, middleware?: any[]): Promise {\n const id = `route-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_routes (id, plugin_id, path, method, handler_name, middleware)\n VALUES (?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id, \n pluginId, \n path, \n method, \n handlerName, \n JSON.stringify(middleware || [])\n ).run()\n }\n\n async getPluginHooks(pluginId: string): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_hooks \n WHERE plugin_id = ? AND is_active = TRUE\n ORDER BY priority ASC\n `)\n \n const { results } = await stmt.bind(pluginId).all()\n return results || []\n }\n\n async getPluginRoutes(pluginId: string): Promise {\n const stmt = this.db.prepare(`\n SELECT * FROM plugin_routes \n WHERE plugin_id = ? AND is_active = TRUE\n `)\n \n const { results } = await stmt.bind(pluginId).all()\n return results || []\n }\n\n private async checkDependencies(dependencies: string[]): Promise {\n for (const dep of dependencies) {\n const plugin = await this.getPluginByName(dep)\n if (!plugin || plugin.status !== 'active') {\n throw new Error(`Required dependency '${dep}' is not active`)\n }\n }\n }\n\n private async checkDependents(pluginName: string): Promise {\n const stmt = this.db.prepare(`\n SELECT id, display_name FROM plugins \n WHERE status = 'active' \n AND dependencies LIKE ?\n `)\n \n const { results } = await stmt.bind(`%\"${pluginName}\"%`).all()\n if (results && results.length > 0) {\n const names = results.map((p: any) => p.display_name).join(', ')\n throw new Error(`Cannot deactivate. The following plugins depend on this one: ${names}`)\n }\n }\n\n private async logActivity(pluginId: string, action: string, userId: string | null, details?: any): Promise {\n const id = `activity-${Date.now()}`\n const stmt = this.db.prepare(`\n INSERT INTO plugin_activity_log (id, plugin_id, action, user_id, details)\n VALUES (?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n id,\n pluginId,\n action,\n userId,\n details ? JSON.stringify(details) : null\n ).run()\n }\n\n private mapPluginFromDb(row: any): PluginData {\n return {\n id: row.id,\n name: row.name,\n display_name: row.display_name,\n description: row.description,\n version: row.version,\n author: row.author,\n category: row.category,\n icon: row.icon,\n status: row.status,\n is_core: row.is_core === 1,\n settings: row.settings ? JSON.parse(row.settings) : undefined,\n permissions: row.permissions ? JSON.parse(row.permissions) : undefined,\n dependencies: row.dependencies ? JSON.parse(row.dependencies) : undefined,\n download_count: row.download_count || 0,\n rating: row.rating || 0,\n installed_at: row.installed_at,\n activated_at: row.activated_at,\n last_updated: row.last_updated,\n error_message: row.error_message\n }\n }\n}\n","/**\n * Plugin Registry - AUTO-GENERATED\n *\n * Generated by: packages/scripts/generate-plugin-registry.mjs\n * Generated at: 2026-05-16T15:00:20.475Z\n * Source: All manifest.json files in src/plugins/\n *\n * DO NOT EDIT MANUALLY - run the generator script instead.\n * To add a new plugin, create a manifest.json in the plugin directory.\n */\n\nexport interface PluginRegistryEntry {\n id: string\n codeName: string\n displayName: string\n description: string\n version: string\n author: string\n category: string\n iconEmoji: string\n is_core: boolean\n permissions: string[]\n dependencies: string[]\n defaultSettings: Record\n adminMenu: {\n label: string\n icon: string\n path: string\n order: number\n } | null\n}\n\n/**\n * All discovered plugins, keyed by plugin ID.\n */\nexport const PLUGIN_REGISTRY: Record = {\n 'ai-search': {\n \"id\": \"ai-search\",\n \"codeName\": \"ai-search-plugin\",\n \"displayName\": \"AI Search\",\n \"description\": \"Advanced search with Cloudflare AI Search. Full-text search, semantic search, and advanced filtering across all content collections.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔍\",\n \"is_core\": true,\n \"permissions\": [\n \"settings:write\",\n \"admin:access\",\n \"content:read\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enabled\": true,\n \"ai_mode_enabled\": true,\n \"selected_collections\": [],\n \"dismissed_collections\": [],\n \"autocomplete_enabled\": true,\n \"cache_duration\": 1,\n \"results_limit\": 20,\n \"index_media\": false\n },\n \"adminMenu\": {\n \"label\": \"AI Search\",\n \"icon\": \"magnifying-glass\",\n \"path\": \"/admin/plugins/ai-search\",\n \"order\": 50\n }\n },\n\n 'code-examples-plugin': {\n \"id\": \"code-examples-plugin\",\n \"codeName\": \"code-examples-plugin\",\n \"displayName\": \"Code Examples\",\n \"description\": \"Code snippets and examples library with syntax highlighting and categorization\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"💻\",\n \"is_core\": false,\n \"permissions\": [\n \"code-examples:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'core-analytics': {\n \"id\": \"core-analytics\",\n \"codeName\": \"core-analytics\",\n \"displayName\": \"Analytics & Insights\",\n \"description\": \"Core analytics system for tracking page views, user behavior, and content performance. Provides dashboards and reports with real-time metrics\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"seo\",\n \"iconEmoji\": \"📊\",\n \"is_core\": true,\n \"permissions\": [\n \"analytics:view\",\n \"analytics:export\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Analytics\",\n \"icon\": \"chart-bar\",\n \"path\": \"/admin/analytics\",\n \"order\": 50\n }\n },\n\n 'core-auth': {\n \"id\": \"core-auth\",\n \"codeName\": \"core-auth\",\n \"displayName\": \"Authentication System\",\n \"description\": \"Core authentication and user management system with role-based access control, session management, and security features\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔐\",\n \"is_core\": true,\n \"permissions\": [\n \"manage:users\",\n \"manage:roles\",\n \"manage:permissions\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"requiredFields\": {\n \"email\": {\n \"required\": true,\n \"minLength\": 5,\n \"label\": \"Email\",\n \"type\": \"email\"\n },\n \"password\": {\n \"required\": true,\n \"minLength\": 8,\n \"label\": \"Password\",\n \"type\": \"password\"\n },\n \"username\": {\n \"required\": true,\n \"minLength\": 3,\n \"label\": \"Username\",\n \"type\": \"text\"\n },\n \"firstName\": {\n \"required\": true,\n \"minLength\": 1,\n \"label\": \"First Name\",\n \"type\": \"text\"\n },\n \"lastName\": {\n \"required\": true,\n \"minLength\": 1,\n \"label\": \"Last Name\",\n \"type\": \"text\"\n }\n },\n \"validation\": {\n \"emailFormat\": true,\n \"allowDuplicateUsernames\": false,\n \"passwordRequirements\": {\n \"requireUppercase\": false,\n \"requireLowercase\": false,\n \"requireNumbers\": false,\n \"requireSpecialChars\": false\n }\n },\n \"registration\": {\n \"enabled\": true,\n \"requireEmailVerification\": false,\n \"defaultRole\": \"viewer\"\n }\n },\n \"adminMenu\": null\n },\n\n 'core-cache': {\n \"id\": \"core-cache\",\n \"codeName\": \"core-cache\",\n \"displayName\": \"Cache System\",\n \"description\": \"Three-tiered caching system with in-memory and KV storage. Provides automatic caching for content, users, media, and API responses with configurable TTL and invalidation patterns.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS\",\n \"category\": \"system\",\n \"iconEmoji\": \"⚡\",\n \"is_core\": true,\n \"permissions\": [\n \"cache.view\",\n \"cache.clear\",\n \"cache.invalidate\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableMemoryCache\": true,\n \"enableKVCache\": true,\n \"enableDatabaseCache\": true,\n \"defaultTTL\": 3600\n },\n \"adminMenu\": null\n },\n\n 'core-media': {\n \"id\": \"core-media\",\n \"codeName\": \"core-media\",\n \"displayName\": \"Media Manager\",\n \"description\": \"Core media upload and management system with support for images, videos, and documents. Includes automatic optimization, thumbnail generation, and cloud storage integration\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"media\",\n \"iconEmoji\": \"📸\",\n \"is_core\": true,\n \"permissions\": [\n \"manage:media\",\n \"upload:files\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Media\",\n \"icon\": \"image\",\n \"path\": \"/admin/media\",\n \"order\": 30\n }\n },\n\n 'database-tools': {\n \"id\": \"database-tools\",\n \"codeName\": \"database-tools\",\n \"displayName\": \"Database Tools\",\n \"description\": \"Database management and administration tools including migrations, backups, and query execution\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"development\",\n \"iconEmoji\": \"🗄️\",\n \"is_core\": false,\n \"permissions\": [\n \"database:admin\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableTruncate\": true,\n \"enableBackup\": true,\n \"enableValidation\": true,\n \"requireConfirmation\": true\n },\n \"adminMenu\": null\n },\n\n 'demo-login-plugin': {\n \"id\": \"demo-login-plugin\",\n \"codeName\": \"demo-login-plugin\",\n \"displayName\": \"Demo Login\",\n \"description\": \"Quick demo login functionality for testing and demonstrations\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"🎯\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [\n \"core-auth\"\n ],\n \"defaultSettings\": {\n \"enableNotice\": true,\n \"demoEmail\": \"admin@sonicjs.com\",\n \"demoPassword\": \"sonicjs!\"\n },\n \"adminMenu\": null\n },\n\n 'design': {\n \"id\": \"design\",\n \"codeName\": \"design\",\n \"displayName\": \"Design System\",\n \"description\": \"Design system management including themes, components, and UI customization. Provides a visual interface for managing design tokens, typography, colors, and component library.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"🎨\",\n \"is_core\": false,\n \"permissions\": [\n \"design.view\",\n \"design.edit\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"defaultTheme\": \"light\",\n \"customCSS\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"Design\",\n \"icon\": \"palette\",\n \"path\": \"/admin/design\",\n \"order\": 80\n }\n },\n\n 'easy-mdx': {\n \"id\": \"easy-mdx\",\n \"codeName\": \"easy-mdx\",\n \"displayName\": \"EasyMDE Markdown Editor\",\n \"description\": \"Lightweight markdown editor with live preview. Provides a simple and efficient editor with markdown support for richtext fields.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"📝\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"defaultHeight\": 400,\n \"theme\": \"dark\",\n \"toolbar\": \"full\",\n \"placeholder\": \"Start writing your content...\"\n },\n \"adminMenu\": null\n },\n\n 'email': {\n \"id\": \"email\",\n \"codeName\": \"email\",\n \"displayName\": \"Email\",\n \"description\": \"Send transactional emails using Resend\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"📧\",\n \"is_core\": false,\n \"permissions\": [\n \"email:manage\",\n \"email:send\",\n \"email:view-logs\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"apiKey\": \"\",\n \"fromEmail\": \"\",\n \"fromName\": \"\",\n \"replyTo\": \"\",\n \"logoUrl\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"Email\",\n \"icon\": \"envelope\",\n \"path\": \"/admin/plugins/email/settings\",\n \"order\": 80\n }\n },\n\n 'global-variables': {\n \"id\": \"global-variables\",\n \"codeName\": \"global-variables\",\n \"displayName\": \"Global Variables\",\n \"description\": \"Dynamic content variables with inline token support. Manage key-value variables via admin UI and use {variable_key} syntax in rich text fields for server-side resolution. Includes full CRUD admin page.\",\n \"version\": \"1.1.0\",\n \"author\": \"SonicJS Community\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔤\",\n \"is_core\": false,\n \"permissions\": [\n \"global-variables:manage\",\n \"global-variables:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableResolution\": true,\n \"cacheEnabled\": true,\n \"cacheTTL\": 300\n },\n \"adminMenu\": {\n \"label\": \"Global Variables\",\n \"icon\": \"variable\",\n \"path\": \"/admin/global-variables\",\n \"order\": 45\n }\n },\n\n 'hello-world': {\n \"id\": \"hello-world\",\n \"codeName\": \"hello-world\",\n \"displayName\": \"Hello World\",\n \"description\": \"A simple Hello World plugin demonstration\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"👋\",\n \"is_core\": false,\n \"permissions\": [\n \"hello-world:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Hello World\",\n \"icon\": \"hand-raised\",\n \"path\": \"/admin/hello-world\",\n \"order\": 90\n }\n },\n\n 'magic-link-auth': {\n \"id\": \"magic-link-auth\",\n \"codeName\": \"magic-link-auth\",\n \"displayName\": \"Magic Link Authentication\",\n \"description\": \"Passwordless authentication via email magic links. Users receive a secure one-time link to sign in without entering a password.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔗\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [\n \"email\"\n ],\n \"defaultSettings\": {\n \"linkExpiryMinutes\": 15,\n \"rateLimitPerHour\": 5,\n \"allowNewUsers\": true\n },\n \"adminMenu\": null\n },\n\n 'oauth-providers': {\n \"id\": \"oauth-providers\",\n \"codeName\": \"oauth-providers\",\n \"displayName\": \"OAuth Providers\",\n \"description\": \"OAuth2/OIDC social login with GitHub, Google, and more\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"authentication\",\n \"iconEmoji\": \"🔑\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"providers\": {\n \"github\": {\n \"clientId\": \"\",\n \"clientSecret\": \"\",\n \"enabled\": false\n },\n \"google\": {\n \"clientId\": \"\",\n \"clientSecret\": \"\",\n \"enabled\": false\n }\n }\n },\n \"adminMenu\": null\n },\n\n 'otp-login': {\n \"id\": \"otp-login\",\n \"codeName\": \"otp-login\",\n \"displayName\": \"OTP Login\",\n \"description\": \"Passwordless authentication via email one-time codes\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🔢\",\n \"is_core\": false,\n \"permissions\": [\n \"otp:manage\",\n \"otp:request\",\n \"otp:verify\"\n ],\n \"dependencies\": [\n \"email\"\n ],\n \"defaultSettings\": {\n \"codeLength\": 6,\n \"codeExpiryMinutes\": 10,\n \"maxAttempts\": 3,\n \"rateLimitPerHour\": 5,\n \"allowNewUserRegistration\": false,\n \"logoUrl\": \"\",\n \"logoWidth\": 150,\n \"logoBorderWidth\": 0,\n \"logoBorderColor\": \"#ffffff\",\n \"loginUrl\": \"\",\n \"loginButtonText\": \"\"\n },\n \"adminMenu\": {\n \"label\": \"OTP Login\",\n \"icon\": \"key\",\n \"path\": \"/admin/plugins/otp-login/settings\",\n \"order\": 85\n }\n },\n\n 'quill-editor': {\n \"id\": \"quill-editor\",\n \"codeName\": \"quill-editor\",\n \"displayName\": \"Quill Rich Text Editor\",\n \"description\": \"Quill WYSIWYG editor integration for rich text editing. Lightweight, modern editor with customizable toolbars and dark mode support.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"✍️\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"version\": \"2.0.2\",\n \"defaultHeight\": 300,\n \"defaultToolbar\": \"full\",\n \"theme\": \"snow\"\n },\n \"adminMenu\": null\n },\n\n 'redirect-management': {\n \"id\": \"redirect-management\",\n \"codeName\": \"redirect-management\",\n \"displayName\": \"Redirect Management\",\n \"description\": \"URL redirect management with exact, partial, and regex matching\",\n \"version\": \"1.0.0\",\n \"author\": \"ahaas\",\n \"category\": \"utilities\",\n \"iconEmoji\": \"↪️\",\n \"is_core\": false,\n \"permissions\": [\n \"redirect.manage\",\n \"redirect.view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enabled\": true,\n \"autoOffloadEnabled\": false\n },\n \"adminMenu\": {\n \"label\": \"Redirects\",\n \"icon\": \"arrow-right\",\n \"path\": \"/admin/redirects\",\n \"order\": 85\n }\n },\n\n 'security-audit': {\n \"id\": \"security-audit\",\n \"codeName\": \"security-audit\",\n \"displayName\": \"Security Audit\",\n \"description\": \"Security event logging, brute-force detection, and analytics dashboard. Monitors login attempts, registrations, lockouts, and suspicious activity.\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"security\",\n \"iconEmoji\": \"🛡️\",\n \"is_core\": false,\n \"permissions\": [\n \"security-audit:view\",\n \"security-audit:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"retention\": {\n \"daysToKeep\": 90,\n \"maxEvents\": 100000,\n \"autoPurge\": true\n },\n \"bruteForce\": {\n \"enabled\": true,\n \"maxFailedAttemptsPerIP\": 10,\n \"maxFailedAttemptsPerEmail\": 5,\n \"windowMinutes\": 15,\n \"lockoutDurationMinutes\": 30,\n \"alertThreshold\": 20\n },\n \"logging\": {\n \"logSuccessfulLogins\": true,\n \"logLogouts\": true,\n \"logRegistrations\": true,\n \"logPasswordResets\": true,\n \"logPermissionDenied\": true\n }\n },\n \"adminMenu\": {\n \"label\": \"Security Audit\",\n \"icon\": \"shield-check\",\n \"path\": \"/admin/plugins/security-audit\",\n \"order\": 85\n }\n },\n\n 'seed-data': {\n \"id\": \"seed-data\",\n \"codeName\": \"seed-data\",\n \"displayName\": \"Seed Data Generator\",\n \"description\": \"Development tool for generating sample data and testing content. Useful for demos and development environments\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"development\",\n \"iconEmoji\": \"🌱\",\n \"is_core\": false,\n \"permissions\": [\n \"seed-data:generate\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"userCount\": 20,\n \"contentCount\": 200,\n \"defaultPassword\": \"password123\"\n },\n \"adminMenu\": null\n },\n\n 'shortcodes': {\n \"id\": \"shortcodes\",\n \"codeName\": \"shortcodes\",\n \"displayName\": \"Shortcodes\",\n \"description\": \"Registered shortcode functions for dynamic content. Use [[shortcode_name param=\\\"value\\\"]] syntax in rich text fields for server-side resolution. Includes handler registry, CRUD admin, and live preview.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Community\",\n \"category\": \"content\",\n \"iconEmoji\": \"\",\n \"is_core\": false,\n \"permissions\": [\n \"shortcodes:manage\",\n \"shortcodes:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": {\n \"label\": \"Shortcodes\",\n \"icon\": \"bolt\",\n \"path\": \"/admin/shortcodes\",\n \"order\": 46\n }\n },\n\n 'stripe': {\n \"id\": \"stripe\",\n \"codeName\": \"stripe\",\n \"displayName\": \"Stripe Subscriptions\",\n \"description\": \"Stripe subscription management with webhook handling, checkout sessions, and subscription gating\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"payments\",\n \"iconEmoji\": \"💳\",\n \"is_core\": true,\n \"permissions\": [\n \"stripe:manage\",\n \"stripe:view\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"stripeSecretKey\": \"\",\n \"stripeWebhookSecret\": \"\",\n \"stripePriceId\": \"\",\n \"successUrl\": \"/admin/dashboard\",\n \"cancelUrl\": \"/admin/dashboard\"\n },\n \"adminMenu\": {\n \"label\": \"Stripe\",\n \"icon\": \"credit-card\",\n \"path\": \"/admin/plugins/stripe\",\n \"order\": 90\n }\n },\n\n 'testimonials-plugin': {\n \"id\": \"testimonials-plugin\",\n \"codeName\": \"testimonials-plugin\",\n \"displayName\": \"Testimonials\",\n \"description\": \"Customer testimonials and reviews management with display widgets and ratings\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"💬\",\n \"is_core\": false,\n \"permissions\": [\n \"testimonials:manage\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'tinymce-plugin': {\n \"id\": \"tinymce-plugin\",\n \"codeName\": \"tinymce-plugin\",\n \"displayName\": \"TinyMCE Rich Text Editor\",\n \"description\": \"Powerful WYSIWYG rich text editor for content creation. Provides a full-featured editor with formatting, media embedding, and customizable toolbars for richtext fields.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS Team\",\n \"category\": \"editor\",\n \"iconEmoji\": \"📝\",\n \"is_core\": false,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"apiKey\": \"no-api-key\",\n \"defaultHeight\": 300,\n \"defaultToolbar\": \"full\",\n \"skin\": \"oxide-dark\"\n },\n \"adminMenu\": null\n },\n\n 'turnstile': {\n \"id\": \"turnstile\",\n \"codeName\": \"turnstile-plugin\",\n \"displayName\": \"Cloudflare Turnstile\",\n \"description\": \"CAPTCHA-free bot protection using Cloudflare Turnstile. Provides reusable verification for any form.\",\n \"version\": \"1.0.0\",\n \"author\": \"SonicJS\",\n \"category\": \"security\",\n \"iconEmoji\": \"🛡️\",\n \"is_core\": true,\n \"permissions\": [\n \"settings:write\",\n \"admin:access\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"siteKey\": \"\",\n \"secretKey\": \"\",\n \"theme\": \"auto\",\n \"size\": \"normal\",\n \"mode\": \"managed\",\n \"appearance\": \"always\",\n \"preClearanceEnabled\": false,\n \"preClearanceLevel\": \"managed\",\n \"enabled\": false\n },\n \"adminMenu\": {\n \"label\": \"Turnstile\",\n \"icon\": \"shield-check\",\n \"path\": \"/admin/plugins/turnstile/settings\",\n \"order\": 100\n }\n },\n\n 'user-profiles': {\n \"id\": \"user-profiles\",\n \"codeName\": \"user-profiles\",\n \"displayName\": \"User Profiles\",\n \"description\": \"Configurable custom profile fields for users\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"users\",\n \"iconEmoji\": \"👤\",\n \"is_core\": true,\n \"permissions\": [],\n \"dependencies\": [],\n \"defaultSettings\": {},\n \"adminMenu\": null\n },\n\n 'workflow-plugin': {\n \"id\": \"workflow-plugin\",\n \"codeName\": \"workflow-plugin\",\n \"displayName\": \"Workflow Engine\",\n \"description\": \"Content workflow and approval system with customizable states, transitions, and review processes\",\n \"version\": \"1.0.0-beta.1\",\n \"author\": \"SonicJS Team\",\n \"category\": \"content\",\n \"iconEmoji\": \"🔄\",\n \"is_core\": false,\n \"permissions\": [\n \"workflow:manage\",\n \"workflow:approve\"\n ],\n \"dependencies\": [],\n \"defaultSettings\": {\n \"enableApprovalChains\": true,\n \"enableScheduling\": true,\n \"enableAutomation\": true,\n \"enableNotifications\": true\n },\n \"adminMenu\": null\n }\n} as const\n\n/**\n * All plugin IDs.\n */\nexport const ALL_PLUGIN_IDS = Object.keys(PLUGIN_REGISTRY)\n\n/**\n * Plugins that have their own admin page (have an adminMenu entry).\n */\nexport const PLUGINS_WITH_ADMIN_PAGES = ALL_PLUGIN_IDS.filter(\n id => PLUGIN_REGISTRY[id]?.adminMenu !== null\n)\n\n/**\n * Look up a plugin by its codeName (the `name` field stored in the DB).\n * Falls back to id lookup if no codeName match.\n */\nexport function findPluginByCodeName(codeName: string): PluginRegistryEntry | undefined {\n return Object.values(PLUGIN_REGISTRY).find(p => p.codeName === codeName)\n || PLUGIN_REGISTRY[codeName]\n}\n\n/**\n * Get a plugin by ID.\n */\nexport function getPlugin(id: string): PluginRegistryEntry | undefined {\n return PLUGIN_REGISTRY[id]\n}\n","import type { D1Database } from \"@cloudflare/workers-types\";\nimport { PluginService } from \"./plugin-service\";\nimport { PLUGIN_REGISTRY } from \"../plugins/manifest-registry\";\nimport type { PluginRegistryEntry } from \"../plugins/manifest-registry\";\n\nexport interface CorePlugin {\n id: string;\n name: string;\n display_name: string;\n description: string;\n version: string;\n author: string;\n category: string;\n icon: string;\n permissions: string[];\n dependencies: string[];\n settings?: any;\n}\n\n/**\n * Build the CORE_PLUGINS list from the auto-generated registry.\n * To add a new bootstrapped plugin, create a manifest.json and\n * run: node packages/scripts/generate-plugin-registry.mjs\n *\n * Only plugins that are in the BOOTSTRAP_PLUGIN_IDS list will be\n * auto-installed on first boot. Edit this list to control which\n * plugins are bootstrapped.\n */\nconst BOOTSTRAP_PLUGIN_IDS = [\n \"core-auth\",\n \"core-media\",\n \"database-tools\",\n \"seed-data\",\n \"core-cache\",\n \"workflow-plugin\",\n \"easy-mdx\",\n \"ai-search\",\n \"oauth-providers\",\n \"global-variables\",\n \"user-profiles\",\n \"stripe\",\n];\n\nfunction registryToCorePlugin(entry: PluginRegistryEntry): CorePlugin {\n return {\n id: entry.id,\n name: entry.codeName,\n display_name: entry.displayName,\n description: entry.description,\n version: entry.version,\n author: entry.author,\n category: entry.category,\n icon: entry.iconEmoji,\n permissions: entry.permissions,\n dependencies: entry.dependencies,\n settings: entry.defaultSettings,\n };\n}\n\nexport class PluginBootstrapService {\n private pluginService: PluginService;\n\n constructor(private db: D1Database) {\n this.pluginService = new PluginService(db);\n }\n\n /**\n * Core plugins derived from the auto-generated plugin registry.\n * Only plugins listed in BOOTSTRAP_PLUGIN_IDS are included.\n */\n private readonly CORE_PLUGINS: CorePlugin[] = BOOTSTRAP_PLUGIN_IDS\n .filter((id) => PLUGIN_REGISTRY[id] !== undefined)\n .map((id) => registryToCorePlugin(PLUGIN_REGISTRY[id]!));\n\n /**\n * Bootstrap all core plugins - install them if they don't exist\n */\n async bootstrapCorePlugins(): Promise {\n console.log(\"[PluginBootstrap] Starting core plugin bootstrap process...\");\n\n try {\n // Check each core plugin\n for (const corePlugin of this.CORE_PLUGINS) {\n await this.ensurePluginInstalled(corePlugin);\n }\n\n console.log(\n \"[PluginBootstrap] Core plugin bootstrap completed successfully\"\n );\n } catch (error) {\n console.error(\"[PluginBootstrap] Error during plugin bootstrap:\", error);\n throw error;\n }\n }\n\n /**\n * Ensure a specific plugin is installed\n */\n private async ensurePluginInstalled(plugin: CorePlugin): Promise {\n try {\n // Check if plugin already exists\n const existingPlugin = await this.pluginService.getPlugin(plugin.id);\n\n if (existingPlugin) {\n console.log(\n `[PluginBootstrap] Plugin already installed: ${plugin.display_name} (status: ${existingPlugin.status})`\n );\n\n // Update plugin if version changed\n if (existingPlugin.version !== plugin.version) {\n console.log(\n `[PluginBootstrap] Updating plugin version: ${plugin.display_name} from ${existingPlugin.version} to ${plugin.version}`\n );\n await this.updatePlugin(plugin);\n }\n\n // ALWAYS ensure core-auth is active (critical for system functionality)\n if (plugin.id === 'core-auth' && existingPlugin.status !== 'active') {\n console.log(\n `[PluginBootstrap] Core-auth plugin is inactive, activating it now...`\n );\n await this.pluginService.activatePlugin(plugin.id);\n }\n\n // Only auto-activate on first install, respect user's activation state on subsequent boots\n } else {\n // Install the plugin\n console.log(\n `[PluginBootstrap] Installing plugin: ${plugin.display_name}`\n );\n await this.pluginService.installPlugin({\n ...plugin,\n is_core: plugin.name.startsWith(\"core-\"),\n });\n\n // Activate plugins immediately after installation\n console.log(\n `[PluginBootstrap] Activating newly installed plugin: ${plugin.display_name}`\n );\n await this.pluginService.activatePlugin(plugin.id);\n }\n } catch (error) {\n console.error(\n `[PluginBootstrap] Error ensuring plugin ${plugin.display_name}:`,\n error\n );\n // Don't throw - continue with other plugins\n }\n }\n\n /**\n * Update an existing plugin\n */\n private async updatePlugin(plugin: CorePlugin): Promise {\n const now = Math.floor(Date.now() / 1000);\n\n const stmt = this.db.prepare(`\n UPDATE plugins\n SET\n version = ?,\n description = ?,\n permissions = ?,\n settings = ?,\n last_updated = ?\n WHERE id = ?\n `);\n\n await stmt\n .bind(\n plugin.version,\n plugin.description,\n JSON.stringify(plugin.permissions),\n JSON.stringify(plugin.settings || {}),\n now,\n plugin.id\n )\n .run();\n }\n\n /**\n * Check if bootstrap is needed (first run detection)\n */\n async isBootstrapNeeded(): Promise {\n try {\n // Check if any core plugins are missing\n for (const corePlugin of this.CORE_PLUGINS.filter((p) =>\n p.name.startsWith(\"core-\")\n )) {\n const exists = await this.pluginService.getPlugin(corePlugin.id);\n if (!exists) {\n return true;\n }\n }\n return false;\n } catch (error) {\n // If there's an error (like table doesn't exist), we need bootstrap\n console.error(\n \"[PluginBootstrap] Error checking bootstrap status:\",\n error\n );\n return true;\n }\n }\n\n}\n"]}
\ No newline at end of file
diff --git a/packages/core/dist/chunk-ZUXOAZWZ.cjs b/packages/core/dist/chunk-ABB34XUS.cjs
similarity index 94%
rename from packages/core/dist/chunk-ZUXOAZWZ.cjs
rename to packages/core/dist/chunk-ABB34XUS.cjs
index 3ce2b4b06..939f77c32 100644
--- a/packages/core/dist/chunk-ZUXOAZWZ.cjs
+++ b/packages/core/dist/chunk-ABB34XUS.cjs
@@ -6,9 +6,9 @@ var chunkIGJUBJBW_cjs = require('./chunk-IGJUBJBW.cjs');
var zod = require('zod');
var hono = require('hono');
-// ../../../../node_modules/semver/internal/constants.js
+// ../../node_modules/semver/internal/constants.js
var require_constants = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/constants.js"(exports$1, module) {
+ "../../node_modules/semver/internal/constants.js"(exports$1, module) {
var SEMVER_SPEC_VERSION = "2.0.0";
var MAX_LENGTH = 256;
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -37,18 +37,18 @@ var require_constants = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/internal/debug.js
+// ../../node_modules/semver/internal/debug.js
var require_debug = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/debug.js"(exports$1, module) {
+ "../../node_modules/semver/internal/debug.js"(exports$1, module) {
var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
};
module.exports = debug;
}
});
-// ../../../../node_modules/semver/internal/re.js
+// ../../node_modules/semver/internal/re.js
var require_re = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/re.js"(exports$1, module) {
+ "../../node_modules/semver/internal/re.js"(exports$1, module) {
var {
MAX_SAFE_COMPONENT_LENGTH,
MAX_SAFE_BUILD_LENGTH,
@@ -133,9 +133,9 @@ var require_re = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/internal/parse-options.js
+// ../../node_modules/semver/internal/parse-options.js
var require_parse_options = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/parse-options.js"(exports$1, module) {
+ "../../node_modules/semver/internal/parse-options.js"(exports$1, module) {
var looseOption = Object.freeze({ loose: true });
var emptyOpts = Object.freeze({});
var parseOptions = (options) => {
@@ -151,9 +151,9 @@ var require_parse_options = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/internal/identifiers.js
+// ../../node_modules/semver/internal/identifiers.js
var require_identifiers = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/identifiers.js"(exports$1, module) {
+ "../../node_modules/semver/internal/identifiers.js"(exports$1, module) {
var numeric = /^[0-9]+$/;
var compareIdentifiers = (a, b) => {
if (typeof a === "number" && typeof b === "number") {
@@ -175,9 +175,9 @@ var require_identifiers = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/classes/semver.js
+// ../../node_modules/semver/classes/semver.js
var require_semver = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/classes/semver.js"(exports$1, module) {
+ "../../node_modules/semver/classes/semver.js"(exports$1, module) {
var debug = require_debug();
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
var { safeRe: re, t } = require_re();
@@ -453,9 +453,9 @@ var require_semver = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/parse.js
+// ../../node_modules/semver/functions/parse.js
var require_parse = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/parse.js"(exports$1, module) {
+ "../../node_modules/semver/functions/parse.js"(exports$1, module) {
var SemVer = require_semver();
var parse = (version, options, throwErrors = false) => {
if (version instanceof SemVer) {
@@ -474,9 +474,9 @@ var require_parse = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/valid.js
+// ../../node_modules/semver/functions/valid.js
var require_valid = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/valid.js"(exports$1, module) {
+ "../../node_modules/semver/functions/valid.js"(exports$1, module) {
var parse = require_parse();
var valid = (version, options) => {
const v = parse(version, options);
@@ -486,9 +486,9 @@ var require_valid = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/clean.js
+// ../../node_modules/semver/functions/clean.js
var require_clean = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/clean.js"(exports$1, module) {
+ "../../node_modules/semver/functions/clean.js"(exports$1, module) {
var parse = require_parse();
var clean = (version, options) => {
const s = parse(version.trim().replace(/^[=v]+/, ""), options);
@@ -498,9 +498,9 @@ var require_clean = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/inc.js
+// ../../node_modules/semver/functions/inc.js
var require_inc = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/inc.js"(exports$1, module) {
+ "../../node_modules/semver/functions/inc.js"(exports$1, module) {
var SemVer = require_semver();
var inc = (version, release, options, identifier, identifierBase) => {
if (typeof options === "string") {
@@ -521,9 +521,9 @@ var require_inc = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/diff.js
+// ../../node_modules/semver/functions/diff.js
var require_diff = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/diff.js"(exports$1, module) {
+ "../../node_modules/semver/functions/diff.js"(exports$1, module) {
var parse = require_parse();
var diff = (version1, version2) => {
const v1 = parse(version1, null, true);
@@ -564,36 +564,36 @@ var require_diff = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/major.js
+// ../../node_modules/semver/functions/major.js
var require_major = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/major.js"(exports$1, module) {
+ "../../node_modules/semver/functions/major.js"(exports$1, module) {
var SemVer = require_semver();
var major = (a, loose) => new SemVer(a, loose).major;
module.exports = major;
}
});
-// ../../../../node_modules/semver/functions/minor.js
+// ../../node_modules/semver/functions/minor.js
var require_minor = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/minor.js"(exports$1, module) {
+ "../../node_modules/semver/functions/minor.js"(exports$1, module) {
var SemVer = require_semver();
var minor = (a, loose) => new SemVer(a, loose).minor;
module.exports = minor;
}
});
-// ../../../../node_modules/semver/functions/patch.js
+// ../../node_modules/semver/functions/patch.js
var require_patch = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/patch.js"(exports$1, module) {
+ "../../node_modules/semver/functions/patch.js"(exports$1, module) {
var SemVer = require_semver();
var patch = (a, loose) => new SemVer(a, loose).patch;
module.exports = patch;
}
});
-// ../../../../node_modules/semver/functions/prerelease.js
+// ../../node_modules/semver/functions/prerelease.js
var require_prerelease = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/prerelease.js"(exports$1, module) {
+ "../../node_modules/semver/functions/prerelease.js"(exports$1, module) {
var parse = require_parse();
var prerelease = (version, options) => {
const parsed = parse(version, options);
@@ -603,36 +603,36 @@ var require_prerelease = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/compare.js
+// ../../node_modules/semver/functions/compare.js
var require_compare = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/compare.js"(exports$1, module) {
+ "../../node_modules/semver/functions/compare.js"(exports$1, module) {
var SemVer = require_semver();
var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
module.exports = compare;
}
});
-// ../../../../node_modules/semver/functions/rcompare.js
+// ../../node_modules/semver/functions/rcompare.js
var require_rcompare = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/rcompare.js"(exports$1, module) {
+ "../../node_modules/semver/functions/rcompare.js"(exports$1, module) {
var compare = require_compare();
var rcompare = (a, b, loose) => compare(b, a, loose);
module.exports = rcompare;
}
});
-// ../../../../node_modules/semver/functions/compare-loose.js
+// ../../node_modules/semver/functions/compare-loose.js
var require_compare_loose = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/compare-loose.js"(exports$1, module) {
+ "../../node_modules/semver/functions/compare-loose.js"(exports$1, module) {
var compare = require_compare();
var compareLoose = (a, b) => compare(a, b, true);
module.exports = compareLoose;
}
});
-// ../../../../node_modules/semver/functions/compare-build.js
+// ../../node_modules/semver/functions/compare-build.js
var require_compare_build = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/compare-build.js"(exports$1, module) {
+ "../../node_modules/semver/functions/compare-build.js"(exports$1, module) {
var SemVer = require_semver();
var compareBuild = (a, b, loose) => {
const versionA = new SemVer(a, loose);
@@ -643,81 +643,81 @@ var require_compare_build = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/sort.js
+// ../../node_modules/semver/functions/sort.js
var require_sort = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/sort.js"(exports$1, module) {
+ "../../node_modules/semver/functions/sort.js"(exports$1, module) {
var compareBuild = require_compare_build();
var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
module.exports = sort;
}
});
-// ../../../../node_modules/semver/functions/rsort.js
+// ../../node_modules/semver/functions/rsort.js
var require_rsort = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/rsort.js"(exports$1, module) {
+ "../../node_modules/semver/functions/rsort.js"(exports$1, module) {
var compareBuild = require_compare_build();
var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
module.exports = rsort;
}
});
-// ../../../../node_modules/semver/functions/gt.js
+// ../../node_modules/semver/functions/gt.js
var require_gt = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/gt.js"(exports$1, module) {
+ "../../node_modules/semver/functions/gt.js"(exports$1, module) {
var compare = require_compare();
var gt = (a, b, loose) => compare(a, b, loose) > 0;
module.exports = gt;
}
});
-// ../../../../node_modules/semver/functions/lt.js
+// ../../node_modules/semver/functions/lt.js
var require_lt = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/lt.js"(exports$1, module) {
+ "../../node_modules/semver/functions/lt.js"(exports$1, module) {
var compare = require_compare();
var lt = (a, b, loose) => compare(a, b, loose) < 0;
module.exports = lt;
}
});
-// ../../../../node_modules/semver/functions/eq.js
+// ../../node_modules/semver/functions/eq.js
var require_eq = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/eq.js"(exports$1, module) {
+ "../../node_modules/semver/functions/eq.js"(exports$1, module) {
var compare = require_compare();
var eq = (a, b, loose) => compare(a, b, loose) === 0;
module.exports = eq;
}
});
-// ../../../../node_modules/semver/functions/neq.js
+// ../../node_modules/semver/functions/neq.js
var require_neq = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/neq.js"(exports$1, module) {
+ "../../node_modules/semver/functions/neq.js"(exports$1, module) {
var compare = require_compare();
var neq = (a, b, loose) => compare(a, b, loose) !== 0;
module.exports = neq;
}
});
-// ../../../../node_modules/semver/functions/gte.js
+// ../../node_modules/semver/functions/gte.js
var require_gte = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/gte.js"(exports$1, module) {
+ "../../node_modules/semver/functions/gte.js"(exports$1, module) {
var compare = require_compare();
var gte = (a, b, loose) => compare(a, b, loose) >= 0;
module.exports = gte;
}
});
-// ../../../../node_modules/semver/functions/lte.js
+// ../../node_modules/semver/functions/lte.js
var require_lte = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/lte.js"(exports$1, module) {
+ "../../node_modules/semver/functions/lte.js"(exports$1, module) {
var compare = require_compare();
var lte = (a, b, loose) => compare(a, b, loose) <= 0;
module.exports = lte;
}
});
-// ../../../../node_modules/semver/functions/cmp.js
+// ../../node_modules/semver/functions/cmp.js
var require_cmp = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/cmp.js"(exports$1, module) {
+ "../../node_modules/semver/functions/cmp.js"(exports$1, module) {
var eq = require_eq();
var neq = require_neq();
var gt = require_gt();
@@ -764,9 +764,9 @@ var require_cmp = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/coerce.js
+// ../../node_modules/semver/functions/coerce.js
var require_coerce = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/coerce.js"(exports$1, module) {
+ "../../node_modules/semver/functions/coerce.js"(exports$1, module) {
var SemVer = require_semver();
var parse = require_parse();
var { safeRe: re, t } = require_re();
@@ -809,9 +809,9 @@ var require_coerce = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/internal/lrucache.js
+// ../../node_modules/semver/internal/lrucache.js
var require_lrucache = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/internal/lrucache.js"(exports$1, module) {
+ "../../node_modules/semver/internal/lrucache.js"(exports$1, module) {
var LRUCache = class {
constructor() {
this.max = 1e3;
@@ -846,9 +846,9 @@ var require_lrucache = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/classes/range.js
+// ../../node_modules/semver/classes/range.js
var require_range = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/classes/range.js"(exports$1, module) {
+ "../../node_modules/semver/classes/range.js"(exports$1, module) {
var SPACE_CHARACTERS = /\s+/g;
var Range = class _Range {
constructor(range, options) {
@@ -1222,9 +1222,9 @@ var require_range = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/classes/comparator.js
+// ../../node_modules/semver/classes/comparator.js
var require_comparator = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/classes/comparator.js"(exports$1, module) {
+ "../../node_modules/semver/classes/comparator.js"(exports$1, module) {
var ANY = Symbol("SemVer ANY");
var Comparator = class _Comparator {
static get ANY() {
@@ -1334,9 +1334,9 @@ var require_comparator = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/functions/satisfies.js
+// ../../node_modules/semver/functions/satisfies.js
var require_satisfies = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/functions/satisfies.js"(exports$1, module) {
+ "../../node_modules/semver/functions/satisfies.js"(exports$1, module) {
var Range = require_range();
var satisfies = (version, range, options) => {
try {
@@ -1350,18 +1350,18 @@ var require_satisfies = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/to-comparators.js
+// ../../node_modules/semver/ranges/to-comparators.js
var require_to_comparators = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/to-comparators.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/to-comparators.js"(exports$1, module) {
var Range = require_range();
var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
module.exports = toComparators;
}
});
-// ../../../../node_modules/semver/ranges/max-satisfying.js
+// ../../node_modules/semver/ranges/max-satisfying.js
var require_max_satisfying = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/max-satisfying.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/max-satisfying.js"(exports$1, module) {
var SemVer = require_semver();
var Range = require_range();
var maxSatisfying = (versions, range, options) => {
@@ -1387,9 +1387,9 @@ var require_max_satisfying = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/min-satisfying.js
+// ../../node_modules/semver/ranges/min-satisfying.js
var require_min_satisfying = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/min-satisfying.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/min-satisfying.js"(exports$1, module) {
var SemVer = require_semver();
var Range = require_range();
var minSatisfying = (versions, range, options) => {
@@ -1415,9 +1415,9 @@ var require_min_satisfying = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/min-version.js
+// ../../node_modules/semver/ranges/min-version.js
var require_min_version = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/min-version.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/min-version.js"(exports$1, module) {
var SemVer = require_semver();
var Range = require_range();
var gt = require_gt();
@@ -1473,9 +1473,9 @@ var require_min_version = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/valid.js
+// ../../node_modules/semver/ranges/valid.js
var require_valid2 = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/valid.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/valid.js"(exports$1, module) {
var Range = require_range();
var validRange = (range, options) => {
try {
@@ -1488,9 +1488,9 @@ var require_valid2 = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/outside.js
+// ../../node_modules/semver/ranges/outside.js
var require_outside = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/outside.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/outside.js"(exports$1, module) {
var SemVer = require_semver();
var Comparator = require_comparator();
var { ANY } = Comparator;
@@ -1556,27 +1556,27 @@ var require_outside = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/gtr.js
+// ../../node_modules/semver/ranges/gtr.js
var require_gtr = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/gtr.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/gtr.js"(exports$1, module) {
var outside = require_outside();
var gtr = (version, range, options) => outside(version, range, ">", options);
module.exports = gtr;
}
});
-// ../../../../node_modules/semver/ranges/ltr.js
+// ../../node_modules/semver/ranges/ltr.js
var require_ltr = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/ltr.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/ltr.js"(exports$1, module) {
var outside = require_outside();
var ltr = (version, range, options) => outside(version, range, "<", options);
module.exports = ltr;
}
});
-// ../../../../node_modules/semver/ranges/intersects.js
+// ../../node_modules/semver/ranges/intersects.js
var require_intersects = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/intersects.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/intersects.js"(exports$1, module) {
var Range = require_range();
var intersects = (r1, r2, options) => {
r1 = new Range(r1, options);
@@ -1587,9 +1587,9 @@ var require_intersects = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/simplify.js
+// ../../node_modules/semver/ranges/simplify.js
var require_simplify = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/simplify.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/simplify.js"(exports$1, module) {
var satisfies = require_satisfies();
var compare = require_compare();
module.exports = (versions, range, options) => {
@@ -1636,9 +1636,9 @@ var require_simplify = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/ranges/subset.js
+// ../../node_modules/semver/ranges/subset.js
var require_subset = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/ranges/subset.js"(exports$1, module) {
+ "../../node_modules/semver/ranges/subset.js"(exports$1, module) {
var Range = require_range();
var Comparator = require_comparator();
var { ANY } = Comparator;
@@ -1797,9 +1797,9 @@ var require_subset = chunkIGJUBJBW_cjs.__commonJS({
}
});
-// ../../../../node_modules/semver/index.js
+// ../../node_modules/semver/index.js
var require_semver2 = chunkIGJUBJBW_cjs.__commonJS({
- "../../../../node_modules/semver/index.js"(exports$1, module) {
+ "../../node_modules/semver/index.js"(exports$1, module) {
var internalRe = require_re();
var constants = require_constants();
var SemVer = require_semver();
@@ -3180,5 +3180,5 @@ exports.PluginValidator = PluginValidator;
exports.ScopedHookSystem = ScopedHookSystem;
exports.createTurnstileMiddleware = createTurnstileMiddleware;
exports.verifyTurnstile = verifyTurnstile;
-//# sourceMappingURL=chunk-ZUXOAZWZ.cjs.map
-//# sourceMappingURL=chunk-ZUXOAZWZ.cjs.map
\ No newline at end of file
+//# sourceMappingURL=chunk-ABB34XUS.cjs.map
+//# sourceMappingURL=chunk-ABB34XUS.cjs.map
\ No newline at end of file
diff --git a/packages/core/dist/chunk-ABB34XUS.cjs.map b/packages/core/dist/chunk-ABB34XUS.cjs.map
new file mode 100644
index 000000000..265930b92
--- /dev/null
+++ b/packages/core/dist/chunk-ABB34XUS.cjs.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js","../src/plugins/hook-system.ts","../src/plugins/plugin-validator.ts","../src/plugins/plugin-registry.ts","../src/plugins/plugin-manager.ts","../src/plugins/core-plugins/turnstile-plugin/middleware/verify.ts","../src/plugins/core-plugins/turnstile-plugin/index.ts"],"names":["__commonJS","exports","z","require_valid","require_semver","__toESM","semver","HOOKS","Hono","TurnstileService","PluginBuilder","manifest_default"],"mappings":"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","file":"chunk-ABB34XUS.cjs","sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","/**\n * Hook System Implementation\n * \n * Provides event-driven extensibility for plugins\n */\n\nimport { HookSystem, HookHandler, PluginHook, HookContext } from '../types'\n\nexport class HookSystemImpl implements HookSystem {\n private hooks: Map = new Map()\n private executing: Set = new Set()\n\n /**\n * Register a hook handler\n */\n register(hookName: string, handler: HookHandler, priority: number = 10): void {\n if (!this.hooks.has(hookName)) {\n this.hooks.set(hookName, [])\n }\n\n const hooks = this.hooks.get(hookName)!\n const hook: PluginHook = {\n name: hookName,\n handler,\n priority,\n }\n\n // Insert hook in priority order (lower priority = earlier execution)\n const insertIndex = hooks.findIndex(h => h.priority! > priority)\n if (insertIndex === -1) {\n hooks.push(hook)\n } else {\n hooks.splice(insertIndex, 0, hook)\n }\n\n console.debug(`Hook registered: ${hookName} (priority: ${priority})`)\n }\n\n /**\n * Execute all handlers for a hook\n */\n async execute(hookName: string, data: any, context?: any): Promise {\n const hooks = this.hooks.get(hookName)\n if (!hooks || hooks.length === 0) {\n return data\n }\n\n // Prevent infinite recursion\n if (this.executing.has(hookName)) {\n console.warn(`Hook recursion detected for: ${hookName}`)\n return data\n }\n\n this.executing.add(hookName)\n\n try {\n let result = data\n let cancelled = false\n\n const hookContext: HookContext = {\n plugin: '', // Will be set by the plugin manager\n context: context || {},\n cancel: () => { cancelled = true }\n }\n\n for (const hook of hooks) {\n if (cancelled) {\n console.debug(`Hook execution cancelled: ${hookName}`)\n break\n }\n\n try {\n console.debug(`Executing hook: ${hookName} (priority: ${hook.priority})`)\n result = await hook.handler(result, hookContext)\n } catch (error) {\n console.error(`Hook execution failed: ${hookName}`, error)\n // Continue executing other hooks unless it's a critical error\n if (error instanceof Error && error.message.includes('CRITICAL')) {\n throw error\n }\n }\n }\n\n return result\n } finally {\n this.executing.delete(hookName)\n }\n }\n\n /**\n * Remove a hook handler\n */\n unregister(hookName: string, handler: HookHandler): void {\n const hooks = this.hooks.get(hookName)\n if (!hooks) return\n\n const index = hooks.findIndex(h => h.handler === handler)\n if (index !== -1) {\n hooks.splice(index, 1)\n console.debug(`Hook unregistered: ${hookName}`)\n }\n\n // Clean up empty hook arrays\n if (hooks.length === 0) {\n this.hooks.delete(hookName)\n }\n }\n\n /**\n * Get all registered hooks for a name\n */\n getHooks(hookName: string): PluginHook[] {\n return this.hooks.get(hookName) || []\n }\n\n /**\n * Get all registered hook names\n */\n getHookNames(): string[] {\n return Array.from(this.hooks.keys())\n }\n\n /**\n * Get hook statistics\n */\n getStats(): { hookName: string; handlerCount: number }[] {\n return Array.from(this.hooks.entries()).map(([hookName, handlers]) => ({\n hookName,\n handlerCount: handlers.length\n }))\n }\n\n /**\n * Clear all hooks (useful for testing)\n */\n clear(): void {\n this.hooks.clear()\n this.executing.clear()\n }\n\n /**\n * Create a scoped hook system for a plugin\n */\n createScope(_pluginName: string): ScopedHookSystem {\n return new ScopedHookSystem(this)\n }\n}\n\n/**\n * Scoped hook system for individual plugins\n */\nexport class ScopedHookSystem {\n private registeredHooks: { hookName: string; handler: HookHandler }[] = []\n\n constructor(\n private parent: HookSystemImpl\n ) {}\n\n /**\n * Register a hook (scoped to this plugin)\n */\n register(hookName: string, handler: HookHandler, priority?: number): void {\n this.parent.register(hookName, handler, priority)\n this.registeredHooks.push({ hookName, handler })\n }\n\n /**\n * Execute a hook\n */\n async execute(hookName: string, data: any, context?: any): Promise {\n return this.parent.execute(hookName, data, context)\n }\n\n /**\n * Unregister a specific hook\n */\n unregister(hookName: string, handler: HookHandler): void {\n this.parent.unregister(hookName, handler)\n const index = this.registeredHooks.findIndex(\n h => h.hookName === hookName && h.handler === handler\n )\n if (index !== -1) {\n this.registeredHooks.splice(index, 1)\n }\n }\n\n /**\n * Unregister all hooks for this plugin\n */\n unregisterAll(): void {\n for (const { hookName, handler } of this.registeredHooks) {\n this.parent.unregister(hookName, handler)\n }\n this.registeredHooks.length = 0\n }\n\n /**\n * Get hooks registered by this plugin\n */\n getRegisteredHooks(): { hookName: string; handler: HookHandler }[] {\n return [...this.registeredHooks]\n }\n}\n\n/**\n * Hook utilities\n */\nexport class HookUtils {\n /**\n * Create a hook name with namespace\n */\n static createHookName(namespace: string, event: string): string {\n return `${namespace}:${event}`\n }\n\n /**\n * Parse a hook name to extract namespace and event\n */\n static parseHookName(hookName: string): { namespace: string; event: string } {\n const parts = hookName.split(':')\n return {\n namespace: parts[0] || '',\n event: parts.slice(1).join(':') || ''\n }\n }\n\n /**\n * Create a middleware that executes hooks\n */\n static createHookMiddleware(\n hookSystem: HookSystem,\n beforeHook?: string,\n afterHook?: string\n ) {\n return async (c: any, next: any) => {\n if (beforeHook) {\n const beforeData = { request: c.req, context: c }\n await hookSystem.execute(beforeHook, beforeData)\n }\n\n await next()\n\n if (afterHook) {\n const afterData = { request: c.req, response: c.res, context: c }\n await hookSystem.execute(afterHook, afterData)\n }\n }\n }\n\n /**\n * Create a debounced hook handler\n */\n static debounce(handler: HookHandler, delay: number): HookHandler {\n let timeoutId: any\n \n return async (data: any, context: HookContext) => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n return new Promise((resolve, reject) => {\n timeoutId = setTimeout(async () => {\n try {\n const result = await handler(data, context)\n resolve(result)\n } catch (error) {\n reject(error)\n }\n }, delay)\n })\n }\n }\n\n /**\n * Create a throttled hook handler\n */\n static throttle(handler: HookHandler, limit: number): HookHandler {\n let lastExecution = 0\n\n return async (data: any, context: HookContext) => {\n const now = Date.now()\n if (now - lastExecution >= limit) {\n lastExecution = now\n return handler(data, context)\n }\n return data\n }\n }\n}","/**\n * Plugin Validator\n * \n * Validates plugin definitions, dependencies, and compatibility\n */\n\nimport { z } from 'zod'\nimport { Plugin, PluginValidator as IPluginValidator, PluginValidationResult, PluginRegistry } from '../types'\nimport semver from 'semver'\n\n// Zod schemas for plugin validation\nconst PluginAuthorSchema = z.object({\n name: z.string().min(1),\n email: z.string().email().optional(),\n url: z.string().url().optional(),\n})\n\nconst PluginRoutesSchema = z.object({\n path: z.string().min(1),\n handler: z.any(), // Hono instance\n description: z.string().optional(),\n requiresAuth: z.boolean().optional(),\n roles: z.array(z.string()).optional(),\n priority: z.number().optional(),\n})\n\nconst PluginMiddlewareSchema = z.object({\n name: z.string().min(1),\n handler: z.function(),\n description: z.string().optional(),\n priority: z.number().optional(),\n routes: z.array(z.string()).optional(),\n global: z.boolean().optional(),\n})\n\nconst PluginModelSchema = z.object({\n name: z.string().min(1),\n tableName: z.string().min(1),\n schema: z.any(), // Zod schema\n migrations: z.array(z.string()),\n relationships: z.array(z.object({\n type: z.enum(['oneToOne', 'oneToMany', 'manyToMany']),\n target: z.string(),\n foreignKey: z.string().optional(),\n joinTable: z.string().optional(),\n })).optional(),\n extendsContent: z.boolean().optional(),\n})\n\nconst PluginServiceSchema = z.object({\n name: z.string().min(1),\n implementation: z.any(),\n description: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n singleton: z.boolean().optional(),\n})\n\nconst PluginAdminPageSchema = z.object({\n path: z.string().min(1),\n title: z.string().min(1),\n component: z.string().min(1),\n description: z.string().optional(),\n permissions: z.array(z.string()).optional(),\n menuItem: z.object({\n label: z.string(),\n path: z.string(),\n icon: z.string().optional(),\n order: z.number().optional(),\n parent: z.string().optional(),\n permissions: z.array(z.string()).optional(),\n active: z.boolean().optional(),\n }).optional(),\n icon: z.string().optional(),\n})\n\nconst PluginComponentSchema = z.object({\n name: z.string().min(1),\n template: z.function(),\n description: z.string().optional(),\n propsSchema: z.any().optional(), // Zod schema\n})\n\nconst PluginHookSchema = z.object({\n name: z.string().min(1),\n handler: z.function(),\n priority: z.number().optional(),\n description: z.string().optional(),\n})\n\nconst PluginSchema = z.object({\n name: z.string().min(1).regex(/^[a-z0-9-]+$/, 'Plugin name must be lowercase with hyphens'),\n version: z.string().refine(v => semver.valid(v), 'Version must be valid semver'),\n description: z.string().optional(),\n author: PluginAuthorSchema.optional(),\n dependencies: z.array(z.string()).optional(),\n compatibility: z.string().optional(),\n license: z.string().optional(),\n \n // Extension points\n routes: z.array(PluginRoutesSchema).optional(),\n middleware: z.array(PluginMiddlewareSchema).optional(),\n models: z.array(PluginModelSchema).optional(),\n services: z.array(PluginServiceSchema).optional(),\n adminPages: z.array(PluginAdminPageSchema).optional(),\n adminComponents: z.array(PluginComponentSchema).optional(),\n menuItems: z.array(z.object({\n label: z.string(),\n path: z.string(),\n icon: z.string().optional(),\n order: z.number().optional(),\n parent: z.string().optional(),\n permissions: z.array(z.string()).optional(),\n active: z.boolean().optional(),\n })).optional(),\n hooks: z.array(PluginHookSchema).optional(),\n \n // Lifecycle hooks\n install: z.function().optional(),\n uninstall: z.function().optional(),\n activate: z.function().optional(),\n deactivate: z.function().optional(),\n configure: z.function().optional(),\n})\n\nexport class PluginValidator implements IPluginValidator {\n private static readonly RESERVED_NAMES = [\n 'core', 'system', 'admin', 'api', 'auth', 'content', 'media', 'users', 'collections'\n ]\n\n private static readonly RESERVED_PATHS = [\n '/admin', '/api', '/auth', '/docs', '/media', '/_assets'\n ]\n\n /**\n * Validate plugin definition\n */\n validate(plugin: Plugin): PluginValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n try {\n // Schema validation\n const result = PluginSchema.safeParse(plugin)\n if (!result.success) {\n result.error.issues.forEach((err: any) => {\n errors.push(`${err.path.join('.')}: ${err.message}`)\n })\n }\n\n // Reserved name validation\n if (PluginValidator.RESERVED_NAMES.includes(plugin.name)) {\n errors.push(`Plugin name \"${plugin.name}\" is reserved`)\n }\n\n // Route path validation\n if (plugin.routes) {\n for (const route of plugin.routes) {\n if (PluginValidator.RESERVED_PATHS.some(path => route.path.startsWith(path))) {\n errors.push(`Route path \"${route.path}\" conflicts with reserved system path`)\n }\n \n if (!route.path.startsWith('/')) {\n errors.push(`Route path \"${route.path}\" must start with /`)\n }\n }\n }\n\n // Model validation\n if (plugin.models) {\n const modelNames = new Set()\n const tableNames = new Set()\n \n for (const model of plugin.models) {\n // Check for duplicate model names\n if (modelNames.has(model.name)) {\n errors.push(`Duplicate model name: ${model.name}`)\n }\n modelNames.add(model.name)\n \n // Check for duplicate table names\n if (tableNames.has(model.tableName)) {\n errors.push(`Duplicate table name: ${model.tableName}`)\n }\n tableNames.add(model.tableName)\n \n // Validate table name format\n if (!/^[a-z][a-z0-9_]*$/.test(model.tableName)) {\n errors.push(`Invalid table name format: ${model.tableName}`)\n }\n \n // Check for system table conflicts\n const systemTables = ['users', 'collections', 'content', 'content_versions', 'media', 'api_tokens']\n if (systemTables.includes(model.tableName)) {\n errors.push(`Table name \"${model.tableName}\" conflicts with system table`)\n }\n }\n }\n\n // Service validation\n if (plugin.services) {\n const serviceNames = new Set()\n \n for (const service of plugin.services) {\n if (serviceNames.has(service.name)) {\n errors.push(`Duplicate service name: ${service.name}`)\n }\n serviceNames.add(service.name)\n \n // Check for system service conflicts\n const systemServices = ['auth', 'content', 'media', 'cdn']\n if (systemServices.includes(service.name)) {\n warnings.push(`Service name \"${service.name}\" conflicts with system service`)\n }\n }\n }\n\n // Admin page validation\n if (plugin.adminPages) {\n const pagePaths = new Set()\n \n for (const page of plugin.adminPages) {\n if (pagePaths.has(page.path)) {\n errors.push(`Duplicate admin page path: ${page.path}`)\n }\n pagePaths.add(page.path)\n \n if (!page.path.startsWith('/')) {\n errors.push(`Admin page path \"${page.path}\" must start with /`)\n }\n \n // Check for system admin page conflicts\n const systemPaths = ['/', '/collections', '/content', '/media', '/users', '/settings']\n if (systemPaths.includes(page.path)) {\n errors.push(`Admin page path \"${page.path}\" conflicts with system page`)\n }\n }\n }\n\n // Component validation\n if (plugin.adminComponents) {\n const componentNames = new Set()\n \n for (const component of plugin.adminComponents) {\n if (componentNames.has(component.name)) {\n errors.push(`Duplicate component name: ${component.name}`)\n }\n componentNames.add(component.name)\n \n // Check for system component conflicts\n const systemComponents = ['table', 'form', 'alert', 'media-grid', 'pagination']\n if (systemComponents.includes(component.name)) {\n warnings.push(`Component name \"${component.name}\" conflicts with system component`)\n }\n }\n }\n\n // Hook validation\n if (plugin.hooks) {\n for (const hook of plugin.hooks) {\n if (!hook.name.includes(':')) {\n warnings.push(`Hook name \"${hook.name}\" should include namespace (e.g., \"plugin:event\")`)\n }\n }\n }\n\n // Dependency cycle detection (basic)\n if (plugin.dependencies?.includes(plugin.name)) {\n errors.push(`Plugin cannot depend on itself`)\n }\n\n // License validation\n if (plugin.license) {\n const validLicenses = ['MIT', 'Apache-2.0', 'GPL-3.0', 'BSD-3-Clause', 'ISC']\n if (!validLicenses.includes(plugin.license)) {\n warnings.push(`License \"${plugin.license}\" is not a common SPDX identifier`)\n }\n }\n\n // Performance warnings\n if (plugin.middleware && plugin.middleware.length > 5) {\n warnings.push(`Plugin defines ${plugin.middleware.length} middleware functions, consider consolidating`)\n }\n\n if (plugin.hooks && plugin.hooks.length > 10) {\n warnings.push(`Plugin defines ${plugin.hooks.length} hooks, ensure they are necessary`)\n }\n\n } catch (error) {\n errors.push(`Validation error: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n }\n }\n\n /**\n * Validate plugin dependencies\n */\n validateDependencies(plugin: Plugin, registry: PluginRegistry): PluginValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!plugin.dependencies || plugin.dependencies.length === 0) {\n return { valid: true, errors, warnings }\n }\n\n // Check if all dependencies are registered\n for (const depName of plugin.dependencies) {\n if (!registry.has(depName)) {\n errors.push(`Dependency \"${depName}\" is not registered`)\n continue\n }\n\n const dependency = registry.get(depName)!\n \n // Check dependency version compatibility\n if (dependency.compatibility && plugin.compatibility) {\n if (!this.isCompatible(dependency.compatibility, plugin.compatibility)) {\n warnings.push(`Potential compatibility issue with dependency \"${depName}\"`)\n }\n }\n }\n\n // Check for circular dependencies\n const visited = new Set()\n const visiting = new Set()\n \n const checkCircular = (name: string): boolean => {\n if (visiting.has(name)) return true\n if (visited.has(name)) return false\n \n visiting.add(name)\n \n const current = registry.get(name)\n if (current?.dependencies) {\n for (const depName of current.dependencies) {\n if (checkCircular(depName)) {\n errors.push(`Circular dependency detected: ${name} -> ${depName}`)\n return true\n }\n }\n }\n \n visiting.delete(name)\n visited.add(name)\n return false\n }\n\n checkCircular(plugin.name)\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n }\n }\n\n /**\n * Validate plugin compatibility with SonicJS version\n */\n validateCompatibility(plugin: Plugin, sonicVersion: string): PluginValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!plugin.compatibility) {\n warnings.push('Plugin does not specify compatibility version')\n return { valid: true, errors, warnings }\n }\n\n try {\n if (!semver.satisfies(sonicVersion, plugin.compatibility)) {\n errors.push(`Plugin requires SonicJS ${plugin.compatibility}, but current version is ${sonicVersion}`)\n }\n } catch (error) {\n errors.push(`Invalid compatibility version format: ${plugin.compatibility}`)\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n }\n }\n\n /**\n * Check if two version ranges are compatible\n */\n private isCompatible(version1: string, version2: string): boolean {\n try {\n // Simple compatibility check - can be enhanced\n return semver.intersects(version1, version2)\n } catch {\n return false\n }\n }\n\n /**\n * Validate plugin security constraints\n */\n validateSecurity(plugin: Plugin): PluginValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n // Check for potentially dangerous patterns\n const pluginCode = JSON.stringify(plugin)\n \n // Check for eval or Function constructor usage\n if (pluginCode.includes('eval(') || pluginCode.includes('Function(')) {\n errors.push('Plugin contains potentially dangerous code execution patterns')\n }\n\n // Check for file system access attempts\n if (pluginCode.includes('fs.') || pluginCode.includes('require(')) {\n warnings.push('Plugin may attempt file system access (not available in Cloudflare Workers)')\n }\n\n // Check for network access patterns\n if (pluginCode.includes('fetch(') || pluginCode.includes('XMLHttpRequest')) {\n warnings.push('Plugin contains network access code - ensure it follows security guidelines')\n }\n\n // Check for sensitive data patterns\n const sensitivePatterns = ['password', 'secret', 'key', 'token', 'credential']\n for (const pattern of sensitivePatterns) {\n if (pluginCode.toLowerCase().includes(pattern)) {\n warnings.push(`Plugin code contains \"${pattern}\" - ensure sensitive data is properly handled`)\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n }\n }\n}","/**\n * Plugin Registry Implementation\n * \n * Manages plugin registration, activation, and lifecycle\n */\n\nimport { Plugin, PluginRegistry, PluginConfig, PluginStatus } from '../types'\nimport { PluginValidator } from './plugin-validator'\n\nexport class PluginRegistryImpl implements PluginRegistry {\n private plugins: Map = new Map()\n private configs: Map = new Map()\n private statuses: Map = new Map()\n private validator: PluginValidator\n\n constructor(validator?: PluginValidator) {\n this.validator = validator || new PluginValidator()\n }\n\n /**\n * Get plugin by name\n */\n get(name: string): Plugin | undefined {\n return this.plugins.get(name)\n }\n\n /**\n * Get all registered plugins\n */\n getAll(): Plugin[] {\n return Array.from(this.plugins.values())\n }\n\n /**\n * Get active plugins\n */\n getActive(): Plugin[] {\n return this.getAll().filter(plugin => {\n const status = this.statuses.get(plugin.name)\n return status?.active === true\n })\n }\n\n /**\n * Register a plugin\n */\n async register(plugin: Plugin): Promise {\n console.info(`Registering plugin: ${plugin.name} v${plugin.version}`)\n\n // Validate plugin\n const validation = this.validator.validate(plugin)\n if (!validation.valid) {\n throw new Error(`Plugin validation failed for ${plugin.name}: ${validation.errors.join(', ')}`)\n }\n\n // Check for conflicts\n if (this.plugins.has(plugin.name)) {\n const existingPlugin = this.plugins.get(plugin.name)!\n if (existingPlugin.version !== plugin.version) {\n console.warn(`Plugin ${plugin.name} is already registered with version ${existingPlugin.version}, replacing with ${plugin.version}`)\n }\n }\n\n // Validate dependencies\n const depValidation = this.validator.validateDependencies(plugin, this)\n if (!depValidation.valid) {\n throw new Error(`Plugin dependency validation failed for ${plugin.name}: ${depValidation.errors.join(', ')}`)\n }\n\n // Register plugin\n this.plugins.set(plugin.name, plugin)\n \n // Initialize status\n this.statuses.set(plugin.name, {\n name: plugin.name,\n version: plugin.version,\n active: false,\n installed: true,\n hasErrors: false,\n errors: []\n })\n\n console.info(`Plugin registered successfully: ${plugin.name}`)\n }\n\n /**\n * Unregister a plugin\n */\n async unregister(name: string): Promise {\n console.info(`Unregistering plugin: ${name}`)\n\n if (!this.plugins.has(name)) {\n throw new Error(`Plugin not found: ${name}`)\n }\n\n // Check if other plugins depend on this one\n const dependents = this.getDependents(name)\n if (dependents.length > 0) {\n throw new Error(`Cannot unregister ${name}: plugins ${dependents.join(', ')} depend on it`)\n }\n\n // Remove plugin\n this.plugins.delete(name)\n this.configs.delete(name)\n this.statuses.delete(name)\n\n console.info(`Plugin unregistered: ${name}`)\n }\n\n /**\n * Check if plugin is registered\n */\n has(name: string): boolean {\n return this.plugins.has(name)\n }\n\n /**\n * Activate a plugin\n */\n async activate(name: string): Promise {\n console.info(`Activating plugin: ${name}`)\n\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new Error(`Plugin not found: ${name}`)\n }\n\n const status = this.statuses.get(name)\n if (status?.active) {\n console.warn(`Plugin ${name} is already active`)\n return\n }\n\n try {\n // Activate dependencies first\n if (plugin.dependencies) {\n for (const depName of plugin.dependencies) {\n const depStatus = this.statuses.get(depName)\n if (!depStatus?.active) {\n await this.activate(depName)\n }\n }\n }\n\n // Update status\n this.updateStatus(name, {\n active: true,\n hasErrors: false,\n errors: []\n })\n\n console.info(`Plugin activated: ${name}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n this.updateStatus(name, {\n active: false,\n hasErrors: true,\n errors: [errorMessage],\n lastError: errorMessage\n })\n throw new Error(`Failed to activate plugin ${name}: ${errorMessage}`)\n }\n }\n\n /**\n * Deactivate a plugin\n */\n async deactivate(name: string): Promise {\n console.info(`Deactivating plugin: ${name}`)\n\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new Error(`Plugin not found: ${name}`)\n }\n\n const status = this.statuses.get(name)\n if (!status?.active) {\n console.warn(`Plugin ${name} is not active`)\n return\n }\n\n try {\n // Deactivate dependents first\n const dependents = this.getDependents(name)\n for (const depName of dependents) {\n const depStatus = this.statuses.get(depName)\n if (depStatus?.active) {\n await this.deactivate(depName)\n }\n }\n\n // Update status\n this.updateStatus(name, {\n active: false,\n hasErrors: false,\n errors: []\n })\n\n console.info(`Plugin deactivated: ${name}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n this.updateStatus(name, {\n hasErrors: true,\n errors: [errorMessage],\n lastError: errorMessage\n })\n throw new Error(`Failed to deactivate plugin ${name}: ${errorMessage}`)\n }\n }\n\n /**\n * Get plugin configuration\n */\n getConfig(name: string): PluginConfig | undefined {\n return this.configs.get(name)\n }\n\n /**\n * Set plugin configuration\n */\n setConfig(name: string, config: PluginConfig): void {\n this.configs.set(name, {\n ...config,\n updatedAt: Date.now()\n })\n }\n\n /**\n * Get plugin status\n */\n getStatus(name: string): PluginStatus | undefined {\n return this.statuses.get(name)\n }\n\n /**\n * Get all plugin statuses\n */\n getAllStatuses(): Map {\n return new Map(this.statuses)\n }\n\n /**\n * Update plugin status\n */\n private updateStatus(name: string, updates: Partial): void {\n const current = this.statuses.get(name)\n if (current) {\n this.statuses.set(name, { ...current, ...updates })\n }\n }\n\n /**\n * Get plugins that depend on the specified plugin\n */\n private getDependents(name: string): string[] {\n const dependents: string[] = []\n \n for (const [pluginName, plugin] of this.plugins) {\n if (plugin.dependencies?.includes(name)) {\n dependents.push(pluginName)\n }\n }\n \n return dependents\n }\n\n /**\n * Get dependency graph\n */\n getDependencyGraph(): Map {\n const graph = new Map()\n \n for (const [name, plugin] of this.plugins) {\n graph.set(name, plugin.dependencies || [])\n }\n \n return graph\n }\n\n /**\n * Resolve plugin load order based on dependencies\n */\n resolveLoadOrder(): string[] {\n const graph = this.getDependencyGraph()\n const visited = new Set()\n const visiting = new Set()\n const result: string[] = []\n\n const visit = (name: string): void => {\n if (visited.has(name)) return\n if (visiting.has(name)) {\n throw new Error(`Circular dependency detected involving plugin: ${name}`)\n }\n\n visiting.add(name)\n \n const dependencies = graph.get(name) || []\n for (const dep of dependencies) {\n if (!graph.has(dep)) {\n throw new Error(`Plugin ${name} depends on ${dep}, but ${dep} is not registered`)\n }\n visit(dep)\n }\n\n visiting.delete(name)\n visited.add(name)\n result.push(name)\n }\n\n for (const name of graph.keys()) {\n visit(name)\n }\n\n return result\n }\n\n /**\n * Export plugin configuration\n */\n exportConfig(): { plugins: PluginConfig[] } {\n const plugins: PluginConfig[] = []\n \n for (const [name, config] of this.configs) {\n plugins.push({\n ...config,\n name\n } as PluginConfig & { name: string })\n }\n \n return { plugins }\n }\n\n /**\n * Import plugin configuration\n */\n importConfig(config: { plugins: PluginConfig[] }): void {\n for (const pluginConfig of config.plugins) {\n if ('name' in pluginConfig) {\n const { name, ...rest } = pluginConfig as PluginConfig & { name: string }\n this.setConfig(name, rest)\n }\n }\n }\n\n /**\n * Clear all plugins (useful for testing)\n */\n clear(): void {\n this.plugins.clear()\n this.configs.clear()\n this.statuses.clear()\n }\n\n /**\n * Get registry statistics\n */\n getStats(): {\n total: number\n active: number\n inactive: number\n withErrors: number\n } {\n const statuses = Array.from(this.statuses.values())\n \n return {\n total: statuses.length,\n active: statuses.filter(s => s.active).length,\n inactive: statuses.filter(s => !s.active).length,\n withErrors: statuses.filter(s => s.hasErrors).length\n }\n }\n}","/**\n * Plugin Manager\n * \n * Central orchestrator for the plugin system\n */\n\nimport { Hono } from 'hono'\nimport { Plugin, PluginManager as IPluginManager, PluginRegistry, PluginConfig, PluginContext, PluginStatus, HookSystem, PluginLogger, HOOKS } from '../types'\nimport { PluginRegistryImpl } from './plugin-registry'\nimport { HookSystemImpl, ScopedHookSystem } from './hook-system'\nimport { PluginValidator } from './plugin-validator'\n\nexport class PluginManager implements IPluginManager {\n public readonly registry: PluginRegistry\n public readonly hooks: HookSystem\n private validator: PluginValidator\n private context?: PluginContext\n private scopedHooks: Map = new Map()\n private pluginRoutes: Map = new Map()\n\n constructor() {\n this.validator = new PluginValidator()\n this.registry = new PluginRegistryImpl(this.validator)\n this.hooks = new HookSystemImpl()\n }\n\n /**\n * Initialize plugin system\n */\n async initialize(context: PluginContext): Promise {\n console.info('Initializing plugin system...')\n \n this.context = context\n \n // Execute app init hook\n await this.hooks.execute(HOOKS.APP_INIT, {\n pluginManager: this,\n context\n })\n\n console.info('Plugin system initialized')\n }\n\n /**\n * Load plugins from configuration\n */\n async loadPlugins(configs: PluginConfig[]): Promise {\n console.info(`Loading ${configs.length} plugins...`)\n\n // Filter enabled plugins\n const enabledConfigs = configs.filter(config => config.enabled)\n \n if (enabledConfigs.length === 0) {\n console.info('No enabled plugins to load')\n return\n }\n\n // Load and register plugins (implementation would depend on how plugins are distributed)\n for (const config of enabledConfigs) {\n try {\n // In a real implementation, this would load the plugin from a registry or file system\n // For now, we'll assume plugins are already imported\n console.info(`Loading plugin configuration: ${JSON.stringify(config)}`)\n \n // Store configuration\n if ('name' in config) {\n this.registry.setConfig(config.name as string, config)\n }\n } catch (error) {\n console.error(`Failed to load plugin configuration:`, error)\n }\n }\n\n // Resolve load order based on dependencies\n try {\n const loadOrder = this.registry.resolveLoadOrder()\n console.info(`Plugin load order: ${loadOrder.join(' -> ')}`)\n\n // Activate plugins in dependency order\n for (const pluginName of loadOrder) {\n const config = this.registry.getConfig(pluginName)\n if (config?.enabled) {\n await this.registry.activate(pluginName)\n }\n }\n } catch (error) {\n console.error('Failed to resolve plugin load order:', error)\n }\n\n console.info('Plugin loading completed')\n }\n\n /**\n * Install a plugin\n */\n async install(plugin: Plugin, config?: PluginConfig): Promise {\n console.info(`Installing plugin: ${plugin.name}`)\n\n if (!this.context) {\n throw new Error('Plugin manager not initialized')\n }\n\n try {\n // Validate plugin\n const validation = this.validator.validate(plugin)\n if (!validation.valid) {\n throw new Error(`Plugin validation failed: ${validation.errors.join(', ')}`)\n }\n\n // Register plugin\n await this.registry.register(plugin)\n\n // Set configuration\n const pluginConfig: PluginConfig = {\n enabled: true,\n installedAt: Date.now(),\n ...config\n }\n this.registry.setConfig(plugin.name, pluginConfig)\n\n // Create scoped hook system for plugin\n const scopedHooks = this.hooks.createScope ? \n (this.hooks as HookSystemImpl).createScope(plugin.name) : \n this.hooks\n\n this.scopedHooks.set(plugin.name, scopedHooks as ScopedHookSystem)\n\n // Create plugin context\n const pluginContext: PluginContext = {\n ...this.context,\n config: pluginConfig,\n hooks: scopedHooks,\n logger: this.createLogger(plugin.name)\n }\n\n // Register plugin extensions\n await this.registerPluginExtensions(plugin, pluginContext)\n\n // Run plugin install hook\n if (plugin.install) {\n await plugin.install(pluginContext)\n }\n\n // Execute plugin install hook\n await this.hooks.execute(HOOKS.PLUGIN_INSTALL, {\n plugin: plugin.name,\n version: plugin.version,\n context: pluginContext\n })\n\n console.info(`Plugin installed successfully: ${plugin.name}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(`Failed to install plugin ${plugin.name}:`, errorMessage)\n \n // Update status with error\n const status = this.registry.getStatus(plugin.name)\n if (status) {\n this.updatePluginStatus(plugin.name, {\n hasErrors: true,\n errors: [...(status.errors || []), errorMessage],\n lastError: errorMessage\n })\n }\n \n throw error\n }\n }\n\n /**\n * Uninstall a plugin\n */\n async uninstall(name: string): Promise {\n console.info(`Uninstalling plugin: ${name}`)\n\n const plugin = this.registry.get(name)\n if (!plugin) {\n throw new Error(`Plugin not found: ${name}`)\n }\n\n if (!this.context) {\n throw new Error('Plugin manager not initialized')\n }\n\n try {\n // Deactivate plugin first\n const status = this.registry.getStatus(name)\n if (status?.active) {\n await this.registry.deactivate(name)\n }\n\n // Create plugin context\n const config = this.registry.getConfig(name) || { enabled: false }\n const pluginContext: PluginContext = {\n ...this.context,\n config,\n hooks: this.scopedHooks.get(name) || this.hooks,\n logger: this.createLogger(name)\n }\n\n // Run plugin uninstall hook\n if (plugin.uninstall) {\n await plugin.uninstall(pluginContext)\n }\n\n // Unregister plugin extensions\n await this.unregisterPluginExtensions(plugin)\n\n // Clean up scoped hooks\n const scopedHooks = this.scopedHooks.get(name)\n if (scopedHooks && 'unregisterAll' in scopedHooks) {\n scopedHooks.unregisterAll()\n }\n this.scopedHooks.delete(name)\n\n // Remove plugin routes\n this.pluginRoutes.delete(name)\n\n // Execute plugin uninstall hook\n await this.hooks.execute(HOOKS.PLUGIN_UNINSTALL, {\n plugin: name,\n context: pluginContext\n })\n\n // Unregister plugin\n await this.registry.unregister(name)\n\n console.info(`Plugin uninstalled successfully: ${name}`)\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(`Failed to uninstall plugin ${name}:`, errorMessage)\n throw error\n }\n }\n\n /**\n * Get plugin status\n */\n getStatus(name: string): PluginStatus {\n const status = this.registry.getStatus(name)\n if (!status) {\n return {\n name,\n version: 'unknown',\n active: false,\n installed: false,\n hasErrors: false\n }\n }\n return status\n }\n\n /**\n * Get all plugin statuses\n */\n getAllStatuses(): PluginStatus[] {\n return Array.from(this.registry.getAllStatuses().values())\n }\n\n /**\n * Register plugin extensions (routes, middleware, etc.)\n */\n private async registerPluginExtensions(plugin: Plugin, _context: PluginContext): Promise {\n // Register routes\n if (plugin.routes) {\n const pluginApp = new Hono()\n \n for (const route of plugin.routes) {\n console.debug(`Registering plugin route: ${route.path}`)\n pluginApp.route(route.path, route.handler)\n }\n \n this.pluginRoutes.set(plugin.name, pluginApp)\n }\n\n // Register middleware\n if (plugin.middleware) {\n for (const middleware of plugin.middleware) {\n console.debug(`Registering plugin middleware: ${middleware.name}`)\n // Middleware registration would be handled by the main app\n }\n }\n\n // Register hooks\n if (plugin.hooks) {\n const scopedHooks = this.scopedHooks.get(plugin.name)\n for (const hook of plugin.hooks) {\n console.debug(`Registering plugin hook: ${hook.name}`)\n if (scopedHooks) {\n scopedHooks.register(hook.name, hook.handler, hook.priority)\n } else {\n this.hooks.register(hook.name, hook.handler, hook.priority)\n }\n }\n }\n\n // Register services\n if (plugin.services) {\n for (const service of plugin.services) {\n console.debug(`Registering plugin service: ${service.name}`)\n // Service registration would be handled by a service container\n }\n }\n\n // Register database models\n if (plugin.models) {\n for (const model of plugin.models) {\n console.debug(`Registering plugin model: ${model.name}`)\n // Model registration would involve database migrations\n }\n }\n }\n\n /**\n * Unregister plugin extensions\n */\n private async unregisterPluginExtensions(plugin: Plugin): Promise {\n // Clean up is mostly handled by the scoped systems\n console.debug(`Unregistering extensions for plugin: ${plugin.name}`)\n }\n\n /**\n * Update plugin status\n */\n private updatePluginStatus(name: string, updates: Partial): void {\n const current = this.registry.getStatus(name)\n if (current && 'updateStatus' in this.registry) {\n // This would require extending the registry interface\n console.debug(`Updating status for plugin: ${name}`, updates)\n }\n }\n\n /**\n * Create a logger for a plugin\n */\n private createLogger(pluginName: string): PluginLogger {\n return {\n debug: (message: string, data?: any) => {\n console.debug(`[Plugin:${pluginName}] ${message}`, data || '')\n },\n info: (message: string, data?: any) => {\n console.info(`[Plugin:${pluginName}] ${message}`, data || '')\n },\n warn: (message: string, data?: any) => {\n console.warn(`[Plugin:${pluginName}] ${message}`, data || '')\n },\n error: (message: string, error?: Error, data?: any) => {\n console.error(`[Plugin:${pluginName}] ${message}`, error || '', data || '')\n }\n }\n }\n\n /**\n * Get plugin routes for mounting in main app\n */\n getPluginRoutes(): Map {\n return new Map(this.pluginRoutes)\n }\n\n /**\n * Get plugin middleware for main app\n */\n getPluginMiddleware(): Array<{ name: string; handler: any; priority: number; global: boolean }> {\n const middleware: Array<{ name: string; handler: any; priority: number; global: boolean }> = []\n \n for (const plugin of this.registry.getActive()) {\n if (plugin.middleware) {\n for (const mw of plugin.middleware) {\n middleware.push({\n name: `${plugin.name}:${mw.name}`,\n handler: mw.handler,\n priority: mw.priority || 10,\n global: mw.global || false\n })\n }\n }\n }\n \n // Sort by priority\n return middleware.sort((a, b) => a.priority - b.priority)\n }\n\n /**\n * Execute shutdown procedures\n */\n async shutdown(): Promise {\n console.info('Shutting down plugin system...')\n \n // Execute app shutdown hook\n await this.hooks.execute(HOOKS.APP_SHUTDOWN, {\n pluginManager: this\n })\n\n // Deactivate all active plugins\n const activePlugins = this.registry.getActive()\n for (const plugin of activePlugins.reverse()) { // Reverse order\n try {\n await this.registry.deactivate(plugin.name)\n } catch (error) {\n console.error(`Error deactivating plugin ${plugin.name}:`, error)\n }\n }\n\n console.info('Plugin system shutdown completed')\n }\n\n /**\n * Get plugin system statistics\n */\n getStats(): {\n registry: ReturnType\n hooks: Array<{ hookName: string; handlerCount: number }>\n routes: number\n middleware: number\n } {\n return {\n registry: (this.registry as PluginRegistryImpl).getStats(),\n hooks: (this.hooks as HookSystemImpl).getStats(),\n routes: this.pluginRoutes.size,\n middleware: this.getPluginMiddleware().length\n }\n }\n}","import type { Context, Next } from 'hono'\nimport { TurnstileService } from '../services/turnstile'\n\n/**\n * Middleware to verify Turnstile token on form submissions\n * \n * Usage:\n * ```typescript\n * import { verifyTurnstile } from '@sonicjs-cms/core/plugins'\n * \n * app.post('/api/contact', verifyTurnstile, async (c) => {\n * // Token already verified, process form...\n * })\n * ```\n */\nexport async function verifyTurnstile(c: Context, next: Next) {\n const db = c.get('db') || (c as any).env?.DB\n \n if (!db) {\n console.error('Turnstile middleware: Database not available')\n return c.json({ error: 'Database not available' }, 500)\n }\n\n const turnstileService = new TurnstileService(db)\n\n // Check if Turnstile is enabled\n const isEnabled = await turnstileService.isEnabled()\n \n if (!isEnabled) {\n // Turnstile not enabled, allow through\n return next()\n }\n\n // Get token from request\n let token: string | undefined\n let body: any\n\n if (c.req.method === 'POST') {\n const contentType = c.req.header('content-type') || ''\n \n if (contentType.includes('application/json')) {\n body = await c.req.json()\n token = body['cf-turnstile-response'] || body['turnstile-token']\n // Store parsed body in context so route handler can access it\n c.set('requestBody', body)\n } else if (contentType.includes('application/x-www-form-urlencoded') || contentType.includes('multipart/form-data')) {\n const formData = await c.req.formData()\n token = formData.get('cf-turnstile-response')?.toString() || formData.get('turnstile-token')?.toString()\n }\n }\n\n if (!token) {\n return c.json({ \n error: 'Turnstile token missing',\n message: 'Please complete the verification challenge'\n }, 400)\n }\n\n // Verify token\n const remoteIp = c.req.header('cf-connecting-ip') || c.req.header('x-forwarded-for')\n const result = await turnstileService.verifyToken(token, remoteIp)\n\n if (!result.success) {\n return c.json({ \n error: 'Turnstile verification failed',\n message: result.error || 'Verification failed. Please try again.'\n }, 403)\n }\n\n // Verification successful, continue\n return next()\n}\n\n/**\n * Middleware factory that allows custom error handling\n */\nexport function createTurnstileMiddleware(options?: {\n onError?: (c: Context, error: string) => Response\n onMissing?: (c: Context) => Response\n}) {\n return async (c: Context, next: Next) => {\n const db = c.get('db') || (c as any).env?.DB\n \n if (!db) {\n return options?.onError?.(c, 'Database not available') || \n c.json({ error: 'Database not available' }, 500)\n }\n\n const turnstileService = new TurnstileService(db)\n const isEnabled = await turnstileService.isEnabled()\n \n if (!isEnabled) {\n return next()\n }\n\n let token: string | undefined\n const contentType = c.req.header('content-type') || ''\n\n if (contentType.includes('application/json')) {\n const body = await c.req.json()\n token = body['cf-turnstile-response'] || body['turnstile-token']\n // Store parsed body in context so route handler can access it\n c.set('requestBody', body)\n } else if (contentType.includes('application/x-www-form-urlencoded') || contentType.includes('multipart/form-data')) {\n const formData = await c.req.formData()\n token = formData.get('cf-turnstile-response')?.toString() || formData.get('turnstile-token')?.toString()\n }\n\n if (!token) {\n return options?.onMissing?.(c) ||\n c.json({ error: 'Turnstile token missing' }, 400)\n }\n\n const remoteIp = c.req.header('cf-connecting-ip') || c.req.header('x-forwarded-for')\n const result = await turnstileService.verifyToken(token, remoteIp)\n\n if (!result.success) {\n return options?.onError?.(c, result.error || 'Verification failed') ||\n c.json({ error: 'Turnstile verification failed', message: result.error }, 403)\n }\n\n return next()\n }\n}\n","import { PluginBuilder } from '../../sdk/plugin-builder'\nimport { TurnstileService } from './services/turnstile'\nimport { verifyTurnstile } from './middleware/verify'\nimport manifest from './manifest.json'\n\n/**\n * Cloudflare Turnstile Plugin\n * \n * Provides CAPTCHA-free bot protection using Cloudflare Turnstile.\n * Can be used with any form by adding the verifyTurnstile middleware.\n * \n * Settings are managed through the generic admin plugin interface.\n * No custom routes needed - the admin system automatically handles settings.\n * \n * @example\n * ```typescript\n * import { verifyTurnstile } from '@sonicjs-cms/core/plugins'\n * \n * app.post('/api/contact', verifyTurnstile, async (c) => {\n * // Process form after Turnstile verification\n * })\n * ```\n */\n\n// Build the plugin - no custom routes, generic admin handles settings\nexport const turnstilePlugin = new PluginBuilder({\n name: manifest.name,\n version: manifest.version,\n description: manifest.description,\n author: { name: manifest.author },\n})\n .metadata({\n description: manifest.description,\n author: { name: manifest.author },\n })\n .addService('turnstile', TurnstileService)\n .addSingleMiddleware('verifyTurnstile', verifyTurnstile, {\n description: 'Verify Cloudflare Turnstile token',\n global: false,\n })\n .build()\n\n// Export service and middleware for easy import\nexport { TurnstileService } from './services/turnstile'\nexport { verifyTurnstile, createTurnstileMiddleware } from './middleware/verify'\nexport { renderTurnstileWidget, renderInlineTurnstile, getTurnstileScript, renderExplicitTurnstile } from './components/widget'\nexport type { TurnstileSettings, TurnstileVerificationResponse } from './services/turnstile'\n"]}
\ No newline at end of file
diff --git a/packages/core/dist/chunk-BX75LZES.cjs.map b/packages/core/dist/chunk-BX75LZES.cjs.map
deleted file mode 100644
index 1c7c14210..000000000
--- a/packages/core/dist/chunk-BX75LZES.cjs.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../src/schemas/index.ts","../src/routes/api-content-access-policy.ts","../src/plugins/core-plugins/global-variables-plugin/variable-resolver.ts","../src/routes/api-content-crud.ts","../src/routes/api.ts","../src/routes/api-media.ts","../src/routes/api-system.ts","../src/routes/admin-api.ts","../src/templates/pages/auth-login.template.ts","../src/templates/pages/auth-register.template.ts","../src/services/auth-validation.ts","../src/plugins/core-plugins/user-profiles/user-profile-registry.ts","../src/plugins/core-plugins/user-profiles/user-profile-service.ts","../src/templates/components/drag-sortable.template.ts","../src/templates/components/dynamic-field.template.ts","../src/plugins/core-plugins/user-profiles/user-profile-renderer.ts","../src/plugins/core-plugins/user-profiles/index.ts","../src/routes/auth.ts","../src/routes/test-cleanup.ts","../src/middleware/plugin-middleware.ts","../src/templates/components/version-history.template.ts","../src/plugins/available/easy-mdx/index.ts","../src/plugins/available/tinymce-plugin/index.ts","../src/plugins/core-plugins/quill-editor/index.ts","../src/templates/pages/admin-content-form.template.ts","../src/templates/pages/admin-content-list.template.ts","../src/routes/admin-content-field-types.ts","../src/routes/admin-content.ts","../src/templates/pages/admin-profile.template.ts","../src/templates/components/alert.template.ts","../src/templates/pages/admin-activity-logs.template.ts","../src/templates/pages/admin-user-edit.template.ts","../src/templates/components/confirmation-dialog.template.ts","../src/templates/pages/admin-user-new.template.ts","../src/templates/pages/admin-users-list.template.ts","../src/routes/admin-users.ts","../src/templates/components/media-grid.template.ts","../src/templates/pages/admin-media-library.template.ts","../src/templates/components/media-file-details.template.ts","../src/routes/admin-media.ts","../src/templates/pages/admin-plugins-list.template.ts","../src/templates/components/auth-settings-form.template.ts","../src/templates/pages/admin-plugin-settings.template.ts","../src/routes/admin-plugins.ts","../src/templates/pages/admin-logs-list.template.ts","../src/templates/pages/admin-log-details.template.ts","../src/templates/pages/admin-log-config.template.ts","../src/routes/admin-logs.ts","../src/routes/admin-design.ts","../src/routes/admin-checkboxes.ts","../src/templates/pages/admin-testimonials-form.template.ts","../src/routes/admin-testimonials.ts","../src/templates/pages/admin-code-examples-form.template.ts","../src/routes/admin-code-examples.ts","../src/templates/pages/admin-dashboard.template.ts","../src/routes/admin-dashboard.ts","../src/routes/admin-collections-field-types.ts","../src/templates/pages/admin-collections-list.template.ts","../src/templates/components/table.template.ts","../src/templates/pages/admin-collections-form.template.ts","../src/routes/admin-collections.ts","../src/templates/pages/admin-settings.template.ts","../src/routes/admin-settings.ts","../src/templates/pages/admin-forms-list.template.ts","../src/templates/pages/admin-forms-builder.template.ts","../src/templates/pages/admin-forms-create.template.ts","../src/routes/admin-forms.ts","../src/routes/public-forms.ts","../src/templates/pages/admin-api-reference.template.ts","../src/routes/admin-api-reference.ts","../src/routes/index.ts"],"names":["Hono","requireAuth","requireRole","getCacheService","CACHE_CONFIGS","isPluginActive","cors","optionalAuth","QueryFilterBuilder","builder","z","MigrationService","renderAlert","sanitizeInput","raw","escapeHtml","checked","PluginBuilder","generateCsrfToken","getJwtExpirySecondsFromDb","setCookie","error","rateLimit","AuthManager","getCookie","getJwtRefreshGraceSecondsFromDb","html","passwordHash","c","init_admin_layout_catalyst_template","renderConfirmationDialog","getConfirmationDialogScript","renderAdminLayoutCatalyst","renderTable","renderPagination","getBlocksFieldConfig","parseBlocksValue","db","collection","formData","PluginService","tinymcePlugin","sanitizeRichText","renderAdminLayout","logActivity","fileValidationSchema","getImageDimensions","getJPEGDimensions","getPNGDimensions","PLUGIN_REGISTRY","SettingsService","findPluginByCodeName","adminLayoutV2","getLogger","renderDesignPage","renderCheckboxPage","renderTestimonialsList","renderCodeExamplesList","getCoreVersion","metricsTracker","renderForm","tinymceActive","quillActive","mdxeditorActive","result","TurnstileService","createContentFromSubmission","CATEGORY_INFO","VERSION","router","app","getAppInstance","buildRouteList"],"mappings":"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A;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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,CAAU,IAAA,CAAK,MAAA,IAAU,EAAE,CAAC,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAiatD9B,yBAAAA,CAAyB;AAAA,IACzB,EAAA,EAAI,sBAAA;AAAA,IACJ,KAAA,EAAO,cAAA;AAAA,IACP,OAAA,EAAS,2EAAA;AAAA,IACT,WAAA,EAAa,QAAA;AAAA,IACb,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,YAAA,EAAc,6BAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACZ,CAAC;;AAAA,IAAA,EAEAC,8BAA6B;AAAA,EAAA,CAAA;AAGjC,EAAA,MAAM,UAAA,GAAsC;AAAA,IAC1C,KAAA;AAAA,IACA,SAAA,EAAW,aAAA;AAAA,IACX,WAAA,EAAa,oBAAA;AAAA,IACb,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,OAAOC,4CAA0B,UAAU,CAAA;AAC7C;;;ACriCO,IAAM,sBAAA,GAAyB,IAAIhC,SAAAA;AAG1C,sBAAA,CAAuB,GAAA,CAAI,GAAA,EAAKC,6BAAA,EAAa,CAAA;AAG7C,sBAAA,CAAuB,KAAK,GAAA,EAAKC,6BAAA,CAAY,CAAC,OAAO,CAAC,CAAC,CAAA;AACvD,sBAAA,CAAuB,IAAI,GAAA,EAAKA,6BAAA,CAAY,CAAC,OAAO,CAAC,CAAC,CAAA;AACtD,sBAAA,CAAuB,OAAO,GAAA,EAAKA,6BAAA,CAAY,CAAC,OAAO,CAAC,CAAC,CAAA;AAGzD,sBAAA,CAAuB,GAAA,CAAI,GAAA,EAAK,OAAO,CAAA,KAAM;AAC3C,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,CAAA,CAAE,IAAI,GAAG,CAAA;AAC7B,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,EAAA;AAGjD,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAA,GAAO,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAOjB,CAAA;AACD,MAAA,MAAM,WAAA,GAAc,IAAI,MAAM,CAAA,CAAA,CAAA;AAC9B,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,IAAA,CAAK,aAAa,WAAA,EAAa,WAAW,EAAE,GAAA,EAAI;AAChF,MAAA,OAAA,GAAU,YAAA,CAAa,OAAA;AAAA,IACzB,CAAA,MAAO;AACL,MAAA,IAAA,GAAO,EAAA,CAAG,QAAQ,yLAAyL,CAAA;AAC3M,MAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,GAAA,EAAI;AACpC,MAAA,OAAA,GAAU,YAAA,CAAa,OAAA;AAAA,IACzB;AAGA,IAAA,MAAM,cAAA,GAAiB,EAAA,CAAG,OAAA,CAAQ,oFAAoF,CAAA;AACtH,IAAA,MAAM,EAAE,OAAA,EAAS,iBAAA,EAAkB,GAAI,MAAM,eAAe,GAAA,EAAI;AAChE,IAAA,MAAM,cAAc,IAAI,GAAA,CAAA,CAAK,qBAAqB,EAAC,EAAG,IAAI,CAAC,GAAA,KAAa,CAAC,MAAA,CAAO,GAAA,CAAI,aAAa,CAAA,EAAG,MAAA,CAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;AAEvH,IAAA,MAAM,WAAA,GAAA,CAA6B,OAAA,IAAW,EAAC,EAC5C,MAAA,CAAO,CAAC,GAAA,KAAa,GAAA,IAAO,GAAA,CAAI,EAAE,CAAA,CAClC,GAAA,CAAI,CAAC,GAAA,KAAa;AAEjB,MAAA,IAAI,UAAA,GAAa,CAAA;AACjB,MAAA,IAAI,IAAI,MAAA,EAAQ;AACd,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,OAAO,GAAA,CAAI,MAAA,KAAW,QAAA,GAAW,KAAK,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,GAAI,GAAA,CAAI,MAAA;AAC7E,UAAA,IAAI,MAAA,IAAU,OAAO,UAAA,EAAY;AAC/B,YAAA,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,CAAE,MAAA;AAAA,UAC9C;AAAA,QACF,SAAS,CAAA,EAAG;AAEV,UAAA,UAAA,GAAa,YAAY,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAC,CAAA,IAAK,CAAA;AAAA,QAClD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,UAAA,GAAa,YAAY,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,EAAE,CAAC,CAAA,IAAK,CAAA;AAAA,MAClD;AAEA,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,MAAA,CAAO,GAAA,CAAI,EAAA,IAAM,EAAE,CAAA;AAAA,QACvB,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAA,IAAQ,EAAE,CAAA;AAAA,QAC3B,YAAA,EAAc,MAAA,CAAO,GAAA,CAAI,YAAA,IAAgB,EAAE,CAAA;AAAA,QAC3C,aAAa,GAAA,CAAI,WAAA,GAAc,MAAA,CAAO,GAAA,CAAI,WAAW,CAAA,GAAI,KAAA,CAAA;AAAA,QACzD,UAAA,EAAY,MAAA,CAAO,GAAA,CAAI,UAAA,IAAc,CAAC,CAAA;AAAA,QACtC,aAAA,EAAe,GAAA,CAAI,UAAA,GAAa,IAAI,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,UAAU,CAAC,CAAA,CAAE,kBAAA,EAAmB,GAAI,SAAA;AAAA,QACxF,WAAA,EAAa,UAAA;AAAA,QACb,OAAA,EAAS,IAAI,OAAA,KAAY;AAAA,OAC3B;AAAA,IACF,CAAC,CAAA;AAEH,IAAA,MAAM,QAAA,GAAoC;AAAA,MACxC,WAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAM,IAAA,GAAO;AAAA,QACX,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAM,IAAA,CAAK;AAAA,OACb,GAAI,KAAA,CAAA;AAAA,MACJ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,KAC7B;AAEA,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,yBAAA,CAA0B,QAAQ,CAAC,CAAA;AAAA,EACnD,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,+BAA+B,KAAK,CAAA;AAClD,IAAA,MAAM,eAAe,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAC1E,IAAA,OAAO,CAAA,CAAE,IAAA,CAAKwB,SAAAA,CAAAA,8BAAAA,EAAqC,YAAY,CAAA,IAAA,CAAM,CAAA;AAAA,EACvE;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA,KAAM;AAC9C,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,EAAA,MAAM,CAAC,aAAA,EAAe,WAAA,EAAa,eAAe,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,IACtErB,eAAAA,CAAe,IAAI,gBAAgB,CAAA;AAAA,IACnCA,eAAAA,CAAe,IAAI,cAAc,CAAA;AAAA,IACjCA,eAAAA,CAAe,IAAI,UAAU;AAAA,GAC9B,CAAA;AAED,EAAA,OAAA,CAAQ,IAAI,2CAAA,EAA6C;AAAA,IACvD,OAAA,EAAS,aAAA;AAAA,IACT,KAAA,EAAO,WAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,MAAM,QAAA,GAA+B;AAAA,IACnC,MAAA,EAAQ,KAAA;AAAA,IACR,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY,CAAA;AAAA,IAC3B,aAAA,EAAe;AAAA,MACb,OAAA,EAAS,aAAA;AAAA,MACT,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX,GACF;AAEA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,wBAAA,CAAyB,QAAQ,CAAC,CAAA;AAClD,CAAC,CAAA;AAGD,sBAAA,CAAuB,IAAA,CAAK,GAAA,EAAK,OAAO,CAAA,KAAM;AAC5C,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA;AAChC,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAG9C,IAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,YAAY,CAAA,KAAM,MAAA;AAG9C,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,WAAA,EAAa;AACzB,MAAA,MAAM,QAAA,GAAW,qCAAA;AACjB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,EAAE,IAAA,CAAKqB,SAAAA;AAAA;AAAA,YAAA,EAER,QAAQ;AAAA;AAAA,QAAA,CAEb,CAAA;AAAA,MACH,CAAA,MAAO;AAEL,QAAA,OAAO,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,MAC5C;AAAA,IACF;AAGA,IAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA,EAAG;AAC9B,MAAA,MAAM,QAAA,GAAW,gFAAA;AACjB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA,YAAA,EAER,QAAQ;AAAA;AAAA,QAAA,CAEb,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAO,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,MAC5C;AAAA,IACF;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,MAAM,YAAA,GAAe,EAAA,CAAG,OAAA,CAAQ,2CAA2C,CAAA;AAC3E,IAAA,MAAM,WAAW,MAAM,YAAA,CAAa,IAAA,CAAK,IAAI,EAAE,KAAA,EAAM;AAErD,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAM,QAAA,GAAW,6CAAA;AACjB,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA,YAAA,EAER,QAAQ;AAAA;AAAA,QAAA,CAEb,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,OAAO,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,MAC5C;AAAA,IACF;AAGA,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,OAAA;AAAA,UACP,QAAA,EAAU;AAAA,SACZ;AAAA,QACA,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,SAAA;AAAA,UACP,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO,QAAA;AAAA,UACP,IAAA,EAAM,CAAC,OAAA,EAAS,WAAA,EAAa,UAAU,CAAA;AAAA,UACvC,OAAA,EAAS;AAAA;AACX,OACF;AAAA,MACA,QAAA,EAAU,CAAC,OAAO;AAAA,KACpB;AAGA,IAAA,MAAM,YAAA,GAAe,OAAO,UAAA,EAAW;AACvC,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AAErB,IAAA,MAAM,UAAA,GAAa,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA,IAAA,CAG7B,CAAA;AAED,IAAA,MAAM,UAAA,CAAW,IAAA;AAAA,MACf,YAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,IAAe,IAAA;AAAA,MACf,IAAA,CAAK,UAAU,WAAW,CAAA;AAAA,MAC1B,CAAA;AAAA;AAAA,MACA,GAAA;AAAA,MACA;AAAA,MACA,GAAA,EAAI;AAGN,IAAA,IAAI,CAAA,CAAE,IAAI,QAAA,EAAU;AAClB,MAAA,IAAI;AACF,QAAA,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,uBAAuB,CAAA;AACnD,QAAA,MAAM,EAAE,GAAA,CAAI,QAAA,CAAS,MAAA,CAAO,CAAA,iBAAA,EAAoB,IAAI,CAAA,CAAE,CAAA;AAAA,MACxD,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,CAAC,CAAA;AAAA,MAC1C;AAAA,IACF;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yDAAA,EAKuC,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAIhE,CAAA;AAAA,IACH,CAAA,MAAO;AAEL,MAAA,OAAO,CAAA,CAAE,QAAA,CAAS,CAAA,mBAAA,EAAsB,YAAY,CAAA,CAAE,CAAA;AAAA,IACxD;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AACjD,IAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,YAAY,CAAA,KAAM,MAAA;AAE9C,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAIb,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAO,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,IAC5C;AAAA,EACF;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA,KAAM;AAC9C,EAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC3B,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAEzB,IAAA,MAAM,IAAA,GAAO,EAAA,CAAG,OAAA,CAAQ,wCAAwC,CAAA;AAChE,IAAA,MAAM,aAAa,MAAM,IAAA,CAAK,IAAA,CAAK,EAAE,EAAE,KAAA,EAAM;AAE7C,IAAA,IAAI,CAAC,UAAA,EAAY;AAEf,MAAA,MAAM,CAACmC,cAAAA,EAAeC,YAAAA,EAAaC,gBAAe,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,QACtE1D,eAAAA,CAAe,IAAI,gBAAgB,CAAA;AAAA,QACnCA,eAAAA,CAAe,IAAI,cAAc,CAAA;AAAA,QACjCA,eAAAA,CAAe,IAAI,UAAU;AAAA,OAC9B,CAAA;AAED,MAAA,MAAMkC,SAAAA,GAA+B;AAAA,QACnC,MAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,uBAAA;AAAA,QACP,MAAM,IAAA,GAAO;AAAA,UACX,MAAM,IAAA,CAAK,KAAA;AAAA,UACX,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,MAAM,IAAA,CAAK;AAAA,SACb,GAAI,KAAA,CAAA;AAAA,QACJ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY,CAAA;AAAA,QAC3B,aAAA,EAAe;AAAA,UACb,OAAA,EAASsB,cAAAA;AAAA,UACT,KAAA,EAAOC,YAAAA;AAAA,UACP,OAAA,EAASC;AAAA;AACX,OACF;AACA,MAAA,OAAO,CAAA,CAAE,IAAA,CAAK,wBAAA,CAAyBxB,SAAQ,CAAC,CAAA;AAAA,IAClD;AAGA,IAAA,IAAI,SAA4B,EAAC;AAGjC,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,OAAO,UAAA,CAAW,MAAA,KAAW,QAAA,GAAW,KAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,UAAA,CAAW,MAAA;AAClG,QAAA,IAAI,MAAA,IAAU,OAAO,UAAA,EAAY;AAE/B,UAAA,IAAI,UAAA,GAAa,CAAA;AACjB,UAAA,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,CAAE,IAAI,CAAC,CAAC,SAAA,EAAW,WAAW,CAAA,KAAqB;AAE1F,YAAA,IAAI,SAAA,GAAY,YAAY,IAAA,IAAQ,QAAA;AACpC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,SAAA,GAAY,QAAA;AAAA,YACd,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,KAAW,UAAA,EAAY;AAC5C,cAAA,SAAA,GAAY,UAAA;AAAA,YACd,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,KAAW,OAAA,EAAS;AACzC,cAAA,SAAA,GAAY,OAAA;AAAA,YACd,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,KAAW,WAAA,EAAa;AAC7C,cAAA,SAAA,GAAY,MAAA;AAAA,YACd,WAAW,WAAA,CAAY,IAAA,KAAS,MAAA,IAAU,WAAA,CAAY,WAAW,MAAA,EAAQ;AACvE,cAAA,SAAA,GAAY,MAAA;AAAA,YACd;AAEA,YAAA,OAAO;AAAA,cACL,EAAA,EAAI,UAAU,SAAS,CAAA,CAAA;AAAA,cACvB,UAAA,EAAY,SAAA;AAAA,cACZ,UAAA,EAAY,SAAA;AAAA,cACZ,WAAA,EAAa,YAAY,KAAA,IAAS,SAAA;AAAA,cAClC,aAAA,EAAe,WAAA;AAAA,cACf,WAAA,EAAa,UAAA,EAAA;AAAA,cACb,WAAA,EAAa,YAAY,QAAA,KAAa,IAAA,IAAS,OAAO,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,SAAS,CAAA;AAAA,cACpG,aAAA,EAAe,WAAA,CAAY,UAAA,KAAe,IAAA,IAAQ;AAAA,aACpD;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,CAAC,CAAA;AAAA,MACrD;AAAA,IACF;AAGA,IAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,MAAA,MAAM,UAAA,GAAa,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,MAAA,CAI7B,CAAA;AACD,MAAA,MAAM,EAAE,SAAS,aAAA,EAAc,GAAI,MAAM,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA,CAAE,GAAA,EAAI;AACjE,MAAA,MAAA,GAAA,CAAU,aAAA,IAAiB,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,KAAa;AAC/C,QAAA,IAAI,eAAe,EAAC;AACpB,QAAA,IAAI,IAAI,aAAA,EAAe;AACrB,UAAA,IAAI;AACF,YAAA,YAAA,GAAe,OAAO,IAAI,aAAA,KAAkB,QAAA,GAAW,KAAK,KAAA,CAAM,GAAA,CAAI,aAAa,CAAA,GAAI,GAAA,CAAI,aAAA;AAAA,UAC7F,SAAS,CAAA,EAAG;AACV,YAAA,OAAA,CAAQ,KAAA,CAAM,wCAAA,EAA0C,GAAA,CAAI,UAAA,EAAY,CAAC,CAAA;AACzE,YAAA,YAAA,GAAe,EAAC;AAAA,UAClB;AAAA,QACF;AACA,QAAA,OAAO;AAAA,UACL,IAAI,GAAA,CAAI,EAAA;AAAA,UACR,YAAY,GAAA,CAAI,UAAA;AAAA,UAChB,YAAY,GAAA,CAAI,UAAA;AAAA,UAChB,aAAa,GAAA,CAAI,WAAA;AAAA,UACjB,aAAA,EAAe,YAAA;AAAA,UACf,aAAa,GAAA,CAAI,WAAA;AAAA,UACjB,WAAA,EAAa,IAAI,WAAA,KAAgB,CAAA;AAAA,UACjC,aAAA,EAAe,IAAI,aAAA,KAAkB;AAAA,SACvC;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAGA,IAAA,MAAM,CAAC,aAAA,EAAe,WAAA,EAAa,eAAe,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACtElC,eAAAA,CAAe,IAAI,gBAAgB,CAAA;AAAA,MACnCA,eAAAA,CAAe,IAAI,cAAc,CAAA;AAAA,MACjCA,eAAAA,CAAe,IAAI,UAAU;AAAA,KAC9B,CAAA;AAED,IAAA,OAAA,CAAQ,IAAI,2CAAA,EAA6C;AAAA,MACvD,OAAA,EAAS,aAAA;AAAA,MACT,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,MAAM,QAAA,GAA+B;AAAA,MACnC,IAAI,UAAA,CAAW,EAAA;AAAA,MACf,MAAM,UAAA,CAAW,IAAA;AAAA,MACjB,cAAc,UAAA,CAAW,YAAA;AAAA,MACzB,aAAa,UAAA,CAAW,WAAA;AAAA,MACxB,MAAA;AAAA,MACA,OAAA,EAAS,WAAW,OAAA,KAAY,CAAA;AAAA,MAChC,MAAA,EAAQ,IAAA;AAAA,MACR,MAAM,IAAA,GAAO;AAAA,QACX,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAM,IAAA,CAAK;AAAA,OACb,GAAI,KAAA,CAAA;AAAA,MACJ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY,CAAA;AAAA,MAC3B,aAAA,EAAe;AAAA,QACb,OAAA,EAAS,aAAA;AAAA,QACT,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS;AAAA;AACX,KACF;AAEA,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,wBAAA,CAAyB,QAAQ,CAAC,CAAA;AAAA,EAClD,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAGzB,IAAA,MAAM,CAAC,aAAA,EAAe,WAAA,EAAa,eAAe,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,MACtEA,eAAAA,CAAe,IAAI,gBAAgB,CAAA;AAAA,MACnCA,eAAAA,CAAe,IAAI,cAAc,CAAA;AAAA,MACjCA,eAAAA,CAAe,IAAI,UAAU;AAAA,KAC9B,CAAA;AAED,IAAA,MAAM,QAAA,GAA+B;AAAA,MACnC,MAAA,EAAQ,IAAA;AAAA,MACR,KAAA,EAAO,4BAAA;AAAA,MACP,MAAM,IAAA,GAAO;AAAA,QACX,MAAM,IAAA,CAAK,KAAA;AAAA,QACX,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,MAAM,IAAA,CAAK;AAAA,OACb,GAAI,MAAA;AAAA,MACJ,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY,CAAA;AAAA,MAC3B,aAAA,EAAe;AAAA,QACb,OAAA,EAAS,aAAA;AAAA,QACT,KAAA,EAAO,WAAA;AAAA,QACP,OAAA,EAAS;AAAA;AACX,KACF;AACA,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,wBAAA,CAAyB,QAAQ,CAAC,CAAA;AAAA,EAClD;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA,KAAM;AAC9C,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC3B,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAC9C,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAE9C,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,OAAO,EAAE,IAAA,CAAKqB,SAAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CAIb,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAEjB,IAAA,MAAM,UAAA,GAAa,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,IAAA,CAI7B,CAAA;AAED,IAAA,MAAM,UAAA,CAAW,IAAA,CAAK,WAAA,EAAa,WAAA,IAAe,IAAA,EAAM,KAAK,GAAA,EAAI,EAAG,EAAE,CAAA,CAAE,GAAA,EAAI;AAE5E,IAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAIb,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AACjD,IAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAIb,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,MAAA,CAAO,MAAA,EAAQ,OAAO,CAAA,KAAM;AACjD,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AAC3B,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,MAAM,WAAA,GAAc,EAAA,CAAG,OAAA,CAAQ,+DAA+D,CAAA;AAC9F,IAAA,MAAM,gBAAgB,MAAM,WAAA,CAAY,IAAA,CAAK,EAAE,EAAE,KAAA,EAAM;AAEvD,IAAA,IAAI,aAAA,IAAiB,aAAA,CAAc,KAAA,GAAQ,CAAA,EAAG;AAC5C,MAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA,gDAAA,EAE8B,cAAc,KAAK,CAAA;AAAA;AAAA,MAAA,CAE9D,CAAA;AAAA,IACH;AAGA,IAAA,MAAM,gBAAA,GAAmB,EAAA,CAAG,OAAA,CAAQ,oDAAoD,CAAA;AACxF,IAAA,MAAM,gBAAA,CAAiB,IAAA,CAAK,EAAE,CAAA,CAAE,GAAA,EAAI;AAGpC,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,sCAAsC,CAAA;AACpE,IAAA,MAAM,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA,CAAE,GAAA,EAAI;AAE9B,IAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAIb,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AACjD,IAAA,OAAO,EAAE,IAAA,CAAKA,SAAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAIb,CAAA;AAAA,EACH;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,IAAA,CAAK,aAAA,EAAe,OAAO,CAAA,KAAM;AACtD,EAAA,IAAI;AACF,IAAA,MAAM,YAAA,GAAe,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA;AACrC,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,GAAA,CAAI,YAAY,CAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,GAAA,CAAI,YAAY,CAAA;AAC3C,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAC7C,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA,KAAM,GAAA;AACnD,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,GAAA,CAAI,eAAe,CAAA,KAAM,GAAA;AACvD,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,GAAA,CAAI,eAAe,CAAA,IAAe,IAAA;AAEhE,IAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,IAAa,CAAC,UAAA,EAAY;AAC3C,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,6CAA6C,CAAA;AAAA,IACtF;AAGA,IAAA,IAAI,CAAC,cAAA,CAAe,IAAA,CAAK,SAAS,CAAA,EAAG;AACnC,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,6EAA6E,CAAA;AAAA,IACtH;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,MAAM,iBAAA,GAAoB,EAAA,CAAG,OAAA,CAAQ,wCAAwC,CAAA;AAC7E,IAAA,MAAM,aAAa,MAAM,iBAAA,CAAkB,IAAA,CAAK,YAAY,EAAE,KAAA,EAAM;AAEpE,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,yBAAyB,CAAA;AAAA,IAClE;AAGA,IAAA,IAAI,MAAA,GAAS,UAAA,CAAW,MAAA,GAAU,OAAO,UAAA,CAAW,MAAA,KAAW,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,WAAW,MAAA,GAAU,IAAA;AAE/H,IAAA,IAAI,UAAU,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,EAAG;AAC/D,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,0CAA0C,CAAA;AAAA,IACnF;AAGA,IAAA,MAAM,YAAA,GAAe,EAAA,CAAG,OAAA,CAAQ,0EAA0E,CAAA;AAC1G,IAAA,MAAM,WAAW,MAAM,YAAA,CAAa,KAAK,YAAA,EAAc,SAAS,EAAE,KAAA,EAAM;AAExE,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,0CAA0C,CAAA;AAAA,IACnF;AAGA,IAAA,IAAI,gBAAgB,EAAC;AACrB,IAAA,IAAI;AACF,MAAA,aAAA,GAAgB,YAAA,GAAe,IAAA,CAAK,KAAA,CAAM,YAAY,IAAI,EAAC;AAAA,IAC7D,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,CAAQ,KAAA,CAAM,gCAAgC,CAAC,CAAA;AAAA,IACjD;AAGA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,IAAI,CAAC,OAAO,UAAA,EAAY;AACtB,QAAA,MAAA,CAAO,aAAa,EAAC;AAAA,MACvB;AACA,MAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,QAAA,MAAA,CAAO,WAAW,EAAC;AAAA,MACrB;AAGA,MAAA,MAAM,WAAA,GAAmB;AAAA,QACvB,MAAM,SAAA,KAAc,QAAA,GAAW,QAAA,GAAW,SAAA,KAAc,YAAY,SAAA,GAAY,QAAA;AAAA,QAChF,KAAA,EAAO,UAAA;AAAA,QACP,UAAA,EAAY,YAAA;AAAA,QACZ,GAAG;AAAA,OACL;AAEA,MAAA,MAAM,mBAAA,GAAsB,mBAAmB,SAAS,CAAA;AAGxD,MAAA,IAAI,wBAAwB,UAAA,EAAY;AACtC,QAAA,WAAA,CAAY,MAAA,GAAS,UAAA;AAAA,MACvB,CAAA,MAAA,IAAW,wBAAwB,MAAA,EAAQ;AACzC,QAAA,WAAA,CAAY,MAAA,GAAS,WAAA;AAAA,MACvB,CAAA,MAAA,IAAW,wBAAwB,QAAA,EAAU;AAC3C,QAAA,WAAA,CAAY,IAAA,GAAQ,aAAA,CAAsB,OAAA,IAAW,EAAC;AAAA,MACxD,CAAA,MAAA,IAAW,cAAc,OAAA,EAAS;AAChC,QAAA,WAAA,CAAY,IAAA,GAAO,OAAA;AACnB,QAAA,IAAI,CAAE,aAAA,CAAsB,IAAA,IAAS,aAAA,CAAsB,OAAA,EAAS;AAClE,UAAA,WAAA,CAAY,OAAQ,aAAA,CAAsB,OAAA;AAAA,QAC5C;AAAA,MACF,CAAA,MAAA,IAAW,cAAc,OAAA,EAAS;AAChC,QAAA,WAAA,CAAY,MAAA,GAAS,OAAA;AAAA,MACvB,CAAA,MAAA,IAAW,wBAAwB,MAAA,EAAQ;AACzC,QAAA,WAAA,CAAY,IAAA,GAAO,MAAA;AACnB,QAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AAAA,MACvB,CAAA,MAAA,IAAW,wBAAwB,OAAA,EAAS;AAC1C,QAAA,WAAA,CAAY,IAAA,GAAO,OAAA;AAAA,MACrB,CAAA,MAAA,IAAW,wBAAwB,UAAA,EAAY;AAC7C,QAAA,WAAA,CAAY,IAAA,GAAO,UAAA;AAAA,MACrB,CAAA,MAAA,IAAW,wBAAwB,WAAA,EAAa;AAC9C,QAAA,WAAA,CAAY,IAAA,GAAO,WAAA;AAAA,MACrB;AAEA,MAAA,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,GAAI,WAAA;AAG/B,MAAA,IAAI,cAAc,CAAC,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,SAAS,CAAA,EAAG;AACtD,QAAA,MAAA,CAAO,QAAA,CAAS,KAAK,SAAS,CAAA;AAAA,MAChC;AAGA,MAAA,MAAM,gBAAA,GAAmB,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,MAAA,CAInC,CAAA;AAED,MAAA,MAAM,gBAAA,CAAiB,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG,IAAA,CAAK,GAAA,EAAI,EAAG,YAAY,CAAA,CAAE,GAAA,EAAI;AAElF,MAAA,OAAA,CAAQ,GAAA,CAAI,oCAAA,EAAsC,SAAA,EAAW,WAAW,CAAA;AAExE,MAAA,OAAO,CAAA,CAAE,KAAK,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,CAAA,OAAA,EAAU,SAAS,CAAA,CAAA,EAAI,CAAA;AAAA,IACjE;AAIA,IAAA,MAAM,SAAA,GAAY,EAAA,CAAG,OAAA,CAAQ,kFAAkF,CAAA;AAC/G,IAAA,MAAM,cAAc,MAAM,SAAA,CAAU,IAAA,CAAK,YAAY,EAAE,KAAA,EAAM;AAC7D,IAAA,MAAM,SAAA,GAAA,CAAa,WAAA,EAAa,SAAA,IAAa,CAAA,IAAK,CAAA;AAGlD,IAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,IAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AAErB,IAAA,MAAM,UAAA,GAAa,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAM7B,CAAA;AAED,IAAA,MAAM,UAAA,CAAW,IAAA;AAAA,MACf,OAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAa,CAAA,GAAI,CAAA;AAAA,MACjB,eAAe,CAAA,GAAI,CAAA;AAAA,MACnB,GAAA;AAAA,MACA;AAAA,MACA,GAAA,EAAI;AAEN,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA;AAAA,EAC1C,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,uBAAuB,KAAK,CAAA;AAC1C,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,wBAAwB,CAAA;AAAA,EACjE;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,GAAA,CAAI,gCAAA,EAAkC,OAAO,CAAA,KAAM;AACxE,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AACrC,IAAA,MAAM,YAAA,GAAe,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,cAAc,CAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAC7C,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,GAAA,CAAI,YAAY,CAAA;AAE3C,IAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA;AACtD,IAAA,MAAM,kBAAA,GAAqB,QAAA,CAAS,MAAA,CAAO,eAAe,CAAA;AAC1D,IAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,gBAAA,CAAiB,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA;AACrE,IAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,kBAAA,CAAmB,MAAA,GAAS,CAAC,CAAA,KAAM,GAAA;AAC3E,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,GAAA,CAAI,eAAe,CAAA,IAAe,IAAA;AAGhE,IAAA,OAAA,CAAQ,GAAA,CAAI,4BAA4B,OAAO,CAAA;AAC/C,IAAA,OAAA,CAAQ,IAAI,oCAAA,EAAsC;AAAA,MAChD,WAAA,EAAa,UAAA;AAAA,MACb,UAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAa,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAAA,MACvC,aAAA,EAAe,QAAA,CAAS,GAAA,CAAI,eAAe,CAAA;AAAA,MAC3C,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,4BAA4B,CAAA;AAAA,IACrE;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA,EAAG;AAGjC,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAE/C,MAAA,OAAA,CAAQ,GAAA,CAAI,yCAAyC,SAAS,CAAA;AAG9D,MAAA,MAAM,iBAAA,GAAoB,EAAA,CAAG,OAAA,CAAQ,wCAAwC,CAAA;AAC7E,MAAA,MAAM,aAAa,MAAM,iBAAA,CAAkB,IAAA,CAAK,YAAY,EAAE,KAAA,EAAM;AAEpE,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,yBAAyB,CAAA;AAAA,MAClE;AAGA,MAAA,IAAI,MAAA,GAAS,OAAO,UAAA,CAAW,MAAA,KAAW,QAAA,GAAW,KAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,UAAA,CAAW,MAAA;AAChG,MAAA,IAAI,CAAC,MAAA,EAAQ;AACX,QAAA,MAAA,GAAS,EAAE,MAAM,QAAA,EAAU,UAAA,EAAY,EAAC,EAAG,QAAA,EAAU,EAAC,EAAE;AAAA,MAC1D;AACA,MAAA,IAAI,CAAC,OAAO,UAAA,EAAY;AACtB,QAAA,MAAA,CAAO,aAAa,EAAC;AAAA,MACvB;AACA,MAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,QAAA,MAAA,CAAO,WAAW,EAAC;AAAA,MACrB;AAGA,MAAA,IAAI,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,EAAG;AAEhC,QAAA,IAAI,qBAA0C,EAAC;AAC/C,QAAA,IAAI;AACF,UAAA,kBAAA,GAAqB,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,QAC9C,SAAS,CAAA,EAAG;AACV,UAAA,OAAA,CAAQ,KAAA,CAAM,+CAA+C,CAAC,CAAA;AAAA,QAChE;AAGA,QAAA,MAAM,kBAAA,GAA0B;AAAA,UAC9B,GAAG,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA;AAAA,UAC9B,GAAG,kBAAA;AAAA,UACH,IAAA,EAAM,SAAA;AAAA,UACN,KAAA,EAAO,UAAA;AAAA,UACP,UAAA,EAAY;AAAA,SACd;AAIA,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,kBAAA,CAAmB,QAAA,GAAW,IAAA;AAAA,QAChC,CAAA,MAAO;AACL,UAAA,OAAO,kBAAA,CAAmB,QAAA;AAAA,QAC5B;AAEA,QAAA,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,GAAI,kBAAA;AAG/B,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,SAAS,CAAA;AACvD,QAAA,OAAA,CAAQ,IAAI,yCAAA,EAA2C;AAAA,UACrD,SAAA;AAAA,UACA,UAAA;AAAA,UACA,sBAAsB,MAAA,CAAO,QAAA;AAAA,UAC7B;AAAA,SACD,CAAA;AAED,QAAA,IAAI,UAAA,IAAc,kBAAkB,CAAA,CAAA,EAAI;AAEtC,UAAA,MAAA,CAAO,QAAA,CAAS,KAAK,SAAS,CAAA;AAC9B,UAAA,OAAA,CAAQ,IAAI,8CAA8C,CAAA;AAAA,QAC5D,CAAA,MAAA,IAAW,CAAC,UAAA,IAAc,aAAA,KAAkB,CAAA,CAAA,EAAI;AAE9C,UAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,aAAA,EAAe,CAAC,CAAA;AACvC,UAAA,OAAA,CAAQ,IAAI,kDAAkD,CAAA;AAAA,QAChE;AAEA,QAAA,OAAA,CAAQ,GAAA,CAAI,sCAAA,EAAwC,MAAA,CAAO,QAAQ,CAAA;AACnE,QAAA,OAAA,CAAQ,GAAA,CAAI,oCAAA,EAAsC,MAAA,CAAO,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA,MAChF;AAGA,MAAA,MAAM,oBAAA,GAAuB,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,MAAA,CAIvC,CAAA;AAED,MAAA,MAAMsC,OAAAA,GAAS,MAAM,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG,IAAA,CAAK,GAAA,EAAI,EAAG,YAAY,EAAE,GAAA,EAAI;AAErG,MAAA,OAAA,CAAQ,IAAI,sCAAA,EAAwC;AAAA,QAClD,SAASA,OAAAA,CAAO,OAAA;AAAA,QAChB,OAAA,EAASA,QAAO,IAAA,EAAM;AAAA,OACvB,CAAA;AAED,MAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,IACjC;AAGA,IAAA,MAAM,UAAA,GAAa,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,IAAA,CAI7B,CAAA;AAED,IAAA,MAAM,SAAS,MAAM,UAAA,CAAW,KAAK,UAAA,EAAY,SAAA,EAAW,cAAc,UAAA,GAAa,CAAA,GAAI,CAAA,EAAG,YAAA,GAAe,IAAI,CAAA,EAAG,IAAA,CAAK,KAAI,EAAG,OAAO,EAAE,GAAA,EAAI;AAE7I,IAAA,OAAA,CAAQ,IAAI,+BAAA,EAAiC;AAAA,MAC3C,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,OAAA,EAAS,OAAO,IAAA,EAAM,OAAA;AAAA,MACtB,WAAA,EAAa,OAAO,IAAA,EAAM;AAAA,KAC3B,CAAA;AAGD,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,2CAA2C,CAAA;AACzE,IAAA,MAAM,eAAe,MAAM,UAAA,CAAW,IAAA,CAAK,OAAO,EAAE,KAAA,EAAM;AAC1D,IAAA,OAAA,CAAQ,GAAA,CAAI,qDAAqD,YAAY,CAAA;AAE7E,IAAA,OAAA,CAAQ,GAAA,CAAI,wDAAwD,SAAS,CAAA;AAE7E,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,EACjC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,KAAK,CAAA;AAC5C,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,2BAA2B,CAAA;AAAA,EACpE;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,MAAA,CAAO,gCAAA,EAAkC,OAAO,CAAA,KAAM;AAC3E,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA;AACrC,IAAA,MAAM,YAAA,GAAe,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,cAAc,CAAA;AAC/C,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA,EAAG;AACjC,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAG/C,MAAA,MAAM,iBAAA,GAAoB,EAAA,CAAG,OAAA,CAAQ,wCAAwC,CAAA;AAC7E,MAAA,MAAM,aAAa,MAAM,iBAAA,CAAkB,IAAA,CAAK,YAAY,EAAE,KAAA,EAAM;AAEpE,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,yBAAyB,CAAA;AAAA,MAClE;AAGA,MAAA,IAAI,MAAA,GAAS,OAAO,UAAA,CAAW,MAAA,KAAW,QAAA,GAAW,KAAK,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,GAAI,UAAA,CAAW,MAAA;AAChG,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,UAAA,EAAY;AACjC,QAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,8BAA8B,CAAA;AAAA,MACvE;AAGA,MAAA,IAAI,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,EAAG;AAChC,QAAA,OAAO,MAAA,CAAO,WAAW,SAAS,CAAA;AAGlC,QAAA,IAAI,OAAO,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA,EAAG;AACrD,UAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,SAAS,CAAA;AACvD,UAAA,IAAI,kBAAkB,CAAA,CAAA,EAAI;AACxB,YAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,aAAA,EAAe,CAAC,CAAA;AAAA,UACzC;AAAA,QACF;AAGA,QAAA,MAAM,oBAAA,GAAuB,GAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,QAAA,CAIvC,CAAA;AAED,QAAA,MAAM,oBAAA,CAAqB,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG,IAAA,CAAK,GAAA,EAAI,EAAG,YAAY,CAAA,CAAE,GAAA,EAAI;AAEtF,QAAA,OAAA,CAAQ,GAAA,CAAI,6CAA6C,SAAS,CAAA;AAElE,QAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,MACjC,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,8BAA8B,CAAA;AAAA,MACvE;AAAA,IACF;AAGA,IAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,yCAAyC,CAAA;AACvE,IAAA,MAAM,UAAA,CAAW,IAAA,CAAK,OAAO,CAAA,CAAE,GAAA,EAAI;AAEnC,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,EACjC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,KAAK,CAAA;AAC5C,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,2BAA2B,CAAA;AAAA,EACpE;AACF,CAAC,CAAA;AAGD,sBAAA,CAAuB,IAAA,CAAK,+BAAA,EAAiC,OAAO,CAAA,KAAM;AACxE,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,MAAM,CAAA,CAAE,GAAA,CAAI,IAAA,EAAK;AAC9B,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AAEtB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC5B,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,6BAA6B,CAAA;AAAA,IACtE;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,wEAAwE,CAAA;AACtG,MAAA,MAAM,UAAA,CAAW,IAAA,CAAK,CAAA,GAAI,CAAA,EAAG,IAAA,CAAK,GAAA,EAAI,EAAG,QAAA,CAAS,CAAC,CAAC,CAAA,CAAE,GAAA,EAAI;AAAA,IAC5D;AAEA,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,EACjC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAC/C,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,SAAS,KAAA,EAAO,KAAA,EAAO,6BAA6B,CAAA;AAAA,EACtE;AACF,CAAC,CAAA;;;ACjgCDnC,qDAAA,EAAA;AAgGO,SAAS,mBAAmB,IAAA,EAAgC;AACjE,EAAA,MAAM,SAAA,GAAY,KAAK,SAAA,IAAa,SAAA;AAEpC,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,YAAA,EAcR,eAAA,CAAgB,SAAA,EAAW,SAAA,EAAW,sgBAAA,EAAwgB,SAAS,CAAC;AAAA,YAAA,EACxjB,eAAA,CAAgB,YAAA,EAAc,YAAA,EAAc,mIAAA,EAAqI,SAAS,CAAC;AAAA,YAAA,EAC3L,eAAA,CAAgB,UAAA,EAAY,UAAA,EAAY,sGAAA,EAAwG,SAAS,CAAC;AAAA,YAAA,EAC1J,eAAA,CAAgB,eAAA,EAAiB,eAAA,EAAiB,+LAAA,EAAiM,SAAS,CAAC;AAAA,YAAA,EAC7P,eAAA,CAAgB,SAAA,EAAW,SAAA,EAAW,uFAAA,EAAyF,SAAS,CAAC;AAAA,YAAA,EACzI,eAAA,CAAgB,YAAA,EAAc,YAAA,EAAc,gJAAA,EAAkJ,SAAS,CAAC;AAAA,YAAA,EACxM,eAAA,CAAgB,gBAAA,EAAkB,gBAAA,EAAkB,0JAAA,EAA4J,SAAS,CAAC;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,UAAA,EAQ5N,gBAAA,CAAiB,SAAA,EAAW,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA,0BAAA,EAO1B,SAAS,CAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAwW/BC,yBAAAA,CAAyB;AAAA,IACzB,EAAA,EAAI,wBAAA;AAAA,IACJ,KAAA,EAAO,gBAAA;AAAA,IACP,OAAA,EAAS,gFAAA;AAAA,IACT,WAAA,EAAa,gBAAA;AAAA,IACb,UAAA,EAAY,QAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,YAAA,EAAc,+BAAA;AAAA,IACd,SAAA,EAAW;AAAA,GACZ,CAAC;;AAAA,IAAA,EAEAC,8BAA6B;AAAA,EAAA,CAAA;AAGjC,EAAA,MAAM,UAAA,GAAsC;AAAA,IAC1C,KAAA,EAAO,UAAA;AAAA,IACP,SAAA,EAAW,UAAA;AAAA,IACX,WAAA,EAAa,iBAAA;AAAA,IACb,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,OAAOC,4CAA0B,UAAU,CAAA;AAC7C;AAEA,SAAS,eAAA,CAAgB,KAAA,EAAe,KAAA,EAAe,QAAA,EAAkB,SAAA,EAA2B;AAClG,EAAA,MAAM,WAAW,SAAA,KAAc,KAAA;AAC/B,EAAA,MAAM,WAAA,GAAc,uHAAA;AACpB,EAAA,MAAM,aAAA,GAAgB,WAClB,iEAAA,GACA,mJAAA;AAEJ,EAAA,OAAO;AAAA;AAAA,4BAAA,EAEqB,KAAK,CAAA;AAAA,gBAAA,EACjB,KAAK,CAAA;AAAA,aAAA,EACR,WAAW,IAAI,aAAa,CAAA;AAAA;AAAA;AAAA,iFAAA,EAGwC,QAAQ,CAAA;AAAA;AAAA,YAAA,EAE7E,KAAK,CAAA;AAAA;AAAA,EAAA,CAAA;AAGnB;AAEA,SAAS,gBAAA,CAAiB,WAAmB,QAAA,EAAiD;AAC5F,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,SAAA;AACH,MAAA,OAAO,qBAAA,CAAsB,UAAU,OAAO,CAAA;AAAA,IAChD,KAAK,YAAA;AACH,MAAA,OAAO,wBAAA,CAAyB,UAAU,UAAU,CAAA;AAAA,IACtD,KAAK,UAAA;AACH,MAAA,OAAO,sBAAA,CAAuB,UAAU,QAAQ,CAAA;AAAA,IAClD,KAAK,eAAA;AACH,MAAA,OAAO,0BAAA,CAA2B,UAAU,aAAa,CAAA;AAAA,IAC3D,KAAK,SAAA;AACH,MAAA,OAAO,qBAAA,CAAsB,UAAU,OAAO,CAAA;AAAA,IAChD,KAAK,YAAA;AACH,MAAA,OAAO,uBAAA,CAAwB,UAAU,UAAU,CAAA;AAAA,IACrD,KAAK,gBAAA;AACH,MAAA,OAAO,2BAAA,CAA4B,UAAU,aAAa,CAAA;AAAA,IAC5D;AACE,MAAA,OAAO,qBAAA,CAAsB,UAAU,OAAO,CAAA;AAAA;AAEpD;AAEA,SAAS,sBAAsB,QAAA,EAAoC;AACjE,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAcc,QAAA,EAAU,YAAY,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAWlC,QAAA,EAAU,cAAc,mBAAmB,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAA,EAY9B,QAAA,EAAU,QAAA,KAAa,KAAA,GAAQ,UAAA,GAAa,EAAE,CAAA;AAAA,+CAAA,EACjC,QAAA,EAAU,QAAA,KAAa,kBAAA,GAAqB,UAAA,GAAa,EAAE,CAAA;AAAA,8CAAA,EAC5D,QAAA,EAAU,QAAA,KAAa,iBAAA,GAAoB,UAAA,GAAa,EAAE,CAAA;AAAA,6CAAA,EAC3D,QAAA,EAAU,QAAA,KAAa,gBAAA,GAAmB,UAAA,GAAa,EAAE,CAAA;AAAA,kDAAA,EACpD,QAAA,EAAU,QAAA,KAAa,qBAAA,GAAwB,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAanG,QAAA,EAAU,mBAAmB,EAAE,CAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAA,EASX,QAAA,EAAU,QAAA,KAAa,IAAA,GAAO,UAAA,GAAa,EAAE,CAAA;AAAA,iCAAA,EAC7C,QAAA,EAAU,QAAA,KAAa,IAAA,GAAO,UAAA,GAAa,EAAE,CAAA;AAAA,iCAAA,EAC7C,QAAA,EAAU,QAAA,KAAa,IAAA,GAAO,UAAA,GAAa,EAAE,CAAA;AAAA,iCAAA,EAC7C,QAAA,EAAU,QAAA,KAAa,IAAA,GAAO,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAW5D,QAAA,EAAU,eAAA,GAAkB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAgC9D;AAEA,SAAS,yBAAyB,QAAA,EAAuC;AACvE,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAgCW,QAAA,EAAU,KAAA,KAAU,OAAA,GAAU,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAU5C,UAAU,KAAA,KAAU,MAAA,IAAU,CAAC,QAAA,EAAU,KAAA,GAAQ,YAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAU/D,QAAA,EAAU,KAAA,KAAU,MAAA,GAAS,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAA,EActC,QAAA,EAAU,gBAAgB,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAA,EAKnC,QAAA,EAAU,gBAAgB,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAYrC,QAAA,EAAU,WAAW,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAavB,QAAA,EAAU,WAAW,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAa/B,QAAA,EAAU,aAAa,EAAE,CAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAmBxC;AAEA,SAAS,uBAAuB,QAAA,EAAqC;AACnE,EAAA,MAAM,YAAA,GAAe,UAAU,YAAA,IAAgB,KAAA;AAC/C,EAAA,MAAM,sBAAA,GACJ,OAAO,QAAA,EAAU,sBAAA,KAA2B,WACxC,QAAA,CAAS,sBAAA,GACT,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,CAAA;AAErB,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAoBc,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAiBZ,sBAAsB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAA,EAsDzB,QAAA,EAAU,gBAAA,GAAmB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAqBxC,QAAA,EAAU,kBAAkB,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAiB7B,QAAA,EAAU,oBAAA,EAAsB,gBAAA,GAAmB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAoBjE,QAAA,EAAU,oBAAA,EAAsB,cAAA,GAAiB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAoB/D,QAAA,EAAU,oBAAA,EAAsB,cAAA,GAAiB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAuBhE,QAAA,EAAU,oBAAA,EAAsB,SAAA,IAAa,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EActD,QAAA,EAAU,WAAA,EAAa,IAAA,CAAK,IAAI,KAAK,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAoBtD;AAEA,SAAS,2BAA2B,QAAA,EAAyC;AAC3E,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAkCe,QAAA,EAAU,kBAAA,GAAqB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAqB7C,QAAA,EAAU,cAAA,GAAiB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAqBzC,QAAA,EAAU,YAAA,GAAe,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EAqBvC,QAAA,EAAU,iBAAA,GAAoB,SAAA,GAAY,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAAA,EAwB1B,QAAA,EAAU,cAAA,KAAmB,WAAA,GAAc,UAAA,GAAa,EAAE,CAAA;AAAA,oCAAA,EAC9D,QAAA,EAAU,cAAA,KAAmB,OAAA,GAAU,UAAA,GAAa,EAAE,CAAA;AAAA,qCAAA,EACrD,QAAA,EAAU,cAAA,KAAmB,QAAA,GAAW,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAkC9F;AAEA,SAAS,sBAAsB,QAAA,EAAoC;AACjE,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EA6Bc,QAAA,EAAU,eAAe,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAA,EAaZ,QAAA,EAAU,eAAA,KAAoB,OAAA,GAAU,UAAA,GAAa,EAAE,CAAA;AAAA,yCAAA,EAClD,QAAA,EAAU,eAAA,KAAoB,YAAA,GAAe,UAAA,GAAa,EAAE,CAAA;AAAA,iCAAA,EACpE,QAAA,EAAU,eAAA,KAAoB,IAAA,GAAO,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAA,EAUjD,QAAA,EAAU,eAAA,KAAoB,OAAA,GAAU,UAAA,GAAa,EAAE,CAAA;AAAA,qCAAA,EACtD,QAAA,EAAU,eAAA,KAAoB,QAAA,GAAW,UAAA,GAAa,EAAE,CAAA;AAAA,sCAAA,EACvD,QAAA,EAAU,eAAA,KAAoB,SAAA,GAAY,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAalF,QAAA,EAAU,gBAAA,EAAkB,IAAA,CAAK,IAAI,KAAK,gCAAgC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAQlE,QAAA,EAAU,mBAAmB,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAqCtD;AAEA,SAAS,wBAAwB,QAAA,EAAsC;AACrE,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6EAAA,EAasE,QAAA,EAAU,mBAAmB,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+EAAA,EAY9B,QAAA,EAAU,qBAAqB,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+EAAA,EAYlC,QAAA,EAAU,qBAAqB,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAAA,CAyBtG,QAAA,EAAU,iBAAA,IAAqB,CAAA,MAAO,CAAA,GAAI,aAAa,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAsKtE;AAEA,SAAS,4BAA4B,QAAA,EAA0C;AAC7E,EAAA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uGAAA,EAagG,QAAA,EAAU,eAAe,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,qGAAA,EAc9B,QAAA,EAAU,SAAA,EAAW,cAAA,EAAe,IAAK,GAAG,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAiGnJ;;;ACxmDO,IAAM,mBAAA,GAAsB,IAAIhC,SAAAA;AAGvC,mBAAA,CAAoB,GAAA,CAAI,GAAA,EAAKC,6BAAA,EAAa,CAAA;AAG1C,SAAS,gBAAgB,IAAA,EAAW;AAClC,EAAA,OAAO;AAAA,IACL,OAAA,EAAS;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAA,EAAiB,qCAAA;AAAA,MACjB,UAAA,EAAY,MAAM,KAAA,IAAS,mBAAA;AAAA,MAC3B,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU,IAAA;AAAA,MACV,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,MAAA;AAAA,MACP,YAAA,EAAc,SAAA;AAAA,MACd,OAAA,EAAS,EAAA;AAAA,MACT,OAAA,EAAS,EAAA;AAAA,MACT,SAAA,EAAW;AAAA,KACb;AAAA,IACA,QAAA,EAAU;AAAA,MACR,gBAAA,EAAkB,KAAA;AAAA,MAClB,cAAA,EAAgB,EAAA;AAAA,MAChB,oBAAA,EAAsB;AAAA,QACpB,SAAA,EAAW,CAAA;AAAA,QACX,gBAAA,EAAkB,IAAA;AAAA,QAClB,cAAA,EAAgB,IAAA;AAAA,QAChB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,aAAa;AAAC,KAChB;AAAA,IACA,aAAA,EAAe;AAAA,MACb,kBAAA,EAAoB,IAAA;AAAA,MACpB,cAAA,EAAgB,IAAA;AAAA,MAChB,YAAA,EAAc,IAAA;AAAA,MACd,iBAAA,EAAmB,KAAA;AAAA,MACnB,cAAA,EAAgB;AAAA,KAClB;AAAA,IACA,OAAA,EAAS;AAAA,MACP,WAAA,EAAa,EAAA;AAAA,MACb,kBAAkB,CAAC,KAAA,EAAO,QAAQ,KAAA,EAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,MAC7D,eAAA,EAAiB,YAAA;AAAA,MACjB,eAAA,EAAiB,OAAA;AAAA,MACjB,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,eAAA,EAAiB,CAAA;AAAA,MACjB,iBAAA,EAAmB,CAAA;AAAA,MACnB,iBAAA,EAAmB,CAAA;AAAA,MACnB,WAAA,EAAa,MAAA;AAAA,MACb,YAAY;AAAC,KACf;AAAA,IACA,aAAA,EAAe;AAAA,MACb,WAAA,EAAa,CAAA;AAAA,MACb,SAAA,EAAW,CAAA;AAAA,MACX,UAAA,EAAY,MAAA;AAAA,MACZ,YAAA,EAAc,MAAA;AAAA,MACd,QAAQ;AAAC;AACX,GACF;AACF;AAGA,mBAAA,CAAoB,GAAA,CAAI,GAAA,EAAK,CAAC,CAAA,KAAM;AAClC,EAAA,OAAO,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAC7C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,UAAA,EAAY,OAAO,CAAA,KAAM;AAC/C,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,EAAA,MAAM,eAAA,GAAkB,IAAIiD,iCAAA,CAAgB,EAAE,CAAA;AAG9C,EAAA,MAAM,eAAA,GAAkB,MAAM,eAAA,CAAgB,kBAAA,CAAmB,MAAM,KAAK,CAAA;AAE5E,EAAA,MAAM,YAAA,GAAe,gBAAgB,IAAI,CAAA;AACzC,EAAA,YAAA,CAAa,OAAA,GAAU,eAAA;AAEvB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,YAAA;AAAA,IACV,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,aAAA,EAAe,CAAC,CAAA,KAAM;AAC5C,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,gBAAgB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,YAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,WAAA,EAAa,OAAO,CAAA,KAAM;AAChD,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,EAAA,MAAM,eAAA,GAAkB,IAAIA,iCAAA,CAAgB,EAAE,CAAA;AAG9C,EAAA,MAAM,SAAA,GAAY,MAAM,eAAA,CAAgB,mBAAA,EAAoB;AAE5D,EAAA,MAAM,YAAA,GAAe,gBAAgB,IAAI,CAAA;AACzC,EAAA,YAAA,CAAa,QAAA,GAAW;AAAA,IACtB,GAAG,YAAA,CAAa,QAAA;AAAA,IAChB,cAAc,SAAA,CAAU,YAAA;AAAA,IACxB,wBAAwB,SAAA,CAAU;AAAA,GACpC;AAEA,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,YAAA;AAAA,IACV,SAAA,EAAW,UAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,gBAAA,EAAkB,CAAC,CAAA,KAAM;AAC/C,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,gBAAgB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,eAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,UAAA,EAAY,CAAC,CAAA,KAAM;AACzC,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,gBAAgB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,SAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,aAAA,EAAe,CAAC,CAAA,KAAM;AAC5C,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,gBAAgB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,YAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,iBAAA,EAAmB,CAAC,CAAA,KAAM;AAChD,EAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AACzB,EAAA,MAAM,QAAA,GAA6B;AAAA,IACjC,MAAM,IAAA,GAAO;AAAA,MACX,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK;AAAA,KACb,GAAI,MAAA;AAAA,IACJ,QAAA,EAAU,gBAAgB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,gBAAA;AAAA,IACX,OAAA,EAAS,CAAA,CAAE,GAAA,CAAI,YAAY;AAAA,GAC7B;AACA,EAAA,OAAO,CAAA,CAAE,IAAA,CAAK,kBAAA,CAAmB,QAAQ,CAAC,CAAA;AAC5C,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,wBAAA,EAA0B,OAAO,CAAA,KAAM;AAC7D,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,gBAAA,GAAmB,IAAIvC,kCAAA,CAAiB,EAAE,CAAA;AAChD,IAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAiB,kBAAA,EAAmB;AAEzD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,oCAAoC,KAAK,CAAA;AACvD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,qBAAA,EAAuB,OAAO,CAAA,KAAM;AAC3D,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAGzB,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAClC,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,gBAAA,GAAmB,IAAIA,kCAAA,CAAiB,EAAE,CAAA;AAChD,IAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAiB,oBAAA,EAAqB;AAE3D,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO;AAAA,KACjB,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,KAAK,CAAA;AAChD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,0BAAA,EAA4B,OAAO,CAAA,KAAM;AAC/D,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,gBAAA,GAAmB,IAAIA,kCAAA,CAAiB,EAAE,CAAA;AAChD,IAAA,MAAM,UAAA,GAAa,MAAM,gBAAA,CAAiB,cAAA,EAAe;AAEzD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAC/C,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,2BAAA,EAA6B,OAAO,CAAA,KAAM;AAChE,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAMpC,EAAE,GAAA,EAAI;AAEP,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAA,IAAW,EAAC;AACvC,IAAA,IAAI,SAAA,GAAY,CAAA;AAGhB,IAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,GAAA;AAAA,MAC/B,MAAA,CAAO,GAAA,CAAI,OAAO,KAAA,KAAe;AAC/B,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,OAAA,CAAQ,iCAAiC,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA,CAAE,KAAA,EAAM;AAC1F,UAAA,MAAM,QAAA,GAAY,aAAqB,KAAA,IAAS,CAAA;AAChD,UAAA,SAAA,IAAa,QAAA;AACb,UAAA,OAAO;AAAA,YACL,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ;AAAA,WACF;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,uBAAA,EAA0B,KAAA,CAAM,IAAI,KAAK,KAAK,CAAA;AAC5D,UAAA,OAAO;AAAA,YACL,MAAM,KAAA,CAAM,IAAA;AAAA,YACZ,QAAA,EAAU;AAAA,WACZ;AAAA,QACF;AAAA,MACF,CAAC;AAAA,KACH;AAIA,IAAA,MAAM,qBAAqB,SAAA,GAAY,IAAA;AACvC,IAAA,MAAM,cAAA,GAAA,CAAkB,kBAAA,IAAsB,IAAA,GAAO,IAAA,CAAA,EAAO,QAAQ,CAAC,CAAA;AAErE,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,aAAa,MAAA,CAAO,MAAA;AAAA,QACpB,SAAA;AAAA,QACA,YAAA,EAAc,GAAG,cAAc,CAAA,eAAA,CAAA;AAAA,QAC/B,MAAA,EAAQ;AAAA;AACV,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,kCAAkC,KAAK,CAAA;AACrD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,GAAA,CAAI,8BAAA,EAAgC,OAAO,CAAA,KAAM;AACnE,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AAGjB,IAAA,MAAM,kBAAkB,MAAM,EAAA,CAAG,OAAA,CAAQ,wBAAwB,EAAE,KAAA,EAAM;AACzE,IAAA,MAAM,OAAA,GAAW,iBAAyB,eAAA,KAAoB,IAAA;AAE9D,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,UAAU,iCAAA,GAAoC;AAAA;AACzD,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AACjD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,4BAAA,EAA8B,OAAO,CAAA,KAAM;AAClE,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAGzB,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAClC,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAIA,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,0BAA0B,KAAK,CAAA;AAC7C,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,8BAAA,EAAgC,OAAO,CAAA,KAAM;AACpE,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAGzB,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAClC,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,IAAA,GAAO,MAAM,CAAA,CAAE,GAAA,CAAI,IAAA,EAAK;AAC9B,IAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,MAAA,IAAU,EAAC;AAEzC,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,gBAAgB,CAAA,IAAK,gBAAA,CAAiB,WAAW,CAAA,EAAG;AACrE,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,UAAU,EAAC;AAGjB,IAAA,MAAM,YAAA,GAAe,MAAM,EAAA,CAAG,OAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,IAAA,CAIrC,EAAE,GAAA,EAAI;AACP,IAAA,MAAM,cAAc,IAAI,GAAA;AAAA,MAAA,CACrB,YAAA,CAAa,WAAW,EAAC,EAAG,IAAI,CAAC,GAAA,KAAa,IAAI,IAAI;AAAA,KACzD;AAEA,IAAA,KAAA,MAAW,aAAa,gBAAA,EAAkB;AACxC,MAAA,IAAI,CAAC,WAAA,CAAY,GAAA,CAAI,SAAS,CAAA,EAAG;AAC/B,QAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAA,EAAO,SAAA,EAAW,SAAS,KAAA,EAAO,KAAA,EAAO,mBAAmB,CAAA;AAC3E,QAAA;AAAA,MACF;AACA,MAAA,IAAI;AACF,QAAA,MAAM,GAAG,OAAA,CAAQ,CAAA,YAAA,EAAe,SAAS,CAAA,CAAE,EAAE,GAAA,EAAI;AACjD,QAAA,OAAA,CAAQ,KAAK,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,MAAM,CAAA;AAAA,MAClD,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA;AACrD,QAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,OAAO,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAG,CAAA;AAAA,MACzE;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,OAAA,EAAS,CAAA,UAAA,EAAa,OAAA,CAAQ,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,MAAM,CAAA,IAAA,EAAO,gBAAA,CAAiB,MAAM,CAAA,OAAA,CAAA;AAAA,MACzF;AAAA,KACD,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,4BAA4B,KAAK,CAAA;AAC/C,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,UAAA,EAAY,OAAO,CAAA,KAAM;AAChD,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAEzB,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAClC,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,eAAA,GAAkB,IAAIuC,iCAAA,CAAgB,EAAE,CAAA;AAG9C,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,QAAA,EAAU,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA;AAAA,MACjC,eAAA,EAAiB,QAAA,CAAS,GAAA,CAAI,iBAAiB,CAAA;AAAA,MAC/C,UAAA,EAAY,QAAA,CAAS,GAAA,CAAI,YAAY,CAAA;AAAA,MACrC,QAAA,EAAU,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA;AAAA,MACjC,QAAA,EAAU,QAAA,CAAS,GAAA,CAAI,UAAU,CAAA;AAAA,MACjC,eAAA,EAAiB,QAAA,CAAS,GAAA,CAAI,iBAAiB,CAAA,KAAM;AAAA,KACvD;AAGA,IAAA,IAAI,CAAC,QAAA,CAAS,QAAA,IAAY,CAAC,SAAS,eAAA,EAAiB;AACnD,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAGA,IAAA,MAAM,OAAA,GAAU,MAAM,eAAA,CAAgB,mBAAA,CAAoB,QAAQ,CAAA;AAElE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,kCAAkC,KAAK,CAAA;AACrD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,WAAA,EAAa,OAAO,CAAA,KAAM;AACjD,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAEzB,IAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,OAAA,EAAS;AAClC,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,GAAA,CAAI,QAAA,EAAS;AACtC,IAAA,MAAM,EAAA,GAAK,EAAE,GAAA,CAAI,EAAA;AACjB,IAAA,MAAM,eAAA,GAAkB,IAAIA,iCAAA,CAAgB,EAAE,CAAA;AAE9C,IAAA,MAAM,kBAAmB,QAAA,CAAS,GAAA,CAAI,cAAc,CAAA,EAAqB,MAAK,IAAK,EAAA;AACnF,IAAA,MAAM,WAAY,QAAA,CAAS,GAAA,CAAI,wBAAwB,CAAA,EAAqB,MAAK,IAAK,EAAA;AAGtF,IAAA,IAAI,CAAC,oBAAA,CAAqB,IAAA,CAAK,eAAe,CAAA,EAAG;AAC/C,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACjD,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,YAAY,CAAA,IAAK,YAAA,GAAe,CAAA,IAAK,YAAA,GAAe,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA,EAAI;AAC1F,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,KAAA;AAAA,QACT,KAAA,EAAO;AAAA,SACN,GAAG,CAAA;AAAA,IACR;AAEA,IAAA,MAAM,OAAA,GAAU,MAAM,eAAA,CAAgB,oBAAA,CAAqB;AAAA,MACzD,YAAA,EAAc,eAAA;AAAA,MACd,sBAAA,EAAwB;AAAA,KACzB,CAAA;AAED,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,OAAO,EAAE,IAAA,CAAK;AAAA,QACZ,OAAA,EAAS,IAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,mCAAmC,KAAK,CAAA;AACtD,IAAA,OAAO,EAAE,IAAA,CAAK;AAAA,MACZ,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO;AAAA,OACN,GAAG,CAAA;AAAA,EACR;AACF,CAAC,CAAA;AAGD,mBAAA,CAAoB,IAAA,CAAK,GAAA,EAAK,OAAO,CAAA,KAAM;AACzC,EAAA,OAAO,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAC7C,CAAC,CAAA;;;AC7lBDrB,qDAAA,EAAA;AA4BO,SAAS,oBAAoB,IAAA,EAAiC;AACnE,EAAA,MAAM,SAAA,GAAiB;AAAA,IACrB,OAAA,EAAS,aAAA;AAAA,IACT,YAAA,EAAc,IAAA;AAAA,IACd,WAAA,EAAa,CAAC,IAAA,KAAe,CAAA,aAAA,EAAgB,KAAK,EAAE,CAAA,QAAA,CAAA;AAAA,IACpD,OAAA,EAAS;AAAA,MACP;AAAA,QACE,GAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,MAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU,QAAA;AAAA,QACV,MAAA,EAAQ,CAAC,MAAA,EAAa,IAAA,KAAc;AAAA;AAAA;AAAA,kBAAA,EAGxB,KAAK,IAAI;AAAA;AAAA;AAAA,UAAA;AAAA,OAIvB;AAAA,MACA;AAAA,QACE,GAAA,EAAK,cAAA;AAAA,QACL,KAAA,EAAO,cAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA;AAAA,QACE,GAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,UAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU,QAAA;AAAA,QACV,MAAA,EAAQ,CAAC,MAAA,EAAa,IAAA,KAAc;AAClC,UAAA,MAAM,cAAA,GAAyC;AAAA,YAC7C,SAAA,EAAW,wGAAA;AAAA,YACX,QAAA,EAAU,oHAAA;AAAA,YACV,cAAA,EAAgB,8GAAA;AAAA,YAChB,UAAA,EAAY,oHAAA;AAAA,YACZ,SAAA,EAAW;AAAA,WACb;AACA,UAAA,MAAM,aAAa,cAAA,CAAe,IAAA,CAAK,QAAQ,CAAA,IAAK,eAAe,SAAS,CAAA;AAC5E,UAAA,OAAO;AAAA,6GAAA,EAC8F,UAAU,CAAA;AAAA,cAAA,EACzG,IAAA,CAAK,YAAY,SAAS;AAAA;AAAA,UAAA,CAAA;AAAA,QAGlC;AAAA,OACF;AAAA,MACA;AAAA,QACE,GAAA,EAAK,kBAAA;AAAA,QACL,KAAA,EAAO,aAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU,QAAA;AAAA,QACV,MAAA,EAAQ,CAAC,MAAA,EAAa,IAAA,KAAc;AAClC,UAAA,MAAM,KAAA,GAAQ,KAAK,gBAAA,IAAoB,CAAA;AACvC,UAAA,OAAO;AAAA;AAAA;AAAA,gBAAA,EAGC,KAAK;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,QAIf;AAAA,OACF;AAAA,MACA;AAAA,QACE,GAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO,QAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU,QAAA;AAAA,QACV,MAAA,EAAQ,CAAC,MAAA,EAAa,IAAA,KAAc;AAClC,UAAA,IAAI,KAAK,SAAA,EAAW;AAClB,YAAA,OAAO;AAAA;AAAA;AAAA;AAAA,YAAA,CAAA;AAAA,UAKT,CAAA,MAAO;AACL,YAAA,OAAO;AAAA;AAAA;AAAA;AAAA,YAAA,CAAA;AAAA,UAKT;AAAA,QACF;AAAA,OACF;AAAA,MACA;AAAA,QACE,GAAA,EAAK,eAAA;AAAA,QACL,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,IAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA;AAAA,QACE,GAAA,EAAK,SAAA;AAAA,QACL,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU,KAAA;AAAA,QACV,MAAA,EAAQ,CAAC,MAAA,EAAa,IAAA,KAAc;AAClC,UAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,IAAA,CAAK,IAAI,OAAO,yDAAA;AAC9B,UAAA,OAAO;AAAA;AAAA,oCAAA,EAEqB,KAAK,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAA,EAKb,KAAK,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCAAA,EAMH,KAAK,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA;AAAA,QAOrC;AAAA;AACF,KACF;AAAA,IACA,MAAM,IAAA,CAAK,KAAA;AAAA,IACX,YAAA,EAAc;AAAA,GAChB;AAEA,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAAA,EA4C6D,IAAA,CAAK,MAAM,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAAA,EAgBjB,KAAK,KAAA,CAAM,MAAA,CAAO,OAAK,CAAA,CAAE,SAAS,EAAE,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iFAAA,EAgB1C,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,CAAA,KAAM,GAAA,IAAO,CAAA,CAAE,gBAAA,IAAoB,CAAA,CAAA,EAAI,CAAC,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAA,EAe7H,IAAA,CAAK,UAAU,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sCAAA,EAUA,IAAA,CAAK,QAAA,KAAa,SAAA,GAAY,UAAA,GAAa,EAAE,CAAA;AAAA,qCAAA,EAC9C,IAAA,CAAK,QAAA,KAAa,QAAA,GAAW,UAAA,GAAa,EAAE,CAAA;AAAA,2CAAA,EACtC,IAAA,CAAK,QAAA,KAAa,cAAA,GAAiB,UAAA,GAAa,EAAE,CAAA;AAAA,uCAAA,EACtD,IAAA,CAAK,QAAA,KAAa,UAAA,GAAa,UAAA,GAAa,EAAE,CAAA;AAAA,sCAAA,EAC/C,IAAA,CAAK,QAAA,KAAa,SAAA,GAAY,UAAA,GAAa,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAYzE,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,QAAA,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,CAAA,GAO7B,EAAE;AAAA;AAAA;;AAAA;AAAA;AAAA,QAAA,EAMNI,YAAAA,CAAY,SAAS,CAAC;AAAA;AAAA;AAAA,EAAA,CAAA;AAK9B,EAAA,MAAM,UAAA,GAAsC;AAAA,IAC1C,KAAA,EAAO,OAAA;AAAA,IACP,OAAA,EAAS,WAAA;AAAA,IACT,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,SAAS,IAAA,CAAK;AAAA,GAChB;AAEA,EAAA,OAAOD,4CAA0B,UAAU,CAAA;AAC7C;;;ACrSAH,qDAAA,EAAA;AAuBA,SAAS,2BAAA,GAAsC;AAC7C,EAAA,OAAO;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAkRT;AAEO,SAAS,sBAAsB,IAAA,EAAmC;AACvE,EAAA,MAAM,eAAe,IAAA,CAAK,aAAA,IAAiB,EAAE,UAAA,EAAY,EAAC,EAAE;AAE5D,EAAA,MAAM,gBAAA,GAAmB,KAAK,mBAAA,IAAuB,EAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB,KAAK,kBAAA,IAAsB,EAAA;AAEpD,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAA,EA6VU,KAAK,YAAY;AAAA;AAAA;AAAA;AAAA,kBAAA,EAI7B,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,2BAAA,EAgCA,KAAK,IAAI,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,iCAAA,EAYH,KAAK,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2FxC,6BAA6B;AAAA;;AAAA;AAAA;AAAA;AAAA,wBAAA,EAML,KAAK,EAAE,CAAA;AAAA,+BAAA,EACA,IAAA,CAAK,SAAA,CAAU,YAAY,CAAC,CAAA;AAAA,qCAAA,EACtB,gBAAgB,CAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mCAAA,EAsHlB,gBAAgB,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AA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","file":"chunk-BX75LZES.cjs","sourcesContent":["/**\n * Schema Definitions\n *\n * Placeholder for schema definitions - to be populated as needed\n */\n\nexport interface SchemaDefinition {\n name: string\n fields: any[]\n}\n\n// Empty array for now - schemas will be migrated incrementally\nexport const schemaDefinitions: SchemaDefinition[] = []\n","import type { FilterCondition, FilterGroup, QueryFilter } from '../utils/query-filter'\n\nfunction canReadNonPublicContent(userRole?: string): boolean {\n return userRole === 'admin' || userRole === 'editor'\n}\n\nfunction isStatusCondition(condition: FilterCondition): boolean {\n return condition.field === 'status'\n}\n\nfunction stripStatusConditions(group?: FilterGroup): FilterGroup | undefined {\n if (!group) {\n return undefined\n }\n\n const and = group.and?.filter(condition => !isStatusCondition(condition))\n const or = group.or?.filter(condition => !isStatusCondition(condition))\n\n const normalizedGroup: FilterGroup = {}\n\n if (and && and.length > 0) {\n normalizedGroup.and = and\n }\n\n if (or && or.length > 0) {\n normalizedGroup.or = or\n }\n\n return normalizedGroup\n}\n\nexport function normalizePublicContentFilter(filter: QueryFilter, userRole?: string): QueryFilter {\n if (canReadNonPublicContent(userRole)) {\n return filter\n }\n\n const normalizedFilter: QueryFilter = {\n ...filter,\n where: stripStatusConditions(filter.where)\n }\n\n if (!normalizedFilter.where) {\n normalizedFilter.where = { and: [] }\n }\n\n if (!normalizedFilter.where.and) {\n normalizedFilter.where.and = []\n }\n\n normalizedFilter.where.and.push({\n field: 'status',\n operator: 'equals',\n value: 'published'\n })\n\n return normalizedFilter\n}\n","/**\n * Variable Resolver\n *\n * Scans strings for {variable_key} tokens and replaces them\n * with values from the global variables map.\n *\n * Token syntax: {key} where key matches /^[a-z0-9_]+$/\n * Unresolved tokens are left as-is so editors can see what's missing.\n */\n\n// Matches {variable_key} — only lowercase alphanumeric + underscores\nconst TOKEN_PATTERN = /\\{([a-z0-9_]+)\\}/g\n\n/**\n * Replace all {variable_key} tokens in a string with their values.\n * Unresolved tokens remain unchanged.\n */\nexport function resolveVariables(\n text: string,\n variables: Map\n): string {\n if (!text || variables.size === 0) return text\n\n return text.replace(TOKEN_PATTERN, (match, key) => {\n const value = variables.get(key)\n return value !== undefined ? value : match\n })\n}\n\n/**\n * Recursively resolve variables in an object's string values.\n * Handles nested objects, arrays, and the `data` field of content items.\n */\nexport function resolveVariablesInObject(\n obj: any,\n variables: Map\n): any {\n if (!obj || variables.size === 0) return obj\n\n if (typeof obj === 'string') {\n return resolveVariables(obj, variables)\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => resolveVariablesInObject(item, variables))\n }\n\n if (typeof obj === 'object') {\n const result: Record = {}\n for (const [key, value] of Object.entries(obj)) {\n result[key] = resolveVariablesInObject(value, variables)\n }\n return result\n }\n\n return obj\n}\n\n// ============================================================================\n// In-memory variable cache (shared with index.ts via import)\n// ============================================================================\n\nlet variableCache: Map | null = null\nlet cacheTimestamp = 0\nconst CACHE_TTL_MS = 300_000 // 5 minutes\n\nexport function getVariablesCached(): Map | null {\n const now = Date.now()\n if (variableCache && (now - cacheTimestamp) < CACHE_TTL_MS) {\n return variableCache\n }\n return null\n}\n\nexport function setVariablesCache(map: Map): void {\n variableCache = map\n cacheTimestamp = Date.now()\n}\n\nexport function invalidateVariablesCache(): void {\n variableCache = null\n cacheTimestamp = 0\n}\n\n/**\n * Resolve variables in a content object using the database.\n * Fetches variables from DB (with caching) and resolves tokens.\n * Safe to call even if the global_variables table doesn't exist yet.\n */\nexport async function resolveContentVariables(\n contentData: any,\n db: any\n): Promise {\n if (!db || !contentData) return contentData\n\n try {\n // Check cache first\n let variables = getVariablesCached()\n\n if (!variables) {\n const { results } = await db.prepare(\n 'SELECT key, value FROM global_variables WHERE is_active = 1'\n ).all()\n\n variables = new Map()\n for (const row of results || []) {\n variables.set((row as any).key, (row as any).value)\n }\n setVariablesCache(variables)\n }\n\n if (variables.size === 0) return contentData\n\n return resolveVariablesInObject(contentData, variables)\n } catch {\n // Table may not exist yet — silently return original data\n return contentData\n }\n}\n","import { Hono } from 'hono'\nimport { requireAuth, requireRole } from '../middleware'\nimport { getCacheService, CACHE_CONFIGS } from '../services'\nimport type { Bindings, Variables } from '../app'\nimport { resolveContentVariables } from '../plugins/core-plugins/global-variables-plugin/variable-resolver'\n\nconst apiContentCrudRoutes = new Hono<{ Bindings: Bindings; Variables: Variables }>()\n\n// GET /api/content/check-slug - Check if slug is available in collection\n// Query params: collectionId, slug, excludeId (optional - when editing)\n// NOTE: This MUST come before /:id route to avoid route conflict\napiContentCrudRoutes.get('/check-slug', async (c) => {\n try {\n const db = c.env.DB\n const collectionId = c.req.query('collectionId')\n const slug = c.req.query('slug')\n const excludeId = c.req.query('excludeId') // When editing, exclude current item\n \n if (!collectionId || !slug) {\n return c.json({ error: 'collectionId and slug are required' }, 400)\n }\n \n // Check for existing content with this slug in the collection\n let query = 'SELECT id FROM content WHERE collection_id = ? AND slug = ?'\n const params: string[] = [collectionId, slug]\n \n if (excludeId) {\n query += ' AND id != ?'\n params.push(excludeId)\n }\n \n const existing = await db.prepare(query).bind(...params).first()\n \n if (existing) {\n return c.json({ \n available: false, \n message: 'This URL slug is already in use in this collection' \n })\n }\n \n return c.json({ available: true })\n } catch (error: unknown) {\n console.error('Error checking slug:', error)\n return c.json({ \n error: 'Failed to check slug availability',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// GET /api/content/:id - Get single content item by ID\napiContentCrudRoutes.get('/:id', async (c) => {\n try {\n const id = c.req.param('id')\n const db = c.env.DB\n\n const stmt = db.prepare('SELECT * FROM content WHERE id = ?')\n const content = await stmt.bind(id).first()\n\n if (!content) {\n return c.json({ error: 'Content not found' }, 404)\n }\n\n const transformedContent = {\n id: (content as any).id,\n title: (content as any).title,\n slug: (content as any).slug,\n status: (content as any).status,\n collectionId: (content as any).collection_id,\n data: (content as any).data ? JSON.parse((content as any).data) : {},\n created_at: (content as any).created_at,\n updated_at: (content as any).updated_at\n }\n\n // Resolve {variable_key} tokens in content data\n const resolveVars = c.req.query('resolve_variables') !== 'false'\n if (resolveVars) {\n transformedContent.data = await resolveContentVariables(transformedContent.data, db)\n }\n\n return c.json({ data: transformedContent })\n } catch (error) {\n console.error('Error fetching content:', error)\n return c.json({\n error: 'Failed to fetch content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// POST /api/content - Create new content (requires authentication)\napiContentCrudRoutes.post('/', requireAuth(), requireRole(['admin', 'editor', 'author']), async (c) => {\n try {\n const db = c.env.DB\n const user = c.get('user')\n const body = await c.req.json()\n\n const { collectionId, title, slug, status, data } = body\n\n // Validate required fields\n if (!collectionId) {\n return c.json({ error: 'collectionId is required' }, 400)\n }\n\n if (!title) {\n return c.json({ error: 'title is required' }, 400)\n }\n\n // Generate slug from title if not provided\n let finalSlug = slug || title\n finalSlug = finalSlug.toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .trim()\n\n // Check for duplicate slug within the same collection\n const duplicateCheck = db.prepare(\n 'SELECT id FROM content WHERE collection_id = ? AND slug = ?'\n )\n const existing = await duplicateCheck.bind(collectionId, finalSlug).first()\n\n if (existing) {\n return c.json({ error: 'A content item with this slug already exists in this collection' }, 409)\n }\n\n // Create new content\n const contentId = crypto.randomUUID()\n const now = Date.now()\n\n const insertStmt = db.prepare(`\n INSERT INTO content (\n id, collection_id, slug, title, data, status,\n author_id, created_at, updated_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n\n await insertStmt.bind(\n contentId,\n collectionId,\n finalSlug,\n title,\n JSON.stringify(data || {}),\n status || 'draft',\n user?.userId || 'system',\n now,\n now\n ).run()\n\n // Invalidate cache\n const cache = getCacheService(CACHE_CONFIGS.api!)\n await cache.invalidate(`content:list:${collectionId}:*`)\n await cache.invalidate('content-filtered:*')\n\n // Get the created content\n const getStmt = db.prepare('SELECT * FROM content WHERE id = ?')\n const createdContent = await getStmt.bind(contentId).first() as any\n\n return c.json({\n data: {\n id: createdContent.id,\n title: createdContent.title,\n slug: createdContent.slug,\n status: createdContent.status,\n collectionId: createdContent.collection_id,\n data: createdContent.data ? JSON.parse(createdContent.data) : {},\n created_at: createdContent.created_at,\n updated_at: createdContent.updated_at\n }\n }, 201)\n } catch (error) {\n console.error('Error creating content:', error)\n return c.json({\n error: 'Failed to create content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// PUT /api/content/:id - Update content (requires authentication)\napiContentCrudRoutes.put('/:id', requireAuth(), requireRole(['admin', 'editor', 'author']), async (c) => {\n try {\n const id = c.req.param('id')\n const db = c.env.DB\n const body = await c.req.json()\n\n // Check if content exists\n const existingStmt = db.prepare('SELECT * FROM content WHERE id = ?')\n const existing = await existingStmt.bind(id).first() as any\n\n if (!existing) {\n return c.json({ error: 'Content not found' }, 404)\n }\n\n // Build update fields dynamically\n const updates: string[] = []\n const params: any[] = []\n\n if (body.title !== undefined) {\n updates.push('title = ?')\n params.push(body.title)\n }\n\n if (body.slug !== undefined) {\n let finalSlug = body.slug.toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .trim()\n updates.push('slug = ?')\n params.push(finalSlug)\n }\n\n if (body.status !== undefined) {\n updates.push('status = ?')\n params.push(body.status)\n }\n\n if (body.data !== undefined) {\n updates.push('data = ?')\n params.push(JSON.stringify(body.data))\n }\n\n // Always update updated_at\n const now = Date.now()\n updates.push('updated_at = ?')\n params.push(now)\n\n // Add id to params for WHERE clause\n params.push(id)\n\n // Execute update\n const updateStmt = db.prepare(`\n UPDATE content SET ${updates.join(', ')}\n WHERE id = ?\n `)\n\n await updateStmt.bind(...params).run()\n\n // Invalidate cache\n const cache = getCacheService(CACHE_CONFIGS.api!)\n await cache.delete(cache.generateKey('content', id))\n await cache.invalidate(`content:list:${existing.collection_id}:*`)\n await cache.invalidate('content-filtered:*')\n\n // Get updated content\n const getStmt = db.prepare('SELECT * FROM content WHERE id = ?')\n const updatedContent = await getStmt.bind(id).first() as any\n\n return c.json({\n data: {\n id: updatedContent.id,\n title: updatedContent.title,\n slug: updatedContent.slug,\n status: updatedContent.status,\n collectionId: updatedContent.collection_id,\n data: updatedContent.data ? JSON.parse(updatedContent.data) : {},\n created_at: updatedContent.created_at,\n updated_at: updatedContent.updated_at\n }\n })\n } catch (error) {\n console.error('Error updating content:', error)\n return c.json({\n error: 'Failed to update content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// DELETE /api/content/:id - Delete content (requires authentication)\napiContentCrudRoutes.delete('/:id', requireAuth(), requireRole(['admin', 'editor', 'author']), async (c) => {\n try {\n const id = c.req.param('id')\n const db = c.env.DB\n\n // Check if content exists\n const existingStmt = db.prepare('SELECT collection_id FROM content WHERE id = ?')\n const existing = await existingStmt.bind(id).first() as any\n\n if (!existing) {\n return c.json({ error: 'Content not found' }, 404)\n }\n\n // Delete the content (hard delete for API, soft delete happens in admin routes)\n const deleteStmt = db.prepare('DELETE FROM content WHERE id = ?')\n await deleteStmt.bind(id).run()\n\n // Invalidate cache\n const cache = getCacheService(CACHE_CONFIGS.api!)\n await cache.delete(cache.generateKey('content', id))\n await cache.invalidate(`content:list:${existing.collection_id}:*`)\n await cache.invalidate('content-filtered:*')\n\n return c.json({ success: true })\n } catch (error) {\n console.error('Error deleting content:', error)\n return c.json({\n error: 'Failed to delete content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\nexport default apiContentCrudRoutes\n","import { Hono } from 'hono'\nimport { cors } from 'hono/cors'\nimport { schemaDefinitions } from '../schemas'\nimport { getCacheService, CACHE_CONFIGS } from '../services'\nimport { QueryFilterBuilder, QueryFilter } from '../utils'\nimport { isPluginActive, optionalAuth } from '../middleware'\nimport { normalizePublicContentFilter } from './api-content-access-policy'\nimport apiContentCrudRoutes from './api-content-crud'\nimport type { Bindings, Variables as AppVariables } from '../app'\n\n// Extend Variables with API-specific fields\ninterface Variables extends AppVariables {\n startTime: number\n cacheEnabled?: boolean\n}\n\nconst apiRoutes = new Hono<{ Bindings: Bindings; Variables: Variables }>()\n\n// Add timing middleware\napiRoutes.use('*', async (c, next) => {\n const startTime = Date.now()\n c.set('startTime', startTime)\n await next()\n const totalTime = Date.now() - startTime\n c.header('X-Response-Time', `${totalTime}ms`)\n})\n\n// Check if cache plugin is active\napiRoutes.use('*', async (c, next) => {\n const cacheEnabled = await isPluginActive(c.env.DB, 'core-cache')\n c.set('cacheEnabled', cacheEnabled)\n await next()\n})\n\n// Add CORS middleware\napiRoutes.use('*', cors({\n origin: (origin, c) => {\n const allowed = (c.env as any)?.CORS_ORIGINS as string | undefined\n if (!allowed) return null // No env var = reject cross-origin (secure default)\n const list = allowed.split(',').map((s: string) => s.trim())\n return list.includes(origin) ? origin : null\n },\n allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],\n allowHeaders: ['Content-Type', 'Authorization', 'X-API-Key']\n}))\n\n// Helper function to add timing metadata\nfunction addTimingMeta(c: any, meta: any = {}, executionStartTime?: number) {\n const totalTime = Date.now() - c.get('startTime')\n const executionTime = executionStartTime ? Date.now() - executionStartTime : undefined\n\n return {\n ...meta,\n timing: {\n total: totalTime,\n execution: executionTime,\n unit: 'ms'\n }\n }\n}\n\n// Root endpoint - OpenAPI 3.0.0 specification\napiRoutes.get('/', (c) => {\n const baseUrl = new URL(c.req.url)\n const serverUrl = `${baseUrl.protocol}//${baseUrl.host}`\n\n return c.json({\n openapi: '3.0.0',\n info: {\n title: 'SonicJS AI API',\n version: '0.1.0',\n description: 'RESTful API for SonicJS headless CMS - a modern, AI-powered content management system built on Cloudflare Workers',\n contact: {\n name: 'SonicJS Support',\n url: `${serverUrl}/docs`,\n email: 'support@sonicjs.com'\n },\n license: {\n name: 'MIT',\n url: 'https://opensource.org/licenses/MIT'\n }\n },\n servers: [\n {\n url: serverUrl,\n description: 'Current server'\n }\n ],\n paths: {\n '/api/': {\n get: {\n summary: 'API Information',\n description: 'Returns OpenAPI specification for the SonicJS API',\n operationId: 'getApiInfo',\n tags: ['System'],\n responses: {\n '200': {\n description: 'OpenAPI specification',\n content: {\n 'application/json': {\n schema: { type: 'object' }\n }\n }\n }\n }\n }\n },\n '/api/health': {\n get: {\n summary: 'Health Check',\n description: 'Returns API health status and available schemas',\n operationId: 'getHealth',\n tags: ['System'],\n responses: {\n '200': {\n description: 'Health status',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n status: { type: 'string', example: 'healthy' },\n timestamp: { type: 'string', format: 'date-time' },\n schemas: { type: 'array', items: { type: 'string' } }\n }\n }\n }\n }\n }\n }\n }\n },\n '/api/collections': {\n get: {\n summary: 'List Collections',\n description: 'Returns all active collections with their schemas',\n operationId: 'getCollections',\n tags: ['Content'],\n responses: {\n '200': {\n description: 'List of collections',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n id: { type: 'string' },\n name: { type: 'string' },\n display_name: { type: 'string' },\n schema: { type: 'object' },\n is_active: { type: 'integer' }\n }\n }\n },\n meta: { type: 'object' }\n }\n }\n }\n }\n }\n }\n }\n },\n '/api/collections/{collection}/content': {\n get: {\n summary: 'Get Collection Content',\n description: 'Returns content items from a specific collection with filtering support. Anonymous, viewer, and author requests are restricted to published content; admin and editor requests may query other statuses.',\n operationId: 'getCollectionContent',\n tags: ['Content'],\n parameters: [\n {\n name: 'collection',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Collection name'\n },\n {\n name: 'limit',\n in: 'query',\n schema: { type: 'integer', default: 50, maximum: 1000 },\n description: 'Maximum number of items to return'\n },\n {\n name: 'offset',\n in: 'query',\n schema: { type: 'integer', default: 0 },\n description: 'Number of items to skip'\n },\n {\n name: 'status',\n in: 'query',\n schema: { type: 'string', enum: ['draft', 'published', 'archived'] },\n description: 'Filter by content status. Anonymous, viewer, and author requests are limited to published content.'\n }\n ],\n responses: {\n '200': {\n description: 'List of content items',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'array', items: { type: 'object' } },\n meta: { type: 'object' }\n }\n }\n }\n }\n },\n '404': {\n description: 'Collection not found'\n }\n }\n }\n },\n '/api/content': {\n get: {\n summary: 'List Content',\n description: 'Returns content items with advanced filtering support. Anonymous, viewer, and author requests are restricted to published content; admin and editor requests may query other statuses.',\n operationId: 'getContent',\n tags: ['Content'],\n parameters: [\n {\n name: 'collection',\n in: 'query',\n schema: { type: 'string' },\n description: 'Filter by collection name'\n },\n {\n name: 'limit',\n in: 'query',\n schema: { type: 'integer', default: 50, maximum: 1000 },\n description: 'Maximum number of items to return'\n },\n {\n name: 'offset',\n in: 'query',\n schema: { type: 'integer', default: 0 },\n description: 'Number of items to skip'\n },\n {\n name: 'status',\n in: 'query',\n schema: { type: 'string', enum: ['draft', 'published', 'archived'] },\n description: 'Filter by content status. Anonymous, viewer, and author requests are limited to published content.'\n }\n ],\n responses: {\n '200': {\n description: 'List of content items',\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n properties: {\n data: { type: 'array', items: { type: 'object' } },\n meta: { type: 'object' }\n }\n }\n }\n }\n }\n }\n },\n post: {\n summary: 'Create Content',\n description: 'Creates a new content item',\n operationId: 'createContent',\n tags: ['Content'],\n security: [{ bearerAuth: [] }],\n requestBody: {\n required: true,\n content: {\n 'application/json': {\n schema: {\n type: 'object',\n required: ['collection_id', 'title'],\n properties: {\n collection_id: { type: 'string' },\n title: { type: 'string' },\n slug: { type: 'string' },\n status: { type: 'string', enum: ['draft', 'published', 'archived'] },\n data: { type: 'object' }\n }\n }\n }\n }\n },\n responses: {\n '201': { description: 'Content created successfully' },\n '400': { description: 'Invalid request body' },\n '401': { description: 'Unauthorized' }\n }\n }\n },\n '/api/content/{id}': {\n get: {\n summary: 'Get Content by ID',\n description: 'Returns a specific content item by ID',\n operationId: 'getContentById',\n tags: ['Content'],\n parameters: [\n {\n name: 'id',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Content item ID'\n }\n ],\n responses: {\n '200': { description: 'Content item' },\n '404': { description: 'Content not found' }\n }\n },\n put: {\n summary: 'Update Content',\n description: 'Updates an existing content item',\n operationId: 'updateContent',\n tags: ['Content'],\n security: [{ bearerAuth: [] }],\n parameters: [\n {\n name: 'id',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Content item ID'\n }\n ],\n responses: {\n '200': { description: 'Content updated successfully' },\n '401': { description: 'Unauthorized' },\n '404': { description: 'Content not found' }\n }\n },\n delete: {\n summary: 'Delete Content',\n description: 'Deletes a content item',\n operationId: 'deleteContent',\n tags: ['Content'],\n security: [{ bearerAuth: [] }],\n parameters: [\n {\n name: 'id',\n in: 'path',\n required: true,\n schema: { type: 'string' },\n description: 'Content item ID'\n }\n ],\n responses: {\n '200': { description: 'Content deleted successfully' },\n '401': { description: 'Unauthorized' },\n '404': { description: 'Content not found' }\n }\n }\n },\n '/api/media': {\n get: {\n summary: 'List Media',\n description: 'Returns all media files with pagination',\n operationId: 'getMedia',\n tags: ['Media'],\n responses: {\n '200': { description: 'List of media files' }\n }\n }\n },\n '/api/media/upload': {\n post: {\n summary: 'Upload Media',\n description: 'Uploads a new media file to R2 storage',\n operationId: 'uploadMedia',\n tags: ['Media'],\n security: [{ bearerAuth: [] }],\n requestBody: {\n required: true,\n content: {\n 'multipart/form-data': {\n schema: {\n type: 'object',\n properties: {\n file: { type: 'string', format: 'binary' }\n }\n }\n }\n }\n },\n responses: {\n '201': { description: 'Media uploaded successfully' },\n '401': { description: 'Unauthorized' }\n }\n }\n }\n },\n components: {\n securitySchemes: {\n bearerAuth: {\n type: 'http',\n scheme: 'bearer',\n bearerFormat: 'JWT'\n }\n },\n schemas: {\n Content: {\n type: 'object',\n properties: {\n id: { type: 'string', format: 'uuid' },\n title: { type: 'string' },\n slug: { type: 'string' },\n status: { type: 'string', enum: ['draft', 'published', 'archived'] },\n collectionId: { type: 'string', format: 'uuid' },\n data: { type: 'object' },\n created_at: { type: 'integer' },\n updated_at: { type: 'integer' }\n }\n },\n Collection: {\n type: 'object',\n properties: {\n id: { type: 'string', format: 'uuid' },\n name: { type: 'string' },\n display_name: { type: 'string' },\n description: { type: 'string' },\n schema: { type: 'object' },\n is_active: { type: 'integer' }\n }\n },\n Media: {\n type: 'object',\n properties: {\n id: { type: 'string', format: 'uuid' },\n filename: { type: 'string' },\n mimetype: { type: 'string' },\n size: { type: 'integer' },\n url: { type: 'string' }\n }\n },\n Error: {\n type: 'object',\n properties: {\n error: { type: 'string' },\n details: { type: 'string' }\n }\n }\n }\n },\n tags: [\n { name: 'System', description: 'System and health endpoints' },\n { name: 'Content', description: 'Content management operations' },\n { name: 'Media', description: 'Media file operations' }\n ]\n })\n})\n\n// Health check endpoint\napiRoutes.get('/health', (c) => {\n return c.json({\n status: 'healthy',\n timestamp: new Date().toISOString(),\n schemas: schemaDefinitions.map(s => s.name)\n })\n})\n\n// Basic collections endpoint\napiRoutes.get('/collections', async (c) => {\n const executionStart = Date.now()\n\n try {\n const db = c.env.DB\n const cacheEnabled = c.get('cacheEnabled')\n const cache = getCacheService(CACHE_CONFIGS.api!)\n const cacheKey = cache.generateKey('collections', 'all')\n\n // Use cache only if cache plugin is active\n if (cacheEnabled) {\n const cacheResult = await cache.getWithSource(cacheKey)\n if (cacheResult.hit && cacheResult.data) {\n // Add cache headers\n c.header('X-Cache-Status', 'HIT')\n c.header('X-Cache-Source', cacheResult.source)\n if (cacheResult.ttl) {\n c.header('X-Cache-TTL', Math.floor(cacheResult.ttl).toString())\n }\n\n // Add cache info and timing to meta\n const dataWithMeta = {\n ...cacheResult.data,\n meta: addTimingMeta(c, {\n ...cacheResult.data.meta,\n cache: {\n hit: true,\n source: cacheResult.source,\n ttl: cacheResult.ttl ? Math.floor(cacheResult.ttl) : undefined\n }\n }, executionStart)\n }\n\n return c.json(dataWithMeta)\n }\n }\n\n // Cache miss - fetch from database\n c.header('X-Cache-Status', 'MISS')\n c.header('X-Cache-Source', 'database')\n\n const stmt = db.prepare(\"SELECT * FROM collections WHERE is_active = 1 AND (source_type IS NULL OR source_type = 'user')\")\n const { results } = await stmt.all()\n\n // Parse schema and format results\n const transformedResults = results.map((row: any) => ({\n ...row,\n schema: row.schema ? JSON.parse(row.schema) : {},\n is_active: row.is_active // Keep as number (1 or 0)\n }))\n\n const responseData = {\n data: transformedResults,\n meta: addTimingMeta(c, {\n count: results.length,\n timestamp: new Date().toISOString(),\n cache: {\n hit: false,\n source: 'database'\n }\n }, executionStart)\n }\n\n // Cache the response only if cache plugin is enabled\n if (cacheEnabled) {\n await cache.set(cacheKey, responseData)\n }\n\n return c.json(responseData)\n } catch (error) {\n console.error('Error fetching collections:', error)\n return c.json({ error: 'Failed to fetch collections' }, 500)\n }\n})\n\n// Basic content endpoint with advanced filtering\napiRoutes.get('/content', optionalAuth(), async (c) => {\n const executionStart = Date.now()\n\n try {\n const db = c.env.DB\n const queryParams = c.req.query()\n\n // Handle collection parameter - convert collection name to collection_id\n if (queryParams.collection) {\n const collectionName = queryParams.collection\n const collectionStmt = db.prepare('SELECT id FROM collections WHERE name = ? AND is_active = 1')\n const collectionResult = await collectionStmt.bind(collectionName).first()\n\n if (collectionResult) {\n // Replace 'collection' param with 'collection_id' for the filter builder\n queryParams.collection_id = (collectionResult as any).id\n delete queryParams.collection\n } else {\n // Collection not found - return empty result\n return c.json({\n data: [],\n meta: addTimingMeta(c, {\n count: 0,\n timestamp: new Date().toISOString(),\n message: `Collection '${collectionName}' not found`\n }, executionStart)\n })\n }\n }\n\n // Parse filter from query parameters\n const filter: QueryFilter = QueryFilterBuilder.parseFromQuery(queryParams)\n const normalizedFilter = normalizePublicContentFilter(filter, c.get('user')?.role)\n\n // Set default limit if not provided\n if (!normalizedFilter.limit) {\n normalizedFilter.limit = 50\n }\n normalizedFilter.limit = Math.min(normalizedFilter.limit, 1000) // Max 1000\n\n // Build SQL query from filter\n const builder = new QueryFilterBuilder()\n const queryResult = builder.build('content', normalizedFilter)\n\n // Check for query building errors\n if (queryResult.errors.length > 0) {\n return c.json({\n error: 'Invalid filter parameters',\n details: queryResult.errors\n }, 400)\n }\n\n // Only use cache if cache plugin is active\n const cacheEnabled = c.get('cacheEnabled')\n const cache = getCacheService(CACHE_CONFIGS.api!)\n const cacheKey = cache.generateKey('content-filtered', JSON.stringify({ filter: normalizedFilter, query: queryResult.sql }))\n\n if (cacheEnabled) {\n const cacheResult = await cache.getWithSource(cacheKey)\n if (cacheResult.hit && cacheResult.data) {\n // Add cache headers\n c.header('X-Cache-Status', 'HIT')\n c.header('X-Cache-Source', cacheResult.source)\n if (cacheResult.ttl) {\n c.header('X-Cache-TTL', Math.floor(cacheResult.ttl).toString())\n }\n\n // Add cache info and timing to meta\n const dataWithMeta = {\n ...cacheResult.data,\n meta: addTimingMeta(c, {\n ...cacheResult.data.meta,\n cache: {\n hit: true,\n source: cacheResult.source,\n ttl: cacheResult.ttl ? Math.floor(cacheResult.ttl) : undefined\n }\n }, executionStart)\n }\n\n return c.json(dataWithMeta)\n }\n }\n\n // Cache miss - fetch from database\n c.header('X-Cache-Status', 'MISS')\n c.header('X-Cache-Source', 'database')\n\n // Execute query with parameters\n const stmt = db.prepare(queryResult.sql)\n const boundStmt = queryResult.params.length > 0\n ? stmt.bind(...queryResult.params)\n : stmt\n\n const { results } = await boundStmt.all()\n\n // Transform results to match API spec (camelCase)\n const transformedResults = results.map((row: any) => ({\n id: row.id,\n title: row.title,\n slug: row.slug,\n status: row.status,\n collectionId: row.collection_id,\n data: row.data ? JSON.parse(row.data) : {},\n created_at: row.created_at,\n updated_at: row.updated_at\n }))\n\n const responseData = {\n data: transformedResults,\n meta: addTimingMeta(c, {\n count: results.length,\n timestamp: new Date().toISOString(),\n filter: normalizedFilter,\n cache: {\n hit: false,\n source: 'database'\n }\n }, executionStart)\n }\n\n // Cache the response only if cache is enabled\n if (cacheEnabled) {\n await cache.set(cacheKey, responseData)\n }\n\n return c.json(responseData)\n } catch (error) {\n console.error('Error fetching content:', error)\n return c.json({\n error: 'Failed to fetch content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// Collection-specific routes with advanced filtering\napiRoutes.get('/collections/:collection/content', optionalAuth(), async (c) => {\n const executionStart = Date.now()\n\n try {\n const collection = c.req.param('collection')\n const db = c.env.DB\n const queryParams = c.req.query()\n\n // First check if collection exists\n const collectionStmt = db.prepare('SELECT * FROM collections WHERE name = ? AND is_active = 1')\n const collectionResult = await collectionStmt.bind(collection).first()\n\n if (!collectionResult) {\n return c.json({ error: 'Collection not found' }, 404)\n }\n\n // Parse filter from query parameters\n const filter: QueryFilter = QueryFilterBuilder.parseFromQuery(queryParams)\n const normalizedFilter = normalizePublicContentFilter(filter, c.get('user')?.role)\n\n // Add collection_id filter to where clause\n if (!normalizedFilter.where) {\n normalizedFilter.where = { and: [] }\n }\n\n if (!normalizedFilter.where.and) {\n normalizedFilter.where.and = []\n }\n\n // Add collection filter\n normalizedFilter.where.and.push({\n field: 'collection_id',\n operator: 'equals',\n value: (collectionResult as any).id\n })\n\n // Set default limit if not provided\n if (!normalizedFilter.limit) {\n normalizedFilter.limit = 50\n }\n normalizedFilter.limit = Math.min(normalizedFilter.limit, 1000)\n\n // Build SQL query from filter\n const builder = new QueryFilterBuilder()\n const queryResult = builder.build('content', normalizedFilter)\n\n // Check for query building errors\n if (queryResult.errors.length > 0) {\n return c.json({\n error: 'Invalid filter parameters',\n details: queryResult.errors\n }, 400)\n }\n\n // Generate cache key\n const cacheEnabled = c.get('cacheEnabled')\n const cache = getCacheService(CACHE_CONFIGS.api!)\n const cacheKey = cache.generateKey('collection-content-filtered', `${collection}:${JSON.stringify({ filter: normalizedFilter, query: queryResult.sql })}`)\n\n // Only check cache if plugin is enabled\n if (cacheEnabled) {\n const cacheResult = await cache.getWithSource(cacheKey)\n if (cacheResult.hit && cacheResult.data) {\n // Add cache headers\n c.header('X-Cache-Status', 'HIT')\n c.header('X-Cache-Source', cacheResult.source)\n if (cacheResult.ttl) {\n c.header('X-Cache-TTL', Math.floor(cacheResult.ttl).toString())\n }\n\n // Add cache info and timing to meta\n const dataWithMeta = {\n ...cacheResult.data,\n meta: addTimingMeta(c, {\n ...cacheResult.data.meta,\n cache: {\n hit: true,\n source: cacheResult.source,\n ttl: cacheResult.ttl ? Math.floor(cacheResult.ttl) : undefined\n }\n }, executionStart)\n }\n\n return c.json(dataWithMeta)\n }\n }\n\n // Cache miss - fetch from database\n c.header('X-Cache-Status', 'MISS')\n c.header('X-Cache-Source', 'database')\n\n // Execute query with parameters\n const stmt = db.prepare(queryResult.sql)\n const boundStmt = queryResult.params.length > 0\n ? stmt.bind(...queryResult.params)\n : stmt\n\n const { results } = await boundStmt.all()\n\n // Transform results to match API spec (camelCase)\n const transformedResults = results.map((row: any) => ({\n id: row.id,\n title: row.title,\n slug: row.slug,\n status: row.status,\n collectionId: row.collection_id,\n data: row.data ? JSON.parse(row.data) : {},\n created_at: row.created_at,\n updated_at: row.updated_at\n }))\n\n const responseData = {\n data: transformedResults,\n meta: addTimingMeta(c, {\n collection: {\n ...(collectionResult as any),\n schema: (collectionResult as any).schema ? JSON.parse((collectionResult as any).schema) : {}\n },\n count: results.length,\n timestamp: new Date().toISOString(),\n filter: normalizedFilter,\n cache: {\n hit: false,\n source: 'database'\n }\n }, executionStart)\n }\n\n // Cache the response only if cache plugin is enabled\n if (cacheEnabled) {\n await cache.set(cacheKey, responseData)\n }\n\n return c.json(responseData)\n } catch (error) {\n console.error('Error fetching content:', error)\n return c.json({\n error: 'Failed to fetch content',\n details: error instanceof Error ? error.message : String(error)\n }, 500)\n }\n})\n\n// Mount CRUD routes for content\napiRoutes.route('/content', apiContentCrudRoutes)\n\nexport default apiRoutes\n","import { Hono } from 'hono'\nimport { z } from 'zod'\nimport { requireAuth } from '../middleware'\nimport type { Bindings, Variables } from '../app'\n\n// Helper function to generate short IDs (replacement for nanoid)\nfunction generateId(): string {\n return crypto.randomUUID().replace(/-/g, '').substring(0, 21)\n}\n\n// Helper function for emitting events (simplified for core package)\nasync function emitEvent(eventName: string, data: any) {\n console.log(`[Event] ${eventName}:`, data)\n // TODO: Implement proper event system when plugin architecture is ready\n}\n\n// File validation schema\nconst fileValidationSchema = z.object({\n name: z.string().min(1).max(255),\n type: z.string().refine(\n (type) => {\n const allowedTypes = [\n // Images\n 'image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp', 'image/svg+xml',\n // Documents\n 'application/pdf', 'text/plain', 'application/msword', \n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n // Videos\n 'video/mp4', 'video/webm', 'video/ogg', 'video/avi', 'video/mov',\n // Audio\n 'audio/mp3', 'audio/wav', 'audio/ogg', 'audio/m4a'\n ]\n return allowedTypes.includes(type)\n },\n { message: 'Unsupported file type' }\n ),\n size: z.number().min(1).max(50 * 1024 * 1024) // 50MB max\n})\n\nexport const apiMediaRoutes = new Hono<{ Bindings: Bindings; Variables: Variables }>()\n\n// Apply auth middleware to all routes\napiMediaRoutes.use('*', requireAuth())\n\n// Upload single file\napiMediaRoutes.post('/upload', async (c) => {\n try {\n const user = c.get('user')!\n const formData = await c.req.formData()\n const fileData = formData.get('file')\n\n if (!fileData || typeof fileData === 'string') {\n return c.json({ error: 'No file provided' }, 400)\n }\n\n const file = fileData as File\n\n // Validate file\n const validation = fileValidationSchema.safeParse({\n name: file.name,\n type: file.type,\n size: file.size\n })\n\n if (!validation.success) {\n return c.json({ \n error: 'File validation failed', \n details: validation.error.issues \n }, 400)\n }\n\n // Generate unique filename and R2 key\n const fileId = generateId()\n const fileExtension = file.name.split('.').pop() || ''\n const filename = `${fileId}.${fileExtension}`\n const folder = formData.get('folder') as string || 'uploads'\n const r2Key = `${folder}/${filename}`\n\n // Upload to R2\n const arrayBuffer = await file.arrayBuffer()\n const uploadResult = await c.env.MEDIA_BUCKET.put(r2Key, arrayBuffer, {\n httpMetadata: {\n contentType: file.type,\n contentDisposition: `inline; filename=\"${file.name}\"`\n },\n customMetadata: {\n originalName: file.name,\n uploadedBy: user.userId,\n uploadedAt: new Date().toISOString()\n }\n })\n\n if (!uploadResult) {\n return c.json({ error: 'Failed to upload file to storage' }, 500)\n }\n\n // Generate public URL using environment variable for bucket name\n const bucketName = c.env.BUCKET_NAME || 'sonicjs-media-dev'\n const publicUrl = `https://pub-${bucketName}.r2.dev/${r2Key}`\n \n // Extract image dimensions if it's an image\n let width: number | null = null\n let height: number | null = null\n \n if (file.type.startsWith('image/') && !file.type.includes('svg')) {\n try {\n const dimensions = await getImageDimensions(arrayBuffer)\n width = dimensions.width\n height = dimensions.height\n } catch (error) {\n console.warn('Failed to extract image dimensions:', error)\n }\n }\n\n // Generate thumbnail URL for images\n let thumbnailUrl: string | null = null\n if (file.type.startsWith('image/') && c.env.IMAGES_ACCOUNT_ID) {\n thumbnailUrl = `https://imagedelivery.net/${c.env.IMAGES_ACCOUNT_ID}/${r2Key}/thumbnail`\n }\n\n // Save to database\n const mediaRecord = {\n id: fileId,\n filename: filename,\n original_name: file.name,\n mime_type: file.type,\n size: file.size,\n width,\n height,\n folder,\n r2_key: r2Key,\n public_url: publicUrl,\n thumbnail_url: thumbnailUrl,\n uploaded_by: user.userId,\n uploaded_at: Math.floor(Date.now() / 1000),\n created_at: Math.floor(Date.now() / 1000)\n }\n\n const stmt = c.env.DB.prepare(`\n INSERT INTO media (\n id, filename, original_name, mime_type, size, width, height, \n folder, r2_key, public_url, thumbnail_url, uploaded_by, uploaded_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n mediaRecord.id,\n mediaRecord.filename,\n mediaRecord.original_name,\n mediaRecord.mime_type,\n mediaRecord.size,\n mediaRecord.width,\n mediaRecord.height,\n mediaRecord.folder,\n mediaRecord.r2_key,\n mediaRecord.public_url,\n mediaRecord.thumbnail_url,\n mediaRecord.uploaded_by,\n mediaRecord.uploaded_at\n ).run()\n\n // Emit media upload event\n await emitEvent('media.upload', { id: mediaRecord.id, filename: mediaRecord.filename })\n\n return c.json({\n success: true,\n file: {\n id: mediaRecord.id,\n filename: mediaRecord.filename,\n originalName: mediaRecord.original_name,\n mimeType: mediaRecord.mime_type,\n size: mediaRecord.size,\n width: mediaRecord.width,\n height: mediaRecord.height,\n r2_key: mediaRecord.r2_key,\n publicUrl: mediaRecord.public_url,\n thumbnailUrl: mediaRecord.thumbnail_url,\n uploadedAt: new Date(mediaRecord.uploaded_at * 1000).toISOString()\n }\n })\n } catch (error) {\n console.error('Upload error:', error)\n return c.json({ error: 'Upload failed' }, 500)\n }\n})\n\n// Upload multiple files\napiMediaRoutes.post('/upload-multiple', async (c) => {\n try {\n const user = c.get('user')!\n const formData = await c.req.formData()\n const filesData = formData.getAll('files')\n\n // Filter out strings and ensure we only have File objects\n const files: File[] = []\n for (const f of filesData) {\n if (typeof f !== 'string') {\n files.push(f as File)\n }\n }\n\n if (!files || files.length === 0) {\n return c.json({ error: 'No files provided' }, 400)\n }\n\n const uploadResults = []\n const errors = []\n\n for (const file of files) {\n try {\n // Validate file\n const validation = fileValidationSchema.safeParse({\n name: file.name,\n type: file.type,\n size: file.size\n })\n\n if (!validation.success) {\n errors.push({\n filename: file.name,\n error: 'Validation failed',\n details: validation.error.issues\n })\n continue\n }\n\n // Generate unique filename and R2 key\n const fileId = generateId()\n const fileExtension = file.name.split('.').pop() || ''\n const filename = `${fileId}.${fileExtension}`\n const folder = formData.get('folder') as string || 'uploads'\n const r2Key = `${folder}/${filename}`\n\n // Upload to R2\n const arrayBuffer = await file.arrayBuffer()\n const uploadResult = await c.env.MEDIA_BUCKET.put(r2Key, arrayBuffer, {\n httpMetadata: {\n contentType: file.type,\n contentDisposition: `inline; filename=\"${file.name}\"`\n },\n customMetadata: {\n originalName: file.name,\n uploadedBy: user.userId,\n uploadedAt: new Date().toISOString()\n }\n })\n\n if (!uploadResult) {\n errors.push({\n filename: file.name,\n error: 'Failed to upload to storage'\n })\n continue\n }\n\n // Generate public URL using environment variable for bucket name\n const bucketName = c.env.BUCKET_NAME || 'sonicjs-media-dev'\n const publicUrl = `https://pub-${bucketName}.r2.dev/${r2Key}`\n \n // Extract image dimensions if it's an image\n let width: number | null = null\n let height: number | null = null\n \n if (file.type.startsWith('image/') && !file.type.includes('svg')) {\n try {\n const dimensions = await getImageDimensions(arrayBuffer)\n width = dimensions.width\n height = dimensions.height\n } catch (error) {\n console.warn('Failed to extract image dimensions:', error)\n }\n }\n\n // Generate thumbnail URL for images\n let thumbnailUrl: string | null = null\n if (file.type.startsWith('image/') && c.env.IMAGES_ACCOUNT_ID) {\n thumbnailUrl = `https://imagedelivery.net/${c.env.IMAGES_ACCOUNT_ID}/${r2Key}/thumbnail`\n }\n\n // Save to database\n const mediaRecord = {\n id: fileId,\n filename: filename,\n original_name: file.name,\n mime_type: file.type,\n size: file.size,\n width,\n height,\n folder,\n r2_key: r2Key,\n public_url: publicUrl,\n thumbnail_url: thumbnailUrl,\n uploaded_by: user.userId,\n uploaded_at: Math.floor(Date.now() / 1000)\n }\n\n const stmt = c.env.DB.prepare(`\n INSERT INTO media (\n id, filename, original_name, mime_type, size, width, height, \n folder, r2_key, public_url, thumbnail_url, uploaded_by, uploaded_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n \n await stmt.bind(\n mediaRecord.id,\n mediaRecord.filename,\n mediaRecord.original_name,\n mediaRecord.mime_type,\n mediaRecord.size,\n mediaRecord.width,\n mediaRecord.height,\n mediaRecord.folder,\n mediaRecord.r2_key,\n mediaRecord.public_url,\n mediaRecord.thumbnail_url,\n mediaRecord.uploaded_by,\n mediaRecord.uploaded_at\n ).run()\n\n uploadResults.push({\n id: mediaRecord.id,\n filename: mediaRecord.filename,\n originalName: mediaRecord.original_name,\n mimeType: mediaRecord.mime_type,\n size: mediaRecord.size,\n width: mediaRecord.width,\n height: mediaRecord.height,\n r2_key: mediaRecord.r2_key,\n publicUrl: mediaRecord.public_url,\n thumbnailUrl: mediaRecord.thumbnail_url,\n uploadedAt: new Date(mediaRecord.uploaded_at * 1000).toISOString()\n })\n } catch (error) {\n errors.push({\n filename: file.name,\n error: 'Upload failed',\n details: error instanceof Error ? error.message : 'Unknown error'\n })\n }\n }\n\n // Emit media upload event if any uploads succeeded\n if (uploadResults.length > 0) {\n await emitEvent('media.upload', { count: uploadResults.length })\n }\n\n return c.json({\n success: uploadResults.length > 0,\n uploaded: uploadResults,\n errors: errors,\n summary: {\n total: files.length,\n successful: uploadResults.length,\n failed: errors.length\n }\n })\n } catch (error) {\n console.error('Multiple upload error:', error)\n return c.json({ error: 'Upload failed' }, 500)\n }\n})\n\n// Bulk delete files\napiMediaRoutes.post('/bulk-delete', async (c) => {\n try {\n const user = c.get('user')!\n const body = await c.req.json()\n const fileIds = body.fileIds as string[]\n \n if (!fileIds || !Array.isArray(fileIds) || fileIds.length === 0) {\n return c.json({ error: 'No file IDs provided' }, 400)\n }\n\n // Limit bulk operations to prevent abuse\n if (fileIds.length > 50) {\n return c.json({ error: 'Too many files selected. Maximum 50 files per operation.' }, 400)\n }\n\n const results = []\n const errors = []\n\n for (const fileId of fileIds) {\n try {\n // Get file record (including already deleted files to check if they exist at all)\n const stmt = c.env.DB.prepare('SELECT * FROM media WHERE id = ?')\n const fileRecord = await stmt.bind(fileId).first() as any\n\n if (!fileRecord) {\n errors.push({ fileId, error: 'File not found' })\n continue\n }\n\n // Skip if already deleted (treat as success)\n if (fileRecord.deleted_at !== null) {\n console.log(`File ${fileId} already deleted, skipping`)\n results.push({\n fileId,\n filename: fileRecord.original_name,\n success: true,\n alreadyDeleted: true\n })\n continue\n }\n\n // Check permissions (only allow deletion by uploader or admin)\n if (fileRecord.uploaded_by !== user.userId && user.role !== 'admin') {\n errors.push({ fileId, error: 'Permission denied' })\n continue\n }\n\n // Delete from R2\n try {\n await c.env.MEDIA_BUCKET.delete(fileRecord.r2_key)\n } catch (error) {\n console.warn(`Failed to delete from R2 for file ${fileId}:`, error)\n // Continue with database deletion even if R2 deletion fails\n }\n\n // Soft delete in database\n const deleteStmt = c.env.DB.prepare('UPDATE media SET deleted_at = ? WHERE id = ?')\n await deleteStmt.bind(Math.floor(Date.now() / 1000), fileId).run()\n\n results.push({\n fileId,\n filename: fileRecord.original_name,\n success: true\n })\n } catch (error) {\n errors.push({\n fileId,\n error: 'Delete failed',\n details: error instanceof Error ? error.message : 'Unknown error'\n })\n }\n }\n\n // Emit media delete event if any deletes succeeded\n if (results.length > 0) {\n await emitEvent('media.delete', { count: results.length, ids: fileIds })\n }\n\n return c.json({\n success: results.length > 0,\n deleted: results,\n errors: errors,\n summary: {\n total: fileIds.length,\n successful: results.length,\n failed: errors.length\n }\n })\n } catch (error) {\n console.error('Bulk delete error:', error)\n return c.json({ error: 'Bulk delete failed' }, 500)\n }\n})\n\n// Create folder\napiMediaRoutes.post('/create-folder', async (c) => {\n try {\n const body = await c.req.json()\n const folderName = body.folderName as string\n\n if (!folderName || typeof folderName !== 'string') {\n return c.json({ success: false, error: 'No folder name provided' }, 400)\n }\n\n // Validate folder name format\n const folderPattern = /^[a-z0-9-_]+$/\n if (!folderPattern.test(folderName)) {\n return c.json({\n success: false,\n error: 'Folder name can only contain lowercase letters, numbers, hyphens, and underscores'\n }, 400)\n }\n\n // Check if folder already exists in the database\n const checkStmt = c.env.DB.prepare('SELECT COUNT(*) as count FROM media WHERE folder = ? AND deleted_at IS NULL')\n const existingFolder = await checkStmt.bind(folderName).first() as any\n\n if (existingFolder && existingFolder.count > 0) {\n return c.json({\n success: false,\n error: `Folder \"${folderName}\" already exists`\n }, 400)\n }\n\n // Note: R2 folders are virtual - they only exist when files are uploaded to them\n // Return success message explaining this behavior\n return c.json({\n success: true,\n message: `Folder \"${folderName}\" is ready. Upload files to this folder to make it appear in the media library.`,\n folder: folderName,\n note: 'Folders appear automatically when you upload files to them'\n })\n } catch (error) {\n console.error('Create folder error:', error)\n return c.json({ success: false, error: 'Failed to create folder' }, 500)\n }\n})\n\n// Bulk move files to folder\napiMediaRoutes.post('/bulk-move', async (c) => {\n try {\n const user = c.get('user')!\n const body = await c.req.json()\n const fileIds = body.fileIds as string[]\n const targetFolder = body.folder as string\n\n if (!fileIds || !Array.isArray(fileIds) || fileIds.length === 0) {\n return c.json({ error: 'No file IDs provided' }, 400)\n }\n\n if (!targetFolder || typeof targetFolder !== 'string') {\n return c.json({ error: 'No target folder provided' }, 400)\n }\n\n // Limit bulk operations to prevent abuse\n if (fileIds.length > 50) {\n return c.json({ error: 'Too many files selected. Maximum 50 files per operation.' }, 400)\n }\n\n const results = []\n const errors = []\n\n for (const fileId of fileIds) {\n try {\n // Get file record\n const stmt = c.env.DB.prepare('SELECT * FROM media WHERE id = ? AND deleted_at IS NULL')\n const fileRecord = await stmt.bind(fileId).first() as any\n\n if (!fileRecord) {\n errors.push({ fileId, error: 'File not found' })\n continue\n }\n\n // Check permissions (only allow move by uploader or admin)\n if (fileRecord.uploaded_by !== user.userId && user.role !== 'admin') {\n errors.push({ fileId, error: 'Permission denied' })\n continue\n }\n\n // Skip if already in target folder\n if (fileRecord.folder === targetFolder) {\n results.push({\n fileId,\n filename: fileRecord.original_name,\n success: true,\n skipped: true\n })\n continue\n }\n\n // Generate new R2 key with new folder\n const oldR2Key = fileRecord.r2_key\n const filename = oldR2Key.split('/').pop() || fileRecord.filename\n const newR2Key = `${targetFolder}/${filename}`\n\n // Copy file to new location in R2\n try {\n const object = await c.env.MEDIA_BUCKET.get(oldR2Key)\n if (!object) {\n errors.push({ fileId, error: 'File not found in storage' })\n continue\n }\n\n await c.env.MEDIA_BUCKET.put(newR2Key, object.body, {\n httpMetadata: object.httpMetadata,\n customMetadata: {\n ...object.customMetadata,\n movedBy: user.userId,\n movedAt: new Date().toISOString()\n }\n })\n\n // Delete old file from R2\n await c.env.MEDIA_BUCKET.delete(oldR2Key)\n } catch (error) {\n console.warn(`Failed to move file in R2 for file ${fileId}:`, error)\n errors.push({ fileId, error: 'Failed to move file in storage' })\n continue\n }\n\n // Update database with new folder and R2 key\n const bucketName = c.env.BUCKET_NAME || 'sonicjs-media-dev'\n const newPublicUrl = `https://pub-${bucketName}.r2.dev/${newR2Key}`\n\n const updateStmt = c.env.DB.prepare(`\n UPDATE media\n SET folder = ?, r2_key = ?, public_url = ?, updated_at = ?\n WHERE id = ?\n `)\n await updateStmt.bind(\n targetFolder,\n newR2Key,\n newPublicUrl,\n Math.floor(Date.now() / 1000),\n fileId\n ).run()\n\n results.push({\n fileId,\n filename: fileRecord.original_name,\n success: true,\n skipped: false\n })\n } catch (error) {\n errors.push({\n fileId,\n error: 'Move failed',\n details: error instanceof Error ? error.message : 'Unknown error'\n })\n }\n }\n\n // Emit media move event if any moves succeeded\n if (results.length > 0) {\n await emitEvent('media.move', { count: results.length, targetFolder, ids: fileIds })\n }\n\n return c.json({\n success: results.length > 0,\n moved: results,\n errors: errors,\n summary: {\n total: fileIds.length,\n successful: results.length,\n failed: errors.length\n }\n })\n } catch (error) {\n console.error('Bulk move error:', error)\n return c.json({ error: 'Bulk move failed' }, 500)\n }\n})\n\n// Delete file\napiMediaRoutes.delete('/:id', async (c) => {\n try {\n const user = c.get('user')!\n const fileId = c.req.param('id')\n \n // Get file record\n const stmt = c.env.DB.prepare('SELECT * FROM media WHERE id = ? AND deleted_at IS NULL')\n const fileRecord = await stmt.bind(fileId).first() as any\n \n if (!fileRecord) {\n return c.json({ error: 'File not found' }, 404)\n }\n\n // Check permissions (only allow deletion by uploader or admin)\n if (fileRecord.uploaded_by !== user.userId && user.role !== 'admin') {\n return c.json({ error: 'Permission denied' }, 403)\n }\n\n // Delete from R2\n try {\n await c.env.MEDIA_BUCKET.delete(fileRecord.r2_key)\n } catch (error) {\n console.warn('Failed to delete from R2:', error)\n // Continue with database deletion even if R2 deletion fails\n }\n\n // Soft delete in database\n const deleteStmt = c.env.DB.prepare('UPDATE media SET deleted_at = ? WHERE id = ?')\n await deleteStmt.bind(Math.floor(Date.now() / 1000), fileId).run()\n\n // Emit media delete event\n await emitEvent('media.delete', { id: fileId })\n\n return c.json({ success: true, message: 'File deleted successfully' })\n } catch (error) {\n console.error('Delete error:', error)\n return c.json({ error: 'Delete failed' }, 500)\n }\n})\n\n// Update file metadata\napiMediaRoutes.patch('/:id', async (c) => {\n try {\n const user = c.get('user')!\n const fileId = c.req.param('id')\n const body = await c.req.json()\n \n // Get file record\n const stmt = c.env.DB.prepare('SELECT * FROM media WHERE id = ? AND deleted_at IS NULL')\n const fileRecord = await stmt.bind(fileId).first() as any\n \n if (!fileRecord) {\n return c.json({ error: 'File not found' }, 404)\n }\n\n // Check permissions (only allow updates by uploader or admin)\n if (fileRecord.uploaded_by !== user.userId && user.role !== 'admin') {\n return c.json({ error: 'Permission denied' }, 403)\n }\n\n // Update allowed fields\n const allowedFields = ['alt', 'caption', 'tags', 'folder']\n const updates = []\n const values = []\n \n for (const [key, value] of Object.entries(body)) {\n if (allowedFields.includes(key)) {\n updates.push(`${key} = ?`)\n values.push(key === 'tags' ? JSON.stringify(value) : value)\n }\n }\n\n if (updates.length === 0) {\n return c.json({ error: 'No valid fields to update' }, 400)\n }\n\n updates.push('updated_at = ?')\n values.push(Math.floor(Date.now() / 1000))\n values.push(fileId)\n\n const updateStmt = c.env.DB.prepare(`\n UPDATE media SET ${updates.join(', ')} WHERE id = ?\n `)\n await updateStmt.bind(...values).run()\n\n // Emit media update event\n await emitEvent('media.update', { id: fileId })\n\n return c.json({ success: true, message: 'File updated successfully' })\n } catch (error) {\n console.error('Update error:', error)\n return c.json({ error: 'Update failed' }, 500)\n }\n})\n\n// Helper function to extract image dimensions\nasync function getImageDimensions(arrayBuffer: ArrayBuffer): Promise<{ width: number; height: number }> {\n // This is a simplified implementation\n // In a real-world scenario, you'd use a proper image processing library\n const uint8Array = new Uint8Array(arrayBuffer)\n \n // Check for JPEG\n if (uint8Array[0] === 0xFF && uint8Array[1] === 0xD8) {\n return getJPEGDimensions(uint8Array)\n }\n \n // Check for PNG\n if (uint8Array[0] === 0x89 && uint8Array[1] === 0x50 && uint8Array[2] === 0x4E && uint8Array[3] === 0x47) {\n return getPNGDimensions(uint8Array)\n }\n \n // Default fallback\n return { width: 0, height: 0 }\n}\n\nfunction getJPEGDimensions(uint8Array: Uint8Array): { width: number; height: number } {\n let i = 2\n while (i < uint8Array.length) {\n if (i + 8 >= uint8Array.length) break\n if (uint8Array[i] === 0xFF && uint8Array[i + 1] === 0xC0) {\n if (i + 8 < uint8Array.length) {\n return {\n height: (uint8Array[i + 5]! << 8) | uint8Array[i + 6]!,\n width: (uint8Array[i + 7]! << 8) | uint8Array[i + 8]!\n }\n }\n }\n if (i + 3 < uint8Array.length) {\n i += 2 + ((uint8Array[i + 2]! << 8) | uint8Array[i + 3]!)\n } else {\n break\n }\n }\n return { width: 0, height: 0 }\n}\n\nfunction getPNGDimensions(uint8Array: Uint8Array): { width: number; height: number } {\n if (uint8Array.length < 24) {\n return { width: 0, height: 0 }\n }\n return {\n width: (uint8Array[16]! << 24) | (uint8Array[17]! << 16) | (uint8Array[18]! << 8) | uint8Array[19]!,\n height: (uint8Array[20]! << 24) | (uint8Array[21]! << 16) | (uint8Array[22]! << 8) | uint8Array[23]!\n }\n}\n\nexport default apiMediaRoutes","/**\n * API System Routes\n *\n * Provides system health, status, and metadata endpoints\n * These are lightweight routes without heavy dependencies\n */\n\nimport { Hono } from 'hono'\nimport type { Bindings, Variables } from '../app'\n\nexport const apiSystemRoutes = new Hono<{ Bindings: Bindings; Variables: Variables }>()\n\n/**\n * System health check\n * GET /api/system/health\n */\napiSystemRoutes.get('/health', async (c) => {\n try {\n const startTime = Date.now()\n\n // Check database connectivity\n let dbStatus = 'unknown'\n let dbLatency = 0\n\n try {\n const dbStart = Date.now()\n await c.env.DB.prepare('SELECT 1').first()\n dbLatency = Date.now() - dbStart\n dbStatus = 'healthy'\n } catch (error) {\n console.error('Database health check failed:', error)\n dbStatus = 'unhealthy'\n }\n\n // Check KV connectivity (if available)\n let kvStatus = 'not_configured'\n let kvLatency = 0\n\n if (c.env.CACHE_KV) {\n try {\n const kvStart = Date.now()\n await c.env.CACHE_KV.get('__health_check__')\n kvLatency = Date.now() - kvStart\n kvStatus = 'healthy'\n } catch (error) {\n console.error('KV health check failed:', error)\n kvStatus = 'unhealthy'\n }\n }\n\n // Check R2 connectivity (if available)\n let r2Status = 'not_configured'\n\n if (c.env.MEDIA_BUCKET) {\n try {\n await c.env.MEDIA_BUCKET.head('__health_check__')\n r2Status = 'healthy'\n } catch (error) {\n // R2 head on non-existent key returns null, not an error\n // This is expected, so we consider it healthy\n r2Status = 'healthy'\n }\n }\n\n const totalLatency = Date.now() - startTime\n const overall = dbStatus === 'healthy' ? 'healthy' : 'degraded'\n\n return c.json({\n status: overall,\n timestamp: new Date().toISOString(),\n uptime: totalLatency,\n checks: {\n database: {\n status: dbStatus,\n latency: dbLatency\n },\n cache: {\n status: kvStatus,\n latency: kvLatency\n },\n storage: {\n status: r2Status\n }\n },\n environment: c.env.ENVIRONMENT || 'production'\n })\n } catch (error) {\n console.error('Health check failed:', error)\n return c.json({\n status: 'unhealthy',\n timestamp: new Date().toISOString(),\n error: 'Health check failed'\n }, 503)\n }\n})\n\n/**\n * System information\n * GET /api/system/info\n */\napiSystemRoutes.get('/info', (c) => {\n const appVersion = c.get('appVersion') || '1.0.0'\n\n return c.json({\n name: 'SonicJS',\n version: appVersion,\n description: 'Modern headless CMS built on Cloudflare Workers',\n endpoints: {\n api: '/api',\n auth: '/auth',\n health: '/api/system/health',\n docs: '/docs'\n },\n features: {\n content: true,\n media: true,\n auth: true,\n collections: true,\n caching: !!c.env.CACHE_KV,\n storage: !!c.env.MEDIA_BUCKET\n },\n timestamp: new Date().toISOString()\n })\n})\n\n/**\n * System stats\n * GET /api/system/stats\n */\napiSystemRoutes.get('/stats', async (c) => {\n try {\n const db = c.env.DB\n\n // Get content statistics\n const contentStats = await db.prepare(`\n SELECT COUNT(*) as total_content\n FROM content\n WHERE deleted_at IS NULL\n `).first() as any\n\n // Get media statistics\n const mediaStats = await db.prepare(`\n SELECT\n COUNT(*) as total_files,\n SUM(size) as total_size\n FROM media\n WHERE deleted_at IS NULL\n `).first() as any\n\n // Get user statistics\n const userStats = await db.prepare(`\n SELECT COUNT(*) as total_users\n FROM users\n `).first() as any\n\n return c.json({\n content: {\n total: contentStats?.total_content || 0\n },\n media: {\n total_files: mediaStats?.total_files || 0,\n total_size_bytes: mediaStats?.total_size || 0,\n total_size_mb: Math.round((mediaStats?.total_size || 0) / 1024 / 1024 * 100) / 100\n },\n users: {\n total: userStats?.total_users || 0\n },\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Stats query failed:', error)\n return c.json({ error: 'Failed to fetch system statistics' }, 500)\n }\n})\n\n/**\n * Database ping\n * GET /api/system/ping\n */\napiSystemRoutes.get('/ping', async (c) => {\n try {\n const start = Date.now()\n await c.env.DB.prepare('SELECT 1').first()\n const latency = Date.now() - start\n\n return c.json({\n pong: true,\n latency,\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Ping failed:', error)\n return c.json({\n pong: false,\n error: 'Database connection failed'\n }, 503)\n }\n})\n\n/**\n * Environment check\n * GET /api/system/env\n */\napiSystemRoutes.get('/env', (c) => {\n return c.json({\n environment: c.env.ENVIRONMENT || 'production',\n features: {\n database: !!c.env.DB,\n cache: !!c.env.CACHE_KV,\n media_bucket: !!c.env.MEDIA_BUCKET,\n email_queue: !!c.env.EMAIL_QUEUE,\n sendgrid: !!c.env.SENDGRID_API_KEY,\n cloudflare_images: !!(c.env.IMAGES_ACCOUNT_ID && c.env.IMAGES_API_TOKEN)\n },\n timestamp: new Date().toISOString()\n })\n})\n\nexport default apiSystemRoutes\n","/**\n * Admin API Routes\n *\n * Provides JSON API endpoints for admin operations\n * These routes complement the admin UI and can be used programmatically\n */\n\nimport { Hono } from 'hono'\nimport { z } from 'zod'\n// import { zValidator } from '@hono/zod-validator'\nimport { requireAuth, requireRole } from '../middleware'\nimport type { Bindings, Variables } from '../app'\n\nexport const adminApiRoutes = new Hono<{ Bindings: Bindings; Variables: Variables }>()\n\n// Apply auth middleware to all admin routes\nadminApiRoutes.use('*', requireAuth())\nadminApiRoutes.use('*', requireRole(['admin', 'editor']))\n\n/**\n * Get dashboard statistics\n * GET /admin/api/stats\n */\nadminApiRoutes.get('/stats', async (c) => {\n try {\n const db = c.env.DB\n\n // Get collections count\n let collectionsCount = 0\n try {\n const collectionsStmt = db.prepare(\"SELECT COUNT(*) as count FROM collections WHERE is_active = 1 AND (source_type IS NULL OR source_type = 'user')\")\n const collectionsResult = await collectionsStmt.first()\n collectionsCount = (collectionsResult as any)?.count || 0\n } catch (error) {\n console.error('Error fetching collections count:', error)\n }\n\n // Get content count\n let contentCount = 0\n try {\n const contentStmt = db.prepare(\"SELECT COUNT(*) as count FROM content c JOIN collections col ON c.collection_id = col.id WHERE c.deleted_at IS NULL AND (col.source_type IS NULL OR col.source_type = 'user')\")\n const contentResult = await contentStmt.first()\n contentCount = (contentResult as any)?.count || 0\n } catch (error) {\n console.error('Error fetching content count:', error)\n }\n\n // Get media count and total size\n let mediaCount = 0\n let mediaSize = 0\n try {\n const mediaStmt = db.prepare('SELECT COUNT(*) as count, COALESCE(SUM(size), 0) as total_size FROM media WHERE deleted_at IS NULL')\n const mediaResult = await mediaStmt.first()\n mediaCount = (mediaResult as any)?.count || 0\n mediaSize = (mediaResult as any)?.total_size || 0\n } catch (error) {\n console.error('Error fetching media count:', error)\n }\n\n // Get users count\n let usersCount = 0\n try {\n const usersStmt = db.prepare('SELECT COUNT(*) as count FROM users WHERE is_active = 1')\n const usersResult = await usersStmt.first()\n usersCount = (usersResult as any)?.count || 0\n } catch (error) {\n console.error('Error fetching users count:', error)\n }\n\n return c.json({\n collections: collectionsCount,\n contentItems: contentCount,\n mediaFiles: mediaCount,\n mediaSize: mediaSize,\n users: usersCount,\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Error fetching stats:', error)\n return c.json({ error: 'Failed to fetch statistics' }, 500)\n }\n})\n\n/**\n * Get storage usage\n * GET /admin/api/storage\n */\nadminApiRoutes.get('/storage', async (c) => {\n try {\n const db = c.env.DB\n\n // Get database size from D1 metadata\n let databaseSize = 0\n try {\n const result = await db.prepare('SELECT 1').run()\n databaseSize = (result as any)?.meta?.size_after || 0\n } catch (error) {\n console.error('Error fetching database size:', error)\n }\n\n // Get media total size\n let mediaSize = 0\n try {\n const mediaStmt = db.prepare('SELECT COALESCE(SUM(size), 0) as total_size FROM media WHERE deleted_at IS NULL')\n const mediaResult = await mediaStmt.first()\n mediaSize = (mediaResult as any)?.total_size || 0\n } catch (error) {\n console.error('Error fetching media size:', error)\n }\n\n return c.json({\n databaseSize,\n mediaSize,\n totalSize: databaseSize + mediaSize,\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Error fetching storage usage:', error)\n return c.json({ error: 'Failed to fetch storage usage' }, 500)\n }\n})\n\n/**\n * Get recent activity\n * GET /admin/api/activity\n */\nadminApiRoutes.get('/activity', async (c) => {\n try {\n const db = c.env.DB\n const limit = parseInt(c.req.query('limit') || '10')\n\n // Get recent activities from activity_logs table\n const activityStmt = db.prepare(`\n SELECT\n a.id,\n a.action,\n a.resource_type,\n a.resource_id,\n a.details,\n a.created_at,\n u.email,\n u.first_name,\n u.last_name\n FROM activity_logs a\n LEFT JOIN users u ON a.user_id = u.id\n WHERE a.resource_type IN ('content', 'collections', 'users', 'media')\n ORDER BY a.created_at DESC\n LIMIT ?\n `)\n\n const { results } = await activityStmt.bind(limit).all()\n\n const recentActivity = (results || []).map((row: any) => {\n const userName = row.first_name && row.last_name\n ? `${row.first_name} ${row.last_name}`\n : row.email || 'System'\n\n let details: any = {}\n try {\n details = row.details ? JSON.parse(row.details) : {}\n } catch (e) {\n console.error('Error parsing activity details:', e)\n }\n\n return {\n id: row.id,\n type: row.resource_type,\n action: row.action,\n resource_id: row.resource_id,\n details,\n timestamp: new Date(Number(row.created_at)).toISOString(),\n user: userName\n }\n })\n\n return c.json({\n data: recentActivity,\n count: recentActivity.length,\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Error fetching recent activity:', error)\n return c.json({ error: 'Failed to fetch recent activity' }, 500)\n }\n})\n\n/**\n * Collection management schema\n */\nconst createCollectionSchema = z.object({\n name: z.string().min(1).max(255).regex(/^[a-z0-9_]+$/, 'Must contain only lowercase letters, numbers, and underscores'),\n displayName: z.string().min(1).max(255).optional(),\n display_name: z.string().min(1).max(255).optional(),\n description: z.string().optional()\n}).refine(data => data.displayName || data.display_name, {\n message: 'Either displayName or display_name is required',\n path: ['displayName']\n})\n\nconst updateCollectionSchema = z.object({\n display_name: z.string().min(1).max(255).optional(),\n description: z.string().optional(),\n is_active: z.boolean().optional()\n})\n\n/**\n * Get all collections\n * GET /admin/api/collections\n */\nadminApiRoutes.get('/collections', async (c) => {\n try {\n const db = c.env.DB\n const search = c.req.query('search') || ''\n const includeInactive = c.req.query('includeInactive') === 'true'\n\n let stmt\n let results\n\n if (search) {\n stmt = db.prepare(`\n SELECT id, name, display_name, description, created_at, updated_at, is_active, managed\n FROM collections\n WHERE ${includeInactive ? '1=1' : 'is_active = 1'}\n AND (source_type IS NULL OR source_type = 'user')\n AND (name LIKE ? OR display_name LIKE ? OR description LIKE ?)\n ORDER BY created_at DESC\n `)\n const searchParam = `%${search}%`\n const queryResults = await stmt.bind(searchParam, searchParam, searchParam).all()\n results = queryResults.results\n } else {\n stmt = db.prepare(`\n SELECT id, name, display_name, description, created_at, updated_at, is_active, managed\n FROM collections\n WHERE (source_type IS NULL OR source_type = 'user')\n ${includeInactive ? '' : 'AND is_active = 1'}\n ORDER BY created_at DESC\n `)\n const queryResults = await stmt.all()\n results = queryResults.results\n }\n\n // Get field counts\n const fieldCountStmt = db.prepare('SELECT collection_id, COUNT(*) as count FROM content_fields GROUP BY collection_id')\n const { results: fieldCountResults } = await fieldCountStmt.all()\n const fieldCounts = new Map((fieldCountResults || []).map((row: any) => [String(row.collection_id), Number(row.count)]))\n\n const collections = (results || []).map((row: any) => ({\n id: row.id,\n name: row.name,\n display_name: row.display_name,\n description: row.description,\n created_at: Number(row.created_at),\n updated_at: Number(row.updated_at),\n is_active: row.is_active === 1,\n managed: row.managed === 1,\n field_count: fieldCounts.get(String(row.id)) || 0\n }))\n\n return c.json({\n data: collections,\n count: collections.length,\n timestamp: new Date().toISOString()\n })\n } catch (error) {\n console.error('Error fetching collections:', error)\n return c.json({ error: 'Failed to fetch collections' }, 500)\n }\n})\n\n/**\n * Get single collection\n * GET /admin/api/collections/:id\n */\nadminApiRoutes.get('/collections/:id', async (c) => {\n try {\n const id = c.req.param('id')\n const db = c.env.DB\n\n const stmt = db.prepare('SELECT * FROM collections WHERE id = ?')\n const collection = await stmt.bind(id).first() as any\n\n if (!collection) {\n return c.json({ error: 'Collection not found' }, 404)\n }\n\n // Get collection fields\n const fieldsStmt = db.prepare(`\n SELECT * FROM content_fields\n WHERE collection_id = ?\n ORDER BY field_order ASC\n `)\n const { results: fieldsResults } = await fieldsStmt.bind(id).all()\n\n const fields = (fieldsResults || []).map((row: any) => ({\n id: row.id,\n field_name: row.field_name,\n field_type: row.field_type,\n field_label: row.field_label,\n field_options: row.field_options ? JSON.parse(row.field_options) : {},\n field_order: row.field_order,\n is_required: row.is_required === 1,\n is_searchable: row.is_searchable === 1,\n created_at: Number(row.created_at),\n updated_at: Number(row.updated_at)\n }))\n\n return c.json({\n id: collection.id,\n name: collection.name,\n display_name: collection.display_name,\n description: collection.description,\n is_active: collection.is_active === 1,\n managed: collection.managed === 1,\n schema: collection.schema ? JSON.parse(collection.schema) : null,\n created_at: Number(collection.created_at),\n updated_at: Number(collection.updated_at),\n fields\n })\n } catch (error) {\n console.error('Error fetching collection:', error)\n return c.json({ error: 'Failed to fetch collection' }, 500)\n }\n})\n\n/**\n * Get reference options for a collection\n * GET /admin/api/references?collection=&search=&limit=20&id=\n */\nadminApiRoutes.get('/references', async (c) => {\n try {\n const db = c.env.DB\n const url = new URL(c.req.url)\n const collectionParams = url.searchParams\n .getAll('collection')\n .flatMap((value) => value.split(','))\n .map((value) => value.trim())\n .filter(Boolean)\n const search = c.req.query('search') || ''\n const id = c.req.query('id') || ''\n const limit = Math.min(Number.parseInt(c.req.query('limit') || '20', 10) || 20, 100)\n\n if (collectionParams.length === 0) {\n return c.json({ error: 'Collection is required' }, 400)\n }\n\n const placeholders = collectionParams.map(() => '?').join(', ')\n const collectionStmt = db.prepare(`\n SELECT id, name, display_name\n FROM collections\n WHERE id IN (${placeholders}) OR name IN (${placeholders})\n `)\n const collectionResults = await collectionStmt\n .bind(...collectionParams, ...collectionParams)\n .all()\n const collections = (collectionResults.results || []) as any[]\n\n if (collections.length === 0) {\n return c.json({ error: 'Collection not found' }, 404)\n }\n\n const collectionById = Object.fromEntries(\n collections.map((entry) => [\n entry.id,\n {\n id: entry.id,\n name: entry.name,\n display_name: entry.display_name\n }\n ])\n )\n const collectionIds = collections.map((entry) => entry.id)\n\n if (id) {\n const idPlaceholders = collectionIds.map(() => '?').join(', ')\n const itemStmt = db.prepare(`\n SELECT id, title, slug, collection_id\n FROM content\n WHERE id = ? AND collection_id IN (${idPlaceholders})\n LIMIT 1\n `)\n const item = await itemStmt.bind(id, ...collectionIds).first() as any\n\n if (!item) {\n return c.json({ error: 'Reference not found' }, 404)\n }\n\n return c.json({\n data: {\n id: item.id,\n title: item.title,\n slug: item.slug,\n collection: collectionById[item.collection_id]\n }\n })\n }\n\n let stmt\n let results\n\n const listPlaceholders = collectionIds.map(() => '?').join(', ')\n const statusFilterValues = ['published']\n const statusClause = ` AND status IN (${statusFilterValues.map(() => '?').join(', ')})`\n\n if (search) {\n const searchParam = `%${search}%`\n stmt = db.prepare(`\n SELECT id, title, slug, status, updated_at, collection_id\n FROM content\n WHERE collection_id IN (${listPlaceholders})\n AND (title LIKE ? OR slug LIKE ?)\n ${statusClause}\n ORDER BY updated_at DESC\n LIMIT ?\n `)\n const queryResults = await stmt\n .bind(...collectionIds, searchParam, searchParam, ...statusFilterValues, limit)\n .all()\n results = queryResults.results\n } else {\n stmt = db.prepare(`\n SELECT id, title, slug, status, updated_at, collection_id\n FROM content\n WHERE collection_id IN (${listPlaceholders})\n ${statusClause}\n ORDER BY updated_at DESC\n LIMIT ?\n `)\n const queryResults = await stmt\n .bind(...collectionIds, ...statusFilterValues, limit)\n .all()\n results = queryResults.results\n }\n\n const items = (results || []).map((row: any) => ({\n id: row.id,\n title: row.title,\n slug: row.slug,\n status: row.status,\n updated_at: row.updated_at ? Number(row.updated_at) : null,\n collection: collectionById[row.collection_id]\n }))\n\n return c.json({\n data: items,\n count: items.length\n })\n } catch (error) {\n console.error('Error fetching reference options:', error)\n return c.json({ error: 'Failed to fetch references' }, 500)\n }\n})\n\n/**\n * Create collection\n * POST /admin/api/collections\n */\nadminApiRoutes.post('/collections', async (c) => {\n try {\n // Validate content type\n const contentType = c.req.header('Content-Type')\n if (!contentType || !contentType.includes('application/json')) {\n return c.json({ error: 'Content-Type must be application/json' }, 400)\n }\n\n let body\n try {\n body = await c.req.json()\n } catch (e) {\n return c.json({ error: 'Invalid JSON in request body' }, 400)\n }\n\n const validation = createCollectionSchema.safeParse(body)\n if (!validation.success) {\n return c.json({ error: 'Validation failed', details: validation.error.issues }, 400)\n }\n const validatedData = validation.data\n const db = c.env.DB\n const _user = c.get('user')\n\n // Handle both camelCase and snake_case for display_name\n const displayName = validatedData.displayName || validatedData.display_name || ''\n\n // Check if collection already exists\n const existingStmt = db.prepare('SELECT id FROM collections WHERE name = ?')\n const existing = await existingStmt.bind(validatedData.name).first()\n\n if (existing) {\n return c.json({ error: 'A collection with this name already exists' }, 400)\n }\n\n // Create basic schema\n const basicSchema = {\n type: \"object\",\n properties: {\n title: {\n type: \"string\",\n title: \"Title\",\n required: true\n },\n content: {\n type: \"string\",\n title: \"Content\",\n format: \"richtext\"\n },\n status: {\n type: \"string\",\n title: \"Status\",\n enum: [\"draft\", \"published\", \"archived\"],\n default: \"draft\"\n }\n },\n required: [\"title\"]\n }\n\n const collectionId = crypto.randomUUID()\n const now = Date.now()\n\n const insertStmt = db.prepare(`\n INSERT INTO collections (id, name, display_name, description, schema, is_active, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `)\n\n await insertStmt.bind(\n collectionId,\n validatedData.name,\n displayName,\n validatedData.description || null,\n JSON.stringify(basicSchema),\n 1, // is_active\n now,\n now\n ).run()\n\n // Clear cache\n try {\n await c.env.CACHE_KV.delete('cache:collections:all')\n await c.env.CACHE_KV.delete(`cache:collection:${validatedData.name}`)\n } catch (e) {\n console.error('Error clearing cache:', e)\n }\n\n return c.json({\n id: collectionId,\n name: validatedData.name,\n displayName: displayName,\n description: validatedData.description,\n created_at: now\n }, 201)\n } catch (error) {\n console.error('Error creating collection:', error)\n return c.json({ error: 'Failed to create collection' }, 500)\n }\n})\n\n/**\n * Update collection\n * PATCH /admin/api/collections/:id\n */\nadminApiRoutes.patch('/collections/:id', async (c) => {\n try {\n const id = c.req.param('id')\n const body = await c.req.json()\n const validation = updateCollectionSchema.safeParse(body)\n if (!validation.success) {\n return c.json({ error: 'Validation failed', details: validation.error.issues }, 400)\n }\n const validatedData = validation.data\n const db = c.env.DB\n\n // Check if collection exists\n const checkStmt = db.prepare('SELECT * FROM collections WHERE id = ?')\n const existing = await checkStmt.bind(id).first() as any\n\n if (!existing) {\n return c.json({ error: 'Collection not found' }, 404)\n }\n\n // Build update query\n const updateFields: string[] = []\n const updateParams: any[] = []\n\n if (validatedData.display_name !== undefined) {\n updateFields.push('display_name = ?')\n updateParams.push(validatedData.display_name)\n }\n\n if (validatedData.description !== undefined) {\n updateFields.push('description = ?')\n updateParams.push(validatedData.description)\n }\n\n if (validatedData.is_active !== undefined) {\n updateFields.push('is_active = ?')\n updateParams.push(validatedData.is_active ? 1 : 0)\n }\n\n if (updateFields.length === 0) {\n return c.json({ error: 'No fields to update' }, 400)\n }\n\n updateFields.push('updated_at = ?')\n updateParams.push(Date.now())\n updateParams.push(id)\n\n const updateStmt = db.prepare(`\n UPDATE collections\n SET ${updateFields.join(', ')}\n WHERE id = ?\n `)\n\n await updateStmt.bind(...updateParams).run()\n\n // Clear cache\n try {\n await c.env.CACHE_KV.delete('cache:collections:all')\n await c.env.CACHE_KV.delete(`cache:collection:${existing.name}`)\n } catch (e) {\n console.error('Error clearing cache:', e)\n }\n\n return c.json({ message: 'Collection updated successfully' })\n } catch (error) {\n console.error('Error updating collection:', error)\n return c.json({ error: 'Failed to update collection' }, 500)\n }\n})\n\n/**\n * Delete collection\n * DELETE /admin/api/collections/:id\n */\nadminApiRoutes.delete('/collections/:id', async (c) => {\n try {\n const id = c.req.param('id')\n const db = c.env.DB\n\n // Check if collection exists\n const collectionStmt = db.prepare('SELECT name FROM collections WHERE id = ?')\n const collection = await collectionStmt.bind(id).first() as any\n\n if (!collection) {\n return c.json({ error: 'Collection not found' }, 404)\n }\n\n // Check if collection has content\n const contentStmt = db.prepare('SELECT COUNT(*) as count FROM content WHERE collection_id = ?')\n const contentResult = await contentStmt.bind(id).first() as any\n\n if (contentResult && contentResult.count > 0) {\n return c.json({\n error: `Cannot delete collection: it contains ${contentResult.count} content item(s). Delete all content first.`\n }, 400)\n }\n\n // Delete collection fields first\n const deleteFieldsStmt = db.prepare('DELETE FROM content_fields WHERE collection_id = ?')\n await deleteFieldsStmt.bind(id).run()\n\n // Delete collection\n const deleteStmt = db.prepare('DELETE FROM collections WHERE id = ?')\n await deleteStmt.bind(id).run()\n\n // Clear cache\n try {\n await c.env.CACHE_KV.delete('cache:collections:all')\n await c.env.CACHE_KV.delete(`cache:collection:${collection.name}`)\n } catch (e) {\n console.error('Error clearing cache:', e)\n }\n\n return c.json({ message: 'Collection deleted successfully' })\n } catch (error) {\n console.error('Error deleting collection:', error)\n return c.json({ error: 'Failed to delete collection' }, 500)\n }\n})\n\n// Migrations API endpoints\n// Get migration status\nadminApiRoutes.get('/migrations/status', async (c) => {\n try {\n const { MigrationService } = await import('../services/migrations')\n const db = c.env.DB\n const migrationService = new MigrationService(db)\n const status = await migrationService.getMigrationStatus()\n\n return c.json({\n success: true,\n data: status\n })\n } catch (error) {\n console.error('Error fetching migration status:', error)\n return c.json({\n success: false,\n error: 'Failed to fetch migration status'\n }, 500)\n }\n})\n\n// Run pending migrations\nadminApiRoutes.post('/migrations/run', async (c) => {\n try {\n const user = c.get('user')\n\n // Only allow admin users to run migrations\n if (!user || user.role !== 'admin') {\n return c.json({\n success: false,\n error: 'Unauthorized. Admin access required.'\n }, 403)\n }\n\n const { MigrationService } = await import('../services/migrations')\n const db = c.env.DB\n const migrationService = new MigrationService(db)\n const result = await migrationService.runPendingMigrations()\n\n return c.json({\n success: result.success,\n message: result.message,\n applied: result.applied,\n errors: result.errors\n })\n } catch (error) {\n console.error('Error running migrations:', error)\n const errorMessage = error instanceof Error ? error.message : String(error)\n return c.json({\n success: false,\n error: `Failed to run migrations: ${errorMessage}`,\n errors: [errorMessage]\n }, 500)\n }\n})\n\n// Validate database schema\nadminApiRoutes.get('/migrations/validate', async (c) => {\n try {\n const { MigrationService } = await import('../services/migrations')\n const db = c.env.DB\n const migrationService = new MigrationService(db)\n const validation = await migrationService.validateSchema()\n\n return c.json({\n success: true,\n data: validation\n })\n } catch (error) {\n console.error('Error validating schema:', error)\n return c.json({\n success: false,\n error: 'Failed to validate schema'\n }, 500)\n }\n})\n\nexport default adminApiRoutes\n","import { renderAlert } from '../alert.template'\n\nexport interface LoginPageData {\n error?: string\n message?: string\n version?: string\n}\n\nexport function renderLoginPage(data: LoginPageData, demoLoginActive: boolean = false): string {\n return `\n \n \n \n \n \n Login - SonicJS AI\n \n \n \n \n \n \n \n
An error occurred while processing your invitation.
\n Go to Login\n \n \n `)\n }\n})\n\n// Process invitation acceptance\nauthRoutes.post('/accept-invitation', async (c) => {\n try {\n const formData = await c.req.formData()\n const token = formData.get('token')?.toString()\n const username = formData.get('username')?.toString()?.trim()\n const password = formData.get('password')?.toString()\n const confirmPassword = formData.get('confirm_password')?.toString()\n\n if (!token || !username || !password || !confirmPassword) {\n return c.json({ error: 'All fields are required' }, 400)\n }\n\n if (password !== confirmPassword) {\n return c.json({ error: 'Passwords do not match' }, 400)\n }\n\n if (password.length < 8) {\n return c.json({ error: 'Password must be at least 8 characters long' }, 400)\n }\n\n const db = c.env.DB\n\n // Check if invitation token is valid\n const userStmt = db.prepare(`\n SELECT id, email, first_name, last_name, role, invited_at\n FROM users \n WHERE invitation_token = ? AND is_active = 0\n `)\n const invitedUser = await userStmt.bind(token).first() as any\n\n if (!invitedUser) {\n return c.json({ error: 'Invalid or expired invitation' }, 400)\n }\n\n // Check if invitation is expired (7 days)\n const invitationAge = Date.now() - invitedUser.invited_at\n const maxAge = 7 * 24 * 60 * 60 * 1000 // 7 days\n \n if (invitationAge > maxAge) {\n return c.json({ error: 'Invitation has expired' }, 400)\n }\n\n // Check if username is available\n const existingUsernameStmt = db.prepare(`\n SELECT id FROM users WHERE username = ? AND id != ?\n `)\n const existingUsername = await existingUsernameStmt.bind(username, invitedUser.id).first()\n\n if (existingUsername) {\n return c.json({ error: 'Username is already taken' }, 400)\n }\n\n // Hash password\n const passwordHash = await AuthManager.hashPassword(password)\n\n // Activate user account\n const updateStmt = db.prepare(`\n UPDATE users SET \n username = ?,\n password_hash = ?,\n is_active = 1,\n email_verified = 1,\n invitation_token = NULL,\n accepted_invitation_at = ?,\n updated_at = ?\n WHERE id = ?\n `)\n\n await updateStmt.bind(\n username,\n passwordHash,\n Date.now(),\n Date.now(),\n invitedUser.id\n ).run()\n\n // Generate JWT token for auto-login\n const tokenTtl = await getJwtExpirySecondsFromDb(c.env.DB, c.env)\n const authToken = await AuthManager.generateToken(invitedUser.id, invitedUser.email, invitedUser.role, c.env.JWT_SECRET, tokenTtl)\n\n // Set HTTP-only cookie\n setCookie(c, 'auth_token', authToken, {\n httpOnly: true,\n secure: true,\n sameSite: 'Strict',\n maxAge: tokenTtl\n })\n\n // Set CSRF cookie for browser sessions\n await setCsrfCookie(c)\n\n // Log the activity (TODO: implement activity logging)\n // Activity logging is deferred until utils/log-activity is implemented\n\n // Redirect to admin dashboard\n return c.redirect('/admin/dashboard?welcome=true')\n\n } catch (error) {\n console.error('Accept invitation error:', error)\n return c.json({ error: 'Failed to accept invitation' }, 500)\n }\n})\n\n// Request password reset\nauthRoutes.post('/request-password-reset',\n rateLimit({ max: 3, windowMs: 15 * 60 * 1000, keyPrefix: 'password-reset' }),\n async (c) => {\n try {\n const formData = await c.req.formData()\n const email = formData.get('email')?.toString()?.trim()?.toLowerCase()\n\n if (!email) {\n return c.json({ error: 'Email is required' }, 400)\n }\n\n // Validate email format\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n if (!emailRegex.test(email)) {\n return c.json({ error: 'Please enter a valid email address' }, 400)\n }\n\n const db = c.env.DB\n\n // Check if user exists and is active\n const userStmt = db.prepare(`\n SELECT id, email, first_name, last_name FROM users \n WHERE email = ? AND is_active = 1\n `)\n const user = await userStmt.bind(email).first() as any\n\n // Always return success to prevent email enumeration\n if (!user) {\n return c.json({\n success: true,\n message: 'If an account with this email exists, a password reset link has been sent.'\n })\n }\n\n // Generate password reset token (expires in 1 hour)\n const resetToken = crypto.randomUUID()\n const resetExpires = Date.now() + (60 * 60 * 1000) // 1 hour\n\n // Update user with reset token\n const updateStmt = db.prepare(`\n UPDATE users SET \n password_reset_token = ?,\n password_reset_expires = ?,\n updated_at = ?\n WHERE id = ?\n `)\n\n await updateStmt.bind(\n resetToken,\n resetExpires,\n Date.now(),\n user.id\n ).run()\n\n // Log the activity (TODO: implement activity logging)\n // Activity logging is deferred until utils/log-activity is implemented\n\n // In a real implementation, you would send an email here\n // For now, we'll return the reset link for development\n const resetLink = `${c.req.header('origin') || 'http://localhost:8787'}/auth/reset-password?token=${resetToken}`\n\n return c.json({\n success: true,\n message: 'If an account with this email exists, a password reset link has been sent.',\n reset_link: resetLink // In production, this would be sent via email\n })\n\n } catch (error) {\n console.error('Password reset request error:', error)\n return c.json({ error: 'Failed to process password reset request' }, 500)\n }\n})\n\n// Show password reset form\nauthRoutes.get('/reset-password', async (c) => {\n try {\n const token = c.req.query('token')\n \n if (!token) {\n return c.html(`\n \n Invalid Reset Link\n \n
Invalid Reset Link
\n
The password reset link is invalid or has expired.
\n Go to Login\n \n \n `)\n }\n\n const db = c.env.DB\n \n // Check if reset token is valid and not expired\n const userStmt = db.prepare(`\n SELECT id, email, first_name, last_name, password_reset_expires\n FROM users \n WHERE password_reset_token = ? AND is_active = 1\n `)\n const user = await userStmt.bind(token).first() as any\n\n if (!user) {\n return c.html(`\n \n Invalid Reset Link\n \n
Invalid Reset Link
\n
The password reset link is invalid or has already been used.
\n Go to Login\n \n \n `)\n }\n\n // Check if token is expired\n if (Date.now() > user.password_reset_expires) {\n return c.html(`\n \n Reset Link Expired\n \n
Reset Link Expired
\n
The password reset link has expired. Please request a new one.
\n Go to Login\n \n \n `)\n }\n\n // Show password reset form\n return c.html(`\n \n \n \n \n \n Reset Password - SonicJS AI\n \n \n \n \n
\n
\n
\n
\n \n
\n
Reset Password
\n
Choose a new password for your account
\n
\n Reset password for ${user.first_name} ${user.last_name} \n ${user.email}\n
An error occurred while processing your password reset.
\n Go to Login\n \n \n `)\n }\n})\n\n// Process password reset\nauthRoutes.post('/reset-password', async (c) => {\n try {\n const formData = await c.req.formData()\n const token = formData.get('token')?.toString()\n const password = formData.get('password')?.toString()\n const confirmPassword = formData.get('confirm_password')?.toString()\n\n if (!token || !password || !confirmPassword) {\n return c.json({ error: 'All fields are required' }, 400)\n }\n\n if (password !== confirmPassword) {\n return c.json({ error: 'Passwords do not match' }, 400)\n }\n\n if (password.length < 8) {\n return c.json({ error: 'Password must be at least 8 characters long' }, 400)\n }\n\n const db = c.env.DB\n\n // Check if reset token is valid and not expired\n const userStmt = db.prepare(`\n SELECT id, email, password_hash, password_reset_expires\n FROM users\n WHERE password_reset_token = ? AND is_active = 1\n `)\n const user = await userStmt.bind(token).first() as any\n\n if (!user) {\n return c.json({ error: 'Invalid or expired reset token' }, 400)\n }\n\n // Check if token is expired\n if (Date.now() > user.password_reset_expires) {\n return c.json({ error: 'Reset token has expired' }, 400)\n }\n\n // Hash new password\n const newPasswordHash = await AuthManager.hashPassword(password)\n\n // Store old password in history (skip if table doesn't exist)\n try {\n const historyStmt = db.prepare(`\n INSERT INTO password_history (id, user_id, password_hash, created_at)\n VALUES (?, ?, ?, ?)\n `)\n await historyStmt.bind(\n crypto.randomUUID(),\n user.id,\n user.password_hash,\n Date.now()\n ).run()\n } catch (historyError) {\n // Password history table may not exist yet\n console.warn('Could not store password history:', historyError)\n }\n\n // Update user password and clear reset token\n const updateStmt = db.prepare(`\n UPDATE users SET\n password_hash = ?,\n password_reset_token = NULL,\n password_reset_expires = NULL,\n updated_at = ?\n WHERE id = ?\n `)\n\n await updateStmt.bind(\n newPasswordHash,\n Date.now(),\n user.id\n ).run()\n\n // Log the activity (TODO: implement activity logging)\n // Activity logging is deferred until utils/log-activity is implemented\n\n // Redirect to login with success message\n return c.redirect('/auth/login?message=Password reset successfully. Please log in with your new password.')\n\n } catch (error) {\n console.error('Password reset error:', error)\n return c.json({ error: 'Failed to reset password' }, 500)\n }\n})\n\nexport default authRoutes\n","/**\n * Test Cleanup Routes\n *\n * Provides endpoints to clean up test data after e2e tests\n * WARNING: These endpoints should only be available in development/test environments\n */\n\nimport { Hono } from 'hono'\nimport type { Context } from 'hono'\nimport type { D1Database } from '@cloudflare/workers-types'\n\nconst app = new Hono()\n\n/**\n * Clean up all test data (collections, content, users except admin)\n * POST /test-cleanup\n */\napp.post('/test-cleanup', async (c: Context) => {\n const db = c.env.DB as D1Database\n\n // Only allow in development/test environments\n if (c.env.ENVIRONMENT === 'production') {\n return c.json({ error: 'Cleanup endpoint not available in production' }, 403)\n }\n\n try {\n let deletedCount = 0\n\n // Use pattern-based deletes to avoid SQL variable limits\n // This approach uses subqueries instead of building large IN lists\n\n // Step 1: Delete child data for test content (by pattern)\n await db.prepare(`\n DELETE FROM content_versions\n WHERE content_id IN (\n SELECT id FROM content\n WHERE title LIKE 'Test %' OR title LIKE '%E2E%' OR title LIKE '%Playwright%' OR title LIKE '%Sample%'\n )\n `).run()\n\n await db.prepare(`\n DELETE FROM workflow_history\n WHERE content_id IN (\n SELECT id FROM content\n WHERE title LIKE 'Test %' OR title LIKE '%E2E%' OR title LIKE '%Playwright%' OR title LIKE '%Sample%'\n )\n `).run()\n\n // Note: content_data table may not exist in all schemas\n try {\n await db.prepare(`\n DELETE FROM content_data\n WHERE content_id IN (\n SELECT id FROM content\n WHERE title LIKE 'Test %' OR title LIKE '%E2E%' OR title LIKE '%Playwright%' OR title LIKE '%Sample%'\n )\n `).run()\n } catch (e) {\n // Table doesn't exist, skip\n }\n\n // Step 2: Delete test content by pattern\n const contentResult = await db.prepare(`\n DELETE FROM content\n WHERE title LIKE 'Test %' OR title LIKE '%E2E%' OR title LIKE '%Playwright%' OR title LIKE '%Sample%'\n `).run()\n deletedCount += contentResult.meta?.changes || 0\n\n // Step 3: Delete child data for test users\n await db.prepare(`\n DELETE FROM api_tokens\n WHERE user_id IN (\n SELECT id FROM users\n WHERE email != 'admin@sonicjs.com' AND (email LIKE '%test%' OR email LIKE '%example.com%')\n )\n `).run()\n\n await db.prepare(`\n DELETE FROM media\n WHERE uploaded_by IN (\n SELECT id FROM users\n WHERE email != 'admin@sonicjs.com' AND (email LIKE '%test%' OR email LIKE '%example.com%')\n )\n `).run()\n\n // Step 4: Delete test users\n const usersResult = await db.prepare(`\n DELETE FROM users\n WHERE email != 'admin@sonicjs.com' AND (email LIKE '%test%' OR email LIKE '%example.com%')\n `).run()\n deletedCount += usersResult.meta?.changes || 0\n\n // Step 5: Delete child data for test collections\n try {\n await db.prepare(`\n DELETE FROM collection_fields\n WHERE collection_id IN (\n SELECT id FROM collections\n WHERE name LIKE 'test_%' OR name IN ('blog_posts', 'test_collection', 'products', 'articles')\n )\n `).run()\n } catch (e) {\n // Table doesn't exist\n }\n\n // Delete remaining content from test collections\n await db.prepare(`\n DELETE FROM content\n WHERE collection_id IN (\n SELECT id FROM collections\n WHERE name LIKE 'test_%' OR name IN ('blog_posts', 'test_collection', 'products', 'articles')\n )\n `).run()\n\n // Step 6: Delete test collections\n const collectionsResult = await db.prepare(`\n DELETE FROM collections\n WHERE name LIKE 'test_%' OR name IN ('blog_posts', 'test_collection', 'products', 'articles')\n `).run()\n deletedCount += collectionsResult.meta?.changes || 0\n\n // Step 7: Clean up orphaned data (skip if tables don't exist)\n try {\n await db.prepare(`\n DELETE FROM content_data WHERE content_id NOT IN (SELECT id FROM content)\n `).run()\n } catch (e) {\n // Table doesn't exist\n }\n\n try {\n await db.prepare(`\n DELETE FROM collection_fields WHERE collection_id NOT IN (SELECT id FROM collections)\n `).run()\n } catch (e) {\n // Table doesn't exist\n }\n\n try {\n await db.prepare(`\n DELETE FROM content_versions WHERE content_id NOT IN (SELECT id FROM content)\n `).run()\n } catch (e) {\n // Table doesn't exist\n }\n\n try {\n await db.prepare(`\n DELETE FROM workflow_history WHERE content_id NOT IN (SELECT id FROM content)\n `).run()\n } catch (e) {\n // Table doesn't exist\n }\n\n // Step 8: Delete old activity logs (keep only last 100)\n await db.prepare(`\n DELETE FROM activity_logs\n WHERE id NOT IN (\n SELECT id FROM activity_logs\n ORDER BY created_at DESC\n LIMIT 100\n )\n `).run()\n\n return c.json({\n success: true,\n deletedCount,\n message: 'Test data cleaned up successfully'\n })\n } catch (error) {\n console.error('Test cleanup error:', error)\n return c.json({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 500)\n }\n})\n\n/**\n * Clean up test users only\n * POST /test-cleanup/users\n */\napp.post('/test-cleanup/users', async (c: Context) => {\n const db = c.env.DB as D1Database\n\n // Only allow in development/test environments\n if (c.env.ENVIRONMENT === 'production') {\n return c.json({ error: 'Cleanup endpoint not available in production' }, 403)\n }\n\n try {\n // Delete test users (preserve admin)\n const result = await db.prepare(`\n DELETE FROM users\n WHERE email != 'admin@sonicjs.com'\n AND (\n email LIKE '%test%'\n OR email LIKE '%example.com%'\n OR first_name = 'Test'\n )\n `).run()\n\n return c.json({\n success: true,\n deletedCount: result.meta?.changes || 0,\n message: 'Test users cleaned up successfully'\n })\n } catch (error) {\n console.error('User cleanup error:', error)\n return c.json({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 500)\n }\n})\n\n/**\n * Clean up test collections only\n * POST /test-cleanup/collections\n */\napp.post('/test-cleanup/collections', async (c: Context) => {\n const db = c.env.DB as D1Database\n\n // Only allow in development/test environments\n if (c.env.ENVIRONMENT === 'production') {\n return c.json({ error: 'Cleanup endpoint not available in production' }, 403)\n }\n\n try {\n let deletedCount = 0\n\n // Get test collection IDs first\n const collections = await db.prepare(`\n SELECT id FROM collections\n WHERE name LIKE 'test_%'\n OR name IN ('blog_posts', 'test_collection', 'products', 'articles')\n `).all()\n\n if (collections.results && collections.results.length > 0) {\n const collectionIds = collections.results.map((c: any) => c.id)\n\n // Delete associated fields\n for (const id of collectionIds) {\n await db.prepare('DELETE FROM collection_fields WHERE collection_id = ?').bind(id).run()\n }\n\n // Delete associated content\n for (const id of collectionIds) {\n await db.prepare('DELETE FROM content WHERE collection_id = ?').bind(id).run()\n }\n\n // Delete the collections\n const result = await db.prepare(`\n DELETE FROM collections\n WHERE id IN (${collectionIds.map(() => '?').join(',')})\n `).bind(...collectionIds).run()\n\n deletedCount = result.meta?.changes || 0\n }\n\n return c.json({\n success: true,\n deletedCount,\n message: 'Test collections cleaned up successfully'\n })\n } catch (error) {\n console.error('Collection cleanup error:', error)\n return c.json({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 500)\n }\n})\n\n/**\n * Clean up test content only\n * POST /test-cleanup/content\n */\napp.post('/test-cleanup/content', async (c: Context) => {\n const db = c.env.DB as D1Database\n\n // Only allow in development/test environments\n if (c.env.ENVIRONMENT === 'production') {\n return c.json({ error: 'Cleanup endpoint not available in production' }, 403)\n }\n\n try {\n // Delete test content\n const result = await db.prepare(`\n DELETE FROM content\n WHERE title LIKE 'Test %'\n OR title LIKE '%E2E%'\n OR title LIKE '%Playwright%'\n OR title LIKE '%Sample%'\n `).run()\n\n // Clean up orphaned content_data\n await db.prepare(`\n DELETE FROM content_data\n WHERE content_id NOT IN (SELECT id FROM content)\n `).run()\n\n return c.json({\n success: true,\n deletedCount: result.meta?.changes || 0,\n message: 'Test content cleaned up successfully'\n })\n } catch (error) {\n console.error('Content cleanup error:', error)\n return c.json({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error'\n }, 500)\n }\n})\n\nexport default app\n","/**\n * Plugin Middleware\n *\n * Provides middleware functions for checking plugin status and enforcing plugin requirements\n */\n\nimport type { D1Database } from '@cloudflare/workers-types'\n\n/**\n * Check if a plugin is active\n * @param db - The D1 database instance\n * @param pluginId - The plugin ID to check\n * @returns Promise - True if the plugin is active, false otherwise\n */\nexport async function isPluginActive(db: D1Database, pluginId: string): Promise {\n try {\n const result = await db\n .prepare('SELECT status FROM plugins WHERE id = ?')\n .bind(pluginId)\n .first()\n\n return result?.status === 'active'\n } catch (error) {\n console.error(`[isPluginActive] Error checking plugin status for ${pluginId}:`, error)\n return false\n }\n}\n\n/**\n * Middleware to require a plugin to be active\n * Throws an error if the plugin is not active\n * @param db - The D1 database instance\n * @param pluginId - The plugin ID to check\n * @throws Error if plugin is not active\n */\nexport async function requireActivePlugin(db: D1Database, pluginId: string): Promise {\n const isActive = await isPluginActive(db, pluginId)\n if (!isActive) {\n throw new Error(`Plugin '${pluginId}' is required but is not active`)\n }\n}\n\n/**\n * Middleware to require multiple plugins to be active\n * Throws an error if any plugin is not active\n * @param db - The D1 database instance\n * @param pluginIds - Array of plugin IDs to check\n * @throws Error if any plugin is not active\n */\nexport async function requireActivePlugins(db: D1Database, pluginIds: string[]): Promise {\n for (const pluginId of pluginIds) {\n await requireActivePlugin(db, pluginId)\n }\n}\n\n/**\n * Get all active plugins\n * @param db - The D1 database instance\n * @returns Promise - Array of active plugin records\n */\nexport async function getActivePlugins(db: D1Database): Promise {\n try {\n const { results } = await db\n .prepare('SELECT * FROM plugins WHERE status = ?')\n .bind('active')\n .all()\n\n return results || []\n } catch (error) {\n console.error('[getActivePlugins] Error fetching active plugins:', error)\n return []\n }\n}\n","export interface ContentVersion {\n id: string\n version: number\n data: any\n author_id: string\n author_name?: string\n created_at: number\n is_current?: boolean\n}\n\nexport interface VersionHistoryData {\n contentId: string\n versions: ContentVersion[]\n currentVersion: number\n}\n\nexport function renderVersionHistory(data: VersionHistoryData): string {\n return `\n
\n Version ${version}\n Collection: ${safeCollectionName} \n Created: ${new Date(versionData.created_at).toLocaleString()} \n This is a historical version preview\n