@beechcms/api 0.6.0-preview.1 → 0.6.0-preview.3
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/README.md +4 -4
- package/assets/dashboard/BeechLogo.svg +18 -18
- package/assets/dashboard/BeechLogoLIght.svg +48 -48
- package/assets/dashboard/assets/chart-Cws4Yj6K.js +39 -0
- package/assets/dashboard/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/assets/dashboard/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/assets/dashboard/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/assets/dashboard/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/assets/dashboard/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/assets/dashboard/assets/index-BjPpppHe.css +1 -0
- package/assets/dashboard/assets/index-CrW-zhkA.js +642 -0
- package/assets/dashboard/assets/lora-cyrillic-ext-wght-normal-YcVxMP-u.woff2 +0 -0
- package/assets/dashboard/assets/lora-cyrillic-wght-normal-UWPuZLjM.woff2 +0 -0
- package/assets/dashboard/assets/lora-latin-ext-wght-normal-C2Wlntb9.woff2 +0 -0
- package/assets/dashboard/assets/lora-latin-wght-normal-BiLcIKcI.woff2 +0 -0
- package/assets/dashboard/assets/lora-math-wght-normal-sOy7rEfW.woff2 +0 -0
- package/assets/dashboard/assets/lora-symbols-wght-normal-DQ5VrUkH.woff2 +0 -0
- package/assets/dashboard/assets/lora-vietnamese-wght-normal-CfJ7gtf3.woff2 +0 -0
- package/assets/dashboard/assets/pie-chart-recharts-CAxoDQp2.js +1 -0
- package/assets/dashboard/assets/timeseries-chart-recharts-CixDW-LM.js +1 -0
- package/assets/dashboard/beechLogoDark.svg +48 -48
- package/assets/dashboard/index.html +18 -18
- package/assets/dashboard/noResult.svg +42 -42
- package/assets/dashboard/sol.svg +3 -3
- package/assets/dashboard/undraw_enter_nwx3.svg +36 -36
- package/dist/auth/__fixtures__/in-memory-hash-provider.d.ts +5 -0
- package/dist/auth/__fixtures__/static-token-service.d.ts +6 -0
- package/dist/auth/bcrypt-hash-provider.d.ts +8 -0
- package/dist/auth/constants.d.ts +10 -0
- package/dist/auth/jose-token-service.d.ts +14 -0
- package/dist/auth/login.d.ts +32 -0
- package/dist/auth/refresh.d.ts +1 -0
- package/dist/factory.d.ts +39 -0
- package/dist/features/automations/action-executors/create-entry.executor.d.ts +7 -0
- package/dist/features/automations/action-executors/edit-field.executor.d.ts +7 -0
- package/dist/features/automations/action-executors/index.d.ts +13 -0
- package/dist/features/automations/action-executors/send-mail.executor.d.ts +7 -0
- package/dist/features/automations/action-executors/set-variable.executor.d.ts +15 -0
- package/dist/features/automations/action-executors/webhook.executor.d.ts +7 -0
- package/dist/features/automations/automation-runner.d.ts +13 -0
- package/dist/features/automations/automation-runner.utils.d.ts +3 -0
- package/dist/features/automations/automations.handler.d.ts +7 -0
- package/dist/features/automations/automations.schema.d.ts +191 -0
- package/dist/features/automations/context-resolver.d.ts +8 -0
- package/dist/features/automations/cron-runner.d.ts +9 -0
- package/dist/features/automations/cron-runner.utils.d.ts +1 -0
- package/dist/features/automations/filter-translation.d.ts +9 -0
- package/dist/features/automations/index.d.ts +7 -0
- package/dist/features/automations/template-grammar.d.ts +73 -0
- package/dist/features/automations/var-access-resolver.d.ts +6 -0
- package/dist/features/automations/when-evaluator.d.ts +3 -0
- package/dist/features/automations/when-pushdown.d.ts +2 -0
- package/dist/features/backrefs/backrefs.handler.d.ts +3 -0
- package/dist/features/backrefs/d1-backref.repository.d.ts +17 -0
- package/dist/features/backrefs/index.d.ts +1 -0
- package/dist/features/content/constants.d.ts +12 -0
- package/dist/features/content/handlers/bulk.handler.d.ts +3 -0
- package/dist/features/content/handlers/create.d.ts +3 -0
- package/dist/features/content/handlers/delete.d.ts +3 -0
- package/dist/features/content/handlers/facets.d.ts +3 -0
- package/dist/features/content/handlers/get.d.ts +4 -0
- package/dist/features/content/handlers/helpers.d.ts +12 -0
- package/dist/features/content/handlers/list.d.ts +3 -0
- package/dist/features/content/handlers/update.d.ts +3 -0
- package/dist/features/content/index.d.ts +4 -0
- package/dist/features/dashboard-layout/dashboard-layout.handler.d.ts +7 -0
- package/dist/features/dashboard-layout/index.d.ts +1 -0
- package/dist/features/draft/draft.handler.d.ts +4 -0
- package/dist/features/draft/draft.middleware.d.ts +9 -0
- package/dist/features/draft/index.d.ts +1 -0
- package/{src/features/email/email.provider.ts → dist/features/email/email.provider.d.ts} +37 -42
- package/dist/features/email/email.service.d.ts +13 -0
- package/dist/features/email/email.types.d.ts +94 -0
- package/{src/features/email/index.ts → dist/features/email/index.d.ts} +20 -33
- package/dist/features/email/providers/resend.d.ts +36 -0
- package/dist/features/email/providers/smtp.d.ts +11 -0
- package/dist/features/email/templates/automation-mail.d.ts +8 -0
- package/dist/features/email/templates/password-changed.d.ts +15 -0
- package/dist/features/email/templates/password-reset.d.ts +18 -0
- package/dist/features/email/templates/shell.d.ts +58 -0
- package/dist/features/notifications/index.d.ts +1 -0
- package/dist/features/notifications/notifications.handler.d.ts +15 -0
- package/dist/features/password-reset/index.d.ts +6 -0
- package/dist/features/password-reset/request.d.ts +10 -0
- package/dist/features/password-reset/reset.d.ts +9 -0
- package/dist/features/rotate-field/index.d.ts +1 -0
- package/dist/features/rotate-field/rotate-field.handler.d.ts +7 -0
- package/dist/features/rotate-field/rotate-field.schema.d.ts +11 -0
- package/dist/features/schema/schema.handler.d.ts +7 -0
- package/dist/features/seeds/index.d.ts +1 -0
- package/dist/features/seeds/seeds.handler.d.ts +6 -0
- package/dist/features/settings/settings.handler.d.ts +7 -0
- package/dist/features/setup/index.d.ts +7 -0
- package/dist/features/stats/index.d.ts +1 -0
- package/dist/features/stats/stats.handler.d.ts +7 -0
- package/dist/features/webhooks/index.d.ts +3 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +9666 -0
- package/dist/media-utils.d.ts +25 -0
- package/dist/middleware/auth-providers.middleware.d.ts +8 -0
- package/dist/middleware/observability.middleware.d.ts +20 -0
- package/dist/middleware/rate-limit.middleware.d.ts +9 -0
- package/dist/middleware/repository.middleware.d.ts +34 -0
- package/dist/middleware/seed-registry.middleware.d.ts +10 -0
- package/dist/middleware/storage.middleware.d.ts +7 -0
- package/dist/middleware.d.ts +11 -0
- package/dist/public/access-policy.d.ts +12 -0
- package/dist/public/api-key-middleware.d.ts +6 -0
- package/dist/public/cache-utils.d.ts +10 -0
- package/dist/public/entry-projection.d.ts +2 -0
- package/dist/public/idempotency.d.ts +9 -0
- package/dist/public/index.d.ts +11 -0
- package/dist/public/problem-details.d.ts +31 -0
- package/dist/public/public-add.d.ts +3 -0
- package/dist/public/public-edit.d.ts +5 -0
- package/dist/public/public-errors.d.ts +13 -0
- package/dist/public/public-read.d.ts +3 -0
- package/dist/public/public-routes.d.ts +3 -0
- package/dist/public/query-builder.d.ts +28 -0
- package/dist/public/rate-limit-middleware.d.ts +3 -0
- package/dist/public/read-list.d.ts +26 -0
- package/dist/public/read-single.d.ts +22 -0
- package/dist/public/response-builder.d.ts +22 -0
- package/dist/public/sanitize.d.ts +23 -0
- package/dist/public/slug-utils.d.ts +11 -0
- package/dist/rate-limit/cloudflare-rate-limiter.d.ts +6 -0
- package/dist/rate-limit/in-memory-rate-limiter.d.ts +7 -0
- package/dist/rate-limit/no-op-rate-limiter.d.ts +4 -0
- package/dist/search-utils.d.ts +54 -0
- package/dist/search.d.ts +6 -0
- package/dist/shared/apply-policies.d.ts +10 -0
- package/dist/shared/automations.repository.d1.d.ts +12 -0
- package/dist/shared/background-notification-service.d.ts +18 -0
- package/dist/shared/base.repository.d1.d.ts +18 -0
- package/dist/shared/content-utils.d.ts +21 -0
- package/dist/shared/content.repository.d1.d.ts +68 -0
- package/dist/shared/d1-activity-log.repository.d.ts +13 -0
- package/dist/shared/d1-activity-logger.d.ts +20 -0
- package/dist/shared/d1-analytics.repository.d.ts +20 -0
- package/dist/shared/d1-content-scan.repository.d.ts +7 -0
- package/dist/shared/d1-notification.repository.d.ts +17 -0
- package/dist/shared/d1-password-reset-token.repository.d.ts +10 -0
- package/dist/shared/d1-search.repository.d.ts +14 -0
- package/dist/shared/d1-session.repository.d.ts +12 -0
- package/dist/shared/d1-setup-checklist.repository.d.ts +12 -0
- package/dist/shared/d1-user.repository.d.ts +18 -0
- package/dist/shared/d1-widget.repository.d.ts +31 -0
- package/dist/shared/dashboard-layout.repository.d1.d.ts +9 -0
- package/dist/shared/demo-data-sql.d.ts +1 -0
- package/dist/shared/demo-data.repository.d1.d.ts +6 -0
- package/dist/shared/execution-context-scheduler.d.ts +6 -0
- package/dist/shared/fixed-clock.d.ts +13 -0
- package/dist/shared/fts-sync.d.ts +1 -0
- package/dist/shared/idempotency.repository.d1.d.ts +16 -0
- package/dist/shared/in-memory-activity-logger.d.ts +11 -0
- package/dist/shared/in-memory-notification-service.d.ts +11 -0
- package/dist/shared/in-memory-seed.repository.d.ts +18 -0
- package/dist/shared/media.repository.d1.d.ts +35 -0
- package/dist/shared/qstash-notification-service.d.ts +18 -0
- package/dist/shared/query-utils.d.ts +36 -0
- package/dist/shared/request-utils.d.ts +13 -0
- package/dist/shared/schema-mutator.d1.d.ts +12 -0
- package/dist/shared/seed-layout.repository.d1.d.ts +9 -0
- package/dist/shared/seed-registry-cache.d.ts +12 -0
- package/dist/shared/seed.repository.d1.d.ts +13 -0
- package/dist/shared/sequential-id-generator.d.ts +13 -0
- package/dist/shared/site-settings.repository.d1.d.ts +7 -0
- package/dist/shared/storage/factory.d.ts +8 -0
- package/dist/shared/storage/s3-bucket.d.ts +43 -0
- package/dist/shared/storage-utils.d.ts +7 -0
- package/dist/shared/system-stats.repository.d1.d.ts +25 -0
- package/dist/types.d.ts +85 -0
- package/dist/upload.d.ts +16 -0
- package/dist/widget.d.ts +7 -0
- package/migrations/0000_v040_base.sql +265 -265
- package/migrations/0029_automations.sql +14 -14
- package/migrations/0030_test_seeds.sql +125 -125
- package/package.json +27 -18
- package/assets/dashboard/assets/index-BSjk0Sx9.js +0 -634
- package/assets/dashboard/assets/index-kRCYVN2B.css +0 -1
- package/src/auth/__fixtures__/in-memory-hash-provider.ts +0 -17
- package/src/auth/__fixtures__/static-token-service.ts +0 -22
- package/src/auth/bcrypt-hash-provider.ts +0 -24
- package/src/auth/constants.ts +0 -14
- package/src/auth/generate-refresh-token.test.ts +0 -23
- package/src/auth/hash-provider.test.ts +0 -55
- package/src/auth/jose-token-service.ts +0 -62
- package/src/auth/jwt-claims-passthrough.test.ts +0 -87
- package/src/auth/login.test.ts +0 -100
- package/src/auth/login.ts +0 -78
- package/src/auth/refresh.ts +0 -11
- package/src/auth/token-service.test.ts +0 -90
- package/src/factory.ts +0 -368
- package/src/features/automations/__tests__/action-executors.test.ts +0 -255
- package/src/features/automations/__tests__/automation-runner.test.ts +0 -196
- package/src/features/automations/__tests__/automation-runner.utils.test.ts +0 -60
- package/src/features/automations/__tests__/automations.handler.test.ts +0 -264
- package/src/features/automations/__tests__/automations.repository.test.ts +0 -163
- package/src/features/automations/__tests__/automations.schema.test.ts +0 -224
- package/src/features/automations/__tests__/context-resolver.test.ts +0 -126
- package/src/features/automations/__tests__/cron-runner.test.ts +0 -267
- package/src/features/automations/__tests__/cron-runner.utils.test.ts +0 -144
- package/src/features/automations/__tests__/set-variable.executor.test.ts +0 -383
- package/src/features/automations/__tests__/template-grammar.test.ts +0 -308
- package/src/features/automations/__tests__/webhook.executor.test.ts +0 -142
- package/src/features/automations/__tests__/when-evaluator.test.ts +0 -274
- package/src/features/automations/__tests__/when-pushdown.test.ts +0 -281
- package/src/features/automations/action-executors/create-entry.executor.ts +0 -27
- package/src/features/automations/action-executors/edit-field.executor.ts +0 -26
- package/src/features/automations/action-executors/index.ts +0 -37
- package/src/features/automations/action-executors/send-mail.executor.ts +0 -53
- package/src/features/automations/action-executors/set-variable.executor.ts +0 -159
- package/src/features/automations/action-executors/webhook.executor.ts +0 -67
- package/src/features/automations/automation-runner.ts +0 -85
- package/src/features/automations/automation-runner.utils.ts +0 -47
- package/src/features/automations/automations.handler.ts +0 -197
- package/src/features/automations/automations.schema.ts +0 -177
- package/src/features/automations/context-resolver.ts +0 -152
- package/src/features/automations/cron-runner.ts +0 -140
- package/src/features/automations/cron-runner.utils.ts +0 -44
- package/src/features/automations/filter-translation.ts +0 -46
- package/src/features/automations/index.ts +0 -16
- package/src/features/automations/template-grammar.ts +0 -245
- package/src/features/automations/var-access-resolver.ts +0 -140
- package/src/features/automations/when-evaluator.ts +0 -87
- package/src/features/automations/when-pushdown.ts +0 -57
- package/src/features/backrefs/__tests__/backrefs.handler.test.ts +0 -359
- package/src/features/backrefs/backrefs.handler.ts +0 -168
- package/src/features/backrefs/d1-backref.repository.ts +0 -84
- package/src/features/backrefs/index.ts +0 -5
- package/src/features/content/constants.ts +0 -16
- package/src/features/content/handlers/bulk.handler.ts +0 -185
- package/src/features/content/handlers/create.ts +0 -129
- package/src/features/content/handlers/delete.ts +0 -62
- package/src/features/content/handlers/facets.ts +0 -49
- package/src/features/content/handlers/get.ts +0 -120
- package/src/features/content/handlers/helpers.test.ts +0 -180
- package/src/features/content/handlers/helpers.ts +0 -93
- package/src/features/content/handlers/list.ts +0 -174
- package/src/features/content/handlers/update.ts +0 -174
- package/src/features/content/index.ts +0 -26
- package/src/features/draft/draft.handler.ts +0 -195
- package/src/features/draft/draft.middleware.ts +0 -66
- package/src/features/draft/index.ts +0 -5
- package/src/features/email/email.service.ts +0 -98
- package/src/features/email/email.types.ts +0 -119
- package/src/features/email/providers/resend.ts +0 -67
- package/src/features/email/providers/smtp.ts +0 -55
- package/src/features/email/templates/automation-mail.ts +0 -19
- package/src/features/email/templates/password-changed.ts +0 -63
- package/src/features/email/templates/password-reset.ts +0 -68
- package/src/features/email/templates/shell.ts +0 -96
- package/src/features/notifications/index.ts +0 -5
- package/src/features/notifications/notifications.handler.ts +0 -105
- package/src/features/password-reset/index.ts +0 -19
- package/src/features/password-reset/request.ts +0 -92
- package/src/features/password-reset/reset.ts +0 -102
- package/src/features/rotate-field/index.ts +0 -5
- package/src/features/rotate-field/rotate-field.handler.ts +0 -132
- package/src/features/rotate-field/rotate-field.schema.ts +0 -17
- package/src/features/schema/schema.handler.ts +0 -131
- package/src/features/seeds/index.ts +0 -5
- package/src/features/seeds/seeds.handler.test.ts +0 -632
- package/src/features/seeds/seeds.handler.ts +0 -693
- package/src/features/settings/__tests__/settings.handler.test.ts +0 -555
- package/src/features/settings/settings.handler.ts +0 -392
- package/src/features/setup/index.ts +0 -204
- package/src/features/stats/index.ts +0 -5
- package/src/features/stats/stats.handler.ts +0 -420
- package/src/features/webhooks/index.ts +0 -63
- package/src/index.ts +0 -65
- package/src/media-utils.ts +0 -82
- package/src/middleware/auth-providers.middleware.ts +0 -45
- package/src/middleware/observability.middleware.ts +0 -70
- package/src/middleware/rate-limit.middleware.ts +0 -45
- package/src/middleware/repository.middleware.ts +0 -114
- package/src/middleware/seed-registry.middleware.test.ts +0 -97
- package/src/middleware/seed-registry.middleware.ts +0 -21
- package/src/middleware/storage.middleware.ts +0 -25
- package/src/middleware.ts +0 -45
- package/src/public/access-policy.ts +0 -27
- package/src/public/api-key-middleware.ts +0 -57
- package/src/public/cache-utils.ts +0 -38
- package/src/public/entry-projection.ts +0 -46
- package/src/public/idempotency.ts +0 -23
- package/src/public/index.ts +0 -16
- package/src/public/problem-details.ts +0 -124
- package/src/public/public-add.ts +0 -114
- package/src/public/public-edit.ts +0 -163
- package/src/public/public-errors.ts +0 -19
- package/src/public/public-read.ts +0 -63
- package/src/public/public-routes.ts +0 -88
- package/src/public/query-builder.test.ts +0 -224
- package/src/public/query-builder.ts +0 -156
- package/src/public/rate-limit-middleware.ts +0 -34
- package/src/public/read-list.ts +0 -54
- package/src/public/read-single.ts +0 -48
- package/src/public/response-builder.ts +0 -30
- package/src/public/sanitize.ts +0 -69
- package/src/public/slug-utils.ts +0 -18
- package/src/rate-limit/cloudflare-rate-limiter.test.ts +0 -30
- package/src/rate-limit/cloudflare-rate-limiter.ts +0 -15
- package/src/rate-limit/in-memory-rate-limiter.test.ts +0 -37
- package/src/rate-limit/in-memory-rate-limiter.ts +0 -17
- package/src/rate-limit/no-op-rate-limiter.test.ts +0 -22
- package/src/rate-limit/no-op-rate-limiter.ts +0 -11
- package/src/search-utils.test.ts +0 -211
- package/src/search-utils.ts +0 -213
- package/src/search.ts +0 -65
- package/src/shared/apply-policies.test.ts +0 -81
- package/src/shared/apply-policies.ts +0 -67
- package/src/shared/automations.repository.d1.ts +0 -150
- package/src/shared/background-notification-service.test.ts +0 -62
- package/src/shared/background-notification-service.ts +0 -52
- package/src/shared/base.repository.d1.ts +0 -32
- package/src/shared/content-utils.test.ts +0 -165
- package/src/shared/content-utils.ts +0 -86
- package/src/shared/content.repository.d1.test.ts +0 -458
- package/src/shared/content.repository.d1.ts +0 -851
- package/src/shared/d1-activity-log.repository.test.ts +0 -140
- package/src/shared/d1-activity-log.repository.ts +0 -105
- package/src/shared/d1-activity-logger.test.ts +0 -86
- package/src/shared/d1-activity-logger.ts +0 -67
- package/src/shared/d1-analytics.repository.test.ts +0 -78
- package/src/shared/d1-analytics.repository.ts +0 -85
- package/src/shared/d1-content-scan.repository.test.ts +0 -80
- package/src/shared/d1-content-scan.repository.ts +0 -37
- package/src/shared/d1-notification.repository.test.ts +0 -128
- package/src/shared/d1-notification.repository.ts +0 -118
- package/src/shared/d1-password-reset-token.repository.test.ts +0 -81
- package/src/shared/d1-password-reset-token.repository.ts +0 -56
- package/src/shared/d1-search.repository.test.ts +0 -87
- package/src/shared/d1-search.repository.ts +0 -88
- package/src/shared/d1-session.repository.test.ts +0 -125
- package/src/shared/d1-session.repository.ts +0 -102
- package/src/shared/d1-setup-checklist.repository.ts +0 -36
- package/src/shared/d1-user.repository.test.ts +0 -151
- package/src/shared/d1-user.repository.ts +0 -119
- package/src/shared/d1-widget.repository.test.ts +0 -221
- package/src/shared/d1-widget.repository.ts +0 -341
- package/src/shared/demo-data-sql.ts +0 -54
- package/src/shared/demo-data.repository.d1.ts +0 -20
- package/src/shared/execution-context-scheduler.ts +0 -13
- package/src/shared/fixed-clock.ts +0 -25
- package/src/shared/fts-sync.ts +0 -8
- package/src/shared/idempotency.repository.d1.test.ts +0 -83
- package/src/shared/idempotency.repository.d1.ts +0 -60
- package/src/shared/in-memory-activity-logger.ts +0 -19
- package/src/shared/in-memory-notification-service.ts +0 -19
- package/src/shared/in-memory-seed.repository.ts +0 -51
- package/src/shared/media.repository.d1.test.ts +0 -107
- package/src/shared/media.repository.d1.ts +0 -68
- package/src/shared/qstash-notification-service.test.ts +0 -67
- package/src/shared/qstash-notification-service.ts +0 -55
- package/src/shared/query-utils.ts +0 -141
- package/src/shared/request-utils.ts +0 -26
- package/src/shared/schema-mutator.d1.ts +0 -64
- package/src/shared/seed-layout.repository.d1.test.ts +0 -114
- package/src/shared/seed-layout.repository.d1.ts +0 -62
- package/src/shared/seed-registry-cache.test.ts +0 -68
- package/src/shared/seed-registry-cache.ts +0 -49
- package/src/shared/seed.repository.d1.test.ts +0 -143
- package/src/shared/seed.repository.d1.ts +0 -98
- package/src/shared/sequential-id-generator.ts +0 -33
- package/src/shared/site-settings.repository.d1.ts +0 -53
- package/src/shared/storage/factory.ts +0 -41
- package/src/shared/storage/s3-bucket.ts +0 -195
- package/src/shared/storage-utils.ts +0 -40
- package/src/shared/system-stats.repository.d1.test.ts +0 -58
- package/src/shared/system-stats.repository.d1.ts +0 -48
- package/src/types.ts +0 -87
- package/src/upload.ts +0 -198
- package/src/widget.ts +0 -212
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media utils: estrazione chiavi R2 dal data di un'entry.
|
|
3
|
+
* Usato alla cancellazione entry per eliminare i file associati da R2.
|
|
4
|
+
*
|
|
5
|
+
* @see docs/media-engine.md
|
|
6
|
+
*/
|
|
7
|
+
import type { Seed } from '@beechcms/core';
|
|
8
|
+
/**
|
|
9
|
+
* Estrae la chiave R2 da un URL di media.
|
|
10
|
+
* Es: "https://x.com/api/media/1739123456-avatar.png" → "1739123456-avatar.png"
|
|
11
|
+
*
|
|
12
|
+
* @param mediaUrl - URL completo o path (es. /api/media/123-foto.png)
|
|
13
|
+
* @returns Chiave R2 o null se l'URL non è valido
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractMediaKey(mediaUrl: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Estrae tutte le chiavi R2 dal data di un'entry.
|
|
18
|
+
* Cerca nei campi `file` (stringa URL) e `json` (array/oggetto con URL).
|
|
19
|
+
* Il data è in formato DB: chiavi = branch.id (es. art_03, prd_05).
|
|
20
|
+
*
|
|
21
|
+
* @param seed - Schema del tipo di contenuto
|
|
22
|
+
* @param entryData - Payload in formato DB (chiavi = branch ID)
|
|
23
|
+
* @returns Array di chiavi R2 uniche da eliminare
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractMediaKeysFromData(seed: Seed, entryData: Record<string, unknown>): string[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IHashProvider, ITokenService, IClock } from '@beechcms/core';
|
|
2
|
+
import type { AppEnv } from '../types';
|
|
3
|
+
export interface AuthProviderOverrides {
|
|
4
|
+
hashProvider?: IHashProvider;
|
|
5
|
+
tokenService?: ITokenService;
|
|
6
|
+
clock?: IClock;
|
|
7
|
+
}
|
|
8
|
+
export declare const authProvidersMiddleware: (overrides?: AuthProviderOverrides) => import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { IActivityLogger, INotificationService, IClock, IIdGenerator } from '@beechcms/core';
|
|
2
|
+
import type { AppEnv } from '../types';
|
|
3
|
+
export interface ObservabilityOverrides {
|
|
4
|
+
activityLogger?: IActivityLogger;
|
|
5
|
+
notificationService?: INotificationService;
|
|
6
|
+
clock?: IClock;
|
|
7
|
+
idGenerator?: IIdGenerator;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Observability middleware.
|
|
11
|
+
*
|
|
12
|
+
* Injects the activity logger and the notification service into the Hono
|
|
13
|
+
* context. Both depend on `executionCtx.waitUntil` to fire-and-forget their
|
|
14
|
+
* persistence work in production. The notification service additionally
|
|
15
|
+
* depends on the notification repository — `repositoryMiddleware` MUST run
|
|
16
|
+
* before this middleware in the factory pipeline.
|
|
17
|
+
*
|
|
18
|
+
* Tests can pass their own implementations via `overrides` to bypass D1.
|
|
19
|
+
*/
|
|
20
|
+
export declare const observabilityMiddleware: (overrides?: ObservabilityOverrides) => import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IRateLimiter } from '@beechcms/core';
|
|
2
|
+
import type { AppEnv } from '../types';
|
|
3
|
+
export type RateLimiterName = 'login' | 'tokenRefresh' | 'forgotPassword' | 'resetPassword' | 'publicApiRead' | 'publicApiWrite';
|
|
4
|
+
export interface IRateLimiterRegistry {
|
|
5
|
+
getLimiter(name: RateLimiterName): IRateLimiter;
|
|
6
|
+
}
|
|
7
|
+
export declare const rateLimiterMiddleware: (overrides?: {
|
|
8
|
+
registry?: IRateLimiterRegistry;
|
|
9
|
+
}) => import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ContentRepository, IdempotencyRepository, MediaRepository, SystemStatsRepository, IUserRepository, ISessionRepository, IPasswordResetTokenRepository, IActivityLogRepository, INotificationRepository, IWidgetRepository, ISearchRepository, IAnalyticsRepository, IContentScanRepository, IClock, IIdGenerator, IAutomationRunner, IAutomationRepository, IScheduler, ISiteSettingsRepository, IDemoDataRepository, ISeedLayoutRepository, ISeedRepository, ISchemaMutator, IDashboardLayoutRepository, BeechHooks } from '@beechcms/core';
|
|
2
|
+
import type { Env, Variables } from '../types';
|
|
3
|
+
interface RepositoryOverrides {
|
|
4
|
+
repository?: ContentRepository;
|
|
5
|
+
idempotencyRepository?: IdempotencyRepository;
|
|
6
|
+
mediaRepository?: MediaRepository;
|
|
7
|
+
systemStatsRepository?: SystemStatsRepository;
|
|
8
|
+
userRepository?: IUserRepository;
|
|
9
|
+
sessionRepository?: ISessionRepository;
|
|
10
|
+
passwordResetTokenRepository?: IPasswordResetTokenRepository;
|
|
11
|
+
activityLogRepository?: IActivityLogRepository;
|
|
12
|
+
notificationRepository?: INotificationRepository;
|
|
13
|
+
widgetRepository?: IWidgetRepository;
|
|
14
|
+
searchRepository?: ISearchRepository;
|
|
15
|
+
analyticsRepository?: IAnalyticsRepository;
|
|
16
|
+
contentScanRepository?: IContentScanRepository;
|
|
17
|
+
clock?: IClock;
|
|
18
|
+
idGenerator?: IIdGenerator;
|
|
19
|
+
automationRepository?: IAutomationRepository;
|
|
20
|
+
automationRunner?: IAutomationRunner;
|
|
21
|
+
scheduler?: IScheduler;
|
|
22
|
+
siteSettingsRepository?: ISiteSettingsRepository;
|
|
23
|
+
demoDataRepository?: IDemoDataRepository;
|
|
24
|
+
seedLayoutRepository?: ISeedLayoutRepository;
|
|
25
|
+
seedRepository?: ISeedRepository;
|
|
26
|
+
schemaMutator?: ISchemaMutator;
|
|
27
|
+
dashboardLayoutRepository?: IDashboardLayoutRepository;
|
|
28
|
+
hooks?: BeechHooks;
|
|
29
|
+
}
|
|
30
|
+
export declare const repositoryMiddleware: (overrides?: RepositoryOverrides) => import("hono").MiddlewareHandler<{
|
|
31
|
+
Bindings: Env;
|
|
32
|
+
Variables: Variables;
|
|
33
|
+
}, string, {}, Response>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Env, Variables } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Hydrates the seed registry from D1 and injects seedRegistry, getSeed, and backrefMap
|
|
4
|
+
* into the context. Must run AFTER repositoryMiddleware (needs seedRepository) and
|
|
5
|
+
* BEFORE any handler that reads the registry.
|
|
6
|
+
*/
|
|
7
|
+
export declare const seedRegistryMiddleware: () => import("hono").MiddlewareHandler<{
|
|
8
|
+
Bindings: Env;
|
|
9
|
+
Variables: Variables;
|
|
10
|
+
}, string, {}, Response>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BeechBucket } from '@beechcms/core';
|
|
2
|
+
import { AppEnv } from '../types';
|
|
3
|
+
interface StorageOverrides {
|
|
4
|
+
bucket?: BeechBucket;
|
|
5
|
+
}
|
|
6
|
+
export declare const storageMiddleware: (overrides?: StorageOverrides) => import("hono").MiddlewareHandler<AppEnv, string, {}, Response>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Context, Next } from 'hono';
|
|
2
|
+
import type { Env, Variables } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* JWT authentication middleware. Reads the Bearer token from the Authorization
|
|
5
|
+
* header and delegates verification to the ITokenService injected in context.
|
|
6
|
+
* Returns 401 on any missing or invalid token; never exposes failure details.
|
|
7
|
+
*/
|
|
8
|
+
export declare function authMiddleware(): (c: Context<{
|
|
9
|
+
Bindings: Env;
|
|
10
|
+
Variables: Variables;
|
|
11
|
+
}>, next: Next) => Promise<Response | void>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Seed } from '@beechcms/core';
|
|
2
|
+
export type PublicOperation = 'read' | 'add' | 'edit';
|
|
3
|
+
export declare function checkPublicOperation(seed: Seed, operation: PublicOperation): {
|
|
4
|
+
readonly ok: true;
|
|
5
|
+
readonly error?: undefined;
|
|
6
|
+
} | {
|
|
7
|
+
readonly ok: false;
|
|
8
|
+
readonly error: {
|
|
9
|
+
readonly error: "Forbidden";
|
|
10
|
+
readonly message: `Public ${string} is not allowed for content type '${string}'.`;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Context } from 'hono';
|
|
2
|
+
type EdgeCache = {
|
|
3
|
+
cache: Cache;
|
|
4
|
+
executionCtx: {
|
|
5
|
+
waitUntil: (p: Promise<unknown>) => void;
|
|
6
|
+
};
|
|
7
|
+
} | null;
|
|
8
|
+
export declare function resolveEdgeCache(c: Context): EdgeCache;
|
|
9
|
+
export declare function withCachedResponse(edgeCache: EdgeCache, cacheKey: Request, response: Response): Response;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function parseIdempotencyKey(rawValue: string | undefined): string | null;
|
|
2
|
+
type FingerprintInput = {
|
|
3
|
+
seedSlug: string;
|
|
4
|
+
statusValue: unknown;
|
|
5
|
+
slug: string | null;
|
|
6
|
+
data: Record<string, unknown>;
|
|
7
|
+
};
|
|
8
|
+
export declare function buildRequestFingerprint(input: FingerprintInput): Promise<string>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { apiKeyMiddleware } from './api-key-middleware';
|
|
2
|
+
export { publicRateLimitMiddleware } from './rate-limit-middleware';
|
|
3
|
+
export { publicRoutes } from './public-routes';
|
|
4
|
+
export { PUBLIC_ERRORS } from './public-errors';
|
|
5
|
+
export { sanitizePublicPayload } from './sanitize';
|
|
6
|
+
export { generateEntrySlug, slugify } from './slug-utils';
|
|
7
|
+
export { buildPublicListMeta, buildPublicSingleMeta } from './response-builder';
|
|
8
|
+
export { parseLatestCount, parsePublicPagination } from './query-builder';
|
|
9
|
+
export { publicReadHandler } from './public-read';
|
|
10
|
+
export { publicAddHandler } from './public-add';
|
|
11
|
+
export { publicEditHandler } from './public-edit';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Context } from 'hono';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a Problem+JSON response when the error is a SQLite FK violation,
|
|
4
|
+
* or null when the error is unrelated (let the caller handle it).
|
|
5
|
+
*
|
|
6
|
+
* @param c Hono context
|
|
7
|
+
* @param error The caught error
|
|
8
|
+
* @param method HTTP method of the current request (e.g. 'DELETE', 'POST')
|
|
9
|
+
*/
|
|
10
|
+
export declare function fkProblemOrNull(c: Context, error: unknown, method: string): Response | null;
|
|
11
|
+
export interface PublicProblemDetailItem {
|
|
12
|
+
field: string;
|
|
13
|
+
expected: string;
|
|
14
|
+
received: string;
|
|
15
|
+
message: string;
|
|
16
|
+
}
|
|
17
|
+
type PublicProblemInput = {
|
|
18
|
+
type: string;
|
|
19
|
+
title: string;
|
|
20
|
+
status: 400 | 401 | 403 | 404 | 405 | 409 | 422 | 429 | 500 | 501;
|
|
21
|
+
detail: string;
|
|
22
|
+
errors?: PublicProblemDetailItem[];
|
|
23
|
+
};
|
|
24
|
+
export declare function internalErrorDetail(env: {
|
|
25
|
+
ENV?: string;
|
|
26
|
+
}, error: unknown): string;
|
|
27
|
+
/**
|
|
28
|
+
* Restituisce errori API in formato Problem Details (RFC 9457).
|
|
29
|
+
*/
|
|
30
|
+
export declare function publicProblem(c: Context, input: PublicProblemInput): Response;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error constants for Public API responses.
|
|
3
|
+
*/
|
|
4
|
+
export declare const PUBLIC_ERRORS: {
|
|
5
|
+
readonly API_KEY_UNAUTHORIZED: {
|
|
6
|
+
readonly error: "Unauthorized";
|
|
7
|
+
readonly message: "Missing or invalid API key. Provide a valid key via X-API-Key header.";
|
|
8
|
+
};
|
|
9
|
+
readonly API_KEY_FORBIDDEN: {
|
|
10
|
+
readonly error: "Forbidden";
|
|
11
|
+
readonly message: "Public API access is not configured for this instance.";
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Seed, FilterGroup } from '@beechcms/core';
|
|
2
|
+
export type PublicQueryInput = {
|
|
3
|
+
page?: string;
|
|
4
|
+
limit?: string;
|
|
5
|
+
latest?: string;
|
|
6
|
+
};
|
|
7
|
+
export type PublicFilterLogic = 'AND' | 'OR';
|
|
8
|
+
export type PublicFilterOperator = 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'is_empty' | 'is_not_empty' | 'in' | 'not_in' | 'has_tag' | 'has_any_tag' | 'has_all_tags';
|
|
9
|
+
export type PublicFilterCondition = {
|
|
10
|
+
field: string;
|
|
11
|
+
op: PublicFilterOperator;
|
|
12
|
+
value?: unknown;
|
|
13
|
+
};
|
|
14
|
+
export type ParsedPublicFilter = {
|
|
15
|
+
where: PublicFilterCondition[];
|
|
16
|
+
logic: PublicFilterLogic;
|
|
17
|
+
};
|
|
18
|
+
export declare function parsePublicFilter(raw: string | undefined): ParsedPublicFilter | null;
|
|
19
|
+
/**
|
|
20
|
+
* Trasforma il filtro pubblico in FilterGroup[] per il Repository.
|
|
21
|
+
* Zero SQL: la logica di generazione query risiede esclusivamente nel Repository/Engine core.
|
|
22
|
+
*/
|
|
23
|
+
export declare function toEngineFilters(seed: Seed, parsedFilter: ParsedPublicFilter | null): FilterGroup[];
|
|
24
|
+
export declare function parsePublicPagination(input: PublicQueryInput): {
|
|
25
|
+
page: number;
|
|
26
|
+
limit: number;
|
|
27
|
+
};
|
|
28
|
+
export declare function parseLatestCount(latest: string | undefined): number;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Seed, ContentRepository } from '@beechcms/core';
|
|
2
|
+
type ReadListInput = {
|
|
3
|
+
seed: Seed;
|
|
4
|
+
seedSlug: string;
|
|
5
|
+
repository: ContentRepository;
|
|
6
|
+
query: Record<string, string | undefined>;
|
|
7
|
+
publishedOnly: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function readListEntries(input: ReadListInput): Promise<{
|
|
10
|
+
data: Record<string, unknown>[];
|
|
11
|
+
meta: {
|
|
12
|
+
total: number;
|
|
13
|
+
returned: number;
|
|
14
|
+
seed: string;
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
data: Record<string, unknown>[];
|
|
18
|
+
meta: {
|
|
19
|
+
total: number;
|
|
20
|
+
page: number;
|
|
21
|
+
limit: number;
|
|
22
|
+
returned: number;
|
|
23
|
+
seed: string;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Seed, ContentRepository } from '@beechcms/core';
|
|
2
|
+
type ReadSingleInput = {
|
|
3
|
+
seed: Seed;
|
|
4
|
+
seedSlug: string;
|
|
5
|
+
repository: ContentRepository;
|
|
6
|
+
id: string | null;
|
|
7
|
+
slug: string | null;
|
|
8
|
+
publishedOnly: boolean;
|
|
9
|
+
fieldsParam?: string;
|
|
10
|
+
};
|
|
11
|
+
export type ReadSingleResult = {
|
|
12
|
+
ok: true;
|
|
13
|
+
data: Record<string, unknown>;
|
|
14
|
+
meta: {
|
|
15
|
+
seed: string;
|
|
16
|
+
};
|
|
17
|
+
} | {
|
|
18
|
+
ok: false;
|
|
19
|
+
detail: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function readSingleEntry(input: ReadSingleInput): Promise<ReadSingleResult>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper meta per risposta lista Public API.
|
|
3
|
+
*/
|
|
4
|
+
export declare function buildPublicListMeta(input: {
|
|
5
|
+
total: number;
|
|
6
|
+
page: number;
|
|
7
|
+
limit: number;
|
|
8
|
+
returned: number;
|
|
9
|
+
seed: string;
|
|
10
|
+
}): {
|
|
11
|
+
total: number;
|
|
12
|
+
page: number;
|
|
13
|
+
limit: number;
|
|
14
|
+
returned: number;
|
|
15
|
+
seed: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Helper meta per risposta singolo elemento Public API.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildPublicSingleMeta(seed: string): {
|
|
21
|
+
seed: string;
|
|
22
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Seed, ValidationDetail } from '@beechcms/core';
|
|
2
|
+
type PublicSanitizeSuccess = {
|
|
3
|
+
ok: true;
|
|
4
|
+
data: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
type PublicSanitizeFailure = {
|
|
7
|
+
ok: false;
|
|
8
|
+
status: 400 | 422;
|
|
9
|
+
code: 'validation_failed' | 'dangerous_content';
|
|
10
|
+
message: string;
|
|
11
|
+
details?: ValidationDetail[];
|
|
12
|
+
};
|
|
13
|
+
export type PublicSanitizeResult = PublicSanitizeSuccess | PublicSanitizeFailure;
|
|
14
|
+
/**
|
|
15
|
+
* Public API Adapter: uses the core foundation and maps errors into the sprint format.
|
|
16
|
+
*/
|
|
17
|
+
export declare function sanitizePublicPayload(seed: Seed, payload: Record<string, unknown>, options?: {
|
|
18
|
+
allowNull?: boolean;
|
|
19
|
+
operation?: 'create' | 'update';
|
|
20
|
+
requireAtLeastOneValidField?: boolean;
|
|
21
|
+
enforceRequiredFields?: boolean;
|
|
22
|
+
}): PublicSanitizeResult;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { slugify, generateEntrySlug } from '@beechcms/core';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a string into a URL-safe slug.
|
|
4
|
+
* Logic moved to @beechcms/core for consistency between Dashboard and API.
|
|
5
|
+
*/
|
|
6
|
+
export { slugify };
|
|
7
|
+
/**
|
|
8
|
+
* Generates a slug from a title/name or a UUID-like fallback.
|
|
9
|
+
* Logic moved to @beechcms/core for consistency between Dashboard and API.
|
|
10
|
+
*/
|
|
11
|
+
export { generateEntrySlug };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IRateLimiter, RateLimitResult } from '@beechcms/core';
|
|
2
|
+
export declare class InMemoryRateLimiter implements IRateLimiter {
|
|
3
|
+
private readonly maxAllowedHits;
|
|
4
|
+
private readonly hitCounts;
|
|
5
|
+
constructor(maxAllowedHits: number);
|
|
6
|
+
checkLimit(key: string): Promise<RateLimitResult>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Seed, SearchResultRow } from "@beechcms/core";
|
|
2
|
+
export interface FtsRow {
|
|
3
|
+
entry_id: string;
|
|
4
|
+
schema_slug: string;
|
|
5
|
+
slug: string | null;
|
|
6
|
+
status: string;
|
|
7
|
+
title: string | null;
|
|
8
|
+
excerpt: string;
|
|
9
|
+
rank: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SearchResultItem {
|
|
12
|
+
id: string;
|
|
13
|
+
schema_slug: string;
|
|
14
|
+
slug: string | null;
|
|
15
|
+
status: string;
|
|
16
|
+
title: string;
|
|
17
|
+
excerpt: string;
|
|
18
|
+
data: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface SearchResponse {
|
|
21
|
+
items: SearchResultItem[];
|
|
22
|
+
nextCursor: string | null;
|
|
23
|
+
total: number;
|
|
24
|
+
}
|
|
25
|
+
export interface SearchQueryParams {
|
|
26
|
+
q: string;
|
|
27
|
+
schemaSlug: string | null;
|
|
28
|
+
status: string | null;
|
|
29
|
+
limit: number;
|
|
30
|
+
cursor: string | null;
|
|
31
|
+
}
|
|
32
|
+
export declare function encodeCursor(rank: number, entryId: string): string;
|
|
33
|
+
export declare function decodeCursor(cursor: string): {
|
|
34
|
+
rank: number;
|
|
35
|
+
entryId: string;
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* Builds a UNION ALL query across all per-seed fts_{slug} tables (v0.4.0).
|
|
39
|
+
* Each SELECT joins fts_{slug} with content_{slug} to fetch title, slug, status.
|
|
40
|
+
* Seeds param: full registry — filtered internally by schemaSlug and FTS availability.
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildFtsQuery(params: SearchQueryParams, seeds: Seed[]): {
|
|
43
|
+
sql: string;
|
|
44
|
+
binds: unknown[];
|
|
45
|
+
countSql: string;
|
|
46
|
+
countBinds: unknown[];
|
|
47
|
+
};
|
|
48
|
+
export declare function mapFtsRow(row: FtsRow): SearchResultItem;
|
|
49
|
+
/**
|
|
50
|
+
* Maps a repository-shaped SearchResultRow (camelCase) to the wire-format
|
|
51
|
+
* SearchResultItem returned by the /api/search route. Keeps the HTML
|
|
52
|
+
* stripping behaviour previously inlined inside mapFtsRow.
|
|
53
|
+
*/
|
|
54
|
+
export declare function mapSearchResultRow(row: SearchResultRow): SearchResultItem;
|
package/dist/search.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Seed } from '@beechcms/core';
|
|
2
|
+
declare class PrivacyPolicyError extends Error {
|
|
3
|
+
readonly status: 501;
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export { PrivacyPolicyError };
|
|
7
|
+
/** Applica la privacy policy ai campi del payload prima della scrittura su DB. */
|
|
8
|
+
export declare function applyPrivacy(data: Record<string, unknown>, seed: Seed): Promise<Record<string, unknown>>;
|
|
9
|
+
/** Applica la visibility policy ai campi del payload in uscita verso il client. */
|
|
10
|
+
export declare function applyVisibility(data: Record<string, unknown>, seed: Seed): Record<string, unknown>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IAutomationRepository, Automation, AutomationTriggerEvent, CreateAutomationInput, UpdateAutomationInput } from '@beechcms/core';
|
|
2
|
+
export declare class D1AutomationRepository implements IAutomationRepository {
|
|
3
|
+
private readonly db;
|
|
4
|
+
constructor(db: D1Database);
|
|
5
|
+
findActive(seedSlug: string, event: AutomationTriggerEvent): Promise<Automation[]>;
|
|
6
|
+
list(seedSlug: string): Promise<Automation[]>;
|
|
7
|
+
findById(id: string): Promise<Automation | null>;
|
|
8
|
+
create(input: CreateAutomationInput): Promise<string>;
|
|
9
|
+
update(id: string, input: UpdateAutomationInput): Promise<void>;
|
|
10
|
+
toggle(id: string, enabled: boolean): Promise<void>;
|
|
11
|
+
delete(id: string): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { INotificationService, CreateNotificationInput, INotificationRepository } from '@beechcms/core';
|
|
2
|
+
type ScheduleBackgroundTask = (task: Promise<unknown>) => void;
|
|
3
|
+
/**
|
|
4
|
+
* Production implementation of {@link INotificationService}.
|
|
5
|
+
*
|
|
6
|
+
* Delegates persistence to the injected {@link INotificationRepository}.
|
|
7
|
+
* When `scheduleBackgroundTask` is provided (wired to
|
|
8
|
+
* `c.executionCtx.waitUntil`), the repository write runs after the response
|
|
9
|
+
* is flushed so the public-API request that triggered it is never delayed.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BackgroundNotificationService implements INotificationService {
|
|
12
|
+
private readonly notificationRepository;
|
|
13
|
+
private readonly scheduleBackgroundTask?;
|
|
14
|
+
constructor(notificationRepository: INotificationRepository, scheduleBackgroundTask?: ScheduleBackgroundTask | undefined);
|
|
15
|
+
notify(input: CreateNotificationInput): Promise<void> | void;
|
|
16
|
+
private runPersist;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RepositoryError } from '@beechcms/core';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for D1-backed repositories.
|
|
4
|
+
* Handles the D1 instance and provides common database utilities and error mapping.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseD1Repository {
|
|
7
|
+
protected readonly database: D1Database;
|
|
8
|
+
constructor(database: D1Database);
|
|
9
|
+
/**
|
|
10
|
+
* Utility method to extract a table name for a given seed.
|
|
11
|
+
*/
|
|
12
|
+
protected getTableName(slug: string, isDraft?: boolean): string;
|
|
13
|
+
/**
|
|
14
|
+
* Helper to map generic D1 errors to Beech RepositoryErrors.
|
|
15
|
+
* This centralizes error handling for all D1 repositories.
|
|
16
|
+
*/
|
|
17
|
+
protected mapError(error: any, context: string): RepositoryError;
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Seed } from '@beechcms/core';
|
|
2
|
+
import type { ContentEntry } from './query-utils';
|
|
3
|
+
/** Deserializza ogni branch colonna di un DB row in formato API alias. */
|
|
4
|
+
export declare function rowToApiData(seed: Seed, row: Record<string, unknown>): Record<string, unknown>;
|
|
5
|
+
/** Converte un row della tabella content_{slug} in ContentEntry per le risposte API. */
|
|
6
|
+
export declare function rowToEntry(seed: Seed, row: Record<string, unknown>, hasPendingDraft?: boolean): ContentEntry;
|
|
7
|
+
export interface InsertBindings {
|
|
8
|
+
cols: string[];
|
|
9
|
+
placeholders: string[];
|
|
10
|
+
bindings: (string | number | null)[];
|
|
11
|
+
}
|
|
12
|
+
/** Costruisce colonne, placeholders e bindings per INSERT INTO content_{slug}. */
|
|
13
|
+
export declare function buildInsertBindings(seed: Seed, payload: Record<string, unknown>): InsertBindings;
|
|
14
|
+
export interface UpdateBindings {
|
|
15
|
+
setClause: string;
|
|
16
|
+
bindings: (string | number | null)[];
|
|
17
|
+
}
|
|
18
|
+
/** Costruisce SET clause e bindings per UPDATE content_{slug}. */
|
|
19
|
+
export declare function buildUpdateBindings(seed: Seed, payload: Record<string, unknown>): UpdateBindings;
|
|
20
|
+
/** Controlla se esiste un draft pendente in content_{slug}_drafts. */
|
|
21
|
+
export declare function hasDraft(db: D1Database, seed: Seed, entryId: string): Promise<boolean>;
|