emdash 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/action-token-On1sot_c.mjs +26 -0
- package/dist/action-token-On1sot_c.mjs.map +1 -0
- package/dist/activation-CaMfdBt1.mjs +382 -0
- package/dist/activation-CaMfdBt1.mjs.map +1 -0
- package/dist/adapters-Cq10K4_c.d.mts +171 -0
- package/dist/adapters-Cq10K4_c.d.mts.map +1 -0
- package/dist/after-PcEvMY_6.mjs +96 -0
- package/dist/after-PcEvMY_6.mjs.map +1 -0
- package/dist/allowed-origins-1Sa-2wZK.mjs +116 -0
- package/dist/allowed-origins-1Sa-2wZK.mjs.map +1 -0
- package/dist/api/route-utils.d.mts +4 -3
- package/dist/api/route-utils.d.mts.map +1 -1
- package/dist/api/route-utils.mjs +45 -29
- package/dist/api/route-utils.mjs.map +1 -1
- package/dist/api/schemas/index.d.mts +2 -2
- package/dist/api/schemas/index.mjs +7 -6
- package/dist/api-DmjKxPCY.mjs +4831 -0
- package/dist/api-DmjKxPCY.mjs.map +1 -0
- package/dist/api-tokens-BIXItFKV.mjs +163 -0
- package/dist/api-tokens-BIXItFKV.mjs.map +1 -0
- package/dist/apply-drpfmqrR.mjs +1005 -0
- package/dist/apply-drpfmqrR.mjs.map +1 -0
- package/dist/artifact-fetch-COiMhVgk.mjs +813 -0
- package/dist/artifact-fetch-COiMhVgk.mjs.map +1 -0
- package/dist/astro/index.d.mts +14 -12
- package/dist/astro/index.d.mts.map +1 -1
- package/dist/astro/index.mjs +123 -13
- package/dist/astro/index.mjs.map +1 -1
- package/dist/astro/middleware/auth.d.mts +12 -10
- package/dist/astro/middleware/auth.d.mts.map +1 -1
- package/dist/astro/middleware/auth.mjs +20 -11
- package/dist/astro/middleware/auth.mjs.map +1 -1
- package/dist/astro/middleware/media-usage-write-fence.mjs +5 -5
- package/dist/astro/middleware/redirect.mjs +11 -9
- package/dist/astro/middleware/redirect.mjs.map +1 -1
- package/dist/astro/middleware/request-context.d.mts +1 -1
- package/dist/astro/middleware/request-context.d.mts.map +1 -1
- package/dist/astro/middleware/request-context.mjs +154 -28
- package/dist/astro/middleware/request-context.mjs.map +1 -1
- package/dist/astro/middleware/setup.mjs +1 -1
- package/dist/astro/middleware.d.mts +13 -10
- package/dist/astro/middleware.d.mts.map +1 -1
- package/dist/astro/middleware.mjs +122 -3041
- package/dist/astro/middleware.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs +10 -9
- package/dist/astro/routes/api/admin/allowed-domains/_domain_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs +10 -9
- package/dist/astro/routes/api/admin/allowed-domains/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/api-tokens/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/api-tokens/index.mjs +6 -6
- package/dist/astro/routes/api/admin/byline-fields/_slug_/usage.mjs +6 -6
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs +13 -12
- package/dist/astro/routes/api/admin/byline-fields/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/index.mjs +13 -12
- package/dist/astro/routes/api/admin/byline-fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs +13 -12
- package/dist/astro/routes/api/admin/byline-fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/admin/bylines/index.mjs +22 -21
- package/dist/astro/routes/api/admin/bylines/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs +21 -54
- package/dist/astro/routes/api/admin/comments/_id_/status.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/_id_.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/bulk.mjs +15 -14
- package/dist/astro/routes/api/admin/comments/bulk.mjs.map +1 -1
- package/dist/astro/routes/api/admin/comments/counts.mjs +8 -8
- package/dist/astro/routes/api/admin/comments/index.mjs +15 -14
- package/dist/astro/routes/api/admin/comments/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/hooks/exclusive/_hookName_.mjs +6 -6
- package/dist/astro/routes/api/admin/hooks/exclusive/index.mjs +5 -5
- package/dist/astro/routes/api/admin/media-usage/activation.mjs +17 -16
- package/dist/astro/routes/api/admin/media-usage/activation.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs +19 -18
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs +19 -18
- package/dist/astro/routes/api/admin/media-usage/collection-deletions/retry.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/progress.mjs +17 -17
- package/dist/astro/routes/api/admin/media-usage/repair.mjs +21 -20
- package/dist/astro/routes/api/admin/media-usage/repair.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs +19 -18
- package/dist/astro/routes/api/admin/media-usage/work/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs +19 -18
- package/dist/astro/routes/api/admin/media-usage/work/retry.mjs.map +1 -1
- package/dist/astro/routes/api/admin/oauth-clients/_id_.mjs +5 -5
- package/dist/astro/routes/api/admin/oauth-clients/index.mjs +5 -5
- package/dist/astro/routes/api/admin/plugins/_id_/disable.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs +9 -66
- package/dist/astro/routes/api/admin/plugins/_id_/disable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs +9 -69
- package/dist/astro/routes/api/admin/plugins/_id_/enable.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs +66 -59
- package/dist/astro/routes/api/admin/plugins/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/mcp.mjs +6 -6
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs +65 -59
- package/dist/astro/routes/api/admin/plugins/_id_/settings.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs +70 -61
- package/dist/astro/routes/api/admin/plugins/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs +87 -63
- package/dist/astro/routes/api/admin/plugins/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/index.mjs +66 -59
- package/dist/astro/routes/api/admin/plugins/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/icon.mjs +4 -4
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs +65 -59
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs +85 -63
- package/dist/astro/routes/api/admin/plugins/marketplace/_id_/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs +65 -59
- package/dist/astro/routes/api/admin/plugins/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs +70 -61
- package/dist/astro/routes/api/admin/plugins/registry/_id_/uninstall.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs +90 -66
- package/dist/astro/routes/api/admin/plugins/registry/_id_/update.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs +9 -7
- package/dist/astro/routes/api/admin/plugins/registry/artifact.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs +77 -63
- package/dist/astro/routes/api/admin/plugins/registry/install.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/verify.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs +67 -61
- package/dist/astro/routes/api/admin/plugins/registry/verify.mjs.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.d.mts.map +1 -1
- package/dist/astro/routes/api/admin/plugins/updates.mjs +66 -60
- package/dist/astro/routes/api/admin/plugins/updates.mjs.map +1 -1
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts +8 -0
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.d.mts.map +1 -0
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs +27 -0
- package/dist/astro/routes/api/admin/scheduled-policy-rejections/_collection_/_id_.mjs.map +1 -0
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs +65 -59
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/themes/marketplace/_id_/thumbnail.mjs +4 -4
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs +65 -59
- package/dist/astro/routes/api/admin/themes/marketplace/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/disable.mjs +4 -4
- package/dist/astro/routes/api/admin/users/_id_/enable.mjs +3 -3
- package/dist/astro/routes/api/admin/users/_id_/index.mjs +11 -10
- package/dist/astro/routes/api/admin/users/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/admin/users/_id_/send-recovery.mjs +5 -5
- package/dist/astro/routes/api/admin/users/index.mjs +10 -9
- package/dist/astro/routes/api/admin/users/index.mjs.map +1 -1
- package/dist/astro/routes/api/auth/dev-bypass.mjs +5 -5
- package/dist/astro/routes/api/auth/invite/accept.mjs +3 -3
- package/dist/astro/routes/api/auth/invite/complete.mjs +15 -14
- package/dist/astro/routes/api/auth/invite/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/index.mjs +12 -11
- package/dist/astro/routes/api/auth/invite/index.mjs.map +1 -1
- package/dist/astro/routes/api/auth/invite/register-options.mjs +14 -13
- package/dist/astro/routes/api/auth/invite/register-options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/logout.mjs +4 -4
- package/dist/astro/routes/api/auth/magic-link/send.mjs +14 -13
- package/dist/astro/routes/api/auth/magic-link/send.mjs.map +1 -1
- package/dist/astro/routes/api/auth/magic-link/verify.mjs +4 -4
- package/dist/astro/routes/api/auth/me.mjs +11 -10
- package/dist/astro/routes/api/auth/me.mjs.map +1 -1
- package/dist/astro/routes/api/auth/mode.mjs +4 -4
- package/dist/astro/routes/api/auth/oauth/_provider_/callback.mjs +4 -4
- package/dist/astro/routes/api/auth/oauth/_provider_.mjs +2 -2
- package/dist/astro/routes/api/auth/passkey/_id_.mjs +10 -9
- package/dist/astro/routes/api/auth/passkey/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/index.mjs +3 -3
- package/dist/astro/routes/api/auth/passkey/options.mjs +16 -15
- package/dist/astro/routes/api/auth/passkey/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/options.mjs +14 -13
- package/dist/astro/routes/api/auth/passkey/register/options.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs +15 -14
- package/dist/astro/routes/api/auth/passkey/register/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/passkey/verify.mjs +15 -14
- package/dist/astro/routes/api/auth/passkey/verify.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/complete.mjs +15 -14
- package/dist/astro/routes/api/auth/signup/complete.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/request.mjs +14 -13
- package/dist/astro/routes/api/auth/signup/request.mjs.map +1 -1
- package/dist/astro/routes/api/auth/signup/verify.mjs +3 -3
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.d.mts.map +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs +15 -211
- package/dist/astro/routes/api/comments/_collection_/_contentId_/index.mjs.map +1 -1
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs +18 -17
- package/dist/astro/routes/api/comments/_collection_/_contentId_/reactions.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/compare.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs +17 -11
- package/dist/astro/routes/api/content/_collection_/_id_/discard-draft.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/duplicate.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts +10 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs +67 -0
- package/dist/astro/routes/api/content/_collection_/_id_/lock.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/permanent.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts +8 -0
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.d.mts.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs +35 -0
- package/dist/astro/routes/api/content/_collection_/_id_/plugin-extensions/_pluginId_/_kind_/_extensionId_.mjs.map +1 -0
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs +16 -15
- package/dist/astro/routes/api/content/_collection_/_id_/preview-url.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts +9 -2
- package/dist/astro/routes/api/content/_collection_/_id_/publish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs +28 -16
- package/dist/astro/routes/api/content/_collection_/_id_/publish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs +27 -23
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/children.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs +27 -23
- package/dist/astro/routes/api/content/_collection_/_id_/references/_relation_/parents.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/restore.mjs +5 -5
- package/dist/astro/routes/api/content/_collection_/_id_/revisions.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs +27 -12
- package/dist/astro/routes/api/content/_collection_/_id_/schedule.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs +23 -20
- package/dist/astro/routes/api/content/_collection_/_id_/terms/_taxonomy_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/translations.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs +25 -12
- package/dist/astro/routes/api/content/_collection_/_id_/unpublish.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/content/_collection_/_id_.mjs +27 -14
- package/dist/astro/routes/api/content/_collection_/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/authors.mjs +4 -4
- package/dist/astro/routes/api/content/_collection_/index.mjs +18 -12
- package/dist/astro/routes/api/content/_collection_/index.mjs.map +1 -1
- package/dist/astro/routes/api/content/_collection_/trash.mjs +11 -10
- package/dist/astro/routes/api/content/_collection_/trash.mjs.map +1 -1
- package/dist/astro/routes/api/dashboard.mjs +14 -12
- package/dist/astro/routes/api/dashboard.mjs.map +1 -1
- package/dist/astro/routes/api/dev/emails.mjs +4 -4
- package/dist/astro/routes/api/health.d.mts +8 -0
- package/dist/astro/routes/api/health.d.mts.map +1 -0
- package/dist/astro/routes/api/health.mjs +21 -0
- package/dist/astro/routes/api/health.mjs.map +1 -0
- package/dist/astro/routes/api/import/probe.d.mts +3 -3
- package/dist/astro/routes/api/import/probe.mjs +25 -23
- package/dist/astro/routes/api/import/probe.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/analyze.mjs +5 -5
- package/dist/astro/routes/api/import/wordpress/execute.d.mts +13 -11
- package/dist/astro/routes/api/import/wordpress/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/execute.mjs +20 -19
- package/dist/astro/routes/api/import/wordpress/execute.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.d.mts +12 -10
- package/dist/astro/routes/api/import/wordpress/media.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/media.mjs +15 -14
- package/dist/astro/routes/api/import/wordpress/media.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/prepare.mjs +14 -13
- package/dist/astro/routes/api/import/wordpress/prepare.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts +13 -11
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs +18 -17
- package/dist/astro/routes/api/import/wordpress/rewrite-urls.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.d.mts +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs +25 -23
- package/dist/astro/routes/api/import/wordpress-plugin/analyze.mjs.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/callback.mjs +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts +13 -11
- package/dist/astro/routes/api/import/wordpress-plugin/execute.d.mts.map +1 -1
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs +36 -33
- package/dist/astro/routes/api/import/wordpress-plugin/execute.mjs.map +1 -1
- package/dist/astro/routes/api/manifest.mjs +17 -9
- package/dist/astro/routes/api/manifest.mjs.map +1 -1
- package/dist/astro/routes/api/mcp.d.mts.map +1 -1
- package/dist/astro/routes/api/mcp.mjs +192 -110
- package/dist/astro/routes/api/mcp.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/confirm.mjs +15 -14
- package/dist/astro/routes/api/media/_id_/confirm.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/replace.mjs +12 -11
- package/dist/astro/routes/api/media/_id_/replace.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_/upload.mjs +8 -8
- package/dist/astro/routes/api/media/_id_/usage.mjs +23 -22
- package/dist/astro/routes/api/media/_id_/usage.mjs.map +1 -1
- package/dist/astro/routes/api/media/_id_.mjs +22 -21
- package/dist/astro/routes/api/media/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts +8 -0
- package/dist/astro/routes/api/media/asset/_id_/_filename_.d.mts.map +1 -0
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs +52 -0
- package/dist/astro/routes/api/media/asset/_id_/_filename_.mjs.map +1 -0
- package/dist/astro/routes/api/media/file/_...key_.mjs +3 -3
- package/dist/astro/routes/api/media/folders/_id_.mjs +12 -11
- package/dist/astro/routes/api/media/folders/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/media/folders/index.mjs +12 -11
- package/dist/astro/routes/api/media/folders/index.mjs.map +1 -1
- package/dist/astro/routes/api/media/providers/_providerId_/_itemId_.mjs +4 -4
- package/dist/astro/routes/api/media/providers/_providerId_/index.mjs +4 -4
- package/dist/astro/routes/api/media/providers/index.mjs +4 -4
- package/dist/astro/routes/api/media/upload-url.mjs +14 -13
- package/dist/astro/routes/api/media/upload-url.mjs.map +1 -1
- package/dist/astro/routes/api/media.mjs +26 -25
- package/dist/astro/routes/api/media.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs +15 -14
- package/dist/astro/routes/api/menus/_name_/items/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/items.mjs +15 -14
- package/dist/astro/routes/api/menus/_name_/items.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/reorder.mjs +15 -14
- package/dist/astro/routes/api/menus/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_/translations.mjs +15 -14
- package/dist/astro/routes/api/menus/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/menus/_name_.mjs +15 -14
- package/dist/astro/routes/api/menus/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/menus/index.mjs +15 -14
- package/dist/astro/routes/api/menus/index.mjs.map +1 -1
- package/dist/astro/routes/api/oauth/authorize.mjs +6 -6
- package/dist/astro/routes/api/oauth/device/authorize.mjs +7 -7
- package/dist/astro/routes/api/oauth/device/code.mjs +10 -10
- package/dist/astro/routes/api/oauth/device/token.mjs +9 -9
- package/dist/astro/routes/api/oauth/register.mjs +4 -4
- package/dist/astro/routes/api/oauth/token/refresh.mjs +7 -7
- package/dist/astro/routes/api/oauth/token/revoke.mjs +7 -7
- package/dist/astro/routes/api/oauth/token.mjs +7 -7
- package/dist/astro/routes/api/openapi.json.mjs +95 -24
- package/dist/astro/routes/api/openapi.json.mjs.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts +2 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.d.mts.map +1 -1
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs +22 -40
- package/dist/astro/routes/api/plugins/_pluginId_/_...path_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/index.mjs +18 -14
- package/dist/astro/routes/api/redirects/404s/index.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/404s/summary.mjs +18 -14
- package/dist/astro/routes/api/redirects/404s/summary.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.d.mts.map +1 -1
- package/dist/astro/routes/api/redirects/_id_.mjs +20 -22
- package/dist/astro/routes/api/redirects/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/redirects/index.d.mts.map +1 -1
- package/dist/astro/routes/api/redirects/index.mjs +19 -19
- package/dist/astro/routes/api/redirects/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/index.mjs +27 -23
- package/dist/astro/routes/api/relations/_id_/index.mjs.map +1 -1
- package/dist/astro/routes/api/relations/_id_/translations.mjs +21 -18
- package/dist/astro/routes/api/relations/_id_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/relations/index.mjs +27 -23
- package/dist/astro/routes/api/relations/index.mjs.map +1 -1
- package/dist/astro/routes/api/revisions/_revisionId_/index.mjs +4 -4
- package/dist/astro/routes/api/revisions/_revisionId_/restore.mjs +5 -5
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/_slug_/fields/_fieldSlug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/_slug_/fields/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/_slug_/fields/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/_slug_/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/index.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/collections/reorder.mjs +65 -59
- package/dist/astro/routes/api/schema/collections/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/schema/index.mjs +16 -14
- package/dist/astro/routes/api/schema/index.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs +65 -59
- package/dist/astro/routes/api/schema/orphans/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/schema/orphans/index.mjs +65 -59
- package/dist/astro/routes/api/schema/orphans/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/enable.mjs +16 -14
- package/dist/astro/routes/api/search/enable.mjs.map +1 -1
- package/dist/astro/routes/api/search/index.mjs +17 -14
- package/dist/astro/routes/api/search/index.mjs.map +1 -1
- package/dist/astro/routes/api/search/rebuild.mjs +16 -14
- package/dist/astro/routes/api/search/rebuild.mjs.map +1 -1
- package/dist/astro/routes/api/search/stats.mjs +10 -9
- package/dist/astro/routes/api/search/stats.mjs.map +1 -1
- package/dist/astro/routes/api/search/suggest.mjs +15 -13
- package/dist/astro/routes/api/search/suggest.mjs.map +1 -1
- package/dist/astro/routes/api/sections/_slug_.mjs +15 -13
- package/dist/astro/routes/api/sections/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/sections/index.mjs +15 -13
- package/dist/astro/routes/api/sections/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs +9 -8
- package/dist/astro/routes/api/settings/backups/archives/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/archives/index.mjs +8 -7
- package/dist/astro/routes/api/settings/backups/archives/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/export.mjs +9 -8
- package/dist/astro/routes/api/settings/backups/export.mjs.map +1 -1
- package/dist/astro/routes/api/settings/backups/index.mjs +10 -9
- package/dist/astro/routes/api/settings/backups/index.mjs.map +1 -1
- package/dist/astro/routes/api/settings/email.mjs +6 -6
- package/dist/astro/routes/api/settings.mjs +22 -20
- package/dist/astro/routes/api/settings.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin-verify.mjs +16 -15
- package/dist/astro/routes/api/setup/admin-verify.mjs.map +1 -1
- package/dist/astro/routes/api/setup/admin.mjs +15 -14
- package/dist/astro/routes/api/setup/admin.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-bypass.mjs +42 -38
- package/dist/astro/routes/api/setup/dev-bypass.mjs.map +1 -1
- package/dist/astro/routes/api/setup/dev-reset.mjs +4 -4
- package/dist/astro/routes/api/setup/index.mjs +43 -38
- package/dist/astro/routes/api/setup/index.mjs.map +1 -1
- package/dist/astro/routes/api/setup/status.mjs +5 -5
- package/dist/astro/routes/api/snapshot.mjs +11 -10
- package/dist/astro/routes/api/snapshot.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/_name_/terms/_slug_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/_name_/terms/index.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs +22 -20
- package/dist/astro/routes/api/taxonomies/_name_/translations.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/_name_.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/_name_.mjs.map +1 -1
- package/dist/astro/routes/api/taxonomies/index.mjs +23 -21
- package/dist/astro/routes/api/taxonomies/index.mjs.map +1 -1
- package/dist/astro/routes/api/themes/preview.mjs +8 -8
- package/dist/astro/routes/api/typegen.mjs +6 -6
- package/dist/astro/routes/api/visual-editing/action-token.d.mts +8 -0
- package/dist/astro/routes/api/visual-editing/action-token.d.mts.map +1 -0
- package/dist/astro/routes/api/visual-editing/action-token.mjs +25 -0
- package/dist/astro/routes/api/visual-editing/action-token.mjs.map +1 -0
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts +8 -0
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.d.mts.map +1 -0
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs +37 -0
- package/dist/astro/routes/api/visual-editing/content/_collection_/_id_/publish.mjs.map +1 -0
- package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts +8 -0
- package/dist/astro/routes/api/visual-editing/toolbar-labels.d.mts.map +1 -0
- package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs +20 -0
- package/dist/astro/routes/api/visual-editing/toolbar-labels.mjs.map +1 -0
- package/dist/astro/routes/api/well-known/auth.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-authorization-server.mjs +2 -2
- package/dist/astro/routes/api/well-known/oauth-protected-resource.mjs +2 -2
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs +12 -11
- package/dist/astro/routes/api/widget-areas/_name_/reorder.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs +16 -15
- package/dist/astro/routes/api/widget-areas/_name_/widgets/_id_.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs +16 -15
- package/dist/astro/routes/api/widget-areas/_name_/widgets.mjs.map +1 -1
- package/dist/astro/routes/api/widget-areas/_name_.mjs +10 -10
- package/dist/astro/routes/api/widget-areas/index.mjs +16 -15
- package/dist/astro/routes/api/widget-areas/index.mjs.map +1 -1
- package/dist/astro/routes/api/widget-components.mjs +4 -4
- package/dist/astro/routes/robots.txt.mjs +13 -12
- package/dist/astro/routes/robots.txt.mjs.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.d.mts.map +1 -1
- package/dist/astro/routes/sitemap-_collection_.xml.mjs +24 -19
- package/dist/astro/routes/sitemap-_collection_.xml.mjs.map +1 -1
- package/dist/astro/routes/sitemap.xml.mjs +14 -13
- package/dist/astro/routes/sitemap.xml.mjs.map +1 -1
- package/dist/astro/types.d.mts +79 -26
- package/dist/astro/types.d.mts.map +1 -1
- package/dist/auth/providers/github.d.mts +1 -1
- package/dist/auth/providers/google.d.mts +1 -1
- package/dist/authoritative-records-DbqshfKD.mjs +5172 -0
- package/dist/authoritative-records-DbqshfKD.mjs.map +1 -0
- package/dist/authorize-BXpfMpp0.mjs +40 -0
- package/dist/authorize-BXpfMpp0.mjs.map +1 -0
- package/dist/backup-BsPQdwnS.mjs +246 -0
- package/dist/backup-BsPQdwnS.mjs.map +1 -0
- package/dist/base64-DvnNgP7e.mjs +63 -0
- package/dist/base64-DvnNgP7e.mjs.map +1 -0
- package/dist/byline-Doh-wt99.mjs +906 -0
- package/dist/byline-Doh-wt99.mjs.map +1 -0
- package/dist/byline-fields-CsrdvaLV.mjs +123 -0
- package/dist/byline-fields-CsrdvaLV.mjs.map +1 -0
- package/dist/byline-registry-D6lWzXk6.mjs +406 -0
- package/dist/byline-registry-D6lWzXk6.mjs.map +1 -0
- package/dist/bylines-Cop0hkoy.mjs +214 -0
- package/dist/bylines-Cop0hkoy.mjs.map +1 -0
- package/dist/bylines-kpBzHPr8.mjs +232 -0
- package/dist/bylines-kpBzHPr8.mjs.map +1 -0
- package/dist/cache-B0pOlXdM.mjs +108 -0
- package/dist/cache-B0pOlXdM.mjs.map +1 -0
- package/dist/capture-triggers-gxQxnxrJ.mjs +362 -0
- package/dist/capture-triggers-gxQxnxrJ.mjs.map +1 -0
- package/dist/challenge-store-CkRdSdd8.mjs +51 -0
- package/dist/challenge-store-CkRdSdd8.mjs.map +1 -0
- package/dist/checksum-Bsi2D9M1.mjs +162 -0
- package/dist/checksum-Bsi2D9M1.mjs.map +1 -0
- package/dist/chrome-tags-D7LGB91U.mjs +24 -0
- package/dist/chrome-tags-D7LGB91U.mjs.map +1 -0
- package/dist/chunks-BmWyou79.mjs +25 -0
- package/dist/chunks-BmWyou79.mjs.map +1 -0
- package/dist/cli/index.mjs +921 -106
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/cf-access.d.mts +1 -1
- package/dist/client/index.d.mts +17 -7
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs +17 -12
- package/dist/client/index.mjs.map +1 -1
- package/dist/collection-deletion-C3Xixmkx.mjs +436 -0
- package/dist/collection-deletion-C3Xixmkx.mjs.map +1 -0
- package/dist/collection-slugs-cache-D9auiKmI.mjs +85 -0
- package/dist/collection-slugs-cache-D9auiKmI.mjs.map +1 -0
- package/dist/comment-DcT8qdPK.mjs +313 -0
- package/dist/comment-DcT8qdPK.mjs.map +1 -0
- package/dist/comment-reaction-DY5-y8Y5.mjs +85 -0
- package/dist/comment-reaction-DY5-y8Y5.mjs.map +1 -0
- package/dist/comments-B67VRNGw.mjs +204 -0
- package/dist/comments-B67VRNGw.mjs.map +1 -0
- package/dist/comments-BVzzt6x5.mjs +99 -0
- package/dist/comments-BVzzt6x5.mjs.map +1 -0
- package/dist/components-DIl9Qzh6.mjs +108 -0
- package/dist/components-DIl9Qzh6.mjs.map +1 -0
- package/dist/config-B2acLeC5.mjs +242 -0
- package/dist/config-B2acLeC5.mjs.map +1 -0
- package/dist/config-CGVeT8Hc.mjs +73 -0
- package/dist/config-CGVeT8Hc.mjs.map +1 -0
- package/dist/config-D3HhLON3.d.mts +39 -0
- package/dist/config-D3HhLON3.d.mts.map +1 -0
- package/dist/config-DS7e4EZ9.d.mts +6387 -0
- package/dist/config-DS7e4EZ9.d.mts.map +1 -0
- package/dist/content-DZ3B5qtA.mjs +2216 -0
- package/dist/content-DZ3B5qtA.mjs.map +1 -0
- package/dist/content-list-query-CbPdzsna.d.mts +26 -0
- package/dist/content-list-query-CbPdzsna.d.mts.map +1 -0
- package/dist/content-policy-CM4skrNi.mjs +46 -0
- package/dist/content-policy-CM4skrNi.mjs.map +1 -0
- package/dist/content-refresh-BHLHJgyt.mjs +3599 -0
- package/dist/content-refresh-BHLHJgyt.mjs.map +1 -0
- package/dist/content-repair-BVll5WNl.mjs +440 -0
- package/dist/content-repair-BVll5WNl.mjs.map +1 -0
- package/dist/context-B195kjqZ.mjs +1835 -0
- package/dist/context-B195kjqZ.mjs.map +1 -0
- package/dist/cron-BcR3RN4K.mjs +282 -0
- package/dist/cron-BcR3RN4K.mjs.map +1 -0
- package/dist/dashboard-CZD4G7k_.mjs +151 -0
- package/dist/dashboard-CZD4G7k_.mjs.map +1 -0
- package/dist/database/migration-lock.d.mts +37 -0
- package/dist/database/migration-lock.d.mts.map +1 -0
- package/dist/database/migration-lock.mjs +76 -0
- package/dist/database/migration-lock.mjs.map +1 -0
- package/dist/database/pg-migration-lock.d.mts +1 -1
- package/dist/database/pg-migration-lock.mjs +1 -1
- package/dist/database/pg-migration-lock.mjs.map +1 -1
- package/dist/datetime-normalization-PeiEdcRY.mjs +187 -0
- package/dist/datetime-normalization-PeiEdcRY.mjs.map +1 -0
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +4 -3
- package/dist/db/index.mjs.map +1 -1
- package/dist/db/libsql-migrations.d.mts +1 -1
- package/dist/db/libsql-migrations.mjs +7 -6
- package/dist/db/libsql-migrations.mjs.map +1 -1
- package/dist/db/libsql.d.mts +1 -1
- package/dist/db/postgres-migrations.d.mts +1 -1
- package/dist/db/postgres-migrations.mjs +7 -6
- package/dist/db/postgres-migrations.mjs.map +1 -1
- package/dist/db/postgres.d.mts +1 -1
- package/dist/db/sqlite-migrations.d.mts +1 -1
- package/dist/db/sqlite-migrations.mjs +7 -6
- package/dist/db/sqlite-migrations.mjs.map +1 -1
- package/dist/db/sqlite.d.mts +1 -1
- package/dist/db/sqlite.mjs +1 -1
- package/dist/db-errors-CBD5yMro.mjs +55 -0
- package/dist/db-errors-CBD5yMro.mjs.map +1 -0
- package/dist/default-BtlxWgh9.mjs +81 -0
- package/dist/default-BtlxWgh9.mjs.map +1 -0
- package/dist/deferred-tasks-Ba9fphlE.d.mts +9 -0
- package/dist/deferred-tasks-Ba9fphlE.d.mts.map +1 -0
- package/dist/dev-typegen-CZaPLl3V.mjs +29 -0
- package/dist/dev-typegen-CZaPLl3V.mjs.map +1 -0
- package/dist/device-flow-3E5l0fpH.mjs +466 -0
- package/dist/device-flow-3E5l0fpH.mjs.map +1 -0
- package/dist/dialect-helpers-CtYdsX4W.mjs +307 -0
- package/dist/dialect-helpers-CtYdsX4W.mjs.map +1 -0
- package/dist/direct-executor-ZI8E01Yt.mjs +104 -0
- package/dist/direct-executor-ZI8E01Yt.mjs.map +1 -0
- package/dist/dist-2hDLsLeq.mjs +810 -0
- package/dist/dist-2hDLsLeq.mjs.map +1 -0
- package/dist/email-console-gc-E3Eqj.mjs +50 -0
- package/dist/email-console-gc-E3Eqj.mjs.map +1 -0
- package/dist/emdash-runtime-DZGinqTL.mjs +4041 -0
- package/dist/emdash-runtime-DZGinqTL.mjs.map +1 -0
- package/dist/enrich-C2Mk0lwE.mjs +194 -0
- package/dist/enrich-C2Mk0lwE.mjs.map +1 -0
- package/dist/entry-lock-D3C99MXS.mjs +1520 -0
- package/dist/entry-lock-D3C99MXS.mjs.map +1 -0
- package/dist/entry-lock-D9rnj2Lu.mjs +163 -0
- package/dist/entry-lock-D9rnj2Lu.mjs.map +1 -0
- package/dist/entry-lock-DX7QkqEg.d.mts +3503 -0
- package/dist/entry-lock-DX7QkqEg.d.mts.map +1 -0
- package/dist/entry-locks-CO_KaoU5.mjs +167 -0
- package/dist/entry-locks-CO_KaoU5.mjs.map +1 -0
- package/dist/error-CCTCskie.mjs +90 -0
- package/dist/error-CCTCskie.mjs.map +1 -0
- package/dist/errors-W3PA8HqB.mjs +447 -0
- package/dist/errors-W3PA8HqB.mjs.map +1 -0
- package/dist/escape-DN4Qmjsl.mjs +9 -0
- package/dist/escape-DN4Qmjsl.mjs.map +1 -0
- package/dist/field-defs-cache-B337z8UJ.mjs +77 -0
- package/dist/field-defs-cache-B337z8UJ.mjs.map +1 -0
- package/dist/focal-point-Gr34o-4o.mjs +23 -0
- package/dist/focal-point-Gr34o-4o.mjs.map +1 -0
- package/dist/fts-manager-DMb0sbIQ.mjs +413 -0
- package/dist/fts-manager-DMb0sbIQ.mjs.map +1 -0
- package/dist/hash-CLVFzWvx.mjs +37 -0
- package/dist/hash-CLVFzWvx.mjs.map +1 -0
- package/dist/hook-result-KY1jq21o.d.mts +31 -0
- package/dist/hook-result-KY1jq21o.d.mts.map +1 -0
- package/dist/hreflang-BgS2FqhH.d.mts +50 -0
- package/dist/hreflang-BgS2FqhH.d.mts.map +1 -0
- package/dist/hreflang-CrJwqoeb.mjs +105 -0
- package/dist/hreflang-CrJwqoeb.mjs.map +1 -0
- package/dist/http-route-dispatch-DAKlanXb.mjs +339 -0
- package/dist/http-route-dispatch-DAKlanXb.mjs.map +1 -0
- package/dist/identity-DRGSHEEr.mjs +35 -0
- package/dist/identity-DRGSHEEr.mjs.map +1 -0
- package/dist/import-DFr5B_hC.mjs +2020 -0
- package/dist/import-DFr5B_hC.mjs.map +1 -0
- package/dist/index-CDwKDkTq.d.mts +623 -0
- package/dist/index-CDwKDkTq.d.mts.map +1 -0
- package/dist/index.d.mts +27 -22
- package/dist/index.mjs +101 -86
- package/dist/init-lock-4eRRB4Le.mjs +56 -0
- package/dist/init-lock-4eRRB4Le.mjs.map +1 -0
- package/dist/install-finalization-5Os-QZ-2.mjs +58 -0
- package/dist/install-finalization-5Os-QZ-2.mjs.map +1 -0
- package/dist/lifecycle-7e-Lt_kX.mjs +25 -0
- package/dist/lifecycle-7e-Lt_kX.mjs.map +1 -0
- package/dist/load-Cu5bvCZh.mjs +28 -0
- package/dist/load-Cu5bvCZh.mjs.map +1 -0
- package/dist/loader-t4TxaFiQ.mjs +1004 -0
- package/dist/loader-t4TxaFiQ.mjs.map +1 -0
- package/dist/manifest-builder-D31UoJCu.mjs +189 -0
- package/dist/manifest-builder-D31UoJCu.mjs.map +1 -0
- package/dist/manifest-schema-Bkh8SeHd.mjs +491 -0
- package/dist/manifest-schema-Bkh8SeHd.mjs.map +1 -0
- package/dist/media/image-endpoint.mjs +1 -1
- package/dist/media/index.d.mts +1 -1
- package/dist/media/index.mjs +4 -4
- package/dist/media/local-runtime.d.mts +14 -12
- package/dist/media/local-runtime.d.mts.map +1 -1
- package/dist/media/local-runtime.mjs +12 -11
- package/dist/media/local-runtime.mjs.map +1 -1
- package/dist/media-TBlKCwo7.mjs +334 -0
- package/dist/media-TBlKCwo7.mjs.map +1 -0
- package/dist/media-allowlist-s60eAIf6.mjs +44 -0
- package/dist/media-allowlist-s60eAIf6.mjs.map +1 -0
- package/dist/media-folders-ClIRLUQv.mjs +210 -0
- package/dist/media-folders-ClIRLUQv.mjs.map +1 -0
- package/dist/media-url-DY_ijO3B.mjs +43 -0
- package/dist/media-url-DY_ijO3B.mjs.map +1 -0
- package/dist/media-usage-C4NolTpQ.mjs +1833 -0
- package/dist/media-usage-C4NolTpQ.mjs.map +1 -0
- package/dist/media-usage-activation-CAhmb14O.mjs +78 -0
- package/dist/media-usage-activation-CAhmb14O.mjs.map +1 -0
- package/dist/media-usage-work-Cu5DqewW.mjs +586 -0
- package/dist/media-usage-work-Cu5DqewW.mjs.map +1 -0
- package/dist/media-usage-work-DJr3rOEN.mjs +152 -0
- package/dist/media-usage-work-DJr3rOEN.mjs.map +1 -0
- package/dist/media-usage-write-fence-DW5oHT7q.mjs +42 -0
- package/dist/media-usage-write-fence-DW5oHT7q.mjs.map +1 -0
- package/dist/menus-DbgU9z5Q.mjs +3732 -0
- package/dist/menus-DbgU9z5Q.mjs.map +1 -0
- package/dist/menus-Wy8m5NcH.mjs +753 -0
- package/dist/menus-Wy8m5NcH.mjs.map +1 -0
- package/dist/migrations/index.d.mts +2 -2
- package/dist/migrations/index.d.mts.map +1 -1
- package/dist/migrations/index.mjs +6 -5
- package/dist/mime-CCYRC4r1.mjs +36 -0
- package/dist/mime-CCYRC4r1.mjs.map +1 -0
- package/dist/mode-CkmOhFqj.mjs +23 -0
- package/dist/mode-CkmOhFqj.mjs.map +1 -0
- package/dist/node-sqlite-compat-vpVaILnb.mjs +46 -0
- package/dist/node-sqlite-compat-vpVaILnb.mjs.map +1 -0
- package/dist/normalize-dChXQjwS.mjs +191 -0
- package/dist/normalize-dChXQjwS.mjs.map +1 -0
- package/dist/oauth-authorization-DZ-R-hmx.mjs +274 -0
- package/dist/oauth-authorization-DZ-R-hmx.mjs.map +1 -0
- package/dist/oauth-clients-BMPA8vjl.mjs +266 -0
- package/dist/oauth-clients-BMPA8vjl.mjs.map +1 -0
- package/dist/oauth-state-store-0gIdb48-.mjs +50 -0
- package/dist/oauth-state-store-0gIdb48-.mjs.map +1 -0
- package/dist/oauth-user-lookup-ChVW4UWu.mjs +26 -0
- package/dist/oauth-user-lookup-ChVW4UWu.mjs.map +1 -0
- package/dist/object-cache/memory.d.mts +1 -1
- package/dist/object-cache-DlSVbn5Y.mjs +534 -0
- package/dist/object-cache-DlSVbn5Y.mjs.map +1 -0
- package/dist/options-D5WcorD5.mjs +200 -0
- package/dist/options-D5WcorD5.mjs.map +1 -0
- package/dist/options-DAknChnw.d.mts +77 -0
- package/dist/options-DAknChnw.d.mts.map +1 -0
- package/dist/page/index.d.mts +2 -2
- package/dist/page/index.d.mts.map +1 -1
- package/dist/page/index.mjs +13 -0
- package/dist/page/index.mjs.map +1 -1
- package/dist/parse-Cr379Av9.mjs +81 -0
- package/dist/parse-Cr379Av9.mjs.map +1 -0
- package/dist/parse-tj9XLNO_.d.mts +165 -0
- package/dist/parse-tj9XLNO_.d.mts.map +1 -0
- package/dist/passkey-config-BD-wMaCf.mjs +46 -0
- package/dist/passkey-config-BD-wMaCf.mjs.map +1 -0
- package/dist/patterns-Do3iqi7N.mjs +145 -0
- package/dist/patterns-Do3iqi7N.mjs.map +1 -0
- package/dist/placeholder-CubPFn_L.d.mts +306 -0
- package/dist/placeholder-CubPFn_L.d.mts.map +1 -0
- package/dist/plugin-test-runtime.d.mts +97 -0
- package/dist/plugin-test-runtime.d.mts.map +1 -0
- package/dist/plugin-test-runtime.mjs +105 -0
- package/dist/plugin-types.d.mts +53 -15
- package/dist/plugin-types.d.mts.map +1 -1
- package/dist/plugin-types.mjs +18 -1
- package/dist/plugin-types.mjs.map +1 -0
- package/dist/plugin-utils.d.mts +12 -10
- package/dist/plugin-utils.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.d.mts +12 -10
- package/dist/plugins/adapt-sandbox-entry.d.mts.map +1 -1
- package/dist/plugins/adapt-sandbox-entry.mjs +18 -13
- package/dist/plugins/adapt-sandbox-entry.mjs.map +1 -1
- package/dist/plugins/host.d.mts +7 -0
- package/dist/plugins/host.mjs +45 -0
- package/dist/plugins/http-wire.d.mts +25 -0
- package/dist/plugins/http-wire.d.mts.map +1 -0
- package/dist/plugins/http-wire.mjs +148 -0
- package/dist/plugins/http-wire.mjs.map +1 -0
- package/dist/plugins/secret-redactor.d.mts +9 -0
- package/dist/plugins/secret-redactor.d.mts.map +1 -0
- package/dist/plugins/secret-redactor.mjs +51 -0
- package/dist/plugins/secret-redactor.mjs.map +1 -0
- package/dist/plugins-DHurtdXQ.mjs +277 -0
- package/dist/plugins-DHurtdXQ.mjs.map +1 -0
- package/dist/policy-lyZnjpwz.mjs +45 -0
- package/dist/policy-lyZnjpwz.mjs.map +1 -0
- package/dist/portable-text-oAwodbPS.mjs +286 -0
- package/dist/portable-text-oAwodbPS.mjs.map +1 -0
- package/dist/preview-Cup2bj8c.mjs +107 -0
- package/dist/preview-Cup2bj8c.mjs.map +1 -0
- package/dist/protocol-C1CNiKX4.d.mts +61 -0
- package/dist/protocol-C1CNiKX4.d.mts.map +1 -0
- package/dist/public-submission-Cs-pFMQK.mjs +245 -0
- package/dist/public-submission-Cs-pFMQK.mjs.map +1 -0
- package/dist/public-url-BWVHsfQv.mjs +101 -0
- package/dist/public-url-BWVHsfQv.mjs.map +1 -0
- package/dist/query-D-lxiOgn.mjs +890 -0
- package/dist/query-D-lxiOgn.mjs.map +1 -0
- package/dist/query-D7kHKOws.mjs +41 -0
- package/dist/query-D7kHKOws.mjs.map +1 -0
- package/dist/rate-limit-CqJn-w4h.mjs +120 -0
- package/dist/rate-limit-CqJn-w4h.mjs.map +1 -0
- package/dist/redirect-BrChFPIu.mjs +17 -0
- package/dist/redirect-BrChFPIu.mjs.map +1 -0
- package/dist/redirect-D2Yo-b6S.mjs +415 -0
- package/dist/redirect-D2Yo-b6S.mjs.map +1 -0
- package/dist/redirects-BCiTaIQ-.mjs +146 -0
- package/dist/redirects-BCiTaIQ-.mjs.map +1 -0
- package/dist/redirects-ByItliuu.mjs +644 -0
- package/dist/redirects-ByItliuu.mjs.map +1 -0
- package/dist/registry/testing.d.mts +14 -0
- package/dist/registry/testing.d.mts.map +1 -0
- package/dist/registry/testing.mjs +255 -0
- package/dist/registry/testing.mjs.map +1 -0
- package/dist/registry-CkuPoZs7.mjs +1222 -0
- package/dist/registry-CkuPoZs7.mjs.map +1 -0
- package/dist/relation-XTAtOpJO.mjs +334 -0
- package/dist/relation-XTAtOpJO.mjs.map +1 -0
- package/dist/relations-B4w-G5U9.mjs +309 -0
- package/dist/relations-B4w-G5U9.mjs.map +1 -0
- package/dist/relations-O63JWBRj.mjs +403 -0
- package/dist/relations-O63JWBRj.mjs.map +1 -0
- package/dist/request-cache-DaMhSQdx.mjs +104 -0
- package/dist/request-cache-DaMhSQdx.mjs.map +1 -0
- package/dist/request-context.d.mts +1 -1
- package/dist/request-meta-C8yl_sIs.mjs +141 -0
- package/dist/request-meta-C8yl_sIs.mjs.map +1 -0
- package/dist/resolve-BJIS8wKr.mjs +199 -0
- package/dist/resolve-BJIS8wKr.mjs.map +1 -0
- package/dist/route-wire-D66L2oaZ.mjs +197 -0
- package/dist/route-wire-D66L2oaZ.mjs.map +1 -0
- package/dist/routes-DYsTe-oR.mjs +321 -0
- package/dist/routes-DYsTe-oR.mjs.map +1 -0
- package/dist/runner-3gfxRsJG.d.mts +68 -0
- package/dist/runner-3gfxRsJG.d.mts.map +1 -0
- package/dist/runner-ClrleR8A.mjs +5502 -0
- package/dist/runner-ClrleR8A.mjs.map +1 -0
- package/dist/runtime.d.mts +13 -11
- package/dist/runtime.d.mts.map +1 -1
- package/dist/runtime.mjs +6 -5
- package/dist/runtime.mjs.map +1 -1
- package/dist/schema-CPhPM9Do.mjs +420 -0
- package/dist/schema-CPhPM9Do.mjs.map +1 -0
- package/dist/schema-DEERRrKS.mjs +9 -0
- package/dist/schema-DEERRrKS.mjs.map +1 -0
- package/dist/scopes-Bn8_rCSt.mjs +27 -0
- package/dist/scopes-Bn8_rCSt.mjs.map +1 -0
- package/dist/search-lami_Ota.mjs +448 -0
- package/dist/search-lami_Ota.mjs.map +1 -0
- package/dist/secrets-DNgVgz_e.mjs +341 -0
- package/dist/secrets-DNgVgz_e.mjs.map +1 -0
- package/dist/sections-BIpd4Cxf.mjs +346 -0
- package/dist/sections-BIpd4Cxf.mjs.map +1 -0
- package/dist/seed/index.d.mts +2 -2
- package/dist/seed/index.mjs +35 -31
- package/dist/seo/index.d.mts +3 -3
- package/dist/seo/index.d.mts.map +1 -1
- package/dist/seo/index.mjs +27 -26
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-BtU70b7l.mjs +114 -0
- package/dist/seo-BtU70b7l.mjs.map +1 -0
- package/dist/seo-_4qmazxz.mjs +133 -0
- package/dist/seo-_4qmazxz.mjs.map +1 -0
- package/dist/service-Bpy5iTX0.mjs +150 -0
- package/dist/service-Bpy5iTX0.mjs.map +1 -0
- package/dist/session-user-BQeS2Mrb.mjs +51 -0
- package/dist/session-user-BQeS2Mrb.mjs.map +1 -0
- package/dist/settings-DmroR53o.mjs +420 -0
- package/dist/settings-DmroR53o.mjs.map +1 -0
- package/dist/settings-g2F2a3Ub.mjs +51 -0
- package/dist/settings-g2F2a3Ub.mjs.map +1 -0
- package/dist/setup-complete-BrZaXpVV.mjs +26 -0
- package/dist/setup-complete-BrZaXpVV.mjs.map +1 -0
- package/dist/setup-nonce-Cb9-884O.mjs +25 -0
- package/dist/setup-nonce-Cb9-884O.mjs.map +1 -0
- package/dist/single-flight-cache-B5O2qhO1.mjs +104 -0
- package/dist/single-flight-cache-B5O2qhO1.mjs.map +1 -0
- package/dist/site-url-DjhYCaep.mjs +16 -0
- package/dist/site-url-DjhYCaep.mjs.map +1 -0
- package/dist/slugify-T5GHH42D.mjs +17 -0
- package/dist/slugify-T5GHH42D.mjs.map +1 -0
- package/dist/snapshot-C32Xuv3o.mjs +233 -0
- package/dist/snapshot-C32Xuv3o.mjs.map +1 -0
- package/dist/ssrf-Co1GGFZz.mjs +406 -0
- package/dist/ssrf-Co1GGFZz.mjs.map +1 -0
- package/dist/state-C7gCoiHr.mjs +153 -0
- package/dist/state-C7gCoiHr.mjs.map +1 -0
- package/dist/status-DLoBmcDz.mjs +30 -0
- package/dist/status-DLoBmcDz.mjs.map +1 -0
- package/dist/storage/local.d.mts +1 -1
- package/dist/storage/local.mjs +1 -1
- package/dist/storage/s3.d.mts +1 -1
- package/dist/storage/s3.mjs +1 -1
- package/dist/storage-query-CPctdMKX.d.mts +1519 -0
- package/dist/storage-query-CPctdMKX.d.mts.map +1 -0
- package/dist/target-CUKlGrXb.mjs +27 -0
- package/dist/target-CUKlGrXb.mjs.map +1 -0
- package/dist/taxonomies-BpqpXJUE.mjs +707 -0
- package/dist/taxonomies-BpqpXJUE.mjs.map +1 -0
- package/dist/taxonomies-ClCo4IGO.mjs +899 -0
- package/dist/taxonomies-ClCo4IGO.mjs.map +1 -0
- package/dist/taxonomy-Dj1vpw5E.mjs +508 -0
- package/dist/taxonomy-Dj1vpw5E.mjs.map +1 -0
- package/dist/tokens-Ns02GAma.mjs +171 -0
- package/dist/tokens-Ns02GAma.mjs.map +1 -0
- package/dist/transaction-BcJO4Tmc.mjs +29 -0
- package/dist/transaction-BcJO4Tmc.mjs.map +1 -0
- package/dist/transport-B8P1xsqk.mjs +136 -0
- package/dist/transport-B8P1xsqk.mjs.map +1 -0
- package/dist/transport-BLHZZcD_.d.mts +42 -0
- package/dist/transport-BLHZZcD_.d.mts.map +1 -0
- package/dist/trusted-proxy-Cg7SuD15.mjs +51 -0
- package/dist/trusted-proxy-Cg7SuD15.mjs.map +1 -0
- package/dist/turnstile-DWCSh_Qc.mjs +53 -0
- package/dist/turnstile-DWCSh_Qc.mjs.map +1 -0
- package/dist/types-B3RkqvDW.mjs +156 -0
- package/dist/types-B3RkqvDW.mjs.map +1 -0
- package/dist/types-BkUg2yHx.mjs +92 -0
- package/dist/types-BkUg2yHx.mjs.map +1 -0
- package/dist/types-BtuppOTV.mjs +16 -0
- package/dist/types-BtuppOTV.mjs.map +1 -0
- package/dist/types-CCR3ivXE.d.mts +363 -0
- package/dist/types-CCR3ivXE.d.mts.map +1 -0
- package/dist/types-CSHgU_-_.mjs +18 -0
- package/dist/types-CSHgU_-_.mjs.map +1 -0
- package/dist/types-CbwqGOXm.d.mts +766 -0
- package/dist/types-CbwqGOXm.d.mts.map +1 -0
- package/dist/types-D4RGIc2I.d.mts +198 -0
- package/dist/types-D4RGIc2I.d.mts.map +1 -0
- package/dist/types-DEHidMEk.d.mts +1637 -0
- package/dist/types-DEHidMEk.d.mts.map +1 -0
- package/dist/types-DQeU2SR7.d.mts +279 -0
- package/dist/types-DQeU2SR7.d.mts.map +1 -0
- package/dist/types-DxQWoQLA.d.mts +264 -0
- package/dist/types-DxQWoQLA.d.mts.map +1 -0
- package/dist/types-FBBnGZ2Y.d.mts +198 -0
- package/dist/types-FBBnGZ2Y.d.mts.map +1 -0
- package/dist/types-ZCnlropY.mjs +69 -0
- package/dist/types-ZCnlropY.mjs.map +1 -0
- package/dist/types-_Qtyawiy.d.mts +124 -0
- package/dist/types-_Qtyawiy.d.mts.map +1 -0
- package/dist/types-gC6FAoa_.d.mts +75 -0
- package/dist/types-gC6FAoa_.d.mts.map +1 -0
- package/dist/types-k--LneIF.mjs +22 -0
- package/dist/types-k--LneIF.mjs.map +1 -0
- package/dist/upload-attempts-2xdnoKGe.mjs +27 -0
- package/dist/upload-attempts-2xdnoKGe.mjs.map +1 -0
- package/dist/url-pattern-3m3reMzr.mjs +33 -0
- package/dist/url-pattern-3m3reMzr.mjs.map +1 -0
- package/dist/user-DroRntkx.mjs +171 -0
- package/dist/user-DroRntkx.mjs.map +1 -0
- package/dist/utils-CC2oNGV8.mjs +435 -0
- package/dist/utils-CC2oNGV8.mjs.map +1 -0
- package/dist/validate-BCP9HNDn.mjs +384 -0
- package/dist/validate-BCP9HNDn.mjs.map +1 -0
- package/dist/validate-CyQ7I3xF.d.mts +410 -0
- package/dist/validate-CyQ7I3xF.d.mts.map +1 -0
- package/dist/validate-DANX1-Qi.mjs +120 -0
- package/dist/validate-DANX1-Qi.mjs.map +1 -0
- package/dist/validation-DBy6WF94.mjs +216 -0
- package/dist/validation-DBy6WF94.mjs.map +1 -0
- package/dist/version-B57E4Uo7.mjs +7 -0
- package/dist/version-B57E4Uo7.mjs.map +1 -0
- package/dist/widgets-wQ7Xcgq8.mjs +126 -0
- package/dist/widgets-wQ7Xcgq8.mjs.map +1 -0
- package/dist/wxr-taxonomies-DIHfvEDt.mjs +406 -0
- package/dist/wxr-taxonomies-DIHfvEDt.mjs.map +1 -0
- package/dist/wxr-taxonomies-DU2ZSiGc.d.mts +34 -0
- package/dist/wxr-taxonomies-DU2ZSiGc.d.mts.map +1 -0
- package/dist/zod-generator-D_yHIWfs.mjs +329 -0
- package/dist/zod-generator-D_yHIWfs.mjs.map +1 -0
- package/package.json +39 -12
- package/src/api/errors.ts +23 -0
- package/src/api/handlers/backup.ts +11 -5
- package/src/api/handlers/content.ts +226 -85
- package/src/api/handlers/dashboard.ts +31 -1
- package/src/api/handlers/entry-lock.ts +206 -0
- package/src/api/handlers/index.ts +3 -0
- package/src/api/handlers/manifest.ts +5 -6
- package/src/api/handlers/marketplace.ts +126 -34
- package/src/api/handlers/media-upload.ts +31 -4
- package/src/api/handlers/menus.ts +9 -0
- package/src/api/handlers/plugin-settings.ts +35 -3
- package/src/api/handlers/redirects.ts +221 -138
- package/src/api/handlers/registry.ts +75 -29
- package/src/api/handlers/revision.ts +16 -27
- package/src/api/handlers/seo.ts +10 -1
- package/src/api/handlers/snapshot.ts +87 -72
- package/src/api/handlers/taxonomies.ts +79 -5
- package/src/api/handlers/validation.ts +120 -19
- package/src/api/openapi/document.ts +133 -11
- package/src/api/schemas/content.ts +32 -12
- package/src/api/schemas/entry-lock.ts +57 -0
- package/src/api/schemas/index.ts +1 -0
- package/src/api/schemas/schema.ts +10 -1
- package/src/api/schemas/search.ts +4 -0
- package/src/api/types.ts +4 -0
- package/src/astro/integration/index.ts +22 -6
- package/src/astro/integration/routes.ts +89 -0
- package/src/astro/integration/runtime.ts +40 -24
- package/src/astro/integration/virtual-modules.ts +4 -0
- package/src/astro/integration/vite-config.ts +31 -0
- package/src/astro/middleware/auth.ts +25 -4
- package/src/astro/middleware/request-context.ts +28 -10
- package/src/astro/middleware.ts +33 -1
- package/src/astro/prefetch.ts +2 -2
- package/src/astro/routes/api/admin/comments/[id]/status.ts +22 -58
- package/src/astro/routes/api/admin/plugins/[id]/disable.ts +2 -15
- package/src/astro/routes/api/admin/plugins/[id]/enable.ts +2 -25
- package/src/astro/routes/api/admin/plugins/[id]/uninstall.ts +1 -0
- package/src/astro/routes/api/admin/plugins/[id]/update.ts +23 -4
- package/src/astro/routes/api/admin/plugins/marketplace/[id]/install.ts +12 -2
- package/src/astro/routes/api/admin/plugins/registry/[id]/uninstall.ts +1 -0
- package/src/astro/routes/api/admin/plugins/registry/[id]/update.ts +29 -10
- package/src/astro/routes/api/admin/plugins/registry/artifact.ts +8 -2
- package/src/astro/routes/api/admin/plugins/registry/install.ts +15 -4
- package/src/astro/routes/api/admin/plugins/registry/verify.ts +2 -1
- package/src/astro/routes/api/admin/plugins/updates.ts +6 -1
- package/src/astro/routes/api/admin/scheduled-policy-rejections/[collection]/[id].ts +34 -0
- package/src/astro/routes/api/comments/[collection]/[contentId]/index.ts +4 -259
- package/src/astro/routes/api/content/[collection]/[id]/discard-draft.ts +10 -0
- package/src/astro/routes/api/content/[collection]/[id]/lock.ts +133 -0
- package/src/astro/routes/api/content/[collection]/[id]/plugin-extensions/[pluginId]/[kind]/[extensionId].ts +29 -0
- package/src/astro/routes/api/content/[collection]/[id]/publish.ts +21 -4
- package/src/astro/routes/api/content/[collection]/[id]/schedule.ts +30 -1
- package/src/astro/routes/api/content/[collection]/[id]/unpublish.ts +15 -1
- package/src/astro/routes/api/content/[collection]/[id].ts +27 -2
- package/src/astro/routes/api/content/[collection]/index.ts +3 -0
- package/src/astro/routes/api/health.ts +23 -0
- package/src/astro/routes/api/manifest.ts +14 -4
- package/src/astro/routes/api/mcp.ts +2 -1
- package/src/astro/routes/api/media/asset/[id]/[filename].ts +50 -0
- package/src/astro/routes/api/plugins/[pluginId]/[...path].ts +13 -81
- package/src/astro/routes/api/redirects/[id].ts +0 -3
- package/src/astro/routes/api/redirects/index.ts +0 -2
- package/src/astro/routes/api/search/index.ts +1 -0
- package/src/astro/routes/api/visual-editing/action-token.ts +36 -0
- package/src/astro/routes/api/visual-editing/content/[collection]/[id]/publish.ts +32 -0
- package/src/astro/routes/api/visual-editing/toolbar-labels.ts +16 -0
- package/src/astro/routes/sitemap-[collection].xml.ts +11 -4
- package/src/astro/types.ts +83 -12
- package/src/cli/commands/bundle-utils.ts +19 -19
- package/src/cli/commands/bundle.ts +9 -6
- package/src/cli/commands/content.ts +32 -6
- package/src/cli/commands/doctor.ts +25 -0
- package/src/cli/commands/export-seed.ts +195 -56
- package/src/cli/commands/migrate.ts +71 -23
- package/src/cli/commands/publish.ts +2 -2
- package/src/client/index.ts +34 -7
- package/src/comments/public-submission.ts +246 -0
- package/src/comments/service.ts +59 -12
- package/src/components/EmDashBodyEnd.astro +4 -1
- package/src/components/EmDashBodyStart.astro +4 -1
- package/src/components/EmDashHead.astro +36 -16
- package/src/components/Gallery.astro +18 -4
- package/src/components/InlineEditor.astro +3 -1
- package/src/components/InlinePortableTextEditor.tsx +106 -11
- package/src/components/PortableText.astro +4 -0
- package/src/components/Table.astro +147 -62
- package/src/components/widgets/Archives.astro +6 -5
- package/src/config/errors.ts +13 -0
- package/src/config/secrets.ts +25 -11
- package/src/content/converters/portable-text-to-prosemirror.ts +26 -2
- package/src/content/converters/prosemirror-to-portable-text.ts +35 -6
- package/src/content/converters/types.ts +10 -0
- package/src/content/known-fields.ts +44 -0
- package/src/database/connection.ts +5 -1
- package/src/database/content-datetime.ts +123 -0
- package/src/database/datetime-storage.ts +452 -0
- package/src/database/dialect-helpers.ts +161 -1
- package/src/database/migration-lock.ts +140 -0
- package/src/database/migrations/075_entry_edit_locks.ts +44 -0
- package/src/database/migrations/076_collection_nav_group.ts +22 -0
- package/src/database/migrations/077_plugin_storage_revisions.ts +89 -0
- package/src/database/migrations/078_menu_item_translation_groups.ts +15 -0
- package/src/database/migrations/079_datetime_normalization.ts +13 -0
- package/src/database/migrations/080_content_translation_locale_unique.ts +88 -0
- package/src/database/migrations/081_redirect_write_guards.ts +257 -0
- package/src/database/migrations/082_taxonomy_translation_locale_unique.ts +49 -0
- package/src/database/migrations/runner.ts +63 -15
- package/src/database/pg-migration-lock.ts +2 -2
- package/src/database/repositories/byline.ts +9 -0
- package/src/database/repositories/comment.ts +86 -0
- package/src/database/repositories/content.ts +560 -69
- package/src/database/repositories/entry-locks.ts +257 -0
- package/src/database/repositories/media.ts +35 -4
- package/src/database/repositories/menu.ts +1 -0
- package/src/database/repositories/options.ts +113 -7
- package/src/database/repositories/plugin-storage.ts +159 -0
- package/src/database/repositories/redirect.ts +262 -56
- package/src/database/repositories/revision.ts +116 -17
- package/src/database/repositories/taxonomy.ts +42 -0
- package/src/database/repositories/types.ts +5 -0
- package/src/database/types.ts +26 -1
- package/src/datetime-normalization.ts +311 -0
- package/src/db/node-sqlite-compat.ts +3 -2
- package/src/emdash-runtime.ts +1994 -424
- package/src/fields/image.ts +2 -0
- package/src/i18n/config.ts +6 -6
- package/src/i18n/resolve.ts +98 -15
- package/src/index.ts +101 -0
- package/src/loader.ts +49 -4
- package/src/mcp/server.ts +216 -68
- package/src/media/responsive.ts +23 -0
- package/src/media/usage/content-refresh.ts +2 -1
- package/src/media/usage/extractor.ts +50 -15
- package/src/media/usage/types.ts +1 -1
- package/src/menus/index.ts +64 -35
- package/src/migrations/direct-executor.ts +40 -2
- package/src/migrations/index.ts +1 -0
- package/src/migrations/protocol.ts +11 -1
- package/src/page/seo-contributions.ts +78 -1
- package/src/page/seo-panel.ts +47 -0
- package/src/plugin-test-runtime.ts +17 -0
- package/src/plugin-types.ts +128 -21
- package/src/plugins/adapt-sandbox-entry.ts +34 -27
- package/src/plugins/conditional-storage.ts +30 -0
- package/src/plugins/content-access.ts +170 -0
- package/src/plugins/content-policy.ts +74 -0
- package/src/plugins/context.ts +790 -166
- package/src/plugins/cron.ts +18 -10
- package/src/plugins/define-plugin.ts +55 -54
- package/src/plugins/editor-draft.ts +257 -0
- package/src/plugins/hooks.ts +136 -3
- package/src/plugins/host.ts +29 -0
- package/src/plugins/http-route-dispatch.ts +389 -0
- package/src/plugins/http-wire.ts +180 -0
- package/src/plugins/index.ts +97 -3
- package/src/plugins/install-finalization.ts +77 -0
- package/src/plugins/lifecycle.ts +47 -0
- package/src/plugins/manager.ts +5 -2
- package/src/plugins/manifest-schema.ts +314 -58
- package/src/plugins/media.ts +166 -0
- package/src/plugins/request-meta.ts +12 -2
- package/src/plugins/route-wire.ts +304 -0
- package/src/plugins/routes.ts +38 -5
- package/src/plugins/sandbox/index.ts +4 -0
- package/src/plugins/sandbox/proxy.ts +129 -0
- package/src/plugins/sandbox/types.ts +83 -7
- package/src/plugins/secret-redactor.ts +65 -0
- package/src/plugins/settings.ts +303 -0
- package/src/plugins/state.ts +26 -0
- package/src/plugins/storage-query.ts +45 -0
- package/src/plugins/storage-update.ts +96 -0
- package/src/plugins/types.ts +602 -15
- package/src/query.ts +84 -4
- package/src/registry/authoritative-records.ts +26 -0
- package/src/registry/config.ts +182 -31
- package/src/registry/testing.ts +100 -0
- package/src/registry/types.ts +12 -70
- package/src/scheduled-publish.ts +70 -3
- package/src/schema/collection-slugs-cache.ts +157 -0
- package/src/schema/index.ts +1 -0
- package/src/schema/registry.ts +64 -1
- package/src/schema/types.ts +32 -6
- package/src/schema/zod-generator.ts +5 -13
- package/src/search/fts-manager.ts +3 -3
- package/src/search/query.ts +32 -5
- package/src/search/types.ts +8 -0
- package/src/security/ssrf.ts +167 -141
- package/src/seed/apply.ts +41 -3
- package/src/seed/types.ts +13 -3
- package/src/seed/validate.ts +18 -1
- package/src/seo/hreflang.ts +10 -6
- package/src/seo/index.ts +5 -10
- package/src/seo/media-url.ts +26 -0
- package/src/settings/index.ts +53 -11
- package/src/taxonomies/term-counts.ts +22 -5
- package/src/visual-editing/action-token.ts +31 -0
- package/src/visual-editing/toolbar-bootstrap.ts +31 -6
- package/src/visual-editing/toolbar.ts +103 -12
- package/src/widgets/archives.ts +10 -9
- package/src/widgets/index.ts +11 -1
- package/dist/activation-K0kGBWuJ.mjs +0 -382
- package/dist/activation-K0kGBWuJ.mjs.map +0 -1
- package/dist/adapters-BDQwg236.d.mts +0 -171
- package/dist/adapters-BDQwg236.d.mts.map +0 -1
- package/dist/after-CBU2vkoO.mjs +0 -96
- package/dist/after-CBU2vkoO.mjs.map +0 -1
- package/dist/allowed-origins-BGglilcs.mjs +0 -116
- package/dist/allowed-origins-BGglilcs.mjs.map +0 -1
- package/dist/api-Dz6rgoa3.mjs +0 -10040
- package/dist/api-Dz6rgoa3.mjs.map +0 -1
- package/dist/api-tokens-BSsQACNe.mjs +0 -163
- package/dist/api-tokens-BSsQACNe.mjs.map +0 -1
- package/dist/apply-B4SIOxR1.mjs +0 -980
- package/dist/apply-B4SIOxR1.mjs.map +0 -1
- package/dist/authorize-Bkf_UHhD.mjs +0 -40
- package/dist/authorize-Bkf_UHhD.mjs.map +0 -1
- package/dist/backup-rwVAl9NI.mjs +0 -241
- package/dist/backup-rwVAl9NI.mjs.map +0 -1
- package/dist/base64-CvLhUKQv.mjs +0 -63
- package/dist/base64-CvLhUKQv.mjs.map +0 -1
- package/dist/bundle-C8S2Zl6U.mjs +0 -663
- package/dist/bundle-C8S2Zl6U.mjs.map +0 -1
- package/dist/byline-DuhF7NWl.mjs +0 -902
- package/dist/byline-DuhF7NWl.mjs.map +0 -1
- package/dist/byline-fields-BovY4KYM.mjs +0 -123
- package/dist/byline-fields-BovY4KYM.mjs.map +0 -1
- package/dist/byline-registry-Bpu9-MVs.mjs +0 -406
- package/dist/byline-registry-Bpu9-MVs.mjs.map +0 -1
- package/dist/bylines-CJ5nd6Lw.mjs +0 -232
- package/dist/bylines-CJ5nd6Lw.mjs.map +0 -1
- package/dist/bylines-RwBAeOF1.mjs +0 -214
- package/dist/bylines-RwBAeOF1.mjs.map +0 -1
- package/dist/cache-BF5Kvn59.mjs +0 -108
- package/dist/cache-BF5Kvn59.mjs.map +0 -1
- package/dist/capture-triggers-CNW1q3HK.mjs +0 -362
- package/dist/capture-triggers-CNW1q3HK.mjs.map +0 -1
- package/dist/challenge-store-DQN_Yrck.mjs +0 -51
- package/dist/challenge-store-DQN_Yrck.mjs.map +0 -1
- package/dist/chrome-tags-D8fiZG94.mjs +0 -24
- package/dist/chrome-tags-D8fiZG94.mjs.map +0 -1
- package/dist/chunks-C4szrD8o.mjs +0 -25
- package/dist/chunks-C4szrD8o.mjs.map +0 -1
- package/dist/collection-deletion-Bj07NHbj.mjs +0 -436
- package/dist/collection-deletion-Bj07NHbj.mjs.map +0 -1
- package/dist/comment-reaction-BhrvSHml.mjs +0 -85
- package/dist/comment-reaction-BhrvSHml.mjs.map +0 -1
- package/dist/comment-vxOzWbZN.mjs +0 -255
- package/dist/comment-vxOzWbZN.mjs.map +0 -1
- package/dist/comments-Ct4ensnf.mjs +0 -204
- package/dist/comments-Ct4ensnf.mjs.map +0 -1
- package/dist/components-DJbo1z0S.mjs +0 -108
- package/dist/components-DJbo1z0S.mjs.map +0 -1
- package/dist/config-B9eZ340f.d.mts +0 -34
- package/dist/config-B9eZ340f.d.mts.map +0 -1
- package/dist/config-C3EBstHi.mjs +0 -72
- package/dist/config-C3EBstHi.mjs.map +0 -1
- package/dist/config-it29yDLA.mjs +0 -1163
- package/dist/config-it29yDLA.mjs.map +0 -1
- package/dist/content-DjvM0T92.mjs +0 -1725
- package/dist/content-DjvM0T92.mjs.map +0 -1
- package/dist/content-list-query-Btqd4uV2.d.mts +0 -26
- package/dist/content-list-query-Btqd4uV2.d.mts.map +0 -1
- package/dist/content-refresh-Bwp-8yGy.mjs +0 -3588
- package/dist/content-refresh-Bwp-8yGy.mjs.map +0 -1
- package/dist/content-repair-Czdp7jz5.mjs +0 -440
- package/dist/content-repair-Czdp7jz5.mjs.map +0 -1
- package/dist/context-CX6gxOLW.mjs +0 -1068
- package/dist/context-CX6gxOLW.mjs.map +0 -1
- package/dist/cron-C6o7VppJ.mjs +0 -277
- package/dist/cron-C6o7VppJ.mjs.map +0 -1
- package/dist/dashboard-C2kTeeRI.mjs +0 -140
- package/dist/dashboard-C2kTeeRI.mjs.map +0 -1
- package/dist/db-errors-Cl-sKYTm.mjs +0 -55
- package/dist/db-errors-Cl-sKYTm.mjs.map +0 -1
- package/dist/default-Clra32mw.mjs +0 -81
- package/dist/default-Clra32mw.mjs.map +0 -1
- package/dist/deferred-tasks-CvDETTJO.d.mts +0 -9
- package/dist/deferred-tasks-CvDETTJO.d.mts.map +0 -1
- package/dist/dev-typegen-DzOPfsNj.mjs +0 -29
- package/dist/dev-typegen-DzOPfsNj.mjs.map +0 -1
- package/dist/device-flow-D2oCWvLJ.mjs +0 -466
- package/dist/device-flow-D2oCWvLJ.mjs.map +0 -1
- package/dist/dialect-helpers-BSbfaO3F.mjs +0 -202
- package/dist/dialect-helpers-BSbfaO3F.mjs.map +0 -1
- package/dist/direct-executor-Bfa5_ToE.mjs +0 -85
- package/dist/direct-executor-Bfa5_ToE.mjs.map +0 -1
- package/dist/dist-89xCrGqi.mjs +0 -810
- package/dist/dist-89xCrGqi.mjs.map +0 -1
- package/dist/email-console-Dzb6uGYa.mjs +0 -50
- package/dist/email-console-Dzb6uGYa.mjs.map +0 -1
- package/dist/enrich-BX0IDp4z.mjs +0 -194
- package/dist/enrich-BX0IDp4z.mjs.map +0 -1
- package/dist/error-DFrQjppn.mjs +0 -90
- package/dist/error-DFrQjppn.mjs.map +0 -1
- package/dist/errors-DsVoDUjJ.mjs +0 -427
- package/dist/errors-DsVoDUjJ.mjs.map +0 -1
- package/dist/escape-HmHTC1Is.mjs +0 -9
- package/dist/escape-HmHTC1Is.mjs.map +0 -1
- package/dist/field-defs-cache-BM4SIRqH.mjs +0 -77
- package/dist/field-defs-cache-BM4SIRqH.mjs.map +0 -1
- package/dist/focal-point-BeWFo6Xx.mjs +0 -23
- package/dist/focal-point-BeWFo6Xx.mjs.map +0 -1
- package/dist/fts-manager-Do1BlW2r.mjs +0 -413
- package/dist/fts-manager-Do1BlW2r.mjs.map +0 -1
- package/dist/hash-3JJPlHF2.mjs +0 -37
- package/dist/hash-3JJPlHF2.mjs.map +0 -1
- package/dist/hook-result-DCh2WUpe.d.mts +0 -31
- package/dist/hook-result-DCh2WUpe.d.mts.map +0 -1
- package/dist/hreflang-B6hbAuuO.d.mts +0 -48
- package/dist/hreflang-B6hbAuuO.d.mts.map +0 -1
- package/dist/hreflang-DQbPZliA.mjs +0 -102
- package/dist/hreflang-DQbPZliA.mjs.map +0 -1
- package/dist/identity-DksvEazf.mjs +0 -35
- package/dist/identity-DksvEazf.mjs.map +0 -1
- package/dist/import-CJpaBBBT.mjs +0 -2020
- package/dist/import-CJpaBBBT.mjs.map +0 -1
- package/dist/index-BJNMCWmu.d.mts +0 -6562
- package/dist/index-BJNMCWmu.d.mts.map +0 -1
- package/dist/index-Du8K7bWa.d.mts +0 -278
- package/dist/index-Du8K7bWa.d.mts.map +0 -1
- package/dist/init-lock-DJkX6Hto.mjs +0 -56
- package/dist/init-lock-DJkX6Hto.mjs.map +0 -1
- package/dist/load-CawHjTOH.mjs +0 -28
- package/dist/load-CawHjTOH.mjs.map +0 -1
- package/dist/loader-Z8vl7zTq.mjs +0 -966
- package/dist/loader-Z8vl7zTq.mjs.map +0 -1
- package/dist/manifest-builder-COtzuca2.mjs +0 -189
- package/dist/manifest-builder-COtzuca2.mjs.map +0 -1
- package/dist/manifest-schema-BNWwR8Vd.mjs +0 -301
- package/dist/manifest-schema-BNWwR8Vd.mjs.map +0 -1
- package/dist/media-BBm8Wg3f.mjs +0 -318
- package/dist/media-BBm8Wg3f.mjs.map +0 -1
- package/dist/media-BHjus86Y.mjs +0 -464
- package/dist/media-BHjus86Y.mjs.map +0 -1
- package/dist/media-allowlist-CoTBWoDp.mjs +0 -44
- package/dist/media-allowlist-CoTBWoDp.mjs.map +0 -1
- package/dist/media-folders-BGkATs8n.mjs +0 -210
- package/dist/media-folders-BGkATs8n.mjs.map +0 -1
- package/dist/media-upload-BCidR-EY.mjs +0 -147
- package/dist/media-upload-BCidR-EY.mjs.map +0 -1
- package/dist/media-url-DHoPr0hq.mjs +0 -26
- package/dist/media-url-DHoPr0hq.mjs.map +0 -1
- package/dist/media-usage-CdY5jhSR.mjs +0 -1833
- package/dist/media-usage-CdY5jhSR.mjs.map +0 -1
- package/dist/media-usage-activation-BgeMtK5C.mjs +0 -78
- package/dist/media-usage-activation-BgeMtK5C.mjs.map +0 -1
- package/dist/media-usage-work-CnGCdHxx.mjs +0 -152
- package/dist/media-usage-work-CnGCdHxx.mjs.map +0 -1
- package/dist/media-usage-work-D6D9sMCA.mjs +0 -586
- package/dist/media-usage-work-D6D9sMCA.mjs.map +0 -1
- package/dist/media-usage-write-fence-hjeD4u7s.mjs +0 -42
- package/dist/media-usage-write-fence-hjeD4u7s.mjs.map +0 -1
- package/dist/menus-6qSwTNxG.mjs +0 -4010
- package/dist/menus-6qSwTNxG.mjs.map +0 -1
- package/dist/menus-uvPLXMZf.mjs +0 -744
- package/dist/menus-uvPLXMZf.mjs.map +0 -1
- package/dist/mime-CUIG6x84.mjs +0 -36
- package/dist/mime-CUIG6x84.mjs.map +0 -1
- package/dist/mode-DN_WneRx.mjs +0 -23
- package/dist/mode-DN_WneRx.mjs.map +0 -1
- package/dist/node-sqlite-compat-BuJXIeMz.mjs +0 -46
- package/dist/node-sqlite-compat-BuJXIeMz.mjs.map +0 -1
- package/dist/normalize-C2xNjTSG.mjs +0 -191
- package/dist/normalize-C2xNjTSG.mjs.map +0 -1
- package/dist/oauth-authorization-Dj6Kwc21.mjs +0 -274
- package/dist/oauth-authorization-Dj6Kwc21.mjs.map +0 -1
- package/dist/oauth-clients-FD7I0J8m.mjs +0 -266
- package/dist/oauth-clients-FD7I0J8m.mjs.map +0 -1
- package/dist/oauth-state-store-DkmDOmHs.mjs +0 -50
- package/dist/oauth-state-store-DkmDOmHs.mjs.map +0 -1
- package/dist/oauth-user-lookup-CvIwGpYd.mjs +0 -26
- package/dist/oauth-user-lookup-CvIwGpYd.mjs.map +0 -1
- package/dist/object-cache-DVKnyOfy.mjs +0 -534
- package/dist/object-cache-DVKnyOfy.mjs.map +0 -1
- package/dist/options-BHPeIbBd.mjs +0 -117
- package/dist/options-BHPeIbBd.mjs.map +0 -1
- package/dist/options-CYb4y7hM.d.mts +0 -221
- package/dist/options-CYb4y7hM.d.mts.map +0 -1
- package/dist/parse-Ckpg-Qfp.mjs +0 -81
- package/dist/parse-Ckpg-Qfp.mjs.map +0 -1
- package/dist/passkey-config-O_lj3y0k.mjs +0 -46
- package/dist/passkey-config-O_lj3y0k.mjs.map +0 -1
- package/dist/patterns-D9iDO3j8.mjs +0 -145
- package/dist/patterns-D9iDO3j8.mjs.map +0 -1
- package/dist/placeholder-4X9BrRrp.d.mts +0 -306
- package/dist/placeholder-4X9BrRrp.d.mts.map +0 -1
- package/dist/policy-Dhtwntrt.mjs +0 -45
- package/dist/policy-Dhtwntrt.mjs.map +0 -1
- package/dist/portable-text-U85hOafW.mjs +0 -286
- package/dist/portable-text-U85hOafW.mjs.map +0 -1
- package/dist/preview-B_vJLvf8.mjs +0 -107
- package/dist/preview-B_vJLvf8.mjs.map +0 -1
- package/dist/protocol-JdD2YhY9.d.mts +0 -52
- package/dist/protocol-JdD2YhY9.d.mts.map +0 -1
- package/dist/public-url-CarhZJgf.mjs +0 -101
- package/dist/public-url-CarhZJgf.mjs.map +0 -1
- package/dist/query-BZKZcG5b.mjs +0 -881
- package/dist/query-BZKZcG5b.mjs.map +0 -1
- package/dist/query-BndaFxxp.mjs +0 -41
- package/dist/query-BndaFxxp.mjs.map +0 -1
- package/dist/rate-limit-BZmATC6W.mjs +0 -120
- package/dist/rate-limit-BZmATC6W.mjs.map +0 -1
- package/dist/redirect-CZkbozu9.mjs +0 -313
- package/dist/redirect-CZkbozu9.mjs.map +0 -1
- package/dist/redirect-CzqnLxK-.mjs +0 -17
- package/dist/redirect-CzqnLxK-.mjs.map +0 -1
- package/dist/redirects-BLNOWQTn.mjs +0 -1238
- package/dist/redirects-BLNOWQTn.mjs.map +0 -1
- package/dist/redirects-CqzNM0KM.mjs +0 -579
- package/dist/redirects-CqzNM0KM.mjs.map +0 -1
- package/dist/registry-AZAsRsor.mjs +0 -1179
- package/dist/registry-AZAsRsor.mjs.map +0 -1
- package/dist/relation-04DfKRTO.mjs +0 -334
- package/dist/relation-04DfKRTO.mjs.map +0 -1
- package/dist/relations-C4htk5sb.mjs +0 -309
- package/dist/relations-C4htk5sb.mjs.map +0 -1
- package/dist/relations-CcFwDJdJ.mjs +0 -403
- package/dist/relations-CcFwDJdJ.mjs.map +0 -1
- package/dist/relations-DnRK4YIT.d.mts +0 -3354
- package/dist/relations-DnRK4YIT.d.mts.map +0 -1
- package/dist/request-cache-DH9zdCOD.mjs +0 -104
- package/dist/request-cache-DH9zdCOD.mjs.map +0 -1
- package/dist/request-meta-DYxLlnmz.mjs +0 -140
- package/dist/request-meta-DYxLlnmz.mjs.map +0 -1
- package/dist/resolve-prZ3mP7l.mjs +0 -143
- package/dist/resolve-prZ3mP7l.mjs.map +0 -1
- package/dist/runner-BLIDKpmA.mjs +0 -4676
- package/dist/runner-BLIDKpmA.mjs.map +0 -1
- package/dist/runner-YKfIMnaF.d.mts +0 -67
- package/dist/runner-YKfIMnaF.d.mts.map +0 -1
- package/dist/schema-CGnBeLiW.mjs +0 -9
- package/dist/schema-CGnBeLiW.mjs.map +0 -1
- package/dist/schema-DYr-Vd-L.mjs +0 -420
- package/dist/schema-DYr-Vd-L.mjs.map +0 -1
- package/dist/scopes-BhWvBavj.mjs +0 -27
- package/dist/scopes-BhWvBavj.mjs.map +0 -1
- package/dist/search-C-qDk4kx.mjs +0 -439
- package/dist/search-C-qDk4kx.mjs.map +0 -1
- package/dist/secrets-rEtHt-6z.mjs +0 -330
- package/dist/secrets-rEtHt-6z.mjs.map +0 -1
- package/dist/sections-B_nYvlwn.mjs +0 -346
- package/dist/sections-B_nYvlwn.mjs.map +0 -1
- package/dist/seo-926NRIgt.mjs +0 -133
- package/dist/seo-926NRIgt.mjs.map +0 -1
- package/dist/seo-CVWkdv6x.mjs +0 -113
- package/dist/seo-CVWkdv6x.mjs.map +0 -1
- package/dist/service-CJl3ZAYs.mjs +0 -195
- package/dist/service-CJl3ZAYs.mjs.map +0 -1
- package/dist/session-user-BlMgqCHS.mjs +0 -51
- package/dist/session-user-BlMgqCHS.mjs.map +0 -1
- package/dist/settings--wobrkkC.mjs +0 -258
- package/dist/settings--wobrkkC.mjs.map +0 -1
- package/dist/settings-Cwm6o2jY.mjs +0 -51
- package/dist/settings-Cwm6o2jY.mjs.map +0 -1
- package/dist/setup-complete-DQbClIN2.mjs +0 -26
- package/dist/setup-complete-DQbClIN2.mjs.map +0 -1
- package/dist/setup-nonce-DZCFS2sn.mjs +0 -25
- package/dist/setup-nonce-DZCFS2sn.mjs.map +0 -1
- package/dist/single-flight-cache-BPuGPdcN.mjs +0 -104
- package/dist/single-flight-cache-BPuGPdcN.mjs.map +0 -1
- package/dist/site-url-BrxA_E9H.mjs +0 -16
- package/dist/site-url-BrxA_E9H.mjs.map +0 -1
- package/dist/slugify-B994zkXC.mjs +0 -17
- package/dist/slugify-B994zkXC.mjs.map +0 -1
- package/dist/snapshot--OCDTqdb.mjs +0 -216
- package/dist/snapshot--OCDTqdb.mjs.map +0 -1
- package/dist/ssrf-5sIM5jzl.mjs +0 -349
- package/dist/ssrf-5sIM5jzl.mjs.map +0 -1
- package/dist/state-BpFVsJZB.mjs +0 -136
- package/dist/state-BpFVsJZB.mjs.map +0 -1
- package/dist/status-B777-dXz.mjs +0 -30
- package/dist/status-B777-dXz.mjs.map +0 -1
- package/dist/target-BmR0iTwz.mjs +0 -27
- package/dist/target-BmR0iTwz.mjs.map +0 -1
- package/dist/taxonomies-DkAkMupr.mjs +0 -837
- package/dist/taxonomies-DkAkMupr.mjs.map +0 -1
- package/dist/taxonomies-Wfy_Lg12.mjs +0 -698
- package/dist/taxonomies-Wfy_Lg12.mjs.map +0 -1
- package/dist/taxonomy-tJepplLL.mjs +0 -484
- package/dist/taxonomy-tJepplLL.mjs.map +0 -1
- package/dist/tokens-BCO1oruF.mjs +0 -171
- package/dist/tokens-BCO1oruF.mjs.map +0 -1
- package/dist/transaction-0KOpOyMu.mjs +0 -29
- package/dist/transaction-0KOpOyMu.mjs.map +0 -1
- package/dist/transport-Dr3qtwXC.mjs +0 -136
- package/dist/transport-Dr3qtwXC.mjs.map +0 -1
- package/dist/transport-xh6YKW2G.d.mts +0 -42
- package/dist/transport-xh6YKW2G.d.mts.map +0 -1
- package/dist/trusted-proxy-BR5F1Otp.mjs +0 -51
- package/dist/trusted-proxy-BR5F1Otp.mjs.map +0 -1
- package/dist/types-3qNFPlci.mjs +0 -16
- package/dist/types-3qNFPlci.mjs.map +0 -1
- package/dist/types-75KIqzL9.mjs +0 -142
- package/dist/types-75KIqzL9.mjs.map +0 -1
- package/dist/types-B6GrPic4.d.mts +0 -1335
- package/dist/types-B6GrPic4.d.mts.map +0 -1
- package/dist/types-BuHW4xDE.d.mts +0 -259
- package/dist/types-BuHW4xDE.d.mts.map +0 -1
- package/dist/types-C00oyCZp.d.mts +0 -198
- package/dist/types-C00oyCZp.d.mts.map +0 -1
- package/dist/types-CDtkNSFQ.d.mts +0 -75
- package/dist/types-CDtkNSFQ.d.mts.map +0 -1
- package/dist/types-CPeXo1wF.d.mts +0 -124
- package/dist/types-CPeXo1wF.d.mts.map +0 -1
- package/dist/types-CQPWhPxE.mjs +0 -92
- package/dist/types-CQPWhPxE.mjs.map +0 -1
- package/dist/types-CXFkwEGC.d.mts +0 -198
- package/dist/types-CXFkwEGC.d.mts.map +0 -1
- package/dist/types-DM3vioBY.mjs +0 -18
- package/dist/types-DM3vioBY.mjs.map +0 -1
- package/dist/types-DczELMop.d.mts +0 -363
- package/dist/types-DczELMop.d.mts.map +0 -1
- package/dist/types-DfuTR6dL.mjs +0 -3
- package/dist/types-FV23hEoW.d.mts +0 -743
- package/dist/types-FV23hEoW.d.mts.map +0 -1
- package/dist/types-xDMtUFnO.d.mts +0 -257
- package/dist/types-xDMtUFnO.d.mts.map +0 -1
- package/dist/upload-attempts-BsqoQ1fn.mjs +0 -27
- package/dist/upload-attempts-BsqoQ1fn.mjs.map +0 -1
- package/dist/url-pattern-D4c2czpJ.mjs +0 -33
- package/dist/url-pattern-D4c2czpJ.mjs.map +0 -1
- package/dist/user-BTZ40aq6.mjs +0 -171
- package/dist/user-BTZ40aq6.mjs.map +0 -1
- package/dist/utils-BKvNjjhY.mjs +0 -435
- package/dist/utils-BKvNjjhY.mjs.map +0 -1
- package/dist/validate-BpwoDOgt.mjs +0 -120
- package/dist/validate-BpwoDOgt.mjs.map +0 -1
- package/dist/validate-DE_LRwo9.mjs +0 -379
- package/dist/validate-DE_LRwo9.mjs.map +0 -1
- package/dist/validate-DUP27OYD.d.mts +0 -400
- package/dist/validate-DUP27OYD.d.mts.map +0 -1
- package/dist/validation-BMImFJ11.mjs +0 -153
- package/dist/validation-BMImFJ11.mjs.map +0 -1
- package/dist/version-Bii3suaO.mjs +0 -7
- package/dist/version-Bii3suaO.mjs.map +0 -1
- package/dist/widgets-D3gJ10xU.mjs +0 -122
- package/dist/widgets-D3gJ10xU.mjs.map +0 -1
- package/dist/wxr-taxonomies-B2Og_6rU.d.mts +0 -34
- package/dist/wxr-taxonomies-B2Og_6rU.d.mts.map +0 -1
- package/dist/wxr-taxonomies-Cxngsjwo.mjs +0 -406
- package/dist/wxr-taxonomies-Cxngsjwo.mjs.map +0 -1
- package/dist/zod-generator-BuYSQJB7.mjs +0 -331
- package/dist/zod-generator-BuYSQJB7.mjs.map +0 -1
- /package/dist/{api-tokens-BfYts-sq.mjs → api-tokens-DS1VzN7_.mjs} +0 -0
- /package/dist/{ssrf-Dg3cIT-b.mjs → ssrf-BRpTDMV6.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-migration-lock.mjs","names":["PostgresAdapter","KyselyPostgresAdapter"],"sources":["../../src/database/pg-migration-lock.ts"],"sourcesContent":["/**\n * Fail-fast Postgres migration locking.\n *\n * Kysely's stock `PostgresAdapter.acquireMigrationLock` runs\n * `select pg_advisory_xact_lock(...)` — an unbounded blocking wait on a\n * database-wide advisory lock, held for the whole migration transaction.\n * On Cloudflare Workers that is a stampede amplifier (#1744): every isolate\n * that cold-starts while migrations are pending parks a connection inside\n * Postgres waiting for the lock, and when the holder's migration fails and\n * rolls back, the next waiter acquires the lock and re-runs the same\n * failing migration.\n *\n * `FailFastPostgresDialect` swaps the blocking wait for\n * `pg_try_advisory_xact_lock`: when another migrator holds the lock, the\n * adapter throws `MIGRATION_LOCK_BUSY_MESSAGE` immediately instead of\n * queueing inside the database. `runMigrations` treats that error like the\n * SQLite
|
|
1
|
+
{"version":3,"file":"pg-migration-lock.mjs","names":["PostgresAdapter","KyselyPostgresAdapter"],"sources":["../../src/database/pg-migration-lock.ts"],"sourcesContent":["/**\n * Fail-fast Postgres migration locking.\n *\n * Kysely's stock `PostgresAdapter.acquireMigrationLock` runs\n * `select pg_advisory_xact_lock(...)` — an unbounded blocking wait on a\n * database-wide advisory lock, held for the whole migration transaction.\n * On Cloudflare Workers that is a stampede amplifier (#1744): every isolate\n * that cold-starts while migrations are pending parks a connection inside\n * Postgres waiting for the lock, and when the holder's migration fails and\n * rolls back, the next waiter acquires the lock and re-runs the same\n * failing migration.\n *\n * `FailFastPostgresDialect` swaps the blocking wait for\n * `pg_try_advisory_xact_lock`: when another migrator holds the lock, the\n * adapter throws `MIGRATION_LOCK_BUSY_MESSAGE` immediately instead of\n * queueing inside the database. `runMigrations` treats that error like the\n * SQLite concurrent-migration race — it polls the migration table with\n * cheap bounded SELECTs until the concurrent migrator finishes (or the\n * wait deadline passes), without holding a transaction open.\n */\n\nimport type { DialectAdapter, Kysely, MigrationLockOptions } from \"kysely\";\nimport { PostgresAdapter as KyselyPostgresAdapter, PostgresDialect, sql } from \"kysely\";\n\n/**\n * Sentinel message thrown when another migrator holds the migration lock.\n * `runMigrations` matches on it to route into the concurrent-migrator wait.\n */\nexport const MIGRATION_LOCK_BUSY_MESSAGE = \"EMDASH_MIGRATION_LOCK_BUSY\";\n\n/**\n * Kysely's advisory lock id (LOCK_ID in kysely's postgres-adapter). Reused\n * deliberately: during a rolling deploy, old isolates still run the stock\n * blocking adapter, and using the same id keeps old and new builds mutually\n * exclusive on the same lock.\n */\nconst KYSELY_PG_MIGRATION_LOCK_ID = BigInt(\"3853314791062309107\");\n\n/**\n * Extends the stock adapter so every capability flag and `instanceof` check\n * is inherited.\n */\nclass PostgresAdapter extends KyselyPostgresAdapter {\n\t// eslint-disable-next-line typescript/no-explicit-any -- matches the DialectAdapter signature\n\toverride async acquireMigrationLock(db: Kysely<any>, _opt: MigrationLockOptions): Promise<void> {\n\t\t// Transaction-level lock, like the stock adapter: Postgres supports\n\t\t// transactional DDL, so `db` here is the migration transaction and\n\t\t// the lock is released automatically on commit/rollback.\n\t\tconst result = await sql<{ acquired: boolean }>`\n\t\t\tselect pg_try_advisory_xact_lock(${sql.lit(KYSELY_PG_MIGRATION_LOCK_ID)}) as acquired\n\t\t`.execute(db);\n\t\tif (!result.rows[0]?.acquired) {\n\t\t\tthrow new Error(MIGRATION_LOCK_BUSY_MESSAGE);\n\t\t}\n\t}\n}\n\n/**\n * Drop-in replacement for Kysely's `PostgresDialect` whose migration lock\n * fails fast instead of blocking inside the database. Everything except\n * `createAdapter` is inherited unchanged, and because it subclasses\n * `PostgresDialect`, the public dialect type of `emdash/db/postgres` stays\n * `PostgresDialect` and `instanceof` checks keep working.\n */\nexport class FailFastPostgresDialect extends PostgresDialect {\n\toverride createAdapter(): DialectAdapter {\n\t\treturn new PostgresAdapter();\n\t}\n}\n"],"mappings":";;;;;;;AA4BA,MAAa,8BAA8B;;;;;;;AAQ3C,MAAM,8BAA8B,OAAO,sBAAsB;;;;;AAMjE,IAAMA,oBAAN,cAA8BC,gBAAsB;CAEnD,MAAe,qBAAqB,IAAiB,MAA2C;AAO/F,MAAI,EAHW,MAAM,GAA0B;sCACX,IAAI,IAAI,4BAA4B,CAAC;IACvE,QAAQ,GAAG,EACD,KAAK,IAAI,SACpB,OAAM,IAAI,MAAM,4BAA4B;;;;;;;;;;AAY/C,IAAa,0BAAb,cAA6C,gBAAgB;CAC5D,AAAS,gBAAgC;AACxC,SAAO,IAAID,mBAAiB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/datetime-normalization.ts
|
|
4
|
+
var DatetimeNormalizationError = class extends Error {
|
|
5
|
+
constructor(code, value, timezone) {
|
|
6
|
+
const detail = code === "ambiguous" ? "occurs more than once because of a daylight-saving transition" : code === "nonexistent" ? "does not exist because of a daylight-saving transition" : code === "invalid_timezone" ? `uses an invalid site timezone (${timezone})` : code === "offset_required" ? "must include Z or an explicit UTC offset" : "is not a valid ISO 8601 datetime";
|
|
7
|
+
super(`Datetime ${JSON.stringify(value)} ${detail}`);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.value = value;
|
|
10
|
+
this.timezone = timezone;
|
|
11
|
+
this.name = "DatetimeNormalizationError";
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function isRecord(value) {
|
|
15
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
16
|
+
}
|
|
17
|
+
const NAIVE_DATETIME_PATTERN = /^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?)?$/;
|
|
18
|
+
const EXPLICIT_OFFSET_PATTERN = /(?:Z|[+-]\d{2}:?\d{2})$/i;
|
|
19
|
+
const EXPLICIT_DATETIME_SCHEMA = z.iso.datetime({ offset: true }).or(z.iso.datetime({
|
|
20
|
+
offset: true,
|
|
21
|
+
precision: -1
|
|
22
|
+
}));
|
|
23
|
+
const OFFSET_SAMPLE_RANGE_MS = 2880 * 60 * 1e3;
|
|
24
|
+
const OFFSET_SAMPLE_STEP_MS = 360 * 60 * 1e3;
|
|
25
|
+
function parseNaiveDatetime(value) {
|
|
26
|
+
const match = NAIVE_DATETIME_PATTERN.exec(value);
|
|
27
|
+
if (!match) return null;
|
|
28
|
+
const parts = {
|
|
29
|
+
year: Number(match[1]),
|
|
30
|
+
month: Number(match[2]),
|
|
31
|
+
day: Number(match[3]),
|
|
32
|
+
hour: Number(match[4] ?? 0),
|
|
33
|
+
minute: Number(match[5] ?? 0),
|
|
34
|
+
second: Number(match[6] ?? 0),
|
|
35
|
+
millisecond: Number((match[7] ?? "0").padEnd(3, "0"))
|
|
36
|
+
};
|
|
37
|
+
const check = new Date(Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second, parts.millisecond));
|
|
38
|
+
if (check.getUTCFullYear() !== parts.year || check.getUTCMonth() + 1 !== parts.month || check.getUTCDate() !== parts.day || check.getUTCHours() !== parts.hour || check.getUTCMinutes() !== parts.minute || check.getUTCSeconds() !== parts.second || check.getUTCMilliseconds() !== parts.millisecond) return null;
|
|
39
|
+
return parts;
|
|
40
|
+
}
|
|
41
|
+
function zonedFormatter(timezone, value) {
|
|
42
|
+
try {
|
|
43
|
+
return new Intl.DateTimeFormat("en-US-u-ca-iso8601-nu-latn", {
|
|
44
|
+
timeZone: timezone,
|
|
45
|
+
year: "numeric",
|
|
46
|
+
month: "2-digit",
|
|
47
|
+
day: "2-digit",
|
|
48
|
+
hour: "2-digit",
|
|
49
|
+
minute: "2-digit",
|
|
50
|
+
second: "2-digit",
|
|
51
|
+
hourCycle: "h23"
|
|
52
|
+
});
|
|
53
|
+
} catch {
|
|
54
|
+
throw new DatetimeNormalizationError("invalid_timezone", value, timezone);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function zonedParts(formatter, epochMs) {
|
|
58
|
+
const values = {};
|
|
59
|
+
for (const part of formatter.formatToParts(new Date(epochMs))) if (part.type !== "literal") values[part.type] = Number(part.value);
|
|
60
|
+
return {
|
|
61
|
+
year: values.year ?? 0,
|
|
62
|
+
month: values.month ?? 0,
|
|
63
|
+
day: values.day ?? 0,
|
|
64
|
+
hour: values.hour ?? 0,
|
|
65
|
+
minute: values.minute ?? 0,
|
|
66
|
+
second: values.second ?? 0
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function timezoneOffsetMs(formatter, epochMs) {
|
|
70
|
+
const wholeSecond = Math.floor(epochMs / 1e3) * 1e3;
|
|
71
|
+
const parts = zonedParts(formatter, wholeSecond);
|
|
72
|
+
return Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second) - wholeSecond;
|
|
73
|
+
}
|
|
74
|
+
function sameLocalDatetime(formatter, epochMs, expected) {
|
|
75
|
+
const actual = zonedParts(formatter, epochMs);
|
|
76
|
+
return actual.year === expected.year && actual.month === expected.month && actual.day === expected.day && actual.hour === expected.hour && actual.minute === expected.minute && actual.second === expected.second && new Date(epochMs).getUTCMilliseconds() === expected.millisecond;
|
|
77
|
+
}
|
|
78
|
+
function resolveNaiveDatetime(value, timezone, parts) {
|
|
79
|
+
const formatter = zonedFormatter(timezone, value);
|
|
80
|
+
const localEpoch = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second, parts.millisecond);
|
|
81
|
+
const offsets = /* @__PURE__ */ new Set();
|
|
82
|
+
for (let sample = localEpoch - OFFSET_SAMPLE_RANGE_MS; sample <= localEpoch + OFFSET_SAMPLE_RANGE_MS; sample += OFFSET_SAMPLE_STEP_MS) offsets.add(timezoneOffsetMs(formatter, sample));
|
|
83
|
+
const candidates = /* @__PURE__ */ new Set();
|
|
84
|
+
for (const offset of offsets) {
|
|
85
|
+
const candidate = localEpoch - offset;
|
|
86
|
+
if (sameLocalDatetime(formatter, candidate, parts)) candidates.add(candidate);
|
|
87
|
+
}
|
|
88
|
+
if (candidates.size === 0) throw new DatetimeNormalizationError("nonexistent", value, timezone);
|
|
89
|
+
if (candidates.size > 1) throw new DatetimeNormalizationError("ambiguous", value, timezone);
|
|
90
|
+
const candidate = candidates.values().next().value;
|
|
91
|
+
if (candidate === void 0) throw new DatetimeNormalizationError("nonexistent", value, timezone);
|
|
92
|
+
return new Date(candidate).toISOString();
|
|
93
|
+
}
|
|
94
|
+
function normalizeDatetime(value, timezone) {
|
|
95
|
+
if (value instanceof Date) {
|
|
96
|
+
if (Number.isNaN(value.getTime())) throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
97
|
+
return {
|
|
98
|
+
value: value.toISOString(),
|
|
99
|
+
kind: "offset"
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (typeof value !== "string") throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
103
|
+
if (value.startsWith("\"") && value.endsWith("\"")) try {
|
|
104
|
+
const unquoted = JSON.parse(value);
|
|
105
|
+
if (typeof unquoted === "string") {
|
|
106
|
+
const normalized = normalizeDatetime(unquoted, timezone);
|
|
107
|
+
return {
|
|
108
|
+
value: normalized.value,
|
|
109
|
+
kind: normalized.kind === "naive" ? "naive" : "offset"
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
} catch {
|
|
113
|
+
throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
114
|
+
}
|
|
115
|
+
const naive = parseNaiveDatetime(value);
|
|
116
|
+
if (naive) return {
|
|
117
|
+
value: resolveNaiveDatetime(value, timezone, naive),
|
|
118
|
+
kind: "naive"
|
|
119
|
+
};
|
|
120
|
+
if (!EXPLICIT_OFFSET_PATTERN.test(value)) throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
121
|
+
if (!EXPLICIT_DATETIME_SCHEMA.safeParse(value).success) throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
122
|
+
const parsed = new Date(value);
|
|
123
|
+
if (Number.isNaN(parsed.getTime())) throw new DatetimeNormalizationError("invalid", value, timezone);
|
|
124
|
+
const normalized = parsed.toISOString();
|
|
125
|
+
return {
|
|
126
|
+
value: normalized,
|
|
127
|
+
kind: value === normalized ? "canonical" : "offset"
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function normalizeExplicitDatetime(value) {
|
|
131
|
+
const normalized = normalizeDatetime(value, "UTC");
|
|
132
|
+
if (normalized.kind === "naive") throw new DatetimeNormalizationError("offset_required", value, "UTC");
|
|
133
|
+
return normalized.value;
|
|
134
|
+
}
|
|
135
|
+
function normalizeContentDatetimes(data, fields, timezone) {
|
|
136
|
+
let value = data;
|
|
137
|
+
let changedCount = 0;
|
|
138
|
+
let naiveCount = 0;
|
|
139
|
+
const write = (slug, next) => {
|
|
140
|
+
if (value === data) value = { ...data };
|
|
141
|
+
value[slug] = next;
|
|
142
|
+
};
|
|
143
|
+
for (const field of fields) {
|
|
144
|
+
const current = data[field.slug];
|
|
145
|
+
if (current === null || current === void 0 || current === "") continue;
|
|
146
|
+
if (field.type === "datetime") {
|
|
147
|
+
const normalized = normalizeDatetime(current, timezone);
|
|
148
|
+
if (normalized.kind === "naive") naiveCount++;
|
|
149
|
+
if (!Object.is(normalized.value, current)) {
|
|
150
|
+
changedCount++;
|
|
151
|
+
write(field.slug, normalized.value);
|
|
152
|
+
}
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
if (!Array.isArray(current) || !field.datetimeSubFields?.length) continue;
|
|
156
|
+
let rows = current;
|
|
157
|
+
for (const [index, row] of current.entries()) {
|
|
158
|
+
if (!isRecord(row)) continue;
|
|
159
|
+
let nextRow = row;
|
|
160
|
+
for (const subField of field.datetimeSubFields) {
|
|
161
|
+
const nested = nextRow[subField];
|
|
162
|
+
if (nested === null || nested === void 0 || nested === "") continue;
|
|
163
|
+
const normalized = normalizeDatetime(nested, timezone);
|
|
164
|
+
if (normalized.kind === "naive") naiveCount++;
|
|
165
|
+
if (!Object.is(normalized.value, nested)) {
|
|
166
|
+
changedCount++;
|
|
167
|
+
if (nextRow === row) nextRow = { ...nextRow };
|
|
168
|
+
nextRow[subField] = normalized.value;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (nextRow !== row) {
|
|
172
|
+
if (rows === current) rows = [...current];
|
|
173
|
+
rows[index] = nextRow;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (rows !== current) write(field.slug, rows);
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
value,
|
|
180
|
+
changedCount,
|
|
181
|
+
naiveCount
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
export { normalizeExplicitDatetime as i, normalizeContentDatetimes as n, normalizeDatetime as r, DatetimeNormalizationError as t };
|
|
187
|
+
//# sourceMappingURL=datetime-normalization-PeiEdcRY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime-normalization-PeiEdcRY.mjs","names":[],"sources":["../src/datetime-normalization.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type DatetimeNormalizationKind = \"canonical\" | \"offset\" | \"naive\";\n\nexport type DatetimeNormalizationErrorCode =\n\t| \"invalid\"\n\t| \"invalid_timezone\"\n\t| \"offset_required\"\n\t| \"ambiguous\"\n\t| \"nonexistent\";\n\nexport class DatetimeNormalizationError extends Error {\n\tconstructor(\n\t\tpublic readonly code: DatetimeNormalizationErrorCode,\n\t\tpublic readonly value: unknown,\n\t\tpublic readonly timezone: string,\n\t) {\n\t\tconst detail =\n\t\t\tcode === \"ambiguous\"\n\t\t\t\t? \"occurs more than once because of a daylight-saving transition\"\n\t\t\t\t: code === \"nonexistent\"\n\t\t\t\t\t? \"does not exist because of a daylight-saving transition\"\n\t\t\t\t\t: code === \"invalid_timezone\"\n\t\t\t\t\t\t? `uses an invalid site timezone (${timezone})`\n\t\t\t\t\t\t: code === \"offset_required\"\n\t\t\t\t\t\t\t? \"must include Z or an explicit UTC offset\"\n\t\t\t\t\t\t\t: \"is not a valid ISO 8601 datetime\";\n\t\tsuper(`Datetime ${JSON.stringify(value)} ${detail}`);\n\t\tthis.name = \"DatetimeNormalizationError\";\n\t}\n}\n\nexport interface DatetimeFieldDescriptor {\n\tslug: string;\n\ttype: \"datetime\" | \"repeater\";\n\tdatetimeSubFields?: readonly string[];\n}\n\nexport interface NormalizedDatetime {\n\tvalue: string;\n\tkind: DatetimeNormalizationKind;\n}\n\nexport interface NormalizedContentDatetimes {\n\tvalue: Record<string, unknown>;\n\tchangedCount: number;\n\tnaiveCount: number;\n}\n\ninterface LocalDatetimeParts {\n\tyear: number;\n\tmonth: number;\n\tday: number;\n\thour: number;\n\tminute: number;\n\tsecond: number;\n\tmillisecond: number;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nconst NAIVE_DATETIME_PATTERN =\n\t/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?)?$/;\nconst EXPLICIT_OFFSET_PATTERN = /(?:Z|[+-]\\d{2}:?\\d{2})$/i;\nconst EXPLICIT_DATETIME_SCHEMA = z.iso\n\t.datetime({ offset: true })\n\t.or(z.iso.datetime({ offset: true, precision: -1 }));\nconst OFFSET_SAMPLE_RANGE_MS = 48 * 60 * 60 * 1000;\nconst OFFSET_SAMPLE_STEP_MS = 6 * 60 * 60 * 1000;\n\nfunction parseNaiveDatetime(value: string): LocalDatetimeParts | null {\n\tconst match = NAIVE_DATETIME_PATTERN.exec(value);\n\tif (!match) return null;\n\tconst parts: LocalDatetimeParts = {\n\t\tyear: Number(match[1]),\n\t\tmonth: Number(match[2]),\n\t\tday: Number(match[3]),\n\t\thour: Number(match[4] ?? 0),\n\t\tminute: Number(match[5] ?? 0),\n\t\tsecond: Number(match[6] ?? 0),\n\t\tmillisecond: Number((match[7] ?? \"0\").padEnd(3, \"0\")),\n\t};\n\tconst check = new Date(\n\t\tDate.UTC(\n\t\t\tparts.year,\n\t\t\tparts.month - 1,\n\t\t\tparts.day,\n\t\t\tparts.hour,\n\t\t\tparts.minute,\n\t\t\tparts.second,\n\t\t\tparts.millisecond,\n\t\t),\n\t);\n\tif (\n\t\tcheck.getUTCFullYear() !== parts.year ||\n\t\tcheck.getUTCMonth() + 1 !== parts.month ||\n\t\tcheck.getUTCDate() !== parts.day ||\n\t\tcheck.getUTCHours() !== parts.hour ||\n\t\tcheck.getUTCMinutes() !== parts.minute ||\n\t\tcheck.getUTCSeconds() !== parts.second ||\n\t\tcheck.getUTCMilliseconds() !== parts.millisecond\n\t) {\n\t\treturn null;\n\t}\n\treturn parts;\n}\n\nfunction zonedFormatter(timezone: string, value: unknown): Intl.DateTimeFormat {\n\ttry {\n\t\treturn new Intl.DateTimeFormat(\"en-US-u-ca-iso8601-nu-latn\", {\n\t\t\ttimeZone: timezone,\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"2-digit\",\n\t\t\tday: \"2-digit\",\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t\tsecond: \"2-digit\",\n\t\t\thourCycle: \"h23\",\n\t\t});\n\t} catch {\n\t\tthrow new DatetimeNormalizationError(\"invalid_timezone\", value, timezone);\n\t}\n}\n\nfunction zonedParts(\n\tformatter: Intl.DateTimeFormat,\n\tepochMs: number,\n): Omit<LocalDatetimeParts, \"millisecond\"> {\n\tconst values: Record<string, number> = {};\n\tfor (const part of formatter.formatToParts(new Date(epochMs))) {\n\t\tif (part.type !== \"literal\") values[part.type] = Number(part.value);\n\t}\n\treturn {\n\t\tyear: values.year ?? 0,\n\t\tmonth: values.month ?? 0,\n\t\tday: values.day ?? 0,\n\t\thour: values.hour ?? 0,\n\t\tminute: values.minute ?? 0,\n\t\tsecond: values.second ?? 0,\n\t};\n}\n\nfunction timezoneOffsetMs(formatter: Intl.DateTimeFormat, epochMs: number): number {\n\tconst wholeSecond = Math.floor(epochMs / 1000) * 1000;\n\tconst parts = zonedParts(formatter, wholeSecond);\n\treturn (\n\t\tDate.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second) -\n\t\twholeSecond\n\t);\n}\n\nfunction sameLocalDatetime(\n\tformatter: Intl.DateTimeFormat,\n\tepochMs: number,\n\texpected: LocalDatetimeParts,\n): boolean {\n\tconst actual = zonedParts(formatter, epochMs);\n\treturn (\n\t\tactual.year === expected.year &&\n\t\tactual.month === expected.month &&\n\t\tactual.day === expected.day &&\n\t\tactual.hour === expected.hour &&\n\t\tactual.minute === expected.minute &&\n\t\tactual.second === expected.second &&\n\t\tnew Date(epochMs).getUTCMilliseconds() === expected.millisecond\n\t);\n}\n\nfunction resolveNaiveDatetime(value: string, timezone: string, parts: LocalDatetimeParts): string {\n\tconst formatter = zonedFormatter(timezone, value);\n\tconst localEpoch = Date.UTC(\n\t\tparts.year,\n\t\tparts.month - 1,\n\t\tparts.day,\n\t\tparts.hour,\n\t\tparts.minute,\n\t\tparts.second,\n\t\tparts.millisecond,\n\t);\n\tconst offsets = new Set<number>();\n\tfor (\n\t\tlet sample = localEpoch - OFFSET_SAMPLE_RANGE_MS;\n\t\tsample <= localEpoch + OFFSET_SAMPLE_RANGE_MS;\n\t\tsample += OFFSET_SAMPLE_STEP_MS\n\t) {\n\t\toffsets.add(timezoneOffsetMs(formatter, sample));\n\t}\n\n\tconst candidates = new Set<number>();\n\tfor (const offset of offsets) {\n\t\tconst candidate = localEpoch - offset;\n\t\tif (sameLocalDatetime(formatter, candidate, parts)) candidates.add(candidate);\n\t}\n\tif (candidates.size === 0) {\n\t\tthrow new DatetimeNormalizationError(\"nonexistent\", value, timezone);\n\t}\n\tif (candidates.size > 1) {\n\t\tthrow new DatetimeNormalizationError(\"ambiguous\", value, timezone);\n\t}\n\tconst candidate = candidates.values().next().value;\n\tif (candidate === undefined) {\n\t\tthrow new DatetimeNormalizationError(\"nonexistent\", value, timezone);\n\t}\n\treturn new Date(candidate).toISOString();\n}\n\nexport function normalizeDatetime(value: unknown, timezone: string): NormalizedDatetime {\n\tif (value instanceof Date) {\n\t\tif (Number.isNaN(value.getTime())) {\n\t\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t\t}\n\t\treturn { value: value.toISOString(), kind: \"offset\" };\n\t}\n\tif (typeof value !== \"string\") {\n\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t}\n\tif (value.startsWith('\"') && value.endsWith('\"')) {\n\t\ttry {\n\t\t\tconst unquoted: unknown = JSON.parse(value);\n\t\t\tif (typeof unquoted === \"string\") {\n\t\t\t\tconst normalized = normalizeDatetime(unquoted, timezone);\n\t\t\t\treturn {\n\t\t\t\t\tvalue: normalized.value,\n\t\t\t\t\tkind: normalized.kind === \"naive\" ? \"naive\" : \"offset\",\n\t\t\t\t};\n\t\t\t}\n\t\t} catch {\n\t\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t\t}\n\t}\n\n\tconst naive = parseNaiveDatetime(value);\n\tif (naive) {\n\t\treturn { value: resolveNaiveDatetime(value, timezone, naive), kind: \"naive\" };\n\t}\n\tif (!EXPLICIT_OFFSET_PATTERN.test(value)) {\n\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t}\n\tif (!EXPLICIT_DATETIME_SCHEMA.safeParse(value).success) {\n\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t}\n\tconst parsed = new Date(value);\n\tif (Number.isNaN(parsed.getTime())) {\n\t\tthrow new DatetimeNormalizationError(\"invalid\", value, timezone);\n\t}\n\tconst normalized = parsed.toISOString();\n\treturn { value: normalized, kind: value === normalized ? \"canonical\" : \"offset\" };\n}\n\nexport function normalizeExplicitDatetime(value: unknown): string {\n\tconst normalized = normalizeDatetime(value, \"UTC\");\n\tif (normalized.kind === \"naive\") {\n\t\tthrow new DatetimeNormalizationError(\"offset_required\", value, \"UTC\");\n\t}\n\treturn normalized.value;\n}\n\nexport function normalizeContentDatetimes(\n\tdata: Record<string, unknown>,\n\tfields: readonly DatetimeFieldDescriptor[],\n\ttimezone: string,\n): NormalizedContentDatetimes {\n\tlet value = data;\n\tlet changedCount = 0;\n\tlet naiveCount = 0;\n\tconst write = (slug: string, next: unknown) => {\n\t\tif (value === data) value = { ...data };\n\t\tvalue[slug] = next;\n\t};\n\n\tfor (const field of fields) {\n\t\tconst current = data[field.slug];\n\t\tif (current === null || current === undefined || current === \"\") continue;\n\t\tif (field.type === \"datetime\") {\n\t\t\tconst normalized = normalizeDatetime(current, timezone);\n\t\t\tif (normalized.kind === \"naive\") naiveCount++;\n\t\t\tif (!Object.is(normalized.value, current)) {\n\t\t\t\tchangedCount++;\n\t\t\t\twrite(field.slug, normalized.value);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!Array.isArray(current) || !field.datetimeSubFields?.length) continue;\n\t\tlet rows = current;\n\t\tfor (const [index, row] of current.entries()) {\n\t\t\tif (!isRecord(row)) continue;\n\t\t\tlet nextRow = row;\n\t\t\tfor (const subField of field.datetimeSubFields) {\n\t\t\t\tconst nested = nextRow[subField];\n\t\t\t\tif (nested === null || nested === undefined || nested === \"\") continue;\n\t\t\t\tconst normalized = normalizeDatetime(nested, timezone);\n\t\t\t\tif (normalized.kind === \"naive\") naiveCount++;\n\t\t\t\tif (!Object.is(normalized.value, nested)) {\n\t\t\t\t\tchangedCount++;\n\t\t\t\t\tif (nextRow === row) nextRow = { ...nextRow };\n\t\t\t\t\tnextRow[subField] = normalized.value;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (nextRow !== row) {\n\t\t\t\tif (rows === current) rows = [...current];\n\t\t\t\trows[index] = nextRow;\n\t\t\t}\n\t\t}\n\t\tif (rows !== current) write(field.slug, rows);\n\t}\n\n\treturn { value, changedCount, naiveCount };\n}\n"],"mappings":";;;AAWA,IAAa,6BAAb,cAAgD,MAAM;CACrD,YACC,AAAgB,MAChB,AAAgB,OAChB,AAAgB,UACf;EACD,MAAM,SACL,SAAS,cACN,kEACA,SAAS,gBACR,2DACA,SAAS,qBACR,kCAAkC,SAAS,KAC3C,SAAS,oBACR,6CACA;AACP,QAAM,YAAY,KAAK,UAAU,MAAM,CAAC,GAAG,SAAS;EAdpC;EACA;EACA;AAahB,OAAK,OAAO;;;AA+Bd,SAAS,SAAS,OAAkD;AACnE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;;AAG5E,MAAM,yBACL;AACD,MAAM,0BAA0B;AAChC,MAAM,2BAA2B,EAAE,IACjC,SAAS,EAAE,QAAQ,MAAM,CAAC,CAC1B,GAAG,EAAE,IAAI,SAAS;CAAE,QAAQ;CAAM,WAAW;CAAI,CAAC,CAAC;AACrD,MAAM,yBAAyB,OAAU,KAAK;AAC9C,MAAM,wBAAwB,MAAS,KAAK;AAE5C,SAAS,mBAAmB,OAA0C;CACrE,MAAM,QAAQ,uBAAuB,KAAK,MAAM;AAChD,KAAI,CAAC,MAAO,QAAO;CACnB,MAAM,QAA4B;EACjC,MAAM,OAAO,MAAM,GAAG;EACtB,OAAO,OAAO,MAAM,GAAG;EACvB,KAAK,OAAO,MAAM,GAAG;EACrB,MAAM,OAAO,MAAM,MAAM,EAAE;EAC3B,QAAQ,OAAO,MAAM,MAAM,EAAE;EAC7B,QAAQ,OAAO,MAAM,MAAM,EAAE;EAC7B,aAAa,QAAQ,MAAM,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;EACrD;CACD,MAAM,QAAQ,IAAI,KACjB,KAAK,IACJ,MAAM,MACN,MAAM,QAAQ,GACd,MAAM,KACN,MAAM,MACN,MAAM,QACN,MAAM,QACN,MAAM,YACN,CACD;AACD,KACC,MAAM,gBAAgB,KAAK,MAAM,QACjC,MAAM,aAAa,GAAG,MAAM,MAAM,SAClC,MAAM,YAAY,KAAK,MAAM,OAC7B,MAAM,aAAa,KAAK,MAAM,QAC9B,MAAM,eAAe,KAAK,MAAM,UAChC,MAAM,eAAe,KAAK,MAAM,UAChC,MAAM,oBAAoB,KAAK,MAAM,YAErC,QAAO;AAER,QAAO;;AAGR,SAAS,eAAe,UAAkB,OAAqC;AAC9E,KAAI;AACH,SAAO,IAAI,KAAK,eAAe,8BAA8B;GAC5D,UAAU;GACV,MAAM;GACN,OAAO;GACP,KAAK;GACL,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,WAAW;GACX,CAAC;SACK;AACP,QAAM,IAAI,2BAA2B,oBAAoB,OAAO,SAAS;;;AAI3E,SAAS,WACR,WACA,SAC0C;CAC1C,MAAM,SAAiC,EAAE;AACzC,MAAK,MAAM,QAAQ,UAAU,cAAc,IAAI,KAAK,QAAQ,CAAC,CAC5D,KAAI,KAAK,SAAS,UAAW,QAAO,KAAK,QAAQ,OAAO,KAAK,MAAM;AAEpE,QAAO;EACN,MAAM,OAAO,QAAQ;EACrB,OAAO,OAAO,SAAS;EACvB,KAAK,OAAO,OAAO;EACnB,MAAM,OAAO,QAAQ;EACrB,QAAQ,OAAO,UAAU;EACzB,QAAQ,OAAO,UAAU;EACzB;;AAGF,SAAS,iBAAiB,WAAgC,SAAyB;CAClF,MAAM,cAAc,KAAK,MAAM,UAAU,IAAK,GAAG;CACjD,MAAM,QAAQ,WAAW,WAAW,YAAY;AAChD,QACC,KAAK,IAAI,MAAM,MAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,GACxF;;AAIF,SAAS,kBACR,WACA,SACA,UACU;CACV,MAAM,SAAS,WAAW,WAAW,QAAQ;AAC7C,QACC,OAAO,SAAS,SAAS,QACzB,OAAO,UAAU,SAAS,SAC1B,OAAO,QAAQ,SAAS,OACxB,OAAO,SAAS,SAAS,QACzB,OAAO,WAAW,SAAS,UAC3B,OAAO,WAAW,SAAS,UAC3B,IAAI,KAAK,QAAQ,CAAC,oBAAoB,KAAK,SAAS;;AAItD,SAAS,qBAAqB,OAAe,UAAkB,OAAmC;CACjG,MAAM,YAAY,eAAe,UAAU,MAAM;CACjD,MAAM,aAAa,KAAK,IACvB,MAAM,MACN,MAAM,QAAQ,GACd,MAAM,KACN,MAAM,MACN,MAAM,QACN,MAAM,QACN,MAAM,YACN;CACD,MAAM,0BAAU,IAAI,KAAa;AACjC,MACC,IAAI,SAAS,aAAa,wBAC1B,UAAU,aAAa,wBACvB,UAAU,sBAEV,SAAQ,IAAI,iBAAiB,WAAW,OAAO,CAAC;CAGjD,MAAM,6BAAa,IAAI,KAAa;AACpC,MAAK,MAAM,UAAU,SAAS;EAC7B,MAAM,YAAY,aAAa;AAC/B,MAAI,kBAAkB,WAAW,WAAW,MAAM,CAAE,YAAW,IAAI,UAAU;;AAE9E,KAAI,WAAW,SAAS,EACvB,OAAM,IAAI,2BAA2B,eAAe,OAAO,SAAS;AAErE,KAAI,WAAW,OAAO,EACrB,OAAM,IAAI,2BAA2B,aAAa,OAAO,SAAS;CAEnE,MAAM,YAAY,WAAW,QAAQ,CAAC,MAAM,CAAC;AAC7C,KAAI,cAAc,OACjB,OAAM,IAAI,2BAA2B,eAAe,OAAO,SAAS;AAErE,QAAO,IAAI,KAAK,UAAU,CAAC,aAAa;;AAGzC,SAAgB,kBAAkB,OAAgB,UAAsC;AACvF,KAAI,iBAAiB,MAAM;AAC1B,MAAI,OAAO,MAAM,MAAM,SAAS,CAAC,CAChC,OAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;AAEjE,SAAO;GAAE,OAAO,MAAM,aAAa;GAAE,MAAM;GAAU;;AAEtD,KAAI,OAAO,UAAU,SACpB,OAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;AAEjE,KAAI,MAAM,WAAW,KAAI,IAAI,MAAM,SAAS,KAAI,CAC/C,KAAI;EACH,MAAM,WAAoB,KAAK,MAAM,MAAM;AAC3C,MAAI,OAAO,aAAa,UAAU;GACjC,MAAM,aAAa,kBAAkB,UAAU,SAAS;AACxD,UAAO;IACN,OAAO,WAAW;IAClB,MAAM,WAAW,SAAS,UAAU,UAAU;IAC9C;;SAEK;AACP,QAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;;CAIlE,MAAM,QAAQ,mBAAmB,MAAM;AACvC,KAAI,MACH,QAAO;EAAE,OAAO,qBAAqB,OAAO,UAAU,MAAM;EAAE,MAAM;EAAS;AAE9E,KAAI,CAAC,wBAAwB,KAAK,MAAM,CACvC,OAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;AAEjE,KAAI,CAAC,yBAAyB,UAAU,MAAM,CAAC,QAC9C,OAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;CAEjE,MAAM,SAAS,IAAI,KAAK,MAAM;AAC9B,KAAI,OAAO,MAAM,OAAO,SAAS,CAAC,CACjC,OAAM,IAAI,2BAA2B,WAAW,OAAO,SAAS;CAEjE,MAAM,aAAa,OAAO,aAAa;AACvC,QAAO;EAAE,OAAO;EAAY,MAAM,UAAU,aAAa,cAAc;EAAU;;AAGlF,SAAgB,0BAA0B,OAAwB;CACjE,MAAM,aAAa,kBAAkB,OAAO,MAAM;AAClD,KAAI,WAAW,SAAS,QACvB,OAAM,IAAI,2BAA2B,mBAAmB,OAAO,MAAM;AAEtE,QAAO,WAAW;;AAGnB,SAAgB,0BACf,MACA,QACA,UAC6B;CAC7B,IAAI,QAAQ;CACZ,IAAI,eAAe;CACnB,IAAI,aAAa;CACjB,MAAM,SAAS,MAAc,SAAkB;AAC9C,MAAI,UAAU,KAAM,SAAQ,EAAE,GAAG,MAAM;AACvC,QAAM,QAAQ;;AAGf,MAAK,MAAM,SAAS,QAAQ;EAC3B,MAAM,UAAU,KAAK,MAAM;AAC3B,MAAI,YAAY,QAAQ,YAAY,UAAa,YAAY,GAAI;AACjE,MAAI,MAAM,SAAS,YAAY;GAC9B,MAAM,aAAa,kBAAkB,SAAS,SAAS;AACvD,OAAI,WAAW,SAAS,QAAS;AACjC,OAAI,CAAC,OAAO,GAAG,WAAW,OAAO,QAAQ,EAAE;AAC1C;AACA,UAAM,MAAM,MAAM,WAAW,MAAM;;AAEpC;;AAGD,MAAI,CAAC,MAAM,QAAQ,QAAQ,IAAI,CAAC,MAAM,mBAAmB,OAAQ;EACjE,IAAI,OAAO;AACX,OAAK,MAAM,CAAC,OAAO,QAAQ,QAAQ,SAAS,EAAE;AAC7C,OAAI,CAAC,SAAS,IAAI,CAAE;GACpB,IAAI,UAAU;AACd,QAAK,MAAM,YAAY,MAAM,mBAAmB;IAC/C,MAAM,SAAS,QAAQ;AACvB,QAAI,WAAW,QAAQ,WAAW,UAAa,WAAW,GAAI;IAC9D,MAAM,aAAa,kBAAkB,QAAQ,SAAS;AACtD,QAAI,WAAW,SAAS,QAAS;AACjC,QAAI,CAAC,OAAO,GAAG,WAAW,OAAO,OAAO,EAAE;AACzC;AACA,SAAI,YAAY,IAAK,WAAU,EAAE,GAAG,SAAS;AAC7C,aAAQ,YAAY,WAAW;;;AAGjC,OAAI,YAAY,KAAK;AACpB,QAAI,SAAS,QAAS,QAAO,CAAC,GAAG,QAAQ;AACzC,SAAK,SAAS;;;AAGhB,MAAI,SAAS,QAAS,OAAM,MAAM,MAAM,KAAK;;AAG9C,QAAO;EAAE;EAAO;EAAc;EAAY"}
|
package/dist/db/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../types-
|
|
2
|
-
import { a as getMigrationStatus, i as getExactMigrationStatus, n as MIGRATION_NAMES, o as rollbackMigration, r as MigrationStatus, s as runMigrations, t as ExactMigrationStatus } from "../runner-
|
|
3
|
-
import { a as ExecuteCollectionDeletionGuard, c as SqliteConfig, d as sqlite, i as DatabaseDialectType, l as libsql, n as CollectionDeletionGuardResult, o as LibsqlConfig, r as DatabaseDescriptor, s as PostgresConfig, t as CollectionDeletionGuardInput, u as postgres } from "../adapters-
|
|
1
|
+
import "../types-CbwqGOXm.mjs";
|
|
2
|
+
import { a as getMigrationStatus, i as getExactMigrationStatus, n as MIGRATION_NAMES, o as rollbackMigration, r as MigrationStatus, s as runMigrations, t as ExactMigrationStatus } from "../runner-3gfxRsJG.mjs";
|
|
3
|
+
import { a as ExecuteCollectionDeletionGuard, c as SqliteConfig, d as sqlite, i as DatabaseDialectType, l as libsql, n as CollectionDeletionGuardResult, o as LibsqlConfig, r as DatabaseDescriptor, s as PostgresConfig, t as CollectionDeletionGuardInput, u as postgres } from "../adapters-Cq10K4_c.mjs";
|
|
4
4
|
export { type CollectionDeletionGuardInput, type CollectionDeletionGuardResult, type DatabaseDescriptor, type DatabaseDialectType, type ExactMigrationStatus, type ExecuteCollectionDeletionGuard, type LibsqlConfig, MIGRATION_NAMES, type MigrationStatus, type PostgresConfig, type SqliteConfig, getExactMigrationStatus, getMigrationStatus, libsql, postgres, rollbackMigration, runMigrations, sqlite };
|
package/dist/db/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { a as getMigrationStatus, i as getExactMigrationStatus, n as MIGRATION_NAMES, o as rollbackMigration, s as runMigrations } from "../runner-
|
|
2
|
-
import "../dialect-helpers-
|
|
3
|
-
import "../config-
|
|
1
|
+
import { a as getMigrationStatus, i as getExactMigrationStatus, n as MIGRATION_NAMES, o as rollbackMigration, s as runMigrations } from "../runner-ClrleR8A.mjs";
|
|
2
|
+
import "../dialect-helpers-CtYdsX4W.mjs";
|
|
3
|
+
import "../config-CGVeT8Hc.mjs";
|
|
4
|
+
import "../datetime-normalization-PeiEdcRY.mjs";
|
|
4
5
|
|
|
5
6
|
//#region src/db/adapters.ts
|
|
6
7
|
const ENVIRONMENT_VARIABLE_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
package/dist/db/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/db/adapters.ts"],"sourcesContent":["/**\n * Database Adapter Functions\n *\n * These run at config time (astro.config.mjs) and return serializable descriptors.\n * The actual dialect is created at runtime by loading the entrypoint.\n *\n * @example\n * ```ts\n * // astro.config.mjs\n * import emdash from \"emdash/astro\";\n * import { sqlite } from \"emdash/db\";\n *\n * export default defineConfig({\n * integrations: [\n * emdash({\n * database: sqlite({ url: \"file:./data.db\" }),\n * }),\n * ],\n * });\n * ```\n */\n\n/**\n * Dialect family identifier.\n * Used at runtime to select dialect-specific SQL fragments.\n */\nexport type DatabaseDialectType = \"sqlite\" | \"postgres\";\n\nexport type CollectionDeletionGuardInput =\n\t| {\n\t\t\taction: \"fence\";\n\t\t\tcollectionId: string;\n\t\t\tcollectionSlug: string;\n\t\t\tleaseToken: string;\n\t\t\tforceDelete: boolean;\n\t }\n\t| {\n\t\t\taction: \"drop\";\n\t\t\tcollectionId: string;\n\t\t\tcollectionSlug: string;\n\t\t\tleaseToken: string;\n\t };\n\nexport type CollectionDeletionGuardResult =\n\t| { outcome: \"fenced\" }\n\t| { outcome: \"has_content\" }\n\t| { outcome: \"stale\" }\n\t| { outcome: \"dropped\" };\n\nexport type ExecuteCollectionDeletionGuard = (\n\tconfig: unknown,\n\tinput: CollectionDeletionGuardInput,\n) => Promise<CollectionDeletionGuardResult>;\n\nconst ENVIRONMENT_VARIABLE_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nfunction migrationEnvironmentVariable(\n\tvalue: string | undefined,\n\tfallback: string,\n\toptionName: string,\n): string {\n\tconst name = value ?? fallback;\n\tif (!ENVIRONMENT_VARIABLE_PATTERN.test(name)) {\n\t\tthrow new Error(`${optionName} must be a valid environment variable name.`);\n\t}\n\treturn name;\n}\n\n/**\n * Database descriptor - serializable config for virtual modules\n */\nexport interface DatabaseDescriptor {\n\tentrypoint: string;\n\tconfig: unknown;\n\ttype: DatabaseDialectType;\n\t/** Deployment migration capability with configuration safe for a build artifact. */\n\tmigrations?: {\n\t\tentrypoint: string;\n\t\tmanifestConfig: unknown;\n\t};\n\t/**\n\t * When true, the adapter's runtime entrypoint MUST export a named\n\t * `createRequestScopedDb` function matching the signature declared in\n\t * `virtual:emdash/dialect`. The virtual-module generator re-exports it\n\t * by name, so a missing export becomes a build-time bundler error.\n\t *\n\t * The function is called once per request and decides — based on its own\n\t * runtime config (e.g. whether the user opted into D1 sessions) — whether\n\t * to return a per-request Kysely or null. Use this for features like D1\n\t * read-replica sessions, bookmark cookies, or any per-request DB handle.\n\t *\n\t * When false or absent, the generator emits a stub that returns null and\n\t * the middleware takes its default (singleton) path.\n\t */\n\tsupportsRequestScope?: boolean;\n\t/**\n\t * When true, request middleware resolves the last content-namespace\n\t * invalidation timestamp and passes it to `createRequestScopedDb`.\n\t *\n\t * Keep this unset unless request routing depends on that timestamp: reading\n\t * it may require an object-cache backend round trip.\n\t */\n\tneedsLastContentWriteAt?: boolean;\n\t/**\n\t * When true, the adapter's runtime entrypoint MUST export a named\n\t * `createCoalescingDialect` function. The runtime uses this fresh dialect\n\t * only for its cold-start read batch.\n\t *\n\t * When false or absent, the virtual module exports `undefined` without\n\t * inspecting an optional entrypoint export.\n\t */\n\tsupportsCoalescing?: boolean;\n\t/** The runtime entrypoint exports the deletion-specific atomic guard. */\n\tsupportsCollectionDeletionGuard?: boolean;\n}\n\nexport interface SqliteConfig {\n\t/**\n\t * Database URL (e.g., \"file:./data.db\")\n\t */\n\turl: string;\n}\n\nexport interface LibsqlConfig {\n\t/**\n\t * Database URL (e.g., \"file:./data.db\" or \"libsql://...\")\n\t */\n\turl: string;\n\t/**\n\t * Auth token for remote libSQL\n\t */\n\tauthToken?: string;\n\tmigrationAuthTokenEnv?: string;\n}\n\n/**\n * SQLite database adapter (node:sqlite)\n *\n * For local development and Node.js deployments. Requires Node.js 22.16 or later.\n *\n * @example\n * ```ts\n * database: sqlite({ url: \"file:./data.db\" })\n * ```\n */\nexport function sqlite(config: SqliteConfig): DatabaseDescriptor {\n\treturn {\n\t\tentrypoint: \"emdash/db/sqlite\",\n\t\tconfig,\n\t\ttype: \"sqlite\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/sqlite-migrations\",\n\t\t\tmanifestConfig: { url: config.url },\n\t\t},\n\t};\n}\n\n/**\n * libSQL database adapter (Turso)\n *\n * For Turso hosted databases or local libSQL.\n *\n * @example\n * ```ts\n * database: libsql({\n * url: \"libsql://my-db.turso.io\",\n * authToken: process.env.TURSO_AUTH_TOKEN,\n * })\n * ```\n */\nexport function libsql(config: LibsqlConfig): DatabaseDescriptor {\n\tconst { migrationAuthTokenEnv, ...runtimeConfig } = config;\n\treturn {\n\t\tentrypoint: \"emdash/db/libsql\",\n\t\tconfig: runtimeConfig,\n\t\ttype: \"sqlite\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/libsql-migrations\",\n\t\t\tmanifestConfig: {\n\t\t\t\turl: config.url,\n\t\t\t\tauthTokenEnv: migrationEnvironmentVariable(\n\t\t\t\t\tmigrationAuthTokenEnv,\n\t\t\t\t\t\"TURSO_AUTH_TOKEN\",\n\t\t\t\t\t\"migrationAuthTokenEnv\",\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * PostgreSQL connection configuration\n */\nexport interface PostgresConfig {\n\tconnectionString?: string;\n\thost?: string;\n\tport?: number;\n\tdatabase?: string;\n\tuser?: string;\n\tpassword?: string;\n\tssl?: boolean;\n\tpool?: {\n\t\tmin?: number;\n\t\tmax?: number;\n\t\t/** Maximum time to wait for a connection, in milliseconds. Uses the pg default when omitted. */\n\t\tconnectionTimeoutMillis?: number;\n\t\t/** Time before an idle client is closed, in milliseconds. Uses the pg default when omitted. */\n\t\tidleTimeoutMillis?: number;\n\t};\n\tmigrationConnectionStringEnv?: string;\n}\n\n/**\n * PostgreSQL database adapter\n *\n * For PostgreSQL deployments with connection pooling.\n *\n * @example\n * ```ts\n * database: postgres({ connectionString: process.env.DATABASE_URL })\n * ```\n */\nexport function postgres(config: PostgresConfig): DatabaseDescriptor {\n\tconst { migrationConnectionStringEnv, ...runtimeConfig } = config;\n\treturn {\n\t\tentrypoint: \"emdash/db/postgres\",\n\t\tconfig: runtimeConfig,\n\t\ttype: \"postgres\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/postgres-migrations\",\n\t\t\tmanifestConfig: {\n\t\t\t\tconnectionStringEnv: migrationEnvironmentVariable(\n\t\t\t\t\tmigrationConnectionStringEnv,\n\t\t\t\t\t\"DATABASE_URL\",\n\t\t\t\t\t\"migrationConnectionStringEnv\",\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t};\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/db/adapters.ts"],"sourcesContent":["/**\n * Database Adapter Functions\n *\n * These run at config time (astro.config.mjs) and return serializable descriptors.\n * The actual dialect is created at runtime by loading the entrypoint.\n *\n * @example\n * ```ts\n * // astro.config.mjs\n * import emdash from \"emdash/astro\";\n * import { sqlite } from \"emdash/db\";\n *\n * export default defineConfig({\n * integrations: [\n * emdash({\n * database: sqlite({ url: \"file:./data.db\" }),\n * }),\n * ],\n * });\n * ```\n */\n\n/**\n * Dialect family identifier.\n * Used at runtime to select dialect-specific SQL fragments.\n */\nexport type DatabaseDialectType = \"sqlite\" | \"postgres\";\n\nexport type CollectionDeletionGuardInput =\n\t| {\n\t\t\taction: \"fence\";\n\t\t\tcollectionId: string;\n\t\t\tcollectionSlug: string;\n\t\t\tleaseToken: string;\n\t\t\tforceDelete: boolean;\n\t }\n\t| {\n\t\t\taction: \"drop\";\n\t\t\tcollectionId: string;\n\t\t\tcollectionSlug: string;\n\t\t\tleaseToken: string;\n\t };\n\nexport type CollectionDeletionGuardResult =\n\t| { outcome: \"fenced\" }\n\t| { outcome: \"has_content\" }\n\t| { outcome: \"stale\" }\n\t| { outcome: \"dropped\" };\n\nexport type ExecuteCollectionDeletionGuard = (\n\tconfig: unknown,\n\tinput: CollectionDeletionGuardInput,\n) => Promise<CollectionDeletionGuardResult>;\n\nconst ENVIRONMENT_VARIABLE_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\n\nfunction migrationEnvironmentVariable(\n\tvalue: string | undefined,\n\tfallback: string,\n\toptionName: string,\n): string {\n\tconst name = value ?? fallback;\n\tif (!ENVIRONMENT_VARIABLE_PATTERN.test(name)) {\n\t\tthrow new Error(`${optionName} must be a valid environment variable name.`);\n\t}\n\treturn name;\n}\n\n/**\n * Database descriptor - serializable config for virtual modules\n */\nexport interface DatabaseDescriptor {\n\tentrypoint: string;\n\tconfig: unknown;\n\ttype: DatabaseDialectType;\n\t/** Deployment migration capability with configuration safe for a build artifact. */\n\tmigrations?: {\n\t\tentrypoint: string;\n\t\tmanifestConfig: unknown;\n\t};\n\t/**\n\t * When true, the adapter's runtime entrypoint MUST export a named\n\t * `createRequestScopedDb` function matching the signature declared in\n\t * `virtual:emdash/dialect`. The virtual-module generator re-exports it\n\t * by name, so a missing export becomes a build-time bundler error.\n\t *\n\t * The function is called once per request and decides — based on its own\n\t * runtime config (e.g. whether the user opted into D1 sessions) — whether\n\t * to return a per-request Kysely or null. Use this for features like D1\n\t * read-replica sessions, bookmark cookies, or any per-request DB handle.\n\t *\n\t * When false or absent, the generator emits a stub that returns null and\n\t * the middleware takes its default (singleton) path.\n\t */\n\tsupportsRequestScope?: boolean;\n\t/**\n\t * When true, request middleware resolves the last content-namespace\n\t * invalidation timestamp and passes it to `createRequestScopedDb`.\n\t *\n\t * Keep this unset unless request routing depends on that timestamp: reading\n\t * it may require an object-cache backend round trip.\n\t */\n\tneedsLastContentWriteAt?: boolean;\n\t/**\n\t * When true, the adapter's runtime entrypoint MUST export a named\n\t * `createCoalescingDialect` function. The runtime uses this fresh dialect\n\t * only for its cold-start read batch.\n\t *\n\t * When false or absent, the virtual module exports `undefined` without\n\t * inspecting an optional entrypoint export.\n\t */\n\tsupportsCoalescing?: boolean;\n\t/** The runtime entrypoint exports the deletion-specific atomic guard. */\n\tsupportsCollectionDeletionGuard?: boolean;\n}\n\nexport interface SqliteConfig {\n\t/**\n\t * Database URL (e.g., \"file:./data.db\")\n\t */\n\turl: string;\n}\n\nexport interface LibsqlConfig {\n\t/**\n\t * Database URL (e.g., \"file:./data.db\" or \"libsql://...\")\n\t */\n\turl: string;\n\t/**\n\t * Auth token for remote libSQL\n\t */\n\tauthToken?: string;\n\tmigrationAuthTokenEnv?: string;\n}\n\n/**\n * SQLite database adapter (node:sqlite)\n *\n * For local development and Node.js deployments. Requires Node.js 22.16 or later.\n *\n * @example\n * ```ts\n * database: sqlite({ url: \"file:./data.db\" })\n * ```\n */\nexport function sqlite(config: SqliteConfig): DatabaseDescriptor {\n\treturn {\n\t\tentrypoint: \"emdash/db/sqlite\",\n\t\tconfig,\n\t\ttype: \"sqlite\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/sqlite-migrations\",\n\t\t\tmanifestConfig: { url: config.url },\n\t\t},\n\t};\n}\n\n/**\n * libSQL database adapter (Turso)\n *\n * For Turso hosted databases or local libSQL.\n *\n * @example\n * ```ts\n * database: libsql({\n * url: \"libsql://my-db.turso.io\",\n * authToken: process.env.TURSO_AUTH_TOKEN,\n * })\n * ```\n */\nexport function libsql(config: LibsqlConfig): DatabaseDescriptor {\n\tconst { migrationAuthTokenEnv, ...runtimeConfig } = config;\n\treturn {\n\t\tentrypoint: \"emdash/db/libsql\",\n\t\tconfig: runtimeConfig,\n\t\ttype: \"sqlite\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/libsql-migrations\",\n\t\t\tmanifestConfig: {\n\t\t\t\turl: config.url,\n\t\t\t\tauthTokenEnv: migrationEnvironmentVariable(\n\t\t\t\t\tmigrationAuthTokenEnv,\n\t\t\t\t\t\"TURSO_AUTH_TOKEN\",\n\t\t\t\t\t\"migrationAuthTokenEnv\",\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * PostgreSQL connection configuration\n */\nexport interface PostgresConfig {\n\tconnectionString?: string;\n\thost?: string;\n\tport?: number;\n\tdatabase?: string;\n\tuser?: string;\n\tpassword?: string;\n\tssl?: boolean;\n\tpool?: {\n\t\tmin?: number;\n\t\tmax?: number;\n\t\t/** Maximum time to wait for a connection, in milliseconds. Uses the pg default when omitted. */\n\t\tconnectionTimeoutMillis?: number;\n\t\t/** Time before an idle client is closed, in milliseconds. Uses the pg default when omitted. */\n\t\tidleTimeoutMillis?: number;\n\t};\n\tmigrationConnectionStringEnv?: string;\n}\n\n/**\n * PostgreSQL database adapter\n *\n * For PostgreSQL deployments with connection pooling.\n *\n * @example\n * ```ts\n * database: postgres({ connectionString: process.env.DATABASE_URL })\n * ```\n */\nexport function postgres(config: PostgresConfig): DatabaseDescriptor {\n\tconst { migrationConnectionStringEnv, ...runtimeConfig } = config;\n\treturn {\n\t\tentrypoint: \"emdash/db/postgres\",\n\t\tconfig: runtimeConfig,\n\t\ttype: \"postgres\",\n\t\tmigrations: {\n\t\t\tentrypoint: \"emdash/db/postgres-migrations\",\n\t\t\tmanifestConfig: {\n\t\t\t\tconnectionStringEnv: migrationEnvironmentVariable(\n\t\t\t\t\tmigrationConnectionStringEnv,\n\t\t\t\t\t\"DATABASE_URL\",\n\t\t\t\t\t\"migrationConnectionStringEnv\",\n\t\t\t\t),\n\t\t\t},\n\t\t},\n\t};\n}\n"],"mappings":";;;;;;AAsDA,MAAM,+BAA+B;AAErC,SAAS,6BACR,OACA,UACA,YACS;CACT,MAAM,OAAO,SAAS;AACtB,KAAI,CAAC,6BAA6B,KAAK,KAAK,CAC3C,OAAM,IAAI,MAAM,GAAG,WAAW,6CAA6C;AAE5E,QAAO;;;;;;;;;;;;AAgFR,SAAgB,OAAO,QAA0C;AAChE,QAAO;EACN,YAAY;EACZ;EACA,MAAM;EACN,YAAY;GACX,YAAY;GACZ,gBAAgB,EAAE,KAAK,OAAO,KAAK;GACnC;EACD;;;;;;;;;;;;;;;AAgBF,SAAgB,OAAO,QAA0C;CAChE,MAAM,EAAE,uBAAuB,GAAG,kBAAkB;AACpD,QAAO;EACN,YAAY;EACZ,QAAQ;EACR,MAAM;EACN,YAAY;GACX,YAAY;GACZ,gBAAgB;IACf,KAAK,OAAO;IACZ,cAAc,6BACb,uBACA,oBACA,wBACA;IACD;GACD;EACD;;;;;;;;;;;;AAmCF,SAAgB,SAAS,QAA4C;CACpE,MAAM,EAAE,8BAA8B,GAAG,kBAAkB;AAC3D,QAAO;EACN,YAAY;EACZ,QAAQ;EACR,MAAM;EACN,YAAY;GACX,YAAY;GACZ,gBAAgB,EACf,qBAAqB,6BACpB,8BACA,gBACA,+BACA,EACD;GACD;EACD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-
|
|
1
|
+
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-C1CNiKX4.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/db/libsql-migrations.d.ts
|
|
4
4
|
interface LibsqlMigrationManifestConfig {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "../runner-
|
|
2
|
-
import "../dialect-helpers-
|
|
3
|
-
import "../config-
|
|
4
|
-
import "../
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
1
|
+
import "../runner-ClrleR8A.mjs";
|
|
2
|
+
import "../dialect-helpers-CtYdsX4W.mjs";
|
|
3
|
+
import "../config-CGVeT8Hc.mjs";
|
|
4
|
+
import "../datetime-normalization-PeiEdcRY.mjs";
|
|
5
|
+
import "../identity-DRGSHEEr.mjs";
|
|
6
|
+
import { t as createDirectMigrationExecutor } from "../direct-executor-ZI8E01Yt.mjs";
|
|
7
|
+
import { n as requireMigrationEnvironment, t as createMigrationTarget } from "../target-CUKlGrXb.mjs";
|
|
7
8
|
import { createDialect } from "./libsql.mjs";
|
|
8
9
|
import { pathToFileURL } from "node:url";
|
|
9
10
|
import { resolve } from "node:path";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libsql-migrations.mjs","names":[],"sources":["../../src/db/libsql-migrations.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget, requireMigrationEnvironment } from \"../migrations/target.js\";\nimport { createDialect } from \"./libsql.js\";\n\nexport interface LibsqlMigrationManifestConfig {\n\turl: string;\n\tauthTokenEnv: string;\n}\n\ninterface ResolvedLibsqlUrl {\n\tconnectionUrl: string;\n\tlabel: string;\n\tidentity: string[];\n\trequiresAuthToken: boolean;\n}\n\nfunction resolveLibsqlUrl(url: unknown, projectRoot: string): ResolvedLibsqlUrl {\n\tif (typeof url !== \"string\" || url.length === 0) {\n\t\tthrow new Error(\"libSQL migration URL is missing.\");\n\t}\n\tif (url.startsWith(\"file:\")) {\n\t\tconst configuredPath = url.slice(5);\n\t\tif (configuredPath.length === 0) throw new Error(\"libSQL migration URL is invalid.\");\n\t\tconst fileUrl = pathToFileURL(resolve(projectRoot, configuredPath));\n\t\treturn {\n\t\t\tconnectionUrl: fileUrl.href,\n\t\t\tlabel: fileUrl.href,\n\t\t\tidentity: [fileUrl.protocol, fileUrl.pathname],\n\t\t\trequiresAuthToken: false,\n\t\t};\n\t}\n\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\tthrow new Error(\"libSQL migration URL is invalid.\");\n\t}\n\tif (parsed.username || parsed.password) {\n\t\tthrow new Error(\"libSQL migration URL must not contain credentials.\");\n\t}\n\tconst label = `${parsed.protocol}//${parsed.host}${parsed.pathname}`;\n\treturn {\n\t\tconnectionUrl: url,\n\t\tlabel,\n\t\tidentity: [parsed.protocol, parsed.host, parsed.pathname],\n\t\trequiresAuthToken: true,\n\t};\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: LibsqlMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst resolvedUrl = resolveLibsqlUrl(manifestConfig.url, context.projectRoot);\n\tconst authToken = resolvedUrl.requiresAuthToken\n\t\t? requireMigrationEnvironment(manifestConfig.authTokenEnv, context.env)\n\t\t: undefined;\n\tconst target = await createMigrationTarget(\"libsql\", resolvedUrl.label, resolvedUrl.identity);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () =>\n\t\t\tcreateDialect({\n\t\t\t\turl: resolvedUrl.connectionUrl,\n\t\t\t\tauthToken,\n\t\t\t}),\n\t});\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"libsql-migrations.mjs","names":[],"sources":["../../src/db/libsql-migrations.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget, requireMigrationEnvironment } from \"../migrations/target.js\";\nimport { createDialect } from \"./libsql.js\";\n\nexport interface LibsqlMigrationManifestConfig {\n\turl: string;\n\tauthTokenEnv: string;\n}\n\ninterface ResolvedLibsqlUrl {\n\tconnectionUrl: string;\n\tlabel: string;\n\tidentity: string[];\n\trequiresAuthToken: boolean;\n}\n\nfunction resolveLibsqlUrl(url: unknown, projectRoot: string): ResolvedLibsqlUrl {\n\tif (typeof url !== \"string\" || url.length === 0) {\n\t\tthrow new Error(\"libSQL migration URL is missing.\");\n\t}\n\tif (url.startsWith(\"file:\")) {\n\t\tconst configuredPath = url.slice(5);\n\t\tif (configuredPath.length === 0) throw new Error(\"libSQL migration URL is invalid.\");\n\t\tconst fileUrl = pathToFileURL(resolve(projectRoot, configuredPath));\n\t\treturn {\n\t\t\tconnectionUrl: fileUrl.href,\n\t\t\tlabel: fileUrl.href,\n\t\t\tidentity: [fileUrl.protocol, fileUrl.pathname],\n\t\t\trequiresAuthToken: false,\n\t\t};\n\t}\n\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\tthrow new Error(\"libSQL migration URL is invalid.\");\n\t}\n\tif (parsed.username || parsed.password) {\n\t\tthrow new Error(\"libSQL migration URL must not contain credentials.\");\n\t}\n\tconst label = `${parsed.protocol}//${parsed.host}${parsed.pathname}`;\n\treturn {\n\t\tconnectionUrl: url,\n\t\tlabel,\n\t\tidentity: [parsed.protocol, parsed.host, parsed.pathname],\n\t\trequiresAuthToken: true,\n\t};\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: LibsqlMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst resolvedUrl = resolveLibsqlUrl(manifestConfig.url, context.projectRoot);\n\tconst authToken = resolvedUrl.requiresAuthToken\n\t\t? requireMigrationEnvironment(manifestConfig.authTokenEnv, context.env)\n\t\t: undefined;\n\tconst target = await createMigrationTarget(\"libsql\", resolvedUrl.label, resolvedUrl.identity);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () =>\n\t\t\tcreateDialect({\n\t\t\t\turl: resolvedUrl.connectionUrl,\n\t\t\t\tauthToken,\n\t\t\t}),\n\t});\n}\n"],"mappings":";;;;;;;;;;;;AAoBA,SAAS,iBAAiB,KAAc,aAAwC;AAC/E,KAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,EAC7C,OAAM,IAAI,MAAM,mCAAmC;AAEpD,KAAI,IAAI,WAAW,QAAQ,EAAE;EAC5B,MAAM,iBAAiB,IAAI,MAAM,EAAE;AACnC,MAAI,eAAe,WAAW,EAAG,OAAM,IAAI,MAAM,mCAAmC;EACpF,MAAM,UAAU,cAAc,QAAQ,aAAa,eAAe,CAAC;AACnE,SAAO;GACN,eAAe,QAAQ;GACvB,OAAO,QAAQ;GACf,UAAU,CAAC,QAAQ,UAAU,QAAQ,SAAS;GAC9C,mBAAmB;GACnB;;CAGF,IAAI;AACJ,KAAI;AACH,WAAS,IAAI,IAAI,IAAI;SACd;AACP,QAAM,IAAI,MAAM,mCAAmC;;AAEpD,KAAI,OAAO,YAAY,OAAO,SAC7B,OAAM,IAAI,MAAM,qDAAqD;AAGtE,QAAO;EACN,eAAe;EACf,OAHa,GAAG,OAAO,SAAS,IAAI,OAAO,OAAO,OAAO;EAIzD,UAAU;GAAC,OAAO;GAAU,OAAO;GAAM,OAAO;GAAS;EACzD,mBAAmB;EACnB;;AAGF,eAAsB,wBACrB,gBACA,SAC6B;CAC7B,MAAM,cAAc,iBAAiB,eAAe,KAAK,QAAQ,YAAY;CAC7E,MAAM,YAAY,YAAY,oBAC3B,4BAA4B,eAAe,cAAc,QAAQ,IAAI,GACrE;AAEH,QAAO,8BAA8B;EACpC,QAFc,MAAM,sBAAsB,UAAU,YAAY,OAAO,YAAY,SAAS;EAG5F,qBACC,cAAc;GACb,KAAK,YAAY;GACjB;GACA,CAAC;EACH,CAAC"}
|
package/dist/db/libsql.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-
|
|
1
|
+
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-C1CNiKX4.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/db/postgres-migrations.d.ts
|
|
4
4
|
interface PostgresMigrationManifestConfig {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "../runner-
|
|
2
|
-
import "../dialect-helpers-
|
|
3
|
-
import "../config-
|
|
4
|
-
import "../
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
1
|
+
import "../runner-ClrleR8A.mjs";
|
|
2
|
+
import "../dialect-helpers-CtYdsX4W.mjs";
|
|
3
|
+
import "../config-CGVeT8Hc.mjs";
|
|
4
|
+
import "../datetime-normalization-PeiEdcRY.mjs";
|
|
5
|
+
import "../identity-DRGSHEEr.mjs";
|
|
6
|
+
import { t as createDirectMigrationExecutor } from "../direct-executor-ZI8E01Yt.mjs";
|
|
7
|
+
import { n as requireMigrationEnvironment, t as createMigrationTarget } from "../target-CUKlGrXb.mjs";
|
|
7
8
|
import { createDialect } from "./postgres.mjs";
|
|
8
9
|
|
|
9
10
|
//#region src/db/postgres-migrations.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-migrations.mjs","names":[],"sources":["../../src/db/postgres-migrations.ts"],"sourcesContent":["import { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget, requireMigrationEnvironment } from \"../migrations/target.js\";\nimport { createDialect } from \"./postgres.js\";\n\nexport interface PostgresMigrationManifestConfig {\n\tconnectionStringEnv: string;\n}\n\ninterface PostgresTargetIdentity {\n\thost: string;\n\tport: string;\n\tdatabase: string;\n}\n\nfunction parseTargetIdentity(connectionString: string): PostgresTargetIdentity {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(connectionString);\n\t} catch {\n\t\tthrow new Error(\"PostgreSQL migration connection string is invalid.\");\n\t}\n\tif (parsed.protocol !== \"postgres:\" && parsed.protocol !== \"postgresql:\") {\n\t\tthrow new Error(\"PostgreSQL migration connection string is invalid.\");\n\t}\n\tconst database = parsed.pathname.slice(1);\n\tif (!parsed.hostname || !database) {\n\t\tthrow new Error(\"PostgreSQL migration connection string must identify a host and database.\");\n\t}\n\treturn {\n\t\thost: parsed.hostname,\n\t\tport: parsed.port || \"5432\",\n\t\tdatabase,\n\t};\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: PostgresMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst connectionStringEnv =\n\t\tcontext.overrides?.databaseUrlEnv ?? manifestConfig.connectionStringEnv;\n\tconst connectionString = requireMigrationEnvironment(connectionStringEnv, context.env);\n\tconst identity = parseTargetIdentity(connectionString);\n\tconst label = `${identity.host}:${identity.port}/${identity.database}`;\n\tconst target = await createMigrationTarget(\"postgres\", label, [\n\t\tidentity.host,\n\t\tidentity.port,\n\t\tidentity.database,\n\t]);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () =>\n\t\t\tcreateDialect({\n\t\t\t\tconnectionString,\n\t\t\t\tpool: { min: 0, max: 1 },\n\t\t\t}),\n\t});\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres-migrations.mjs","names":[],"sources":["../../src/db/postgres-migrations.ts"],"sourcesContent":["import { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget, requireMigrationEnvironment } from \"../migrations/target.js\";\nimport { createDialect } from \"./postgres.js\";\n\nexport interface PostgresMigrationManifestConfig {\n\tconnectionStringEnv: string;\n}\n\ninterface PostgresTargetIdentity {\n\thost: string;\n\tport: string;\n\tdatabase: string;\n}\n\nfunction parseTargetIdentity(connectionString: string): PostgresTargetIdentity {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(connectionString);\n\t} catch {\n\t\tthrow new Error(\"PostgreSQL migration connection string is invalid.\");\n\t}\n\tif (parsed.protocol !== \"postgres:\" && parsed.protocol !== \"postgresql:\") {\n\t\tthrow new Error(\"PostgreSQL migration connection string is invalid.\");\n\t}\n\tconst database = parsed.pathname.slice(1);\n\tif (!parsed.hostname || !database) {\n\t\tthrow new Error(\"PostgreSQL migration connection string must identify a host and database.\");\n\t}\n\treturn {\n\t\thost: parsed.hostname,\n\t\tport: parsed.port || \"5432\",\n\t\tdatabase,\n\t};\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: PostgresMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst connectionStringEnv =\n\t\tcontext.overrides?.databaseUrlEnv ?? manifestConfig.connectionStringEnv;\n\tconst connectionString = requireMigrationEnvironment(connectionStringEnv, context.env);\n\tconst identity = parseTargetIdentity(connectionString);\n\tconst label = `${identity.host}:${identity.port}/${identity.database}`;\n\tconst target = await createMigrationTarget(\"postgres\", label, [\n\t\tidentity.host,\n\t\tidentity.port,\n\t\tidentity.database,\n\t]);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () =>\n\t\t\tcreateDialect({\n\t\t\t\tconnectionString,\n\t\t\t\tpool: { min: 0, max: 1 },\n\t\t\t}),\n\t});\n}\n"],"mappings":";;;;;;;;;;AAeA,SAAS,oBAAoB,kBAAkD;CAC9E,IAAI;AACJ,KAAI;AACH,WAAS,IAAI,IAAI,iBAAiB;SAC3B;AACP,QAAM,IAAI,MAAM,qDAAqD;;AAEtE,KAAI,OAAO,aAAa,eAAe,OAAO,aAAa,cAC1D,OAAM,IAAI,MAAM,qDAAqD;CAEtE,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE;AACzC,KAAI,CAAC,OAAO,YAAY,CAAC,SACxB,OAAM,IAAI,MAAM,4EAA4E;AAE7F,QAAO;EACN,MAAM,OAAO;EACb,MAAM,OAAO,QAAQ;EACrB;EACA;;AAGF,eAAsB,wBACrB,gBACA,SAC6B;CAG7B,MAAM,mBAAmB,4BADxB,QAAQ,WAAW,kBAAkB,eAAe,qBACqB,QAAQ,IAAI;CACtF,MAAM,WAAW,oBAAoB,iBAAiB;AAOtD,QAAO,8BAA8B;EACpC,QANc,MAAM,sBAAsB,YAD7B,GAAG,SAAS,KAAK,GAAG,SAAS,KAAK,GAAG,SAAS,YACE;GAC7D,SAAS;GACT,SAAS;GACT,SAAS;GACT,CAAC;EAGD,qBACC,cAAc;GACb;GACA,MAAM;IAAE,KAAK;IAAG,KAAK;IAAG;GACxB,CAAC;EACH,CAAC"}
|
package/dist/db/postgres.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-
|
|
1
|
+
import { i as MigrationExecutorFactoryContext, n as MigrationExecutor } from "../protocol-C1CNiKX4.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/db/sqlite-migrations.d.ts
|
|
4
4
|
interface SqliteMigrationManifestConfig {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import "../runner-
|
|
2
|
-
import "../dialect-helpers-
|
|
3
|
-
import "../config-
|
|
4
|
-
import "../
|
|
1
|
+
import "../runner-ClrleR8A.mjs";
|
|
2
|
+
import "../dialect-helpers-CtYdsX4W.mjs";
|
|
3
|
+
import "../config-CGVeT8Hc.mjs";
|
|
4
|
+
import "../datetime-normalization-PeiEdcRY.mjs";
|
|
5
|
+
import "../identity-DRGSHEEr.mjs";
|
|
5
6
|
import { createDialect } from "./sqlite.mjs";
|
|
6
|
-
import { t as createDirectMigrationExecutor } from "../direct-executor-
|
|
7
|
-
import { t as createMigrationTarget } from "../target-
|
|
7
|
+
import { t as createDirectMigrationExecutor } from "../direct-executor-ZI8E01Yt.mjs";
|
|
8
|
+
import { t as createMigrationTarget } from "../target-CUKlGrXb.mjs";
|
|
8
9
|
import { isAbsolute, resolve } from "node:path";
|
|
9
10
|
|
|
10
11
|
//#region src/db/sqlite-migrations.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-migrations.mjs","names":[],"sources":["../../src/db/sqlite-migrations.ts"],"sourcesContent":["import { isAbsolute, resolve } from \"node:path\";\n\nimport { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget } from \"../migrations/target.js\";\nimport { createDialect } from \"./sqlite.js\";\n\nexport interface SqliteMigrationManifestConfig {\n\turl: string;\n}\n\nfunction resolveDatabasePath(\n\tmanifestConfig: SqliteMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): string {\n\tconst configuredUrl = context.overrides?.database ?? manifestConfig.url;\n\tif (typeof configuredUrl !== \"string\" || configuredUrl.length === 0) {\n\t\tthrow new Error(\"SQLite migration database path is missing.\");\n\t}\n\tconst path = configuredUrl.startsWith(\"file:\") ? configuredUrl.slice(5) : configuredUrl;\n\tif (path.length === 0) {\n\t\tthrow new Error(\"SQLite migration database path is missing.\");\n\t}\n\treturn isAbsolute(path) ? resolve(path) : resolve(context.projectRoot, path);\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: SqliteMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst databasePath = resolveDatabasePath(manifestConfig, context);\n\tconst target = await createMigrationTarget(\"sqlite\", databasePath, [databasePath]);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () => createDialect({ url: databasePath }),\n\t});\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite-migrations.mjs","names":[],"sources":["../../src/db/sqlite-migrations.ts"],"sourcesContent":["import { isAbsolute, resolve } from \"node:path\";\n\nimport { createDirectMigrationExecutor } from \"../migrations/direct-executor.js\";\nimport type { MigrationExecutor, MigrationExecutorFactoryContext } from \"../migrations/protocol.js\";\nimport { createMigrationTarget } from \"../migrations/target.js\";\nimport { createDialect } from \"./sqlite.js\";\n\nexport interface SqliteMigrationManifestConfig {\n\turl: string;\n}\n\nfunction resolveDatabasePath(\n\tmanifestConfig: SqliteMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): string {\n\tconst configuredUrl = context.overrides?.database ?? manifestConfig.url;\n\tif (typeof configuredUrl !== \"string\" || configuredUrl.length === 0) {\n\t\tthrow new Error(\"SQLite migration database path is missing.\");\n\t}\n\tconst path = configuredUrl.startsWith(\"file:\") ? configuredUrl.slice(5) : configuredUrl;\n\tif (path.length === 0) {\n\t\tthrow new Error(\"SQLite migration database path is missing.\");\n\t}\n\treturn isAbsolute(path) ? resolve(path) : resolve(context.projectRoot, path);\n}\n\nexport async function createMigrationExecutor(\n\tmanifestConfig: SqliteMigrationManifestConfig,\n\tcontext: MigrationExecutorFactoryContext,\n): Promise<MigrationExecutor> {\n\tconst databasePath = resolveDatabasePath(manifestConfig, context);\n\tconst target = await createMigrationTarget(\"sqlite\", databasePath, [databasePath]);\n\treturn createDirectMigrationExecutor({\n\t\ttarget,\n\t\tcreateDialect: () => createDialect({ url: databasePath }),\n\t});\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,oBACR,gBACA,SACS;CACT,MAAM,gBAAgB,QAAQ,WAAW,YAAY,eAAe;AACpE,KAAI,OAAO,kBAAkB,YAAY,cAAc,WAAW,EACjE,OAAM,IAAI,MAAM,6CAA6C;CAE9D,MAAM,OAAO,cAAc,WAAW,QAAQ,GAAG,cAAc,MAAM,EAAE,GAAG;AAC1E,KAAI,KAAK,WAAW,EACnB,OAAM,IAAI,MAAM,6CAA6C;AAE9D,QAAO,WAAW,KAAK,GAAG,QAAQ,KAAK,GAAG,QAAQ,QAAQ,aAAa,KAAK;;AAG7E,eAAsB,wBACrB,gBACA,SAC6B;CAC7B,MAAM,eAAe,oBAAoB,gBAAgB,QAAQ;AAEjE,QAAO,8BAA8B;EACpC,QAFc,MAAM,sBAAsB,UAAU,cAAc,CAAC,aAAa,CAAC;EAGjF,qBAAqB,cAAc,EAAE,KAAK,cAAc,CAAC;EACzD,CAAC"}
|
package/dist/db/sqlite.d.mts
CHANGED
package/dist/db/sqlite.mjs
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region src/utils/db-errors.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared detection helpers for database-layer error messages.
|
|
4
|
+
*
|
|
5
|
+
* Different SQL dialects phrase "table or relation does not exist" differently:
|
|
6
|
+
*
|
|
7
|
+
* - SQLite / D1: "no such table: foo"
|
|
8
|
+
* - PostgreSQL: 'relation "foo" does not exist'
|
|
9
|
+
* 'table "foo" does not exist'
|
|
10
|
+
* - MySQL (future): "Table 'db.foo' doesn't exist"
|
|
11
|
+
*
|
|
12
|
+
* Runtime code paths that short-circuit on missing tables (pre-migration
|
|
13
|
+
* probes, optional feature tables, etc.) should use these helpers rather
|
|
14
|
+
* than hand-rolling string matches per call-site.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Extract a lowercase error message from any unknown value, safely.
|
|
18
|
+
*/
|
|
19
|
+
function messageOf(error) {
|
|
20
|
+
if (error instanceof Error) return error.message.toLowerCase();
|
|
21
|
+
if (typeof error === "string") return error.toLowerCase();
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns true when `error` is a "column does not exist" error.
|
|
26
|
+
* Used to handle where filters that reference non-existent field names
|
|
27
|
+
* gracefully (return empty results) instead of propagating a SQL error.
|
|
28
|
+
* When `column` is given, only errors naming that column match.
|
|
29
|
+
*/
|
|
30
|
+
function isMissingColumnError(error, column) {
|
|
31
|
+
const message = messageOf(error);
|
|
32
|
+
if (!message) return false;
|
|
33
|
+
if (column && !message.includes(column.toLowerCase())) return false;
|
|
34
|
+
if (message.includes("no such column")) return true;
|
|
35
|
+
if (message.includes("does not exist") && message.includes("column") && !message.includes("relation")) return true;
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns true when `error` is a "table does not exist" error across the
|
|
40
|
+
* dialects EmDash supports (D1/SQLite and PostgreSQL). Used by runtime
|
|
41
|
+
* probes to treat pre-migration databases as empty without logging a scary
|
|
42
|
+
* warning, while still propagating unrelated errors (permissions, connection
|
|
43
|
+
* loss, syntax issues) to callers.
|
|
44
|
+
*/
|
|
45
|
+
function isMissingTableError(error) {
|
|
46
|
+
const message = messageOf(error);
|
|
47
|
+
if (!message) return false;
|
|
48
|
+
if (message.includes("no such table")) return true;
|
|
49
|
+
if (message.includes("does not exist") || message.includes("doesn't exist")) return message.includes("relation") || message.includes("table");
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { isMissingTableError as n, isMissingColumnError as t };
|
|
55
|
+
//# sourceMappingURL=db-errors-CBD5yMro.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-errors-CBD5yMro.mjs","names":[],"sources":["../src/utils/db-errors.ts"],"sourcesContent":["/**\n * Shared detection helpers for database-layer error messages.\n *\n * Different SQL dialects phrase \"table or relation does not exist\" differently:\n *\n * - SQLite / D1: \"no such table: foo\"\n * - PostgreSQL: 'relation \"foo\" does not exist'\n * 'table \"foo\" does not exist'\n * - MySQL (future): \"Table 'db.foo' doesn't exist\"\n *\n * Runtime code paths that short-circuit on missing tables (pre-migration\n * probes, optional feature tables, etc.) should use these helpers rather\n * than hand-rolling string matches per call-site.\n */\n\n/**\n * Extract a lowercase error message from any unknown value, safely.\n */\nfunction messageOf(error: unknown): string {\n\tif (error instanceof Error) return error.message.toLowerCase();\n\tif (typeof error === \"string\") return error.toLowerCase();\n\treturn \"\";\n}\n\n/**\n * Returns true when `error` is a \"column does not exist\" error.\n * Used to handle where filters that reference non-existent field names\n * gracefully (return empty results) instead of propagating a SQL error.\n * When `column` is given, only errors naming that column match.\n */\nexport function isMissingColumnError(error: unknown, column?: string): boolean {\n\tconst message = messageOf(error);\n\tif (!message) return false;\n\tif (column && !message.includes(column.toLowerCase())) return false;\n\n\t// SQLite / D1: \"no such column: foo\"\n\tif (message.includes(\"no such column\")) return true;\n\n\t// PostgreSQL SQLSTATE 42703: 'column \"foo\" does not exist'\n\t// Exclude \"relation\" to avoid false positives on table names containing \"column\"\n\tif (\n\t\tmessage.includes(\"does not exist\") &&\n\t\tmessage.includes(\"column\") &&\n\t\t!message.includes(\"relation\")\n\t)\n\t\treturn true;\n\n\treturn false;\n}\n\n/**\n * Returns true when `error` is a \"table does not exist\" error across the\n * dialects EmDash supports (D1/SQLite and PostgreSQL). Used by runtime\n * probes to treat pre-migration databases as empty without logging a scary\n * warning, while still propagating unrelated errors (permissions, connection\n * loss, syntax issues) to callers.\n */\nexport function isMissingTableError(error: unknown): boolean {\n\tconst message = messageOf(error);\n\tif (!message) return false;\n\n\t// SQLite / D1\n\tif (message.includes(\"no such table\")) return true;\n\n\t// PostgreSQL (and some MySQL variants): \"relation ... does not exist\" /\n\t// \"table ... does not exist\" / \"doesn't exist\".\n\tif (message.includes(\"does not exist\") || message.includes(\"doesn't exist\")) {\n\t\treturn message.includes(\"relation\") || message.includes(\"table\");\n\t}\n\n\treturn false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAAS,UAAU,OAAwB;AAC1C,KAAI,iBAAiB,MAAO,QAAO,MAAM,QAAQ,aAAa;AAC9D,KAAI,OAAO,UAAU,SAAU,QAAO,MAAM,aAAa;AACzD,QAAO;;;;;;;;AASR,SAAgB,qBAAqB,OAAgB,QAA0B;CAC9E,MAAM,UAAU,UAAU,MAAM;AAChC,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,UAAU,CAAC,QAAQ,SAAS,OAAO,aAAa,CAAC,CAAE,QAAO;AAG9D,KAAI,QAAQ,SAAS,iBAAiB,CAAE,QAAO;AAI/C,KACC,QAAQ,SAAS,iBAAiB,IAClC,QAAQ,SAAS,SAAS,IAC1B,CAAC,QAAQ,SAAS,WAAW,CAE7B,QAAO;AAER,QAAO;;;;;;;;;AAUR,SAAgB,oBAAoB,OAAyB;CAC5D,MAAM,UAAU,UAAU,MAAM;AAChC,KAAI,CAAC,QAAS,QAAO;AAGrB,KAAI,QAAQ,SAAS,gBAAgB,CAAE,QAAO;AAI9C,KAAI,QAAQ,SAAS,iBAAiB,IAAI,QAAQ,SAAS,gBAAgB,CAC1E,QAAO,QAAQ,SAAS,WAAW,IAAI,QAAQ,SAAS,QAAQ;AAGjE,QAAO"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
//#region src/seed/default.ts
|
|
2
|
+
const defaultSeed = {
|
|
3
|
+
version: "1",
|
|
4
|
+
meta: {
|
|
5
|
+
name: "Default",
|
|
6
|
+
description: "Posts and pages with categories and tags"
|
|
7
|
+
},
|
|
8
|
+
collections: [{
|
|
9
|
+
slug: "posts",
|
|
10
|
+
label: "Posts",
|
|
11
|
+
labelSingular: "Post",
|
|
12
|
+
supports: [
|
|
13
|
+
"drafts",
|
|
14
|
+
"revisions",
|
|
15
|
+
"search"
|
|
16
|
+
],
|
|
17
|
+
fields: [
|
|
18
|
+
{
|
|
19
|
+
slug: "title",
|
|
20
|
+
label: "Title",
|
|
21
|
+
type: "string",
|
|
22
|
+
required: true,
|
|
23
|
+
searchable: true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
slug: "featured_image",
|
|
27
|
+
label: "Featured Image",
|
|
28
|
+
type: "image"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
slug: "content",
|
|
32
|
+
label: "Content",
|
|
33
|
+
type: "portableText",
|
|
34
|
+
searchable: true
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
slug: "excerpt",
|
|
38
|
+
label: "Excerpt",
|
|
39
|
+
type: "text"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}, {
|
|
43
|
+
slug: "pages",
|
|
44
|
+
label: "Pages",
|
|
45
|
+
labelSingular: "Page",
|
|
46
|
+
supports: [
|
|
47
|
+
"drafts",
|
|
48
|
+
"revisions",
|
|
49
|
+
"search"
|
|
50
|
+
],
|
|
51
|
+
fields: [{
|
|
52
|
+
slug: "title",
|
|
53
|
+
label: "Title",
|
|
54
|
+
type: "string",
|
|
55
|
+
required: true,
|
|
56
|
+
searchable: true
|
|
57
|
+
}, {
|
|
58
|
+
slug: "content",
|
|
59
|
+
label: "Content",
|
|
60
|
+
type: "portableText",
|
|
61
|
+
searchable: true
|
|
62
|
+
}]
|
|
63
|
+
}],
|
|
64
|
+
taxonomies: [{
|
|
65
|
+
name: "category",
|
|
66
|
+
label: "Categories",
|
|
67
|
+
labelSingular: "Category",
|
|
68
|
+
hierarchical: true,
|
|
69
|
+
collections: ["posts"]
|
|
70
|
+
}, {
|
|
71
|
+
name: "tag",
|
|
72
|
+
label: "Tags",
|
|
73
|
+
labelSingular: "Tag",
|
|
74
|
+
hierarchical: false,
|
|
75
|
+
collections: ["posts"]
|
|
76
|
+
}]
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
export { defaultSeed as t };
|
|
81
|
+
//# sourceMappingURL=default-BtlxWgh9.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-BtlxWgh9.mjs","names":[],"sources":["../src/seed/default.ts"],"sourcesContent":["/**\n * Default seed applied when no user seed file exists.\n *\n * Provides the baseline schema every EmDash site needs:\n * posts, pages, categories, and tags.\n */\n\nimport type { SeedFile } from \"./types.js\";\n\nexport const defaultSeed: SeedFile = {\n\tversion: \"1\",\n\tmeta: {\n\t\tname: \"Default\",\n\t\tdescription: \"Posts and pages with categories and tags\",\n\t},\n\tcollections: [\n\t\t{\n\t\t\tslug: \"posts\",\n\t\t\tlabel: \"Posts\",\n\t\t\tlabelSingular: \"Post\",\n\t\t\tsupports: [\"drafts\", \"revisions\", \"search\"],\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tslug: \"title\",\n\t\t\t\t\tlabel: \"Title\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\trequired: true,\n\t\t\t\t\tsearchable: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tslug: \"featured_image\",\n\t\t\t\t\tlabel: \"Featured Image\",\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tslug: \"content\",\n\t\t\t\t\tlabel: \"Content\",\n\t\t\t\t\ttype: \"portableText\",\n\t\t\t\t\tsearchable: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tslug: \"excerpt\",\n\t\t\t\t\tlabel: \"Excerpt\",\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tslug: \"pages\",\n\t\t\tlabel: \"Pages\",\n\t\t\tlabelSingular: \"Page\",\n\t\t\tsupports: [\"drafts\", \"revisions\", \"search\"],\n\t\t\tfields: [\n\t\t\t\t{\n\t\t\t\t\tslug: \"title\",\n\t\t\t\t\tlabel: \"Title\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\trequired: true,\n\t\t\t\t\tsearchable: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tslug: \"content\",\n\t\t\t\t\tlabel: \"Content\",\n\t\t\t\t\ttype: \"portableText\",\n\t\t\t\t\tsearchable: true,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n\ttaxonomies: [\n\t\t{\n\t\t\tname: \"category\",\n\t\t\tlabel: \"Categories\",\n\t\t\tlabelSingular: \"Category\",\n\t\t\thierarchical: true,\n\t\t\tcollections: [\"posts\"],\n\t\t},\n\t\t{\n\t\t\tname: \"tag\",\n\t\t\tlabel: \"Tags\",\n\t\t\tlabelSingular: \"Tag\",\n\t\t\thierarchical: false,\n\t\t\tcollections: [\"posts\"],\n\t\t},\n\t],\n};\n"],"mappings":";AASA,MAAa,cAAwB;CACpC,SAAS;CACT,MAAM;EACL,MAAM;EACN,aAAa;EACb;CACD,aAAa,CACZ;EACC,MAAM;EACN,OAAO;EACP,eAAe;EACf,UAAU;GAAC;GAAU;GAAa;GAAS;EAC3C,QAAQ;GACP;IACC,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,YAAY;IACZ;GACD;IACC,MAAM;IACN,OAAO;IACP,MAAM;IACN;GACD;IACC,MAAM;IACN,OAAO;IACP,MAAM;IACN,YAAY;IACZ;GACD;IACC,MAAM;IACN,OAAO;IACP,MAAM;IACN;GACD;EACD,EACD;EACC,MAAM;EACN,OAAO;EACP,eAAe;EACf,UAAU;GAAC;GAAU;GAAa;GAAS;EAC3C,QAAQ,CACP;GACC,MAAM;GACN,OAAO;GACP,MAAM;GACN,UAAU;GACV,YAAY;GACZ,EACD;GACC,MAAM;GACN,OAAO;GACP,MAAM;GACN,YAAY;GACZ,CACD;EACD,CACD;CACD,YAAY,CACX;EACC,MAAM;EACN,OAAO;EACP,eAAe;EACf,cAAc;EACd,aAAa,CAAC,QAAQ;EACtB,EACD;EACC,MAAM;EACN,OAAO;EACP,eAAe;EACf,cAAc;EACd,aAAa,CAAC,QAAQ;EACtB,CACD;CACD"}
|