@forumone/throughline 0.0.0-stage → 1.0.0-next.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/CHANGELOG.md +584 -0
- package/LICENSE +21 -0
- package/README.md +351 -2
- package/bin/payload-cli.mjs +443 -0
- package/bin/throughline-payload.mjs +6 -0
- package/dist/access/coreCollections.d.ts +18 -0
- package/dist/access/coreCollections.d.ts.map +1 -0
- package/dist/access/coreCollections.js +56 -0
- package/dist/access/coreCollections.js.map +1 -0
- package/dist/approvals/collection.d.ts +21 -0
- package/dist/approvals/collection.d.ts.map +1 -0
- package/dist/approvals/collection.js +99 -0
- package/dist/approvals/collection.js.map +1 -0
- package/dist/approvals/endpoints/action.d.ts +31 -0
- package/dist/approvals/endpoints/action.d.ts.map +1 -0
- package/dist/approvals/endpoints/action.js +205 -0
- package/dist/approvals/endpoints/action.js.map +1 -0
- package/dist/approvals/index.d.ts +19 -0
- package/dist/approvals/index.d.ts.map +1 -0
- package/dist/approvals/index.js +13 -0
- package/dist/approvals/index.js.map +1 -0
- package/dist/approvals/jobs/expire-stale-approvals.d.ts +14 -0
- package/dist/approvals/jobs/expire-stale-approvals.d.ts.map +1 -0
- package/dist/approvals/jobs/expire-stale-approvals.js +101 -0
- package/dist/approvals/jobs/expire-stale-approvals.js.map +1 -0
- package/dist/approvals/options.d.ts +76 -0
- package/dist/approvals/options.d.ts.map +1 -0
- package/dist/approvals/options.js +47 -0
- package/dist/approvals/options.js.map +1 -0
- package/dist/approvals/plugin.d.ts +4 -0
- package/dist/approvals/plugin.d.ts.map +1 -0
- package/dist/approvals/plugin.js +92 -0
- package/dist/approvals/plugin.js.map +1 -0
- package/dist/approvals/resolver.d.ts +18 -0
- package/dist/approvals/resolver.d.ts.map +1 -0
- package/dist/approvals/resolver.js +57 -0
- package/dist/approvals/resolver.js.map +1 -0
- package/dist/approvals/symbol.d.ts +12 -0
- package/dist/approvals/symbol.d.ts.map +1 -0
- package/dist/approvals/symbol.js +12 -0
- package/dist/approvals/symbol.js.map +1 -0
- package/dist/approvals/tokens.d.ts +48 -0
- package/dist/approvals/tokens.d.ts.map +1 -0
- package/dist/approvals/tokens.js +123 -0
- package/dist/approvals/tokens.js.map +1 -0
- package/dist/approvals/tools/descriptors.d.ts +26 -0
- package/dist/approvals/tools/descriptors.d.ts.map +1 -0
- package/dist/approvals/tools/descriptors.js +35 -0
- package/dist/approvals/tools/descriptors.js.map +1 -0
- package/dist/approvals/tools/get-approval-status.d.ts +11 -0
- package/dist/approvals/tools/get-approval-status.d.ts.map +1 -0
- package/dist/approvals/tools/get-approval-status.js +94 -0
- package/dist/approvals/tools/get-approval-status.js.map +1 -0
- package/dist/approvals/tools/index.d.ts +7 -0
- package/dist/approvals/tools/index.d.ts.map +1 -0
- package/dist/approvals/tools/index.js +7 -0
- package/dist/approvals/tools/index.js.map +1 -0
- package/dist/approvals/tools/list-my-requests.d.ts +11 -0
- package/dist/approvals/tools/list-my-requests.d.ts.map +1 -0
- package/dist/approvals/tools/list-my-requests.js +55 -0
- package/dist/approvals/tools/list-my-requests.js.map +1 -0
- package/dist/approvals/tools/list-pending-approvals.d.ts +11 -0
- package/dist/approvals/tools/list-pending-approvals.d.ts.map +1 -0
- package/dist/approvals/tools/list-pending-approvals.js +53 -0
- package/dist/approvals/tools/list-pending-approvals.js.map +1 -0
- package/dist/approvals/tools/request-approval.d.ts +13 -0
- package/dist/approvals/tools/request-approval.d.ts.map +1 -0
- package/dist/approvals/tools/request-approval.js +123 -0
- package/dist/approvals/tools/request-approval.js.map +1 -0
- package/dist/approvals/tools/respond-to-approval.d.ts +13 -0
- package/dist/approvals/tools/respond-to-approval.d.ts.map +1 -0
- package/dist/approvals/tools/respond-to-approval.js +98 -0
- package/dist/approvals/tools/respond-to-approval.js.map +1 -0
- package/dist/audit/collection.d.ts +22 -0
- package/dist/audit/collection.d.ts.map +1 -0
- package/dist/audit/collection.js +109 -0
- package/dist/audit/collection.js.map +1 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +11 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/jobs/audit-event-echo.d.ts +14 -0
- package/dist/audit/jobs/audit-event-echo.d.ts.map +1 -0
- package/dist/audit/jobs/audit-event-echo.js +61 -0
- package/dist/audit/jobs/audit-event-echo.js.map +1 -0
- package/dist/audit/plugin.d.ts +20 -0
- package/dist/audit/plugin.d.ts.map +1 -0
- package/dist/audit/plugin.js +55 -0
- package/dist/audit/plugin.js.map +1 -0
- package/dist/audit/query/formatting/index.d.ts +40 -0
- package/dist/audit/query/formatting/index.d.ts.map +1 -0
- package/dist/audit/query/formatting/index.js +73 -0
- package/dist/audit/query/formatting/index.js.map +1 -0
- package/dist/audit/query/options.d.ts +34 -0
- package/dist/audit/query/options.d.ts.map +1 -0
- package/dist/audit/query/options.js +8 -0
- package/dist/audit/query/options.js.map +1 -0
- package/dist/audit/query/plugin.d.ts +11 -0
- package/dist/audit/query/plugin.d.ts.map +1 -0
- package/dist/audit/query/plugin.js +68 -0
- package/dist/audit/query/plugin.js.map +1 -0
- package/dist/audit/query/tools/access.d.ts +9 -0
- package/dist/audit/query/tools/access.d.ts.map +1 -0
- package/dist/audit/query/tools/access.js +14 -0
- package/dist/audit/query/tools/access.js.map +1 -0
- package/dist/audit/query/tools/descriptors.d.ts +26 -0
- package/dist/audit/query/tools/descriptors.d.ts.map +1 -0
- package/dist/audit/query/tools/descriptors.js +35 -0
- package/dist/audit/query/tools/descriptors.js.map +1 -0
- package/dist/audit/query/tools/get-change-history.d.ts +23 -0
- package/dist/audit/query/tools/get-change-history.d.ts.map +1 -0
- package/dist/audit/query/tools/get-change-history.js +44 -0
- package/dist/audit/query/tools/get-change-history.js.map +1 -0
- package/dist/audit/query/tools/get-recent-failures.d.ts +23 -0
- package/dist/audit/query/tools/get-recent-failures.d.ts.map +1 -0
- package/dist/audit/query/tools/get-recent-failures.js +56 -0
- package/dist/audit/query/tools/get-recent-failures.js.map +1 -0
- package/dist/audit/query/tools/index.d.ts +13 -0
- package/dist/audit/query/tools/index.d.ts.map +1 -0
- package/dist/audit/query/tools/index.js +8 -0
- package/dist/audit/query/tools/index.js.map +1 -0
- package/dist/audit/query/tools/query-audit.d.ts +53 -0
- package/dist/audit/query/tools/query-audit.d.ts.map +1 -0
- package/dist/audit/query/tools/query-audit.js +78 -0
- package/dist/audit/query/tools/query-audit.js.map +1 -0
- package/dist/audit/query/tools/what-changed-in-range.d.ts +23 -0
- package/dist/audit/query/tools/what-changed-in-range.d.ts.map +1 -0
- package/dist/audit/query/tools/what-changed-in-range.js +86 -0
- package/dist/audit/query/tools/what-changed-in-range.js.map +1 -0
- package/dist/audit/query/tools/who-changed-what.d.ts +38 -0
- package/dist/audit/query/tools/who-changed-what.d.ts.map +1 -0
- package/dist/audit/query/tools/who-changed-what.js +66 -0
- package/dist/audit/query/tools/who-changed-what.js.map +1 -0
- package/dist/audit/types.d.ts +11 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +45 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/audit/writer.d.ts +50 -0
- package/dist/audit/writer.d.ts.map +1 -0
- package/dist/audit/writer.js +101 -0
- package/dist/audit/writer.js.map +1 -0
- package/dist/cache-tags.d.ts +31 -0
- package/dist/cache-tags.d.ts.map +1 -0
- package/dist/cache-tags.js +53 -0
- package/dist/cache-tags.js.map +1 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/manifest-source.d.ts +17 -0
- package/dist/components/manifest-source.d.ts.map +1 -0
- package/dist/components/manifest-source.js +60 -0
- package/dist/components/manifest-source.js.map +1 -0
- package/dist/components/matching/index.d.ts +3 -0
- package/dist/components/matching/index.d.ts.map +1 -0
- package/dist/components/matching/index.js +2 -0
- package/dist/components/matching/index.js.map +1 -0
- package/dist/components/matching/tfidf.d.ts +13 -0
- package/dist/components/matching/tfidf.d.ts.map +1 -0
- package/dist/components/matching/tfidf.js +118 -0
- package/dist/components/matching/tfidf.js.map +1 -0
- package/dist/components/matching/types.d.ts +22 -0
- package/dist/components/matching/types.d.ts.map +1 -0
- package/dist/components/matching/types.js +2 -0
- package/dist/components/matching/types.js.map +1 -0
- package/dist/components/options.d.ts +136 -0
- package/dist/components/options.d.ts.map +1 -0
- package/dist/components/options.js +40 -0
- package/dist/components/options.js.map +1 -0
- package/dist/components/plugin.d.ts +4 -0
- package/dist/components/plugin.d.ts.map +1 -0
- package/dist/components/plugin.js +95 -0
- package/dist/components/plugin.js.map +1 -0
- package/dist/components/tools/descriptors.d.ts +34 -0
- package/dist/components/tools/descriptors.d.ts.map +1 -0
- package/dist/components/tools/descriptors.js +43 -0
- package/dist/components/tools/descriptors.js.map +1 -0
- package/dist/components/tools/find-anti-pattern.d.ts +9 -0
- package/dist/components/tools/find-anti-pattern.d.ts.map +1 -0
- package/dist/components/tools/find-anti-pattern.js +31 -0
- package/dist/components/tools/find-anti-pattern.js.map +1 -0
- package/dist/components/tools/get-contract.d.ts +4 -0
- package/dist/components/tools/get-contract.d.ts.map +1 -0
- package/dist/components/tools/get-contract.js +19 -0
- package/dist/components/tools/get-contract.js.map +1 -0
- package/dist/components/tools/get-tokens.d.ts +4 -0
- package/dist/components/tools/get-tokens.d.ts.map +1 -0
- package/dist/components/tools/get-tokens.js +19 -0
- package/dist/components/tools/get-tokens.js.map +1 -0
- package/dist/components/tools/get-variants.d.ts +4 -0
- package/dist/components/tools/get-variants.d.ts.map +1 -0
- package/dist/components/tools/get-variants.js +19 -0
- package/dist/components/tools/get-variants.js.map +1 -0
- package/dist/components/tools/index.d.ts +9 -0
- package/dist/components/tools/index.d.ts.map +1 -0
- package/dist/components/tools/index.js +9 -0
- package/dist/components/tools/index.js.map +1 -0
- package/dist/components/tools/list-components.d.ts +4 -0
- package/dist/components/tools/list-components.d.ts.map +1 -0
- package/dist/components/tools/list-components.js +25 -0
- package/dist/components/tools/list-components.js.map +1 -0
- package/dist/components/tools/suggest-for-intent.d.ts +12 -0
- package/dist/components/tools/suggest-for-intent.d.ts.map +1 -0
- package/dist/components/tools/suggest-for-intent.js +83 -0
- package/dist/components/tools/suggest-for-intent.js.map +1 -0
- package/dist/components/tools/validate-composition.d.ts +9 -0
- package/dist/components/tools/validate-composition.d.ts.map +1 -0
- package/dist/components/tools/validate-composition.js +31 -0
- package/dist/components/tools/validate-composition.js.map +1 -0
- package/dist/components/validation/composition.d.ts +38 -0
- package/dist/components/validation/composition.d.ts.map +1 -0
- package/dist/components/validation/composition.js +135 -0
- package/dist/components/validation/composition.js.map +1 -0
- package/dist/editorial/calendar/ContentCalendarReport.d.ts +9 -0
- package/dist/editorial/calendar/ContentCalendarReport.d.ts.map +1 -0
- package/dist/editorial/calendar/ContentCalendarReport.js +47 -0
- package/dist/editorial/calendar/ContentCalendarReport.js.map +1 -0
- package/dist/editorial/calendar/ContentCalendarView.d.ts +3 -0
- package/dist/editorial/calendar/ContentCalendarView.d.ts.map +1 -0
- package/dist/editorial/calendar/ContentCalendarView.js +36 -0
- package/dist/editorial/calendar/ContentCalendarView.js.map +1 -0
- package/dist/editorial/calendar/calendar.d.ts +30 -0
- package/dist/editorial/calendar/calendar.d.ts.map +1 -0
- package/dist/editorial/calendar/calendar.js +23 -0
- package/dist/editorial/calendar/calendar.js.map +1 -0
- package/dist/editorial/calendar/find.d.ts +41 -0
- package/dist/editorial/calendar/find.d.ts.map +1 -0
- package/dist/editorial/calendar/find.js +108 -0
- package/dist/editorial/calendar/find.js.map +1 -0
- package/dist/editorial/calendar/month.d.ts +45 -0
- package/dist/editorial/calendar/month.d.ts.map +1 -0
- package/dist/editorial/calendar/month.js +120 -0
- package/dist/editorial/calendar/month.js.map +1 -0
- package/dist/editorial/calendar/tool.d.ts +50 -0
- package/dist/editorial/calendar/tool.d.ts.map +1 -0
- package/dist/editorial/calendar/tool.js +68 -0
- package/dist/editorial/calendar/tool.js.map +1 -0
- package/dist/editorial/config.d.ts +25 -0
- package/dist/editorial/config.d.ts.map +1 -0
- package/dist/editorial/config.js +12 -0
- package/dist/editorial/config.js.map +1 -0
- package/dist/editorial/health/ContentHealthReport.d.ts +7 -0
- package/dist/editorial/health/ContentHealthReport.d.ts.map +1 -0
- package/dist/editorial/health/ContentHealthReport.js +29 -0
- package/dist/editorial/health/ContentHealthReport.js.map +1 -0
- package/dist/editorial/health/ContentHealthView.d.ts +3 -0
- package/dist/editorial/health/ContentHealthView.d.ts.map +1 -0
- package/dist/editorial/health/ContentHealthView.js +29 -0
- package/dist/editorial/health/ContentHealthView.js.map +1 -0
- package/dist/editorial/health/HealthSummary.d.ts +6 -0
- package/dist/editorial/health/HealthSummary.d.ts.map +1 -0
- package/dist/editorial/health/HealthSummary.js +39 -0
- package/dist/editorial/health/HealthSummary.js.map +1 -0
- package/dist/editorial/health/checks.d.ts +104 -0
- package/dist/editorial/health/checks.d.ts.map +1 -0
- package/dist/editorial/health/checks.js +188 -0
- package/dist/editorial/health/checks.js.map +1 -0
- package/dist/editorial/health/find.d.ts +43 -0
- package/dist/editorial/health/find.d.ts.map +1 -0
- package/dist/editorial/health/find.js +97 -0
- package/dist/editorial/health/find.js.map +1 -0
- package/dist/editorial/health/tool.d.ts +53 -0
- package/dist/editorial/health/tool.d.ts.map +1 -0
- package/dist/editorial/health/tool.js +80 -0
- package/dist/editorial/health/tool.js.map +1 -0
- package/dist/editorial/index.d.ts +25 -0
- package/dist/editorial/index.d.ts.map +1 -0
- package/dist/editorial/index.js +15 -0
- package/dist/editorial/index.js.map +1 -0
- package/dist/editorial/palette/CommandPalette.d.ts +15 -0
- package/dist/editorial/palette/CommandPalette.d.ts.map +1 -0
- package/dist/editorial/palette/CommandPalette.js +319 -0
- package/dist/editorial/palette/CommandPalette.js.map +1 -0
- package/dist/editorial/palette/ReportsNav.d.ts +5 -0
- package/dist/editorial/palette/ReportsNav.d.ts.map +1 -0
- package/dist/editorial/palette/ReportsNav.js +31 -0
- package/dist/editorial/palette/ReportsNav.js.map +1 -0
- package/dist/editorial/palette/search.d.ts +18 -0
- package/dist/editorial/palette/search.d.ts.map +1 -0
- package/dist/editorial/palette/search.js +41 -0
- package/dist/editorial/palette/search.js.map +1 -0
- package/dist/editorial/palette/sources.d.ts +64 -0
- package/dist/editorial/palette/sources.d.ts.map +1 -0
- package/dist/editorial/palette/sources.js +103 -0
- package/dist/editorial/palette/sources.js.map +1 -0
- package/dist/editorial/palette/styles.d.ts +2 -0
- package/dist/editorial/palette/styles.d.ts.map +1 -0
- package/dist/editorial/palette/styles.js +76 -0
- package/dist/editorial/palette/styles.js.map +1 -0
- package/dist/editorial/palette/tool.d.ts +31 -0
- package/dist/editorial/palette/tool.d.ts.map +1 -0
- package/dist/editorial/palette/tool.js +63 -0
- package/dist/editorial/palette/tool.js.map +1 -0
- package/dist/editorial/plugin.d.ts +76 -0
- package/dist/editorial/plugin.d.ts.map +1 -0
- package/dist/editorial/plugin.js +186 -0
- package/dist/editorial/plugin.js.map +1 -0
- package/dist/editorial/relativeTime.d.ts +3 -0
- package/dist/editorial/relativeTime.d.ts.map +1 -0
- package/dist/editorial/relativeTime.js +27 -0
- package/dist/editorial/relativeTime.js.map +1 -0
- package/dist/editorial/styles.d.ts +2 -0
- package/dist/editorial/styles.d.ts.map +1 -0
- package/dist/editorial/styles.js +191 -0
- package/dist/editorial/styles.js.map +1 -0
- package/dist/editorial/work/YourWork.d.ts +13 -0
- package/dist/editorial/work/YourWork.d.ts.map +1 -0
- package/dist/editorial/work/YourWork.js +40 -0
- package/dist/editorial/work/YourWork.js.map +1 -0
- package/dist/editorial/work/tool.d.ts +45 -0
- package/dist/editorial/work/tool.d.ts.map +1 -0
- package/dist/editorial/work/tool.js +54 -0
- package/dist/editorial/work/tool.js.map +1 -0
- package/dist/editorial/work/work.d.ts +31 -0
- package/dist/editorial/work/work.d.ts.map +1 -0
- package/dist/editorial/work/work.js +68 -0
- package/dist/editorial/work/work.js.map +1 -0
- package/dist/email/client.d.ts +78 -0
- package/dist/email/client.d.ts.map +1 -0
- package/dist/email/client.js +63 -0
- package/dist/email/client.js.map +1 -0
- package/dist/email/functions/_shared.d.ts +17 -0
- package/dist/email/functions/_shared.d.ts.map +1 -0
- package/dist/email/functions/_shared.js +40 -0
- package/dist/email/functions/_shared.js.map +1 -0
- package/dist/email/functions/index.d.ts +7 -0
- package/dist/email/functions/index.d.ts.map +1 -0
- package/dist/email/functions/index.js +4 -0
- package/dist/email/functions/index.js.map +1 -0
- package/dist/email/functions/notify-approval-decision.d.ts +34 -0
- package/dist/email/functions/notify-approval-decision.d.ts.map +1 -0
- package/dist/email/functions/notify-approval-decision.js +77 -0
- package/dist/email/functions/notify-approval-decision.js.map +1 -0
- package/dist/email/functions/notify-approval-expired.d.ts +32 -0
- package/dist/email/functions/notify-approval-expired.d.ts.map +1 -0
- package/dist/email/functions/notify-approval-expired.js +54 -0
- package/dist/email/functions/notify-approval-expired.js.map +1 -0
- package/dist/email/functions/notify-approval-request.d.ts +35 -0
- package/dist/email/functions/notify-approval-request.d.ts.map +1 -0
- package/dist/email/functions/notify-approval-request.js +89 -0
- package/dist/email/functions/notify-approval-request.js.map +1 -0
- package/dist/email/index.d.ts +17 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +12 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/options.d.ts +100 -0
- package/dist/email/options.d.ts.map +1 -0
- package/dist/email/options.js +55 -0
- package/dist/email/options.js.map +1 -0
- package/dist/email/plugin.d.ts +28 -0
- package/dist/email/plugin.d.ts.map +1 -0
- package/dist/email/plugin.js +113 -0
- package/dist/email/plugin.js.map +1 -0
- package/dist/email/templates/ApprovalDecision.d.ts +15 -0
- package/dist/email/templates/ApprovalDecision.d.ts.map +1 -0
- package/dist/email/templates/ApprovalDecision.js +56 -0
- package/dist/email/templates/ApprovalDecision.js.map +1 -0
- package/dist/email/templates/ApprovalExpired.d.ts +10 -0
- package/dist/email/templates/ApprovalExpired.d.ts.map +1 -0
- package/dist/email/templates/ApprovalExpired.js +8 -0
- package/dist/email/templates/ApprovalExpired.js.map +1 -0
- package/dist/email/templates/ApprovalRequest.d.ts +24 -0
- package/dist/email/templates/ApprovalRequest.d.ts.map +1 -0
- package/dist/email/templates/ApprovalRequest.js +58 -0
- package/dist/email/templates/ApprovalRequest.js.map +1 -0
- package/dist/email/templates/_layout.d.ts +17 -0
- package/dist/email/templates/_layout.d.ts.map +1 -0
- package/dist/email/templates/_layout.js +39 -0
- package/dist/email/templates/_layout.js.map +1 -0
- package/dist/email/templates/index.d.ts +9 -0
- package/dist/email/templates/index.d.ts.map +1 -0
- package/dist/email/templates/index.js +5 -0
- package/dist/email/templates/index.js.map +1 -0
- package/dist/email/tokens.d.ts +39 -0
- package/dist/email/tokens.d.ts.map +1 -0
- package/dist/email/tokens.js +17 -0
- package/dist/email/tokens.js.map +1 -0
- package/dist/env/index.d.ts +54 -0
- package/dist/env/index.d.ts.map +1 -0
- package/dist/env/index.js +113 -0
- package/dist/env/index.js.map +1 -0
- package/dist/events/inngest.d.ts +24 -0
- package/dist/events/inngest.d.ts.map +1 -0
- package/dist/events/inngest.js +24 -0
- package/dist/events/inngest.js.map +1 -0
- package/dist/events/taxonomy.d.ts +84 -0
- package/dist/events/taxonomy.d.ts.map +1 -0
- package/dist/events/taxonomy.js +10 -0
- package/dist/events/taxonomy.js.map +1 -0
- package/dist/events/vercel.d.ts +47 -0
- package/dist/events/vercel.d.ts.map +1 -0
- package/dist/events/vercel.js +69 -0
- package/dist/events/vercel.js.map +1 -0
- package/dist/exports/client.d.ts +24 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +21 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +17 -0
- package/dist/exports/rsc.d.ts.map +1 -0
- package/dist/exports/rsc.js +19 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/fields/CharacterCountField.d.ts +4 -0
- package/dist/fields/CharacterCountField.d.ts.map +1 -0
- package/dist/fields/CharacterCountField.js +94 -0
- package/dist/fields/CharacterCountField.js.map +1 -0
- package/dist/fields/characterCount.d.ts +15 -0
- package/dist/fields/characterCount.d.ts.map +1 -0
- package/dist/fields/characterCount.js +92 -0
- package/dist/fields/characterCount.js.map +1 -0
- package/dist/fields/checkSlug.d.ts +62 -0
- package/dist/fields/checkSlug.d.ts.map +1 -0
- package/dist/fields/checkSlug.js +119 -0
- package/dist/fields/checkSlug.js.map +1 -0
- package/dist/fields/index.d.ts +9 -0
- package/dist/fields/index.d.ts.map +1 -0
- package/dist/fields/index.js +9 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/fields/mapFields.d.ts +13 -0
- package/dist/fields/mapFields.d.ts.map +1 -0
- package/dist/fields/mapFields.js +32 -0
- package/dist/fields/mapFields.js.map +1 -0
- package/dist/fields/publishing.d.ts +33 -0
- package/dist/fields/publishing.d.ts.map +1 -0
- package/dist/fields/publishing.js +81 -0
- package/dist/fields/publishing.js.map +1 -0
- package/dist/fields/revisedAt.d.ts +15 -0
- package/dist/fields/revisedAt.d.ts.map +1 -0
- package/dist/fields/revisedAt.js +79 -0
- package/dist/fields/revisedAt.js.map +1 -0
- package/dist/fields/slug.d.ts +21 -0
- package/dist/fields/slug.d.ts.map +1 -0
- package/dist/fields/slug.js +102 -0
- package/dist/fields/slug.js.map +1 -0
- package/dist/fields/unlisted.d.ts +13 -0
- package/dist/fields/unlisted.d.ts.map +1 -0
- package/dist/fields/unlisted.js +35 -0
- package/dist/fields/unlisted.js.map +1 -0
- package/dist/fields/usedBy.d.ts +12 -0
- package/dist/fields/usedBy.d.ts.map +1 -0
- package/dist/fields/usedBy.js +36 -0
- package/dist/fields/usedBy.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/admin/SyncButton.d.ts +27 -0
- package/dist/integrations/admin/SyncButton.d.ts.map +1 -0
- package/dist/integrations/admin/SyncButton.js +134 -0
- package/dist/integrations/admin/SyncButton.js.map +1 -0
- package/dist/integrations/admin/sync-client.d.ts +83 -0
- package/dist/integrations/admin/sync-client.d.ts.map +1 -0
- package/dist/integrations/admin/sync-client.js +121 -0
- package/dist/integrations/admin/sync-client.js.map +1 -0
- package/dist/integrations/collection.d.ts +26 -0
- package/dist/integrations/collection.d.ts.map +1 -0
- package/dist/integrations/collection.js +193 -0
- package/dist/integrations/collection.js.map +1 -0
- package/dist/integrations/endpoints/sync.d.ts +27 -0
- package/dist/integrations/endpoints/sync.d.ts.map +1 -0
- package/dist/integrations/endpoints/sync.js +90 -0
- package/dist/integrations/endpoints/sync.js.map +1 -0
- package/dist/integrations/index.d.ts +22 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +15 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/integrations/index.d.ts +3 -0
- package/dist/integrations/integrations/index.d.ts.map +1 -0
- package/dist/integrations/integrations/index.js +2 -0
- package/dist/integrations/integrations/index.js.map +1 -0
- package/dist/integrations/integrations/webhook/config-fields.d.ts +33 -0
- package/dist/integrations/integrations/webhook/config-fields.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/config-fields.js +54 -0
- package/dist/integrations/integrations/webhook/config-fields.js.map +1 -0
- package/dist/integrations/integrations/webhook/functions.d.ts +24 -0
- package/dist/integrations/integrations/webhook/functions.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/functions.js +139 -0
- package/dist/integrations/integrations/webhook/functions.js.map +1 -0
- package/dist/integrations/integrations/webhook/healthcheck.d.ts +10 -0
- package/dist/integrations/integrations/webhook/healthcheck.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/healthcheck.js +26 -0
- package/dist/integrations/integrations/webhook/healthcheck.js.map +1 -0
- package/dist/integrations/integrations/webhook/hmac.d.ts +11 -0
- package/dist/integrations/integrations/webhook/hmac.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/hmac.js +25 -0
- package/dist/integrations/integrations/webhook/hmac.js.map +1 -0
- package/dist/integrations/integrations/webhook/index.d.ts +6 -0
- package/dist/integrations/integrations/webhook/index.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/index.js +47 -0
- package/dist/integrations/integrations/webhook/index.js.map +1 -0
- package/dist/integrations/integrations/webhook/payload.d.ts +9 -0
- package/dist/integrations/integrations/webhook/payload.d.ts.map +1 -0
- package/dist/integrations/integrations/webhook/payload.js +19 -0
- package/dist/integrations/integrations/webhook/payload.js.map +1 -0
- package/dist/integrations/jobs/healthcheck.d.ts +24 -0
- package/dist/integrations/jobs/healthcheck.d.ts.map +1 -0
- package/dist/integrations/jobs/healthcheck.js +133 -0
- package/dist/integrations/jobs/healthcheck.js.map +1 -0
- package/dist/integrations/options.d.ts +54 -0
- package/dist/integrations/options.d.ts.map +1 -0
- package/dist/integrations/options.js +8 -0
- package/dist/integrations/options.js.map +1 -0
- package/dist/integrations/plugin.d.ts +51 -0
- package/dist/integrations/plugin.d.ts.map +1 -0
- package/dist/integrations/plugin.js +215 -0
- package/dist/integrations/plugin.js.map +1 -0
- package/dist/integrations/registry.d.ts +27 -0
- package/dist/integrations/registry.d.ts.map +1 -0
- package/dist/integrations/registry.js +39 -0
- package/dist/integrations/registry.js.map +1 -0
- package/dist/integrations/sync/manual-sync.d.ts +70 -0
- package/dist/integrations/sync/manual-sync.d.ts.map +1 -0
- package/dist/integrations/sync/manual-sync.js +91 -0
- package/dist/integrations/sync/manual-sync.js.map +1 -0
- package/dist/integrations/sync/problems.d.ts +31 -0
- package/dist/integrations/sync/problems.d.ts.map +1 -0
- package/dist/integrations/sync/problems.js +40 -0
- package/dist/integrations/sync/problems.js.map +1 -0
- package/dist/integrations/sync/status.d.ts +15 -0
- package/dist/integrations/sync/status.d.ts.map +1 -0
- package/dist/integrations/sync/status.js +31 -0
- package/dist/integrations/sync/status.js.map +1 -0
- package/dist/integrations/tools/access.d.ts +5 -0
- package/dist/integrations/tools/access.d.ts.map +1 -0
- package/dist/integrations/tools/access.js +14 -0
- package/dist/integrations/tools/access.js.map +1 -0
- package/dist/integrations/tools/descriptors.d.ts +26 -0
- package/dist/integrations/tools/descriptors.d.ts.map +1 -0
- package/dist/integrations/tools/descriptors.js +35 -0
- package/dist/integrations/tools/descriptors.js.map +1 -0
- package/dist/integrations/tools/get-integration-status.d.ts +17 -0
- package/dist/integrations/tools/get-integration-status.d.ts.map +1 -0
- package/dist/integrations/tools/get-integration-status.js +41 -0
- package/dist/integrations/tools/get-integration-status.js.map +1 -0
- package/dist/integrations/tools/index.d.ts +13 -0
- package/dist/integrations/tools/index.d.ts.map +1 -0
- package/dist/integrations/tools/index.js +8 -0
- package/dist/integrations/tools/index.js.map +1 -0
- package/dist/integrations/tools/list-integration-types.d.ts +10 -0
- package/dist/integrations/tools/list-integration-types.d.ts.map +1 -0
- package/dist/integrations/tools/list-integration-types.js +22 -0
- package/dist/integrations/tools/list-integration-types.js.map +1 -0
- package/dist/integrations/tools/list-integrations.d.ts +20 -0
- package/dist/integrations/tools/list-integrations.d.ts.map +1 -0
- package/dist/integrations/tools/list-integrations.js +49 -0
- package/dist/integrations/tools/list-integrations.js.map +1 -0
- package/dist/integrations/tools/test-integration.d.ts +19 -0
- package/dist/integrations/tools/test-integration.d.ts.map +1 -0
- package/dist/integrations/tools/test-integration.js +51 -0
- package/dist/integrations/tools/test-integration.js.map +1 -0
- package/dist/integrations/tools/trigger-sync.d.ts +26 -0
- package/dist/integrations/tools/trigger-sync.d.ts.map +1 -0
- package/dist/integrations/tools/trigger-sync.js +44 -0
- package/dist/integrations/tools/trigger-sync.js.map +1 -0
- package/dist/integrations/types.d.ts +183 -0
- package/dist/integrations/types.d.ts.map +1 -0
- package/dist/integrations/types.js +2 -0
- package/dist/integrations/types.js.map +1 -0
- package/dist/jobs/define.d.ts +17 -0
- package/dist/jobs/define.d.ts.map +1 -0
- package/dist/jobs/define.js +39 -0
- package/dist/jobs/define.js.map +1 -0
- package/dist/jobs/failure-handler.d.ts +39 -0
- package/dist/jobs/failure-handler.d.ts.map +1 -0
- package/dist/jobs/failure-handler.js +62 -0
- package/dist/jobs/failure-handler.js.map +1 -0
- package/dist/jobs/index.d.ts +28 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +7 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/inngest/adapter.d.ts +39 -0
- package/dist/jobs/inngest/adapter.d.ts.map +1 -0
- package/dist/jobs/inngest/adapter.js +81 -0
- package/dist/jobs/inngest/adapter.js.map +1 -0
- package/dist/jobs/inngest/index.d.ts +15 -0
- package/dist/jobs/inngest/index.d.ts.map +1 -0
- package/dist/jobs/inngest/index.js +13 -0
- package/dist/jobs/inngest/index.js.map +1 -0
- package/dist/jobs/options.d.ts +18 -0
- package/dist/jobs/options.d.ts.map +1 -0
- package/dist/jobs/options.js +12 -0
- package/dist/jobs/options.js.map +1 -0
- package/dist/jobs/payload/adapter.d.ts +33 -0
- package/dist/jobs/payload/adapter.d.ts.map +1 -0
- package/dist/jobs/payload/adapter.js +257 -0
- package/dist/jobs/payload/adapter.js.map +1 -0
- package/dist/jobs/payload/index.d.ts +8 -0
- package/dist/jobs/payload/index.d.ts.map +1 -0
- package/dist/jobs/payload/index.js +7 -0
- package/dist/jobs/payload/index.js.map +1 -0
- package/dist/jobs/sender.d.ts +4 -0
- package/dist/jobs/sender.d.ts.map +1 -0
- package/dist/jobs/sender.js +19 -0
- package/dist/jobs/sender.js.map +1 -0
- package/dist/jobs/types.d.ts +105 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +2 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs/workflow-types.d.ts +280 -0
- package/dist/jobs/workflow-types.d.ts.map +1 -0
- package/dist/jobs/workflow-types.js +22 -0
- package/dist/jobs/workflow-types.js.map +1 -0
- package/dist/logger/index.d.ts +9 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +41 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/mcp/api-key-access.d.ts +50 -0
- package/dist/mcp/api-key-access.d.ts.map +1 -0
- package/dist/mcp/api-key-access.js +94 -0
- package/dist/mcp/api-key-access.js.map +1 -0
- package/dist/mcp/audit-context.d.ts +39 -0
- package/dist/mcp/audit-context.d.ts.map +1 -0
- package/dist/mcp/audit-context.js +36 -0
- package/dist/mcp/audit-context.js.map +1 -0
- package/dist/mcp/audit-server.d.ts +13 -0
- package/dist/mcp/audit-server.d.ts.map +1 -0
- package/dist/mcp/audit-server.js +68 -0
- package/dist/mcp/audit-server.js.map +1 -0
- package/dist/mcp/collector.d.ts +51 -0
- package/dist/mcp/collector.d.ts.map +1 -0
- package/dist/mcp/collector.js +96 -0
- package/dist/mcp/collector.js.map +1 -0
- package/dist/mcp/envelope.d.ts +22 -0
- package/dist/mcp/envelope.d.ts.map +1 -0
- package/dist/mcp/envelope.js +22 -0
- package/dist/mcp/envelope.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/meta.d.ts +74 -0
- package/dist/mcp/meta.d.ts.map +1 -0
- package/dist/mcp/meta.js +27 -0
- package/dist/mcp/meta.js.map +1 -0
- package/dist/mcp/payload-mcp.d.ts +68 -0
- package/dist/mcp/payload-mcp.d.ts.map +1 -0
- package/dist/mcp/payload-mcp.js +175 -0
- package/dist/mcp/payload-mcp.js.map +1 -0
- package/dist/media/hooks.d.ts +70 -0
- package/dist/media/hooks.d.ts.map +1 -0
- package/dist/media/hooks.js +200 -0
- package/dist/media/hooks.js.map +1 -0
- package/dist/media/index.d.ts +8 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +7 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/svg.d.ts +17 -0
- package/dist/media/svg.d.ts.map +1 -0
- package/dist/media/svg.js +241 -0
- package/dist/media/svg.js.map +1 -0
- package/dist/media/uploadKey.d.ts +25 -0
- package/dist/media/uploadKey.d.ts.map +1 -0
- package/dist/media/uploadKey.js +70 -0
- package/dist/media/uploadKey.js.map +1 -0
- package/dist/observability/collection.d.ts +13 -0
- package/dist/observability/collection.d.ts.map +1 -0
- package/dist/observability/collection.js +76 -0
- package/dist/observability/collection.js.map +1 -0
- package/dist/observability/index.d.ts +10 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +6 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/plugin.d.ts +24 -0
- package/dist/observability/plugin.d.ts.map +1 -0
- package/dist/observability/plugin.js +59 -0
- package/dist/observability/plugin.js.map +1 -0
- package/dist/observability/report.d.ts +175 -0
- package/dist/observability/report.d.ts.map +1 -0
- package/dist/observability/report.js +274 -0
- package/dist/observability/report.js.map +1 -0
- package/dist/observability/tool.d.ts +33 -0
- package/dist/observability/tool.d.ts.map +1 -0
- package/dist/observability/tool.js +75 -0
- package/dist/observability/tool.js.map +1 -0
- package/dist/observability/writer.d.ts +24 -0
- package/dist/observability/writer.d.ts.map +1 -0
- package/dist/observability/writer.js +72 -0
- package/dist/observability/writer.js.map +1 -0
- package/dist/plugin-contract/admin.d.ts +45 -0
- package/dist/plugin-contract/admin.d.ts.map +1 -0
- package/dist/plugin-contract/admin.js +12 -0
- package/dist/plugin-contract/admin.js.map +1 -0
- package/dist/plugin-contract/env.d.ts +29 -0
- package/dist/plugin-contract/env.d.ts.map +1 -0
- package/dist/plugin-contract/env.js +2 -0
- package/dist/plugin-contract/env.js.map +1 -0
- package/dist/plugin-contract/index.d.ts +39 -0
- package/dist/plugin-contract/index.d.ts.map +1 -0
- package/dist/plugin-contract/index.js +5 -0
- package/dist/plugin-contract/index.js.map +1 -0
- package/dist/plugin-contract/mcp.d.ts +51 -0
- package/dist/plugin-contract/mcp.d.ts.map +1 -0
- package/dist/plugin-contract/mcp.js +2 -0
- package/dist/plugin-contract/mcp.js.map +1 -0
- package/dist/plugin-contract/registry.d.ts +23 -0
- package/dist/plugin-contract/registry.d.ts.map +1 -0
- package/dist/plugin-contract/registry.js +51 -0
- package/dist/plugin-contract/registry.js.map +1 -0
- package/dist/publishing/admin/PublishButton.d.ts +22 -0
- package/dist/publishing/admin/PublishButton.d.ts.map +1 -0
- package/dist/publishing/admin/PublishButton.js +164 -0
- package/dist/publishing/admin/PublishButton.js.map +1 -0
- package/dist/publishing/admin/SchedulePublishField.d.ts +24 -0
- package/dist/publishing/admin/SchedulePublishField.d.ts.map +1 -0
- package/dist/publishing/admin/SchedulePublishField.js +160 -0
- package/dist/publishing/admin/SchedulePublishField.js.map +1 -0
- package/dist/publishing/admin/UnpublishButton.d.ts +15 -0
- package/dist/publishing/admin/UnpublishButton.d.ts.map +1 -0
- package/dist/publishing/admin/UnpublishButton.js +90 -0
- package/dist/publishing/admin/UnpublishButton.js.map +1 -0
- package/dist/publishing/admin/publishing-client.d.ts +105 -0
- package/dist/publishing/admin/publishing-client.d.ts.map +1 -0
- package/dist/publishing/admin/publishing-client.js +139 -0
- package/dist/publishing/admin/publishing-client.js.map +1 -0
- package/dist/publishing/admin/schedule-state.d.ts +30 -0
- package/dist/publishing/admin/schedule-state.d.ts.map +1 -0
- package/dist/publishing/admin/schedule-state.js +39 -0
- package/dist/publishing/admin/schedule-state.js.map +1 -0
- package/dist/publishing/checks/alt-text.d.ts +17 -0
- package/dist/publishing/checks/alt-text.d.ts.map +1 -0
- package/dist/publishing/checks/alt-text.js +63 -0
- package/dist/publishing/checks/alt-text.js.map +1 -0
- package/dist/publishing/checks/heading-hierarchy.d.ts +11 -0
- package/dist/publishing/checks/heading-hierarchy.d.ts.map +1 -0
- package/dist/publishing/checks/heading-hierarchy.js +32 -0
- package/dist/publishing/checks/heading-hierarchy.js.map +1 -0
- package/dist/publishing/checks/index.d.ts +6 -0
- package/dist/publishing/checks/index.d.ts.map +1 -0
- package/dist/publishing/checks/index.js +13 -0
- package/dist/publishing/checks/index.js.map +1 -0
- package/dist/publishing/checks/link-labels.d.ts +9 -0
- package/dist/publishing/checks/link-labels.d.ts.map +1 -0
- package/dist/publishing/checks/link-labels.js +44 -0
- package/dist/publishing/checks/link-labels.js.map +1 -0
- package/dist/publishing/endpoints/admin.d.ts +19 -0
- package/dist/publishing/endpoints/admin.d.ts.map +1 -0
- package/dist/publishing/endpoints/admin.js +112 -0
- package/dist/publishing/endpoints/admin.js.map +1 -0
- package/dist/publishing/events.d.ts +16 -0
- package/dist/publishing/events.d.ts.map +1 -0
- package/dist/publishing/events.js +30 -0
- package/dist/publishing/events.js.map +1 -0
- package/dist/publishing/hooks/block-status-writes.d.ts +52 -0
- package/dist/publishing/hooks/block-status-writes.d.ts.map +1 -0
- package/dist/publishing/hooks/block-status-writes.js +242 -0
- package/dist/publishing/hooks/block-status-writes.js.map +1 -0
- package/dist/publishing/hooks/draft-writes.d.ts +32 -0
- package/dist/publishing/hooks/draft-writes.d.ts.map +1 -0
- package/dist/publishing/hooks/draft-writes.js +76 -0
- package/dist/publishing/hooks/draft-writes.js.map +1 -0
- package/dist/publishing/hooks/schedule-events.d.ts +26 -0
- package/dist/publishing/hooks/schedule-events.d.ts.map +1 -0
- package/dist/publishing/hooks/schedule-events.js +54 -0
- package/dist/publishing/hooks/schedule-events.js.map +1 -0
- package/dist/publishing/index.d.ts +35 -0
- package/dist/publishing/index.d.ts.map +1 -0
- package/dist/publishing/index.js +32 -0
- package/dist/publishing/index.js.map +1 -0
- package/dist/publishing/jobs/execute-scheduled-publishes.d.ts +24 -0
- package/dist/publishing/jobs/execute-scheduled-publishes.d.ts.map +1 -0
- package/dist/publishing/jobs/execute-scheduled-publishes.js +114 -0
- package/dist/publishing/jobs/execute-scheduled-publishes.js.map +1 -0
- package/dist/publishing/jobs/next-revalidate.d.ts +43 -0
- package/dist/publishing/jobs/next-revalidate.d.ts.map +1 -0
- package/dist/publishing/jobs/next-revalidate.js +42 -0
- package/dist/publishing/jobs/next-revalidate.js.map +1 -0
- package/dist/publishing/jobs/publish-at-scheduled-time.d.ts +24 -0
- package/dist/publishing/jobs/publish-at-scheduled-time.d.ts.map +1 -0
- package/dist/publishing/jobs/publish-at-scheduled-time.js +136 -0
- package/dist/publishing/jobs/publish-at-scheduled-time.js.map +1 -0
- package/dist/publishing/jobs/revalidate-on-publish.d.ts +24 -0
- package/dist/publishing/jobs/revalidate-on-publish.d.ts.map +1 -0
- package/dist/publishing/jobs/revalidate-on-publish.js +78 -0
- package/dist/publishing/jobs/revalidate-on-publish.js.map +1 -0
- package/dist/publishing/jobs/revalidate-tag-hooks.d.ts +80 -0
- package/dist/publishing/jobs/revalidate-tag-hooks.d.ts.map +1 -0
- package/dist/publishing/jobs/revalidate-tag-hooks.js +116 -0
- package/dist/publishing/jobs/revalidate-tag-hooks.js.map +1 -0
- package/dist/publishing/options.d.ts +100 -0
- package/dist/publishing/options.d.ts.map +1 -0
- package/dist/publishing/options.js +56 -0
- package/dist/publishing/options.js.map +1 -0
- package/dist/publishing/pipeline/index.d.ts +20 -0
- package/dist/publishing/pipeline/index.d.ts.map +1 -0
- package/dist/publishing/pipeline/index.js +88 -0
- package/dist/publishing/pipeline/index.js.map +1 -0
- package/dist/publishing/pipeline/steps/accessibility.d.ts +13 -0
- package/dist/publishing/pipeline/steps/accessibility.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/accessibility.js +37 -0
- package/dist/publishing/pipeline/steps/accessibility.js.map +1 -0
- package/dist/publishing/pipeline/steps/approval.d.ts +14 -0
- package/dist/publishing/pipeline/steps/approval.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/approval.js +54 -0
- package/dist/publishing/pipeline/steps/approval.js.map +1 -0
- package/dist/publishing/pipeline/steps/composition.d.ts +14 -0
- package/dist/publishing/pipeline/steps/composition.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/composition.js +63 -0
- package/dist/publishing/pipeline/steps/composition.js.map +1 -0
- package/dist/publishing/pipeline/steps/embargo.d.ts +12 -0
- package/dist/publishing/pipeline/steps/embargo.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/embargo.js +41 -0
- package/dist/publishing/pipeline/steps/embargo.js.map +1 -0
- package/dist/publishing/pipeline/steps/execute.d.ts +52 -0
- package/dist/publishing/pipeline/steps/execute.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/execute.js +161 -0
- package/dist/publishing/pipeline/steps/execute.js.map +1 -0
- package/dist/publishing/pipeline/steps/exist.d.ts +9 -0
- package/dist/publishing/pipeline/steps/exist.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/exist.js +31 -0
- package/dist/publishing/pipeline/steps/exist.js.map +1 -0
- package/dist/publishing/pipeline/steps/required-fields.d.ts +9 -0
- package/dist/publishing/pipeline/steps/required-fields.d.ts.map +1 -0
- package/dist/publishing/pipeline/steps/required-fields.js +63 -0
- package/dist/publishing/pipeline/steps/required-fields.js.map +1 -0
- package/dist/publishing/pipeline/types.d.ts +72 -0
- package/dist/publishing/pipeline/types.d.ts.map +1 -0
- package/dist/publishing/pipeline/types.js +2 -0
- package/dist/publishing/pipeline/types.js.map +1 -0
- package/dist/publishing/plugin.d.ts +4 -0
- package/dist/publishing/plugin.d.ts.map +1 -0
- package/dist/publishing/plugin.js +196 -0
- package/dist/publishing/plugin.js.map +1 -0
- package/dist/publishing/service.d.ts +149 -0
- package/dist/publishing/service.d.ts.map +1 -0
- package/dist/publishing/service.js +474 -0
- package/dist/publishing/service.js.map +1 -0
- package/dist/publishing/tools/actor.d.ts +32 -0
- package/dist/publishing/tools/actor.d.ts.map +1 -0
- package/dist/publishing/tools/actor.js +40 -0
- package/dist/publishing/tools/actor.js.map +1 -0
- package/dist/publishing/tools/descriptors.d.ts +26 -0
- package/dist/publishing/tools/descriptors.d.ts.map +1 -0
- package/dist/publishing/tools/descriptors.js +38 -0
- package/dist/publishing/tools/descriptors.js.map +1 -0
- package/dist/publishing/tools/get-publish-status.d.ts +12 -0
- package/dist/publishing/tools/get-publish-status.d.ts.map +1 -0
- package/dist/publishing/tools/get-publish-status.js +45 -0
- package/dist/publishing/tools/get-publish-status.js.map +1 -0
- package/dist/publishing/tools/index.d.ts +7 -0
- package/dist/publishing/tools/index.d.ts.map +1 -0
- package/dist/publishing/tools/index.js +7 -0
- package/dist/publishing/tools/index.js.map +1 -0
- package/dist/publishing/tools/publish.d.ts +14 -0
- package/dist/publishing/tools/publish.d.ts.map +1 -0
- package/dist/publishing/tools/publish.js +35 -0
- package/dist/publishing/tools/publish.js.map +1 -0
- package/dist/publishing/tools/rollback.d.ts +11 -0
- package/dist/publishing/tools/rollback.d.ts.map +1 -0
- package/dist/publishing/tools/rollback.js +98 -0
- package/dist/publishing/tools/rollback.js.map +1 -0
- package/dist/publishing/tools/schedule-publish.d.ts +20 -0
- package/dist/publishing/tools/schedule-publish.d.ts.map +1 -0
- package/dist/publishing/tools/schedule-publish.js +49 -0
- package/dist/publishing/tools/schedule-publish.js.map +1 -0
- package/dist/publishing/tools/unpublish.d.ts +14 -0
- package/dist/publishing/tools/unpublish.d.ts.map +1 -0
- package/dist/publishing/tools/unpublish.js +29 -0
- package/dist/publishing/tools/unpublish.js.map +1 -0
- package/dist/references/UsedOnPanel.d.ts +3 -0
- package/dist/references/UsedOnPanel.d.ts.map +1 -0
- package/dist/references/UsedOnPanel.js +47 -0
- package/dist/references/UsedOnPanel.js.map +1 -0
- package/dist/references/find.d.ts +46 -0
- package/dist/references/find.d.ts.map +1 -0
- package/dist/references/find.js +142 -0
- package/dist/references/find.js.map +1 -0
- package/dist/references/guards.d.ts +32 -0
- package/dist/references/guards.d.ts.map +1 -0
- package/dist/references/guards.js +76 -0
- package/dist/references/guards.js.map +1 -0
- package/dist/references/index.d.ts +11 -0
- package/dist/references/index.d.ts.map +1 -0
- package/dist/references/index.js +6 -0
- package/dist/references/index.js.map +1 -0
- package/dist/references/plugin.d.ts +51 -0
- package/dist/references/plugin.d.ts.map +1 -0
- package/dist/references/plugin.js +111 -0
- package/dist/references/plugin.js.map +1 -0
- package/dist/references/tools.d.ts +54 -0
- package/dist/references/tools.d.ts.map +1 -0
- package/dist/references/tools.js +124 -0
- package/dist/references/tools.js.map +1 -0
- package/dist/references/walk.d.ts +43 -0
- package/dist/references/walk.d.ts.map +1 -0
- package/dist/references/walk.js +214 -0
- package/dist/references/walk.js.map +1 -0
- package/dist/testing/anonymousAccess.d.ts +111 -0
- package/dist/testing/anonymousAccess.d.ts.map +1 -0
- package/dist/testing/anonymousAccess.js +185 -0
- package/dist/testing/anonymousAccess.js.map +1 -0
- package/dist/testing/describeAnonymousAccess.d.ts +26 -0
- package/dist/testing/describeAnonymousAccess.d.ts.map +1 -0
- package/dist/testing/describeAnonymousAccess.js +76 -0
- package/dist/testing/describeAnonymousAccess.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +9 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/utils/content-hash.d.ts +31 -0
- package/dist/utils/content-hash.d.ts.map +1 -0
- package/dist/utils/content-hash.js +94 -0
- package/dist/utils/content-hash.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/relationships.d.ts +17 -0
- package/dist/utils/relationships.d.ts.map +1 -0
- package/dist/utils/relationships.js +26 -0
- package/dist/utils/relationships.js.map +1 -0
- package/dist/utils/sha256.d.ts +10 -0
- package/dist/utils/sha256.d.ts.map +1 -0
- package/dist/utils/sha256.js +16 -0
- package/dist/utils/sha256.js.map +1 -0
- package/dist/utils/zod-issues.d.ts +19 -0
- package/dist/utils/zod-issues.d.ts.map +1 -0
- package/dist/utils/zod-issues.js +22 -0
- package/dist/utils/zod-issues.js.map +1 -0
- package/package.json +180 -3
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export { unwrapRelationshipId } from '../../utils/relationships.js';
|
|
2
|
+
const COLLECTION_TO_KIND = {
|
|
3
|
+
pages: 'page',
|
|
4
|
+
posts: 'post',
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Maps a collection slug to the human-friendly noun the templates render.
|
|
8
|
+
* Defaults to "item" so unknown collections still produce sensible copy
|
|
9
|
+
* ("the item Homepage" reads weirder than "the page Homepage" but it's
|
|
10
|
+
* better than dropping the noun entirely).
|
|
11
|
+
*/
|
|
12
|
+
export function targetKindFromCollection(slug) {
|
|
13
|
+
return COLLECTION_TO_KIND[slug] ?? 'item';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Defensive normalizer for the `notifiedApprovers` json field. Older
|
|
17
|
+
* snapshots stored an array of strings; the post-C7 fixup wraps each
|
|
18
|
+
* as `{ id, at, channel }`. We accept either shape.
|
|
19
|
+
*/
|
|
20
|
+
export function readApproverIds(value) {
|
|
21
|
+
if (!Array.isArray(value))
|
|
22
|
+
return [];
|
|
23
|
+
const ids = [];
|
|
24
|
+
for (const entry of value) {
|
|
25
|
+
if (typeof entry === 'string') {
|
|
26
|
+
ids.push(entry);
|
|
27
|
+
}
|
|
28
|
+
else if (entry && typeof entry === 'object' && 'id' in entry) {
|
|
29
|
+
ids.push(String(entry.id));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return ids;
|
|
33
|
+
}
|
|
34
|
+
export function formatHumanDate(iso) {
|
|
35
|
+
const date = new Date(iso);
|
|
36
|
+
if (Number.isNaN(date.getTime()))
|
|
37
|
+
return iso;
|
|
38
|
+
return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' });
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=_shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/email/functions/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAInE,MAAM,kBAAkB,GAAuC;IAC7D,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;CACd,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;aAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,KAAyB,CAAC,EAAE,CAAC,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,GAAG,CAAA;IAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAC9F,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { notifyApprovalRequestJob } from './notify-approval-request.js';
|
|
2
|
+
export type { NotifyApprovalRequestDeps, NotifyApprovalRequestJobDeps, } from './notify-approval-request.js';
|
|
3
|
+
export { notifyApprovalDecisionJob } from './notify-approval-decision.js';
|
|
4
|
+
export type { NotifyApprovalDecisionDeps, NotifyApprovalDecisionJobDeps, } from './notify-approval-decision.js';
|
|
5
|
+
export { notifyApprovalExpiredJob } from './notify-approval-expired.js';
|
|
6
|
+
export type { NotifyApprovalExpiredDeps, NotifyApprovalExpiredJobDeps, } from './notify-approval-expired.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/email/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,YAAY,EACV,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,YAAY,EACV,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,YAAY,EACV,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/email/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAKvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAKzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Inngest } from 'inngest';
|
|
2
|
+
import { type Job, type JobContext } from '../../jobs/types.js';
|
|
3
|
+
import { type WorkflowFailureHandler } from '../../jobs/workflow-types.js';
|
|
4
|
+
import type { Payload } from 'payload';
|
|
5
|
+
import type { EmailClient } from '../client.js';
|
|
6
|
+
import type { EmailBrandTokens } from '../tokens.js';
|
|
7
|
+
import type { EmailPluginOptions } from '../options.js';
|
|
8
|
+
export interface NotifyApprovalDecisionDeps {
|
|
9
|
+
inngest: Inngest;
|
|
10
|
+
payload: Payload;
|
|
11
|
+
client: EmailClient;
|
|
12
|
+
tokens: EmailBrandTokens;
|
|
13
|
+
options: EmailPluginOptions;
|
|
14
|
+
/** Override the function id. Default: `notify-approval-decision`. */
|
|
15
|
+
id?: string;
|
|
16
|
+
/** Called once when a run has exhausted its retries. `emailPlugin` passes one. */
|
|
17
|
+
onFailure?: WorkflowFailureHandler;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes to `notification/send-approval-decision` (fired by the C10
|
|
21
|
+
* audit-event-echo when one of `approval.granted`, `approval.declined`,
|
|
22
|
+
* or `approval.changes_requested` is recorded). The decider's audit
|
|
23
|
+
* action travels with the event so we render the right variant without
|
|
24
|
+
* re-checking the approval's status.
|
|
25
|
+
*/
|
|
26
|
+
/** What the job needs at run time: the deps, less the Inngest client and id. */
|
|
27
|
+
export type NotifyApprovalDecisionJobDeps = Omit<NotifyApprovalDecisionDeps, 'inngest' | 'id'>;
|
|
28
|
+
/**
|
|
29
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
30
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
31
|
+
* whose jobs are declared before Payload exists.
|
|
32
|
+
*/
|
|
33
|
+
export declare function notifyApprovalDecisionJob(resolve: (context: JobContext) => NotifyApprovalDecisionJobDeps, id?: string): Job;
|
|
34
|
+
//# sourceMappingURL=notify-approval-decision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-decision.d.ts","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAMpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,kBAAkB,CAAA;IAC3B,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,SAAS,CAAC,EAAE,sBAAsB,CAAA;CACnC;AAcD;;;;;;GAMG;AACH,gFAAgF;AAChF,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;AAE9F;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,6BAA6B,EAC/D,EAAE,SAA6B,GAC9B,GAAG,CAuEL"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { defineJob } from '../../jobs/define.js';
|
|
2
|
+
import { ApprovalDecisionEmail, } from '../templates/index.js';
|
|
3
|
+
import { DEFAULT_APPROVALS_SLUG } from '../../approvals/collection.js';
|
|
4
|
+
import { unwrapRelationshipId } from './_shared.js';
|
|
5
|
+
const DECISION_BY_ACTION = {
|
|
6
|
+
'approval.granted': 'granted',
|
|
7
|
+
'approval.declined': 'declined',
|
|
8
|
+
'approval.changes_requested': 'changes-requested',
|
|
9
|
+
};
|
|
10
|
+
const SUBJECT_BY_DECISION = {
|
|
11
|
+
granted: (title) => `Approved: ${title}`,
|
|
12
|
+
declined: (title) => `Not approved: ${title}`,
|
|
13
|
+
'changes-requested': (title) => `Changes requested on ${title}`,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
17
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
18
|
+
* whose jobs are declared before Payload exists.
|
|
19
|
+
*/
|
|
20
|
+
export function notifyApprovalDecisionJob(resolve, id = 'notify-approval-decision') {
|
|
21
|
+
return defineJob({ id, retries: 3, on: { event: 'notification/send-approval-decision' } }, async (context) => {
|
|
22
|
+
const { event, step, logger } = context;
|
|
23
|
+
const deps = resolve(context);
|
|
24
|
+
const data = (event.data ?? {});
|
|
25
|
+
const approvalId = data.approvalId;
|
|
26
|
+
const decisionAction = data.decision ?? '';
|
|
27
|
+
if (!approvalId)
|
|
28
|
+
return { skipped: true, reason: 'no-approvalId' };
|
|
29
|
+
const decision = DECISION_BY_ACTION[decisionAction];
|
|
30
|
+
if (!decision) {
|
|
31
|
+
logger.warn('Unknown decision action; skipping', { approvalId, decisionAction });
|
|
32
|
+
return { skipped: true, reason: 'unknown-decision' };
|
|
33
|
+
}
|
|
34
|
+
const collectionSlug = deps.options.approvalsCollectionSlug ?? DEFAULT_APPROVALS_SLUG;
|
|
35
|
+
const approval = await step.run('load-approval', async () => deps.payload.findByID({ collection: collectionSlug, id: approvalId, depth: 1 }));
|
|
36
|
+
if (!approval)
|
|
37
|
+
return { skipped: true, reason: 'approval-not-found' };
|
|
38
|
+
const requesterId = unwrapRelationshipId(approval['requestedBy']);
|
|
39
|
+
if (!requesterId) {
|
|
40
|
+
logger.warn('Approval has no requester; cannot notify', { approvalId });
|
|
41
|
+
return { skipped: true, reason: 'no-requester' };
|
|
42
|
+
}
|
|
43
|
+
const targetTitle = String(approval['targetTitle'] ?? '(untitled)');
|
|
44
|
+
const decisionNotes = typeof approval['decisionNotes'] === 'string' ? approval['decisionNotes'] : undefined;
|
|
45
|
+
const previewUrl = typeof approval['previewUrl'] === 'string' ? approval['previewUrl'] : '';
|
|
46
|
+
const decidedById = unwrapRelationshipId(approval['decidedBy']);
|
|
47
|
+
const decidedByRecord = decidedById ? await deps.options.resolveApprover(decidedById) : null;
|
|
48
|
+
const decidedByName = decidedByRecord?.name ?? decidedByRecord?.email ?? 'a reviewer';
|
|
49
|
+
await step.run(`send-to-${requesterId}`, async () => {
|
|
50
|
+
const requester = await deps.options.resolveRequester(requesterId);
|
|
51
|
+
if (!requester) {
|
|
52
|
+
logger.warn('No email for requester; skipping', { requesterId, approvalId });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
await deps.client.send({
|
|
56
|
+
to: requester.email,
|
|
57
|
+
subject: SUBJECT_BY_DECISION[decision](targetTitle),
|
|
58
|
+
template: ApprovalDecisionEmail({
|
|
59
|
+
requesterName: requester.name ?? requester.email,
|
|
60
|
+
decidedBy: decidedByName,
|
|
61
|
+
targetTitle,
|
|
62
|
+
decision,
|
|
63
|
+
...(decisionNotes ? { decisionNotes } : {}),
|
|
64
|
+
previewUrl,
|
|
65
|
+
tokens: deps.tokens,
|
|
66
|
+
}),
|
|
67
|
+
tags: [
|
|
68
|
+
{ name: 'type', value: 'approval-decision' },
|
|
69
|
+
{ name: 'approval-id', value: approvalId },
|
|
70
|
+
{ name: 'decision', value: decision },
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
return { approvalId, decision, sent: 1 };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=notify-approval-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-decision.js","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Inngest } from 'inngest';
|
|
2
|
+
import { type Job, type JobContext } from '../../jobs/types.js';
|
|
3
|
+
import { type WorkflowFailureHandler } from '../../jobs/workflow-types.js';
|
|
4
|
+
import type { Payload } from 'payload';
|
|
5
|
+
import type { EmailClient } from '../client.js';
|
|
6
|
+
import type { EmailBrandTokens } from '../tokens.js';
|
|
7
|
+
import type { EmailPluginOptions } from '../options.js';
|
|
8
|
+
export interface NotifyApprovalExpiredDeps {
|
|
9
|
+
inngest: Inngest;
|
|
10
|
+
payload: Payload;
|
|
11
|
+
client: EmailClient;
|
|
12
|
+
tokens: EmailBrandTokens;
|
|
13
|
+
options: EmailPluginOptions;
|
|
14
|
+
/** Override the function id. Default: `notify-approval-expired`. */
|
|
15
|
+
id?: string;
|
|
16
|
+
/** Called once when a run has exhausted its retries. `emailPlugin` passes one. */
|
|
17
|
+
onFailure?: WorkflowFailureHandler;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes to `approval/expired` (fired by the C10 expire-stale-approvals
|
|
21
|
+
* cron). Notifies the original requester so they can decide whether to
|
|
22
|
+
* re-request approval or drop the change.
|
|
23
|
+
*/
|
|
24
|
+
/** What the job needs at run time: the deps, less the Inngest client and id. */
|
|
25
|
+
export type NotifyApprovalExpiredJobDeps = Omit<NotifyApprovalExpiredDeps, 'inngest' | 'id'>;
|
|
26
|
+
/**
|
|
27
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
28
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
29
|
+
* whose jobs are declared before Payload exists.
|
|
30
|
+
*/
|
|
31
|
+
export declare function notifyApprovalExpiredJob(resolve: (context: JobContext) => NotifyApprovalExpiredJobDeps, id?: string): Job;
|
|
32
|
+
//# sourceMappingURL=notify-approval-expired.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-expired.d.ts","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-expired.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,kBAAkB,CAAA;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,SAAS,CAAC,EAAE,sBAAsB,CAAA;CACnC;AAED;;;;GAIG;AACH,gFAAgF;AAChF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,yBAAyB,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;AAE5F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,4BAA4B,EAC9D,EAAE,SAA4B,GAC7B,GAAG,CAwDL"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { defineJob } from '../../jobs/define.js';
|
|
2
|
+
import { ApprovalExpiredEmail } from '../templates/index.js';
|
|
3
|
+
import { DEFAULT_APPROVALS_SLUG } from '../../approvals/collection.js';
|
|
4
|
+
import { formatHumanDate, unwrapRelationshipId } from './_shared.js';
|
|
5
|
+
/**
|
|
6
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
7
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
8
|
+
* whose jobs are declared before Payload exists.
|
|
9
|
+
*/
|
|
10
|
+
export function notifyApprovalExpiredJob(resolve, id = 'notify-approval-expired') {
|
|
11
|
+
return defineJob({ id, retries: 3, on: { event: 'approval/expired' } }, async (context) => {
|
|
12
|
+
const { event, step, logger } = context;
|
|
13
|
+
const deps = resolve(context);
|
|
14
|
+
const data = (event.data ?? {});
|
|
15
|
+
const approvalId = data.approvalId;
|
|
16
|
+
if (!approvalId)
|
|
17
|
+
return { skipped: true, reason: 'no-approvalId' };
|
|
18
|
+
const collectionSlug = deps.options.approvalsCollectionSlug ?? DEFAULT_APPROVALS_SLUG;
|
|
19
|
+
const approval = await step.run('load-approval', async () => deps.payload.findByID({ collection: collectionSlug, id: approvalId, depth: 1 }));
|
|
20
|
+
if (!approval)
|
|
21
|
+
return { skipped: true, reason: 'approval-not-found' };
|
|
22
|
+
const requesterId = data.requesterId ?? unwrapRelationshipId(approval['requestedBy']);
|
|
23
|
+
if (!requesterId) {
|
|
24
|
+
logger.warn('Expired approval has no requester; cannot notify', { approvalId });
|
|
25
|
+
return { skipped: true, reason: 'no-requester' };
|
|
26
|
+
}
|
|
27
|
+
const targetTitle = String(approval['targetTitle'] ?? '(untitled)');
|
|
28
|
+
const requestedAtIso = String(approval['requestedAt'] ?? '');
|
|
29
|
+
const requestedAt = requestedAtIso ? formatHumanDate(requestedAtIso) : 'an earlier date';
|
|
30
|
+
await step.run(`send-to-${requesterId}`, async () => {
|
|
31
|
+
const requester = await deps.options.resolveRequester(requesterId);
|
|
32
|
+
if (!requester) {
|
|
33
|
+
logger.warn('No email for requester; skipping', { requesterId, approvalId });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await deps.client.send({
|
|
37
|
+
to: requester.email,
|
|
38
|
+
subject: `Approval expired: ${targetTitle}`,
|
|
39
|
+
template: ApprovalExpiredEmail({
|
|
40
|
+
requesterName: requester.name ?? requester.email,
|
|
41
|
+
targetTitle,
|
|
42
|
+
requestedAt,
|
|
43
|
+
tokens: deps.tokens,
|
|
44
|
+
}),
|
|
45
|
+
tags: [
|
|
46
|
+
{ name: 'type', value: 'approval-expired' },
|
|
47
|
+
{ name: 'approval-id', value: approvalId },
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
return { approvalId, sent: 1 };
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=notify-approval-expired.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-expired.js","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-expired.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Inngest } from 'inngest';
|
|
2
|
+
import { type Job, type JobContext } from '../../jobs/types.js';
|
|
3
|
+
import { type WorkflowFailureHandler } from '../../jobs/workflow-types.js';
|
|
4
|
+
import type { Payload } from 'payload';
|
|
5
|
+
import type { EmailClient } from '../client.js';
|
|
6
|
+
import type { EmailBrandTokens } from '../tokens.js';
|
|
7
|
+
import type { EmailPluginOptions } from '../options.js';
|
|
8
|
+
export interface NotifyApprovalRequestDeps {
|
|
9
|
+
inngest: Inngest;
|
|
10
|
+
payload: Payload;
|
|
11
|
+
client: EmailClient;
|
|
12
|
+
tokens: EmailBrandTokens;
|
|
13
|
+
options: EmailPluginOptions;
|
|
14
|
+
/** Override the function id. Default: `notify-approval-request`. */
|
|
15
|
+
id?: string;
|
|
16
|
+
/** Called once when a run has exhausted its retries. `emailPlugin` passes one. */
|
|
17
|
+
onFailure?: WorkflowFailureHandler;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Subscribes to `notification/send-approval-request` (fired by the C10
|
|
21
|
+
* audit-event-echo when `approval.requested` is recorded). Loads the
|
|
22
|
+
* approval, looks up the requester and each approver-id stored in
|
|
23
|
+
* `notifiedApprovers`, and sends one email per approver. Each email is
|
|
24
|
+
* its own `step.run` so a bouncing recipient retries without re-sending
|
|
25
|
+
* to the others.
|
|
26
|
+
*/
|
|
27
|
+
/** What the job needs at run time: the deps, less the Inngest client and id. */
|
|
28
|
+
export type NotifyApprovalRequestJobDeps = Omit<NotifyApprovalRequestDeps, 'inngest' | 'id'>;
|
|
29
|
+
/**
|
|
30
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
31
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
32
|
+
* whose jobs are declared before Payload exists.
|
|
33
|
+
*/
|
|
34
|
+
export declare function notifyApprovalRequestJob(resolve: (context: JobContext) => NotifyApprovalRequestJobDeps, id?: string): Job;
|
|
35
|
+
//# sourceMappingURL=notify-approval-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-request.d.ts","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAQvD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,gBAAgB,CAAA;IACxB,OAAO,EAAE,kBAAkB,CAAA;IAC3B,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,SAAS,CAAC,EAAE,sBAAsB,CAAA;CACnC;AAED;;;;;;;GAOG;AACH,gFAAgF;AAChF,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAAC,yBAAyB,EAAE,SAAS,GAAG,IAAI,CAAC,CAAA;AAE5F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,4BAA4B,EAC9D,EAAE,SAA4B,GAC7B,GAAG,CAmGL"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { defineJob } from '../../jobs/define.js';
|
|
2
|
+
import { ApprovalRequestEmail } from '../templates/index.js';
|
|
3
|
+
import { DEFAULT_APPROVALS_SLUG } from '../../approvals/collection.js';
|
|
4
|
+
import { formatHumanDate, readApproverIds, targetKindFromCollection, unwrapRelationshipId, } from './_shared.js';
|
|
5
|
+
/**
|
|
6
|
+
* The same notification as a runner-neutral job. `resolve` supplies its
|
|
7
|
+
* dependencies when it runs: the plugin passes the ones it was built with, and `emailJobs` reads them from `context.payload`, for a runner
|
|
8
|
+
* whose jobs are declared before Payload exists.
|
|
9
|
+
*/
|
|
10
|
+
export function notifyApprovalRequestJob(resolve, id = 'notify-approval-request') {
|
|
11
|
+
return defineJob({ id, retries: 3, on: { event: 'notification/send-approval-request' } }, async (context) => {
|
|
12
|
+
const { event, step, logger } = context;
|
|
13
|
+
const deps = resolve(context);
|
|
14
|
+
const data = (event.data ?? {});
|
|
15
|
+
const approvalId = data.approvalId;
|
|
16
|
+
if (!approvalId) {
|
|
17
|
+
logger.warn('Skipping notify-approval-request without approvalId');
|
|
18
|
+
return { skipped: true };
|
|
19
|
+
}
|
|
20
|
+
const collectionSlug = deps.options.approvalsCollectionSlug ?? DEFAULT_APPROVALS_SLUG;
|
|
21
|
+
const approval = await step.run('load-approval', async () => deps.payload.findByID({ collection: collectionSlug, id: approvalId, depth: 1 }));
|
|
22
|
+
if (!approval) {
|
|
23
|
+
logger.warn('Approval not found for notify-approval-request', { approvalId });
|
|
24
|
+
return { skipped: true, reason: 'approval-not-found' };
|
|
25
|
+
}
|
|
26
|
+
const approverIds = readApproverIds(approval['notifiedApprovers']);
|
|
27
|
+
if (approverIds.length === 0) {
|
|
28
|
+
logger.warn('No approvers to notify on approval', { approvalId });
|
|
29
|
+
return { sent: 0, reason: 'no-approvers' };
|
|
30
|
+
}
|
|
31
|
+
const requesterId = unwrapRelationshipId(approval['requestedBy']);
|
|
32
|
+
const requester = requesterId
|
|
33
|
+
? await step.run('load-requester', () => deps.options.resolveRequester(requesterId))
|
|
34
|
+
: null;
|
|
35
|
+
const requesterName = requester?.name ?? requester?.email ?? 'A teammate';
|
|
36
|
+
const targetCollection = String(approval['targetCollection'] ?? '');
|
|
37
|
+
const targetId = String(approval['targetId'] ?? '');
|
|
38
|
+
const targetTitle = String(approval['targetTitle'] ?? '(untitled)');
|
|
39
|
+
const targetKind = targetKindFromCollection(targetCollection);
|
|
40
|
+
const changesSummary = String(approval['changesSummary'] ?? '');
|
|
41
|
+
const expiresAt = formatHumanDate(String(approval['expiresAt'] ?? ''));
|
|
42
|
+
const requestReason = typeof approval['requestReason'] === 'string' ? approval['requestReason'] : undefined;
|
|
43
|
+
let previewUrl = typeof approval['previewUrl'] === 'string' ? approval['previewUrl'] : '';
|
|
44
|
+
if (!previewUrl && deps.options.buildPreviewUrl) {
|
|
45
|
+
previewUrl = await step.run('build-preview-url', async () => deps.options.buildPreviewUrl({ targetCollection, targetId, approvalId }));
|
|
46
|
+
}
|
|
47
|
+
let sent = 0;
|
|
48
|
+
for (const approverId of approverIds) {
|
|
49
|
+
await step.run(`send-to-${approverId}`, async () => {
|
|
50
|
+
const approver = await deps.options.resolveApprover(approverId);
|
|
51
|
+
if (!approver) {
|
|
52
|
+
logger.warn('No email for approver; skipping', { approverId });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const [approveUrl, changesUrl, discussUrl] = await Promise.all([
|
|
56
|
+
deps.options.buildActionUrl({ approvalId, action: 'approve', approverId }),
|
|
57
|
+
deps.options.buildActionUrl({ approvalId, action: 'changes', approverId }),
|
|
58
|
+
deps.options.buildActionUrl({ approvalId, action: 'discuss', approverId }),
|
|
59
|
+
]);
|
|
60
|
+
await deps.client.send({
|
|
61
|
+
to: approver.email,
|
|
62
|
+
subject: `Approval needed: ${targetTitle}`,
|
|
63
|
+
template: ApprovalRequestEmail({
|
|
64
|
+
approverName: approver.name ?? approver.email,
|
|
65
|
+
requesterName,
|
|
66
|
+
targetTitle,
|
|
67
|
+
targetKind,
|
|
68
|
+
changesSummary,
|
|
69
|
+
...(requestReason ? { requestReason } : {}),
|
|
70
|
+
previewUrl,
|
|
71
|
+
approveUrl,
|
|
72
|
+
changesUrl,
|
|
73
|
+
discussUrl,
|
|
74
|
+
expiresAt,
|
|
75
|
+
tokens: deps.tokens,
|
|
76
|
+
}),
|
|
77
|
+
tags: [
|
|
78
|
+
{ name: 'type', value: 'approval-request' },
|
|
79
|
+
{ name: 'approval-id', value: approvalId },
|
|
80
|
+
],
|
|
81
|
+
});
|
|
82
|
+
sent += 1;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
logger.info('Approval-request notifications sent', { approvalId, sent });
|
|
86
|
+
return { approvalId, sent };
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=notify-approval-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify-approval-request.js","sourceRoot":"","sources":["../../../src/email/functions/notify-approval-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@forumone/throughline/email`: the email plugin and its Resend client, brand
|
|
3
|
+
* tokens, the three approval notifications as jobs, and their React Email
|
|
4
|
+
* templates. Was `@forumone/throughline-email` (and its `/templates`) in 0.x.
|
|
5
|
+
*/
|
|
6
|
+
export { emailJobs, emailPlugin, getEmailClient, getEmailFunctions } from './plugin.js';
|
|
7
|
+
export { createEmailClient } from './client.js';
|
|
8
|
+
export type { EmailClient, EmailClientOptions, SendEmailParams, SendEmailResult, TemplateRenderer, } from './client.js';
|
|
9
|
+
export { defaultTokens, mergeTokens } from './tokens.js';
|
|
10
|
+
export type { EmailBrandTokens } from './tokens.js';
|
|
11
|
+
export { emailEnv } from './options.js';
|
|
12
|
+
export type { ApprovalActionKind, BuildActionUrlArgs, EmailPluginOptions, ResolvedEmailEnv, ResolvedRecipient, } from './options.js';
|
|
13
|
+
export { notifyApprovalRequestJob, notifyApprovalDecisionJob, notifyApprovalExpiredJob, } from './functions/index.js';
|
|
14
|
+
export type { NotifyApprovalRequestJobDeps, NotifyApprovalDecisionJobDeps, NotifyApprovalExpiredJobDeps, } from './functions/index.js';
|
|
15
|
+
export { EmailLayout, ApprovalRequestEmail, ApprovalDecisionEmail, ApprovalExpiredEmail, } from './templates/index.js';
|
|
16
|
+
export type { ApprovalRequestEmailProps, ApprovalDecisionEmailProps, ApprovalDecisionKind, ApprovalExpiredEmailProps, ApprovalTargetKind, EmailLayoutProps, } from './templates/index.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@forumone/throughline/email`: the email plugin and its Resend client, brand
|
|
3
|
+
* tokens, the three approval notifications as jobs, and their React Email
|
|
4
|
+
* templates. Was `@forumone/throughline-email` (and its `/templates`) in 0.x.
|
|
5
|
+
*/
|
|
6
|
+
export { emailJobs, emailPlugin, getEmailClient, getEmailFunctions } from './plugin.js';
|
|
7
|
+
export { createEmailClient } from './client.js';
|
|
8
|
+
export { defaultTokens, mergeTokens } from './tokens.js';
|
|
9
|
+
export { emailEnv } from './options.js';
|
|
10
|
+
export { notifyApprovalRequestJob, notifyApprovalDecisionJob, notifyApprovalExpiredJob, } from './functions/index.js';
|
|
11
|
+
export { EmailLayout, ApprovalRequestEmail, ApprovalDecisionEmail, ApprovalExpiredEmail, } from './templates/index.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAS/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AASvC,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { Inngest } from 'inngest';
|
|
2
|
+
import type { WorkflowFailureHandler } from '../jobs/workflow-types.js';
|
|
3
|
+
import type { BaseCorePluginOptions } from '../plugin-contract/index.js';
|
|
4
|
+
import type { EnvRequirement } from '../plugin-contract/env.js';
|
|
5
|
+
import type { EmailBrandTokens } from './tokens.js';
|
|
6
|
+
export type ApprovalActionKind = 'approve' | 'decline' | 'changes' | 'discuss';
|
|
7
|
+
export interface ResolvedRecipient {
|
|
8
|
+
email: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface BuildActionUrlArgs {
|
|
12
|
+
approvalId: string;
|
|
13
|
+
action: ApprovalActionKind;
|
|
14
|
+
approverId: string;
|
|
15
|
+
}
|
|
16
|
+
export interface EmailPluginOptions extends BaseCorePluginOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Inngest client used to register the three notification functions. Omit it
|
|
19
|
+
* on a site that runs jobs on Payload Jobs: pass `emailJobs(options)` to its
|
|
20
|
+
* jobs adapter instead.
|
|
21
|
+
*/
|
|
22
|
+
inngest?: Inngest;
|
|
23
|
+
/**
|
|
24
|
+
* Called once when a notification run has exhausted its retries. Default:
|
|
25
|
+
* `createTerminalFailureHandler({ payload })` from the workflows package,
|
|
26
|
+
* which records a `job-failures` row (with `jobFailuresPlugin`), logs, and
|
|
27
|
+
* reports. These three ran with none, so a failed approval email was silent.
|
|
28
|
+
*/
|
|
29
|
+
onTerminalFailure?: WorkflowFailureHandler;
|
|
30
|
+
/** Resend API key. Falls back to `process.env.RESEND_API_KEY`. */
|
|
31
|
+
apiKey?: string;
|
|
32
|
+
/** From address (e.g. `notifications@example.com`). Falls back to `EMAIL_FROM_ADDRESS`. */
|
|
33
|
+
fromAddress?: string;
|
|
34
|
+
/**
|
|
35
|
+
* From display name. Falls back to `EMAIL_FROM_NAME` then `tokens.brandName`.
|
|
36
|
+
* Centralizing on `brandName` is intentional — keep "this came from <site>"
|
|
37
|
+
* consistent across header, From, and footer.
|
|
38
|
+
*/
|
|
39
|
+
fromName?: string;
|
|
40
|
+
/** Reply-to. Falls back to `EMAIL_REPLY_TO`. */
|
|
41
|
+
replyTo?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Brand-token overrides. Anything omitted falls back to the neutral defaults
|
|
44
|
+
* (black on white, system sans, "Your Site"). Pass an empty object to keep
|
|
45
|
+
* defaults entirely.
|
|
46
|
+
*/
|
|
47
|
+
tokens?: Partial<EmailBrandTokens>;
|
|
48
|
+
/** Approvals collection slug. Default: 'approvals'. */
|
|
49
|
+
approvalsCollectionSlug?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Resolves an approver's email + display name from a user ID. The plugin
|
|
52
|
+
* stays decoupled from Payload's user model — different deployments may
|
|
53
|
+
* have users in different collections with different field names.
|
|
54
|
+
*/
|
|
55
|
+
resolveApprover: (userId: string) => Promise<ResolvedRecipient | null>;
|
|
56
|
+
/** Resolves a requester's email + display name from a user ID. */
|
|
57
|
+
resolveRequester: (userId: string) => Promise<ResolvedRecipient | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Builds the URL for an approval action button (Approve, Request changes,
|
|
60
|
+
* Discuss, Decline). Default implementation lands in a follow-up; clients
|
|
61
|
+
* normally pass their own builder that wraps approvals' HMAC-signed token.
|
|
62
|
+
*/
|
|
63
|
+
buildActionUrl: (args: BuildActionUrlArgs) => Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Builds a deployment-relative preview URL for the given target document.
|
|
66
|
+
* Default implementation builds `${NEXT_PUBLIC_SERVER_URL}/preview?...` if
|
|
67
|
+
* the env var is set; clients with bespoke previews override.
|
|
68
|
+
*/
|
|
69
|
+
buildPreviewUrl?: (args: {
|
|
70
|
+
targetCollection: string;
|
|
71
|
+
targetId: string;
|
|
72
|
+
approvalId: string;
|
|
73
|
+
}) => Promise<string>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* What `emailPlugin` reads from the environment when the matching option is
|
|
77
|
+
* omitted, and refuses to start without. Hand it to `assertEnvironment` from
|
|
78
|
+
* `@forumone/throughline` so a site reports it with everything else.
|
|
79
|
+
*
|
|
80
|
+
* Leave it out if you pass `apiKey` and `fromAddress` yourself. The optional
|
|
81
|
+
* `EMAIL_FROM_NAME` and `EMAIL_REPLY_TO` are not requirements.
|
|
82
|
+
*/
|
|
83
|
+
export declare const emailEnv: readonly EnvRequirement[];
|
|
84
|
+
export interface ResolvedEmailEnv {
|
|
85
|
+
apiKey: string;
|
|
86
|
+
fromAddress: string;
|
|
87
|
+
fromName: string;
|
|
88
|
+
replyTo?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Validates options at plugin init. Resolves the Resend secrets via env
|
|
92
|
+
* fallback so missing configuration surfaces immediately rather than on the
|
|
93
|
+
* first Inngest invocation.
|
|
94
|
+
*/
|
|
95
|
+
export declare function validateOptions(options: EmailPluginOptions): {
|
|
96
|
+
options: EmailPluginOptions;
|
|
97
|
+
env: ResolvedEmailEnv;
|
|
98
|
+
brandName: string;
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/email/options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAA;IAC1C,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClC,uDAAuD;IACvD,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC;;;;OAIG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACtE,kEAAkE;IAClE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACvE;;;;OAIG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7D;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,gBAAgB,EAAE,MAAM,CAAA;QACxB,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACtB;AAYD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,cAAc,EAAoC,CAAA;AAElF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG;IAC5D,OAAO,EAAE,kBAAkB,CAAA;IAC3B,GAAG,EAAE,gBAAgB,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB,CAuCA"}
|