@forumone/throughline 1.0.0-next.1 → 1.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +70 -324
  3. package/bin/throughline.mjs +6 -0
  4. package/dist/approvals/tokens.d.ts +2 -2
  5. package/dist/approvals/tokens.d.ts.map +1 -1
  6. package/dist/approvals/tokens.js +2 -2
  7. package/dist/audit/query/options.d.ts +6 -4
  8. package/dist/audit/query/options.d.ts.map +1 -1
  9. package/dist/audit/query/options.js.map +1 -1
  10. package/dist/audit/query/plugin.d.ts.map +1 -1
  11. package/dist/audit/query/plugin.js +5 -1
  12. package/dist/audit/query/plugin.js.map +1 -1
  13. package/dist/audit/query/tools/get-change-history.d.ts +3 -1
  14. package/dist/audit/query/tools/get-change-history.d.ts.map +1 -1
  15. package/dist/audit/query/tools/get-change-history.js +2 -2
  16. package/dist/audit/query/tools/get-change-history.js.map +1 -1
  17. package/dist/audit/query/tools/get-recent-failures.d.ts +3 -1
  18. package/dist/audit/query/tools/get-recent-failures.d.ts.map +1 -1
  19. package/dist/audit/query/tools/get-recent-failures.js +2 -2
  20. package/dist/audit/query/tools/get-recent-failures.js.map +1 -1
  21. package/dist/audit/query/tools/query-audit.d.ts +5 -3
  22. package/dist/audit/query/tools/query-audit.d.ts.map +1 -1
  23. package/dist/audit/query/tools/query-audit.js +2 -2
  24. package/dist/audit/query/tools/query-audit.js.map +1 -1
  25. package/dist/audit/query/tools/what-changed-in-range.d.ts +3 -1
  26. package/dist/audit/query/tools/what-changed-in-range.d.ts.map +1 -1
  27. package/dist/audit/query/tools/what-changed-in-range.js +2 -2
  28. package/dist/audit/query/tools/what-changed-in-range.js.map +1 -1
  29. package/dist/audit/query/tools/who-changed-what.d.ts +3 -1
  30. package/dist/audit/query/tools/who-changed-what.d.ts.map +1 -1
  31. package/dist/audit/query/tools/who-changed-what.js +2 -2
  32. package/dist/audit/query/tools/who-changed-what.js.map +1 -1
  33. package/dist/email/client.d.ts.map +1 -1
  34. package/dist/email/client.js +3 -2
  35. package/dist/email/client.js.map +1 -1
  36. package/dist/email/functions/_shared.d.ts +6 -0
  37. package/dist/email/functions/_shared.d.ts.map +1 -1
  38. package/dist/email/functions/_shared.js +9 -0
  39. package/dist/email/functions/_shared.js.map +1 -1
  40. package/dist/email/functions/notify-approval-decision.d.ts.map +1 -1
  41. package/dist/email/functions/notify-approval-decision.js +2 -1
  42. package/dist/email/functions/notify-approval-decision.js.map +1 -1
  43. package/dist/email/functions/notify-approval-expired.d.ts.map +1 -1
  44. package/dist/email/functions/notify-approval-expired.js +2 -1
  45. package/dist/email/functions/notify-approval-expired.js.map +1 -1
  46. package/dist/email/functions/notify-approval-request.d.ts.map +1 -1
  47. package/dist/email/functions/notify-approval-request.js +2 -1
  48. package/dist/email/functions/notify-approval-request.js.map +1 -1
  49. package/dist/email/index.d.ts +1 -1
  50. package/dist/email/index.d.ts.map +1 -1
  51. package/dist/email/index.js +1 -1
  52. package/dist/email/index.js.map +1 -1
  53. package/dist/email/options.js +1 -1
  54. package/dist/email/options.js.map +1 -1
  55. package/dist/env/index.d.ts +0 -1
  56. package/dist/env/index.d.ts.map +1 -1
  57. package/dist/env/index.js +0 -1
  58. package/dist/env/index.js.map +1 -1
  59. package/dist/index.d.ts +3 -10
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +5 -11
  62. package/dist/index.js.map +1 -1
  63. package/dist/integrations/index.d.ts +1 -1
  64. package/dist/integrations/index.d.ts.map +1 -1
  65. package/dist/integrations/index.js +1 -1
  66. package/dist/integrations/index.js.map +1 -1
  67. package/dist/integrations/integrations/webhook/config-fields.d.ts.map +1 -1
  68. package/dist/integrations/integrations/webhook/config-fields.js +3 -0
  69. package/dist/integrations/integrations/webhook/config-fields.js.map +1 -1
  70. package/dist/integrations/integrations/webhook/functions.d.ts.map +1 -1
  71. package/dist/integrations/integrations/webhook/functions.js +0 -1
  72. package/dist/integrations/integrations/webhook/functions.js.map +1 -1
  73. package/dist/integrations/integrations/webhook/index.d.ts.map +1 -1
  74. package/dist/integrations/integrations/webhook/index.js +0 -1
  75. package/dist/integrations/integrations/webhook/index.js.map +1 -1
  76. package/dist/integrations/jobs/healthcheck.js +1 -1
  77. package/dist/integrations/jobs/healthcheck.js.map +1 -1
  78. package/dist/integrations/plugin.js +1 -1
  79. package/dist/integrations/plugin.js.map +1 -1
  80. package/dist/integrations/registry.d.ts +1 -1
  81. package/dist/integrations/registry.js +1 -1
  82. package/dist/integrations/types.d.ts +11 -9
  83. package/dist/integrations/types.d.ts.map +1 -1
  84. package/dist/jobs/failure-handler.d.ts.map +1 -1
  85. package/dist/jobs/failure-handler.js +5 -2
  86. package/dist/jobs/failure-handler.js.map +1 -1
  87. package/dist/jobs/workflow-types.d.ts +5 -1
  88. package/dist/jobs/workflow-types.d.ts.map +1 -1
  89. package/dist/mcp/audit-server.js +1 -1
  90. package/dist/mcp/audit-server.js.map +1 -1
  91. package/dist/mcp/meta.d.ts +8 -8
  92. package/dist/migrate/cli.d.ts +9 -0
  93. package/dist/migrate/cli.d.ts.map +1 -0
  94. package/dist/migrate/cli.js +105 -0
  95. package/dist/migrate/cli.js.map +1 -0
  96. package/dist/migrate/exports.json +601 -0
  97. package/dist/migrate/rewrite.d.ts +28 -0
  98. package/dist/migrate/rewrite.d.ts.map +1 -0
  99. package/dist/migrate/rewrite.js +188 -0
  100. package/dist/migrate/rewrite.js.map +1 -0
  101. package/dist/observability/collection.d.ts +3 -0
  102. package/dist/observability/collection.d.ts.map +1 -1
  103. package/dist/observability/collection.js +2 -0
  104. package/dist/observability/collection.js.map +1 -1
  105. package/dist/publishing/hooks/block-status-writes.d.ts +32 -0
  106. package/dist/publishing/hooks/block-status-writes.d.ts.map +1 -1
  107. package/dist/publishing/hooks/block-status-writes.js +52 -9
  108. package/dist/publishing/hooks/block-status-writes.js.map +1 -1
  109. package/dist/publishing/index.d.ts +6 -0
  110. package/dist/publishing/index.d.ts.map +1 -1
  111. package/dist/publishing/index.js +6 -0
  112. package/dist/publishing/index.js.map +1 -1
  113. package/dist/publishing/pipeline/steps/accessibility.d.ts +4 -3
  114. package/dist/publishing/pipeline/steps/accessibility.d.ts.map +1 -1
  115. package/dist/publishing/pipeline/steps/accessibility.js +10 -4
  116. package/dist/publishing/pipeline/steps/accessibility.js.map +1 -1
  117. package/dist/publishing/pipeline/steps/approval.js +1 -1
  118. package/dist/publishing/pipeline/steps/approval.js.map +1 -1
  119. package/dist/throughline.d.ts +123 -0
  120. package/dist/throughline.d.ts.map +1 -0
  121. package/dist/throughline.js +190 -0
  122. package/dist/throughline.js.map +1 -0
  123. package/dist/utils/optionalPeer.d.ts +12 -0
  124. package/dist/utils/optionalPeer.d.ts.map +1 -0
  125. package/dist/utils/optionalPeer.js +28 -0
  126. package/dist/utils/optionalPeer.js.map +1 -0
  127. package/package.json +34 -18
@@ -0,0 +1,28 @@
1
+ /** Every 0.x public path, and its 1.0 counterpart: the default target for its names. */
2
+ export declare const COUNTERPARTS: Readonly<Record<string, string>>;
3
+ /** Names 1.0 renamed, each to a name with the same value. */
4
+ export declare const RENAMED: Readonly<Record<string, string>>;
5
+ /** Names 1.0 removed or made internal, and what to do instead. */
6
+ export declare const REMOVED: Readonly<Record<string, string>>;
7
+ export interface Finding {
8
+ /** 1-based. */
9
+ line: number;
10
+ message: string;
11
+ }
12
+ export interface Rewrite {
13
+ text: string;
14
+ changed: boolean;
15
+ /** Rewritten, but worth a look: a mock or dynamic import pointed at one entry. */
16
+ review: Finding[];
17
+ /** Left as they were: what the codemod could not place. */
18
+ unresolved: Finding[];
19
+ }
20
+ /** The 1.0 entry for one name imported from one 0.x path, or why there is none. */
21
+ export declare function placeName(oldSpecifier: string, name: string): {
22
+ specifier: string;
23
+ name: string;
24
+ } | {
25
+ reason: string;
26
+ };
27
+ export declare function rewriteSource(text: string): Rewrite;
28
+ //# sourceMappingURL=rewrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.d.ts","sourceRoot":"","sources":["../../src/migrate/rewrite.ts"],"names":[],"mappings":"AAmBA,wFAAwF;AACxF,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoCzD,CAAA;AAED,6DAA6D;AAC7D,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGpD,CAAA;AAMD,kEAAkE;AAClE,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCpD,CAAA;AAED,MAAM,WAAW,OAAO;IACtB,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,kFAAkF;IAClF,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,2DAA2D;IAC3D,UAAU,EAAE,OAAO,EAAE,CAAA;CACtB;AAOD,mFAAmF;AACnF,wBAAgB,SAAS,CACvB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAa1D;AAsBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoFnD"}
@@ -0,0 +1,188 @@
1
+ import table from './exports.json' with { type: 'json' };
2
+ /*
3
+ Rewrites a source file's imports of the 0.x packages to their 1.0 homes, by
4
+ docs/spec/1.0-exports.md.
5
+
6
+ Each name goes to the 1.0 entry that exports it, from `exports.json`, which is
7
+ read from the packages themselves. Where a name is exported twice in one
8
+ package, the 0.x path's own 1.0 counterpart wins: `ContentField` from
9
+ design-contract is `/contract`'s, and from design-system-payload `/generate`'s.
10
+
11
+ What it cannot do safely it reports rather than guesses: a removed name, a
12
+ namespace or default import, a mock or a dynamic import whose names it cannot
13
+ see, a re-export of everything.
14
+ */
15
+ const THROUGHLINE = '@forumone/throughline';
16
+ const DESIGN_SYSTEM = '@forumone/throughline-design-system';
17
+ /** Every 0.x public path, and its 1.0 counterpart: the default target for its names. */
18
+ export const COUNTERPARTS = {
19
+ '@forumone/throughline-core': THROUGHLINE,
20
+ '@forumone/throughline-core/audit': `${THROUGHLINE}/audit`,
21
+ '@forumone/throughline-core/auth': THROUGHLINE,
22
+ '@forumone/throughline-core/client': `${THROUGHLINE}/client`,
23
+ '@forumone/throughline-core/env': THROUGHLINE,
24
+ '@forumone/throughline-core/events': `${THROUGHLINE}/jobs`,
25
+ '@forumone/throughline-core/fields': `${THROUGHLINE}/fields`,
26
+ '@forumone/throughline-core/media': `${THROUGHLINE}/media`,
27
+ '@forumone/throughline-core/mcp': THROUGHLINE,
28
+ '@forumone/throughline-core/observability': `${THROUGHLINE}/observability`,
29
+ '@forumone/throughline-core/references': `${THROUGHLINE}/media`,
30
+ '@forumone/throughline-core/rsc': `${THROUGHLINE}/rsc`,
31
+ '@forumone/throughline-core/testing': `${THROUGHLINE}/testing`,
32
+ '@forumone/throughline-plugin-contract': THROUGHLINE,
33
+ '@forumone/throughline-audit': `${THROUGHLINE}/audit`,
34
+ '@forumone/throughline-approvals': `${THROUGHLINE}/approvals`,
35
+ '@forumone/throughline-publishing': `${THROUGHLINE}/publishing`,
36
+ '@forumone/throughline-publishing/checks': `${THROUGHLINE}/publishing`,
37
+ '@forumone/throughline-publishing/client': `${THROUGHLINE}/client`,
38
+ '@forumone/throughline-publishing/editorial': `${THROUGHLINE}/editorial`,
39
+ '@forumone/throughline-publishing/rsc': `${THROUGHLINE}/rsc`,
40
+ '@forumone/throughline-components': `${THROUGHLINE}/components`,
41
+ '@forumone/throughline-integrations': `${THROUGHLINE}/integrations`,
42
+ '@forumone/throughline-integrations/client': `${THROUGHLINE}/client`,
43
+ '@forumone/throughline-email': `${THROUGHLINE}/email`,
44
+ '@forumone/throughline-email/templates': `${THROUGHLINE}/email`,
45
+ '@forumone/throughline-workflows': `${THROUGHLINE}/jobs`,
46
+ '@forumone/throughline-workflows/cache-tags': `${THROUGHLINE}/cache-tags`,
47
+ '@forumone/throughline-design-contract': `${DESIGN_SYSTEM}/contract`,
48
+ '@forumone/throughline-design-contract/lint': `${DESIGN_SYSTEM}/lint`,
49
+ '@forumone/throughline-design-system-payload': `${DESIGN_SYSTEM}/generate`,
50
+ '@forumone/throughline-design-system-payload/generate': `${DESIGN_SYSTEM}/generate`,
51
+ '@forumone/throughline-design-system-payload/render': `${DESIGN_SYSTEM}/render`,
52
+ '@forumone/throughline-design-system-payload/client': `${DESIGN_SYSTEM}/client`,
53
+ '@forumone/throughline-design-system-payload/testing': `${DESIGN_SYSTEM}/testing`,
54
+ };
55
+ /** Names 1.0 renamed, each to a name with the same value. */
56
+ export const RENAMED = {
57
+ DEFAULT_AUDIT_COLLECTION_SLUG: 'DEFAULT_AUDIT_SLUG',
58
+ DEFAULT_APPROVALS_COLLECTION_SLUG: 'DEFAULT_APPROVALS_SLUG',
59
+ };
60
+ const FACTORY = 'removed: register the job instead, with inngestJobs(inngest, { onFailure, payload }), or let throughline() list it in suite.jobs';
61
+ const VIA_THROUGHLINE = 'internal: throughline() does this. See docs/spec/1.0-throughline-call.md';
62
+ /** Names 1.0 removed or made internal, and what to do instead. */
63
+ export const REMOVED = {
64
+ createRevalidateOnPublishFunction: `${FACTORY} (revalidateOnPublishJob, /publishing)`,
65
+ createExecuteScheduledPublishesFunction: `${FACTORY} (executeScheduledPublishesJob, /publishing)`,
66
+ createPublishAtScheduledTimeFunction: `${FACTORY} (publishAtScheduledTimeJob, /publishing)`,
67
+ createExpireStaleApprovalsFunction: `${FACTORY} (expireStaleApprovalsJob, /approvals)`,
68
+ createAuditEventEchoFunction: `${FACTORY} (auditEventEchoJob, /audit)`,
69
+ createHealthcheckFunction: `${FACTORY} (healthcheckJob, /integrations)`,
70
+ createNotifyApprovalRequestFunction: `${FACTORY} (emailJobs, /email)`,
71
+ createNotifyApprovalDecisionFunction: `${FACTORY} (emailJobs, /email)`,
72
+ createNotifyApprovalExpiredFunction: `${FACTORY} (emailJobs, /email)`,
73
+ createMcpToolCollector: `${VIA_THROUGHLINE}; give mcpPlugin suite.mcpTools`,
74
+ toPayloadMcpTool: VIA_THROUGHLINE,
75
+ toPayloadMcpTools: VIA_THROUGHLINE,
76
+ AddToolsOptions: VIA_THROUGHLINE,
77
+ CreateMcpToolCollectorOptions: VIA_THROUGHLINE,
78
+ DeclareToolsOptions: VIA_THROUGHLINE,
79
+ McpToolDescriptor: VIA_THROUGHLINE,
80
+ PayloadMcpRequest: VIA_THROUGHLINE,
81
+ ToPayloadMcpToolOptions: VIA_THROUGHLINE,
82
+ getPluginRegistry: `${VIA_THROUGHLINE}: it owns the order plugins register in`,
83
+ PluginRegistry: VIA_THROUGHLINE,
84
+ PluginRegistryEntry: VIA_THROUGHLINE,
85
+ resolveAdminGroup: `${VIA_THROUGHLINE}; pass admin: { group } to it`,
86
+ DEFAULT_ADMIN_GROUP: VIA_THROUGHLINE,
87
+ getEmailFunctions: `${VIA_THROUGHLINE}; serve suite.jobs from the Inngest route`,
88
+ getIntegrationRegistry: `${VIA_THROUGHLINE}; serve suite.jobs from the Inngest route`,
89
+ getIntegrationContext: `${VIA_THROUGHLINE}; serve suite.jobs from the Inngest route`,
90
+ APPROVALS_RESOLVER_SYMBOL: 'internal: approvalsPlugin attaches the resolver and publishing finds it',
91
+ auditServerFor: 'internal',
92
+ mcpServerRefusal: 'internal',
93
+ validateOptions: 'internal: each plugin validates its own options',
94
+ };
95
+ const OLD = Object.keys(COUNTERPARTS)
96
+ .sort((a, b) => b.length - a.length)
97
+ .map((s) => s.replace(/[/-]/g, (c) => `\\${c}`))
98
+ .join('|');
99
+ /** The 1.0 entry for one name imported from one 0.x path, or why there is none. */
100
+ export function placeName(oldSpecifier, name) {
101
+ const counterpart = COUNTERPARTS[oldSpecifier];
102
+ if (!counterpart)
103
+ return { reason: `${oldSpecifier} is not a 0.x Throughline path` };
104
+ const renamed = RENAMED[name] ?? name;
105
+ if (name in REMOVED)
106
+ return { reason: `${name}: ${REMOVED[name]}` };
107
+ const pkg = counterpart.startsWith(DESIGN_SYSTEM) ? DESIGN_SYSTEM : THROUGHLINE;
108
+ const homes = table[pkg]?.[renamed] ?? [];
109
+ if (homes.includes(counterpart))
110
+ return { specifier: counterpart, name: renamed };
111
+ if (homes.length === 1)
112
+ return { specifier: homes[0], name: renamed };
113
+ if (homes.length === 0) {
114
+ return { reason: `${name} is not exported by ${pkg} 1.0; see docs/spec/1.0-exports.md` };
115
+ }
116
+ return { reason: `${name} is exported from ${homes.join(' and ')}; choose one` };
117
+ }
118
+ function lineOf(text, index) {
119
+ return text.slice(0, index).split('\n').length;
120
+ }
121
+ /** `{ a, type B, c as d }` -> its specifiers, keeping `type` and `as`. */
122
+ function specifiersOf(body) {
123
+ return body
124
+ .split(',')
125
+ .map((raw) => raw.trim())
126
+ .filter(Boolean)
127
+ .map((raw) => {
128
+ const typeOnly = /^type\s+/.test(raw);
129
+ const rest = raw.replace(/^type\s+/, '');
130
+ const [name, alias] = rest.split(/\s+as\s+/).map((part) => part.trim());
131
+ return { raw, name: name, typeOnly, ...(alias ? { alias } : {}) };
132
+ });
133
+ }
134
+ export function rewriteSource(text) {
135
+ const review = [];
136
+ const unresolved = [];
137
+ let out = text;
138
+ // 1. Named imports and re-exports: split by where each name now lives.
139
+ const declaration = new RegExp(`(import|export)(\\s+type)?\\s*\\{([^}]*)\\}\\s*from\\s*(['"])(${OLD})\\4`, 'g');
140
+ out = out.replace(declaration, (whole, kw, typeKw, body, quote, oldSpecifier, offset) => {
141
+ const groups = new Map();
142
+ const left = [];
143
+ for (const spec of specifiersOf(body)) {
144
+ const placed = placeName(oldSpecifier, spec.name);
145
+ if ('reason' in placed) {
146
+ unresolved.push({ line: lineOf(text, offset), message: placed.reason });
147
+ left.push(spec.raw);
148
+ continue;
149
+ }
150
+ const local = spec.alias ?? (placed.name !== spec.name ? spec.name : undefined);
151
+ const written = (spec.typeOnly ? 'type ' : '') +
152
+ placed.name +
153
+ (local && local !== placed.name ? ` as ${local}` : '');
154
+ groups.set(placed.specifier, [...(groups.get(placed.specifier) ?? []), written]);
155
+ }
156
+ const type = typeKw ? ' type' : '';
157
+ const lines = [...groups.entries()].map(([specifier, names]) => `${kw}${type} { ${names.join(', ')} } from ${quote}${specifier}${quote}`);
158
+ if (left.length > 0)
159
+ lines.push(`${kw}${type} { ${left.join(', ')} } from ${quote}${oldSpecifier}${quote}`);
160
+ return lines.length > 0 ? lines.join('\n') : whole;
161
+ });
162
+ // 2. Everything else that names a 0.x path as a whole: point it at the
163
+ // counterpart, and say so, because the names inside cannot be checked.
164
+ const whole = new RegExp(`(import\\s+\\*\\s+as\\s+\\w+\\s+from|import\\s+\\w+\\s+from|export\\s+\\*\\s+from|import\\(|vi\\.mock\\(|vi\\.doMock\\(|declare\\s+module)\\s*(['"])(${OLD})\\2`, 'g');
165
+ out = out.replace(whole, (match, head, quote, oldSpecifier, offset) => {
166
+ const counterpart = COUNTERPARTS[oldSpecifier];
167
+ review.push({
168
+ line: lineOf(out, offset),
169
+ message: `${head.trim()} ${oldSpecifier} now names ${counterpart}; check the names it relies on live there`,
170
+ });
171
+ return `${head} ${quote}${counterpart}${quote}`.replace(/\(\s+/, '(');
172
+ });
173
+ // 3. Admin component paths: 'pkg/client#Name', as an importMap or a config names them.
174
+ const componentPath = new RegExp(`(['"\`])(${OLD})#(\\w+)\\1`, 'g');
175
+ out = out.replace(componentPath, (match, quote, oldSpecifier, name, offset) => {
176
+ const placed = placeName(oldSpecifier, name);
177
+ if ('reason' in placed) {
178
+ unresolved.push({
179
+ line: lineOf(out, offset),
180
+ message: `${oldSpecifier}#${name}: ${placed.reason}`,
181
+ });
182
+ return match;
183
+ }
184
+ return `${quote}${placed.specifier}#${placed.name}${quote}`;
185
+ });
186
+ return { text: out, changed: out !== text, review, unresolved };
187
+ }
188
+ //# sourceMappingURL=rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../src/migrate/rewrite.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Access, CollectionConfig } from 'payload';
2
+ import { type PluginAdminOptions } from '../plugin-contract/admin.js';
2
3
  export declare const DEFAULT_JOB_FAILURES_SLUG = "job-failures";
3
4
  /** What kind of thing failed. Adding a value is a schema change and needs a migration. */
4
5
  export declare const JOB_FAILURE_KINDS: readonly ["job", "healthcheck"];
@@ -8,6 +9,8 @@ export interface JobFailuresCollectionOptions {
8
9
  slug?: string;
9
10
  /** Read access. Default: users with the `admin` role. */
10
11
  readAccess?: Access;
12
+ /** Sidebar group, as every Throughline collection takes it. Default: `Throughline`. */
13
+ admin?: PluginAdminOptions;
11
14
  }
12
15
  export declare function createJobFailuresCollection(options?: JobFailuresCollectionOptions): CollectionConfig;
13
16
  //# sourceMappingURL=collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/observability/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAgBvD,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,iCAAkC,CAAA;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,MAAM,WAAW,4BAA4B;IAC3C,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAOD,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,4BAAiC,GACzC,gBAAgB,CAuDlB"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/observability/collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACvD,OAAO,EAAE,KAAK,kBAAkB,EAAqB,MAAM,6BAA6B,CAAA;AAgBxF,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,iCAAkC,CAAA;AAChE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,MAAM,WAAW,4BAA4B;IAC3C,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAOD,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,4BAAiC,GACzC,gBAAgB,CAwDlB"}
@@ -1,3 +1,4 @@
1
+ import { resolveAdminGroup } from '../plugin-contract/admin.js';
1
2
  /*
2
3
  Where a background job's failure is recorded.
3
4
 
@@ -22,6 +23,7 @@ export function createJobFailuresCollection(options = {}) {
22
23
  return {
23
24
  slug: options.slug ?? DEFAULT_JOB_FAILURES_SLUG,
24
25
  admin: {
26
+ ...resolveAdminGroup(options.admin),
25
27
  useAsTitle: 'summary',
26
28
  defaultColumns: ['createdAt', 'kind', 'source', 'message'],
27
29
  description: 'Background jobs that ran out of retries, and healthchecks that failed. Read-only; written by the failure handlers.',
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/observability/collection.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;EAYE;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAA;AAEvD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,aAAa,CAAU,CAAA;AAUhE,MAAM,SAAS,GAAW,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACpC,MAAM,KAAK,GAAI,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAA0B,IAAI,EAAE,CAAA;IACjE,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAwC,EAAE;IAE1C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,yBAAyB;QAC/C,KAAK,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;YAC1D,WAAW,EACT,oHAAoH;SACvH;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;YACnB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;YACnB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;SACpB;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5C,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC/C;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aACrE;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,EAAE,WAAW,EAAE,iEAAiE,EAAE;aAC1F;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACjD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrD,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;YACnC;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,EAAE,WAAW,EAAE,kEAAkE,EAAE;aAC3F;YACD,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE;YACtC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,EAAE,WAAW,EAAE,yDAAyD,EAAE;aAClF;YACD,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE;YACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;SACjC;QACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC;QACzE,UAAU,EAAE,KAAK;KAClB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/observability/collection.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,38 @@ import type { CollectionBeforeChangeHook } from 'payload';
47
47
  * its own check it passed as an ordinary edit, and the page came down with no
48
48
  * policy check, no `unpublished` event and nothing to drop the cached copy.
49
49
  * It is refused while the document is live: unpublish, then trash.
50
+ *
51
+ * A create is the same question again. A document created as `published` is
52
+ * live the moment it exists, so it is refused like any other publish: create
53
+ * it as a draft, then publish it. This hook used to skip creates entirely,
54
+ * which left REST, and Payload's own MCP `create` tools, a way to put a page
55
+ * live that no check, approval or audit row ever saw.
56
+ *
57
+ * And an edit to a live document is a change to what the public sees, so it
58
+ * belongs in the pipeline as much as the first publish does. A non-draft write
59
+ * to a live document is refused unless it changes nothing; editors save a
60
+ * draft and publish it, which is what the admin's own buttons do. Otherwise
61
+ * "requires approval" held for the first publish and for no edit after it.
62
+ *
63
+ * The one exception is data a system derives from the published document and
64
+ * writes back to it — an audio rendition's URL, a sync's timestamp. Running
65
+ * the pipeline for those would gate the page on its own side effects. A write
66
+ * that carries `DERIVED_WRITE_CONTEXT` may change fields on a document that is
67
+ * live with nothing pending. It can never change `_status`, never promote a
68
+ * pending draft, and never create: it is a way to annotate a live page, not
69
+ * to publish one.
50
70
  */
51
71
  export declare function createBlockStatusWritesHook(): CollectionBeforeChangeHook;
72
+ /**
73
+ * The context for a write of data derived from a live document, such as an
74
+ * audio rendition's URL, which is allowed to change that document without the
75
+ * pipeline. See `createBlockStatusWritesHook`.
76
+ *
77
+ * ```ts
78
+ * await payload.update({ collection: 'posts', id, data: { narration }, context: DERIVED_WRITE_CONTEXT })
79
+ * ```
80
+ */
81
+ export declare const DERIVED_WRITE_CONTEXT: Readonly<{
82
+ throughlineDerivedWrite: true;
83
+ }>;
52
84
  //# sourceMappingURL=block-status-writes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-status-writes.d.ts","sourceRoot":"","sources":["../../../src/publishing/hooks/block-status-writes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAkB,MAAM,SAAS,CAAA;AAGzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,2BAA2B,IAAI,0BAA0B,CA2DxE"}
1
+ {"version":3,"file":"block-status-writes.d.ts","sourceRoot":"","sources":["../../../src/publishing/hooks/block-status-writes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAkB,MAAM,SAAS,CAAA;AAGzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,wBAAgB,2BAA2B,IAAI,0BAA0B,CAyExE;AA6ID;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;EAAmD,CAAA"}
@@ -48,15 +48,40 @@ import { isDraftWrite } from './draft-writes.js';
48
48
  * its own check it passed as an ordinary edit, and the page came down with no
49
49
  * policy check, no `unpublished` event and nothing to drop the cached copy.
50
50
  * It is refused while the document is live: unpublish, then trash.
51
+ *
52
+ * A create is the same question again. A document created as `published` is
53
+ * live the moment it exists, so it is refused like any other publish: create
54
+ * it as a draft, then publish it. This hook used to skip creates entirely,
55
+ * which left REST, and Payload's own MCP `create` tools, a way to put a page
56
+ * live that no check, approval or audit row ever saw.
57
+ *
58
+ * And an edit to a live document is a change to what the public sees, so it
59
+ * belongs in the pipeline as much as the first publish does. A non-draft write
60
+ * to a live document is refused unless it changes nothing; editors save a
61
+ * draft and publish it, which is what the admin's own buttons do. Otherwise
62
+ * "requires approval" held for the first publish and for no edit after it.
63
+ *
64
+ * The one exception is data a system derives from the published document and
65
+ * writes back to it — an audio rendition's URL, a sync's timestamp. Running
66
+ * the pipeline for those would gate the page on its own side effects. A write
67
+ * that carries `DERIVED_WRITE_CONTEXT` may change fields on a document that is
68
+ * live with nothing pending. It can never change `_status`, never promote a
69
+ * pending draft, and never create: it is a way to annotate a live page, not
70
+ * to publish one.
51
71
  */
52
72
  export function createBlockStatusWritesHook() {
53
73
  return async ({ collection, data, originalDoc, operation, context, req }) => {
54
- if (operation !== 'update')
55
- return data;
56
74
  if (!carriesStatus(data))
57
75
  return data;
58
76
  if (isBypassed(context) || isBypassed(req?.context))
59
77
  return data;
78
+ if (operation === 'create') {
79
+ if (data['_status'] !== 'published')
80
+ return data;
81
+ throw new APIError('Create it as a draft, then publish it. Publishing is what runs the checks a live page needs.', 400);
82
+ }
83
+ if (operation !== 'update')
84
+ return data;
60
85
  const nextStatus = data['_status'];
61
86
  const previousStatus = originalDoc?.['_status'];
62
87
  const id = originalDoc?.id;
@@ -75,15 +100,18 @@ export function createBlockStatusWritesHook() {
75
100
  return data;
76
101
  }
77
102
  if (nextStatus === 'published') {
78
- // This puts content live. Allowed only when the document is already
79
- // live *and* nothing is pending: a latest version of `published`
80
- // means there is no newer draft for this write to promote. When a
81
- // draft is pending, this is the publish and it belongs in the
82
- // pipeline — even though the live status does not change.
83
- if (previousStatus === 'published')
84
- return data;
103
+ // This writes to what is live. Allowed when it changes nothing — a
104
+ // save that restates the live content, or Payload's "Revert to
105
+ // published" discarding a pending draft — or when it is derived data
106
+ // on a document that is live with nothing pending: a latest version of
107
+ // `published` means there is no newer draft for it to promote.
85
108
  if (await restatesLiveContent(req, collection?.slug, id, data))
86
109
  return data;
110
+ if (previousStatus === 'published' && !restoresFromTrash(data, originalDoc)) {
111
+ if (isDerivedWrite(context) || isDerivedWrite(req?.context))
112
+ return data;
113
+ throw new APIError('This page is live. Save your change as a draft, then publish it, so the checks a live page needs run.', 400);
114
+ }
87
115
  }
88
116
  else {
89
117
  // This takes the live document down. Harmless only if nothing is
@@ -234,6 +262,21 @@ function restoresFromTrash(data, originalDoc) {
234
262
  const previous = originalDoc?.['deletedAt'];
235
263
  return next == null && previous != null;
236
264
  }
265
+ /**
266
+ * The context for a write of data derived from a live document, such as an
267
+ * audio rendition's URL, which is allowed to change that document without the
268
+ * pipeline. See `createBlockStatusWritesHook`.
269
+ *
270
+ * ```ts
271
+ * await payload.update({ collection: 'posts', id, data: { narration }, context: DERIVED_WRITE_CONTEXT })
272
+ * ```
273
+ */
274
+ export const DERIVED_WRITE_CONTEXT = Object.freeze({ throughlineDerivedWrite: true });
275
+ function isDerivedWrite(context) {
276
+ if (!context || typeof context !== 'object')
277
+ return false;
278
+ return context['throughlineDerivedWrite'] === true;
279
+ }
237
280
  function isBypassed(context) {
238
281
  if (!context || typeof context !== 'object')
239
282
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"block-status-writes.js","sourceRoot":"","sources":["../../../src/publishing/hooks/block-status-writes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-status-writes.js","sourceRoot":"","sources":["../../../src/publishing/hooks/block-status-writes.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,12 @@ export type { DocumentActionArgs, PublishOutcome, PublishRequest, PublishStatusO
25
25
  * notification fires every few seconds of typing unless it asks this first.
26
26
  */
27
27
  export { isDraftWrite } from './hooks/draft-writes.js';
28
+ /**
29
+ * For a write of data derived from a live document — an audio rendition, a
30
+ * sync timestamp — which may change it without the publish pipeline. Never a
31
+ * status change, a create, or the promotion of a pending draft.
32
+ */
33
+ export { DERIVED_WRITE_CONTEXT } from './hooks/block-status-writes.js';
28
34
  export { BUILT_IN_ACCESSIBILITY_CHECKS, altTextCheck, headingHierarchyCheck, linkLabelsCheck, } from './checks/index.js';
29
35
  export { revalidateOnPublishJob } from './jobs/revalidate-on-publish.js';
30
36
  export { executeScheduledPublishesJob } from './jobs/execute-scheduled-publishes.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publishing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAC3E,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,GACZ,MAAM,gCAAgC,CAAA;AACvC,YAAY,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publishing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAA;AAErB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAGtE,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA;AAC3E,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,GACZ,MAAM,gCAAgC,CAAA;AACvC,YAAY,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAA"}
@@ -22,6 +22,12 @@ export { getPublishStatus, getPublishingService, publishDocument, scheduleDocume
22
22
  * notification fires every few seconds of typing unless it asks this first.
23
23
  */
24
24
  export { isDraftWrite } from './hooks/draft-writes.js';
25
+ /**
26
+ * For a write of data derived from a live document — an audio rendition, a
27
+ * sync timestamp — which may change it without the publish pipeline. Never a
28
+ * status change, a create, or the promotion of a pending draft.
29
+ */
30
+ export { DERIVED_WRITE_CONTEXT } from './hooks/block-status-writes.js';
25
31
  // Built-in accessibility checks, which were `@forumone/throughline-publishing/checks`.
26
32
  export { BUILT_IN_ACCESSIBILITY_CHECKS, altTextCheck, headingHierarchyCheck, linkLabelsCheck, } from './checks/index.js';
27
33
  // Revalidation and scheduled publishing, as jobs for either adapter in `/jobs`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publishing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmB9C;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAerB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,uFAAuF;AACvF,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAE1B,gFAAgF;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publishing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmB9C;;;;GAIG;AACH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAerB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,uFAAuF;AACvF,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAE1B,gFAAgF;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import type { PipelineStep } from '../types.js';
2
2
  /**
3
3
  * Runs every built-in accessibility check followed by user-supplied ones.
4
- * Errors block publish; warnings are surfaced on the result but don't fail
5
- * the step. (Warning-only behavior is currently unused by the built-in
6
- * checks but reserved for richer per-client checks.)
4
+ * Errors block publish; warnings don't, and reach the publish result's
5
+ * `warnings`, one line each, named by the check that raised them. (The
6
+ * built-ins raise none; a site's own checks may.) They used to be dropped
7
+ * here, so a check that warned said nothing to anybody.
7
8
  *
8
9
  * Built-ins named in `disableAccessibilityChecks` are skipped, so a host
9
10
  * whose content shape trips one can replace it rather than wait for a
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAA;AAG9D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,YA4B/B,CAAA"}
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,aAAa,CAAA;AAG9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAiC/B,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import { BUILT_IN_ACCESSIBILITY_CHECKS } from '../../checks/index.js';
2
2
  /**
3
3
  * Runs every built-in accessibility check followed by user-supplied ones.
4
- * Errors block publish; warnings are surfaced on the result but don't fail
5
- * the step. (Warning-only behavior is currently unused by the built-in
6
- * checks but reserved for richer per-client checks.)
4
+ * Errors block publish; warnings don't, and reach the publish result's
5
+ * `warnings`, one line each, named by the check that raised them. (The
6
+ * built-ins raise none; a site's own checks may.) They used to be dropped
7
+ * here, so a check that warned said nothing to anybody.
7
8
  *
8
9
  * Built-ins named in `disableAccessibilityChecks` are skipped, so a host
9
10
  * whose content shape trips one can replace it rather than wait for a
@@ -23,8 +24,13 @@ export const accessibilityStep = async (ctx) => {
23
24
  }
24
25
  }
25
26
  const errors = allIssues.filter((i) => i.severity === 'error');
27
+ const warnings = allIssues
28
+ .filter((i) => i.severity === 'warning')
29
+ .map((i) => `${i.rule}: ${i.message}${i.field ? ` (${i.field})` : ''}`);
30
+ const carried = warnings.length ? { warnings } : {};
26
31
  if (errors.length > 0) {
27
32
  return {
33
+ ...carried,
28
34
  pass: false,
29
35
  code: 'accessibility-errors',
30
36
  reason: `${errors.length} accessibility issue${errors.length === 1 ? '' : 's'}`,
@@ -32,6 +38,6 @@ export const accessibilityStep = async (ctx) => {
32
38
  suggestion: 'Every image needs alt text. Every link needs a label. Heading levels must not skip. Fix these before publishing.',
33
39
  };
34
40
  }
35
- return { pass: true };
41
+ return { pass: true, ...carried };
36
42
  };
37
43
  //# sourceMappingURL=accessibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/accessibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAA;AAErE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG;QACb,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7E,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;KAC3C,CAAA;IAED,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAA;IAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,uBAAuB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,UAAU,EACR,kHAAkH;SACrH,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"accessibility.js","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/accessibility.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAA;AAErE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG;QACb,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7E,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;KAC3C,CAAA;IAED,MAAM,SAAS,GAAoB,EAAE,CAAA;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAG,SAAS;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,uBAAuB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YAC/E,MAAM,EAAE,MAAM;YACd,UAAU,EACR,kHAAkH;SACrH,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAA;AACnC,CAAC,CAAA"}
@@ -42,7 +42,7 @@ export const approvalStep = async (ctx) => {
42
42
  pass: false,
43
43
  code: 'approval-required',
44
44
  reason: 'This document requires approval and no granted approval exists for the current version',
45
- suggestion: 'Use the Approvals Server to request approval. Once granted, publish will succeed.',
45
+ suggestion: 'Call request_approval to ask for one. Once it is granted, publish will succeed.',
46
46
  };
47
47
  }
48
48
  return { pass: true };
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAGpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAGxE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAEzC,CAAA;IACb,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAExD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,mEAAmE;YAC3E,UAAU,EACR,sJAAsJ;SACzJ,CAAA;IACH,CAAC;IAED;;;;;;;;;;MAUE;IACF,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAC/C,GAAG,CAAC,UAAU,CAAC,IAAI,EACnB,GAAG,CAAC,UAAU,EACd,SAAS,CACV,CAAA;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,mBAAmB;YACzB,MAAM,EACJ,wFAAwF;YAC1F,UAAU,EACR,mFAAmF;SACtF,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAI,OAAmC,CAAC,yBAAyB,CAAC,CAAA;IAC7E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAA0B,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9F,CAAC"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../src/publishing/pipeline/steps/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAGpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAA;AAGxE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAiB,KAAK,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAEzC,CAAA;IACb,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAExD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,mEAAmE;YAC3E,UAAU,EACR,sJAAsJ;SACzJ,CAAA;IACH,CAAC;IAED;;;;;;;;;;MAUE;IACF,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAC/C,GAAG,CAAC,UAAU,CAAC,IAAI,EACnB,GAAG,CAAC,UAAU,EACd,SAAS,CACV,CAAA;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,mBAAmB;YACzB,MAAM,EACJ,wFAAwF;YAC1F,UAAU,EACR,iFAAiF;SACpF,CAAA;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAI,OAAmC,CAAC,yBAAyB,CAAC,CAAA;IAC7E,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAA0B,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9F,CAAC"}