canopycms 0.0.55 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/github-sync.d.ts.map +1 -1
- package/dist/api/github-sync.js +28 -7
- package/dist/api/github-sync.js.map +1 -1
- package/dist/auth/caching-auth-plugin.d.ts +8 -1
- package/dist/auth/caching-auth-plugin.d.ts.map +1 -1
- package/dist/auth/caching-auth-plugin.js +6 -1
- package/dist/auth/caching-auth-plugin.js.map +1 -1
- package/dist/auth/plugin.d.ts +19 -10
- package/dist/auth/plugin.d.ts.map +1 -1
- package/dist/auth/plugin.js +12 -10
- package/dist/auth/plugin.js.map +1 -1
- package/dist/build/generate-ai-content.d.ts.map +1 -1
- package/dist/build/generate-ai-content.js +7 -0
- package/dist/build/generate-ai-content.js.map +1 -1
- package/dist/cli/generate-ai-content.js +438 -38
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +16 -8
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +6 -3
- package/dist/cli/templates.js.map +1 -1
- package/dist/config/helpers.d.ts.map +1 -1
- package/dist/config/helpers.js +3 -0
- package/dist/config/helpers.js.map +1 -1
- package/dist/config/schemas/config.d.ts +3 -4
- package/dist/config/schemas/config.d.ts.map +1 -1
- package/dist/config/schemas/config.js +6 -3
- package/dist/config/schemas/config.js.map +1 -1
- package/dist/config/types.d.ts +6 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config-test.d.ts +5 -3
- package/dist/config-test.d.ts.map +1 -1
- package/dist/config-test.js +9 -1
- package/dist/config-test.js.map +1 -1
- package/dist/content-listing.d.ts +3 -1
- package/dist/content-listing.d.ts.map +1 -1
- package/dist/content-listing.js +1 -0
- package/dist/content-listing.js.map +1 -1
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +11 -1
- package/dist/content-store.js.map +1 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +19 -15
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/hooks/useDraftManager.d.ts +7 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +69 -31
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useSchemaManager.d.ts +34 -10
- package/dist/editor/hooks/useSchemaManager.d.ts.map +1 -1
- package/dist/editor/hooks/useSchemaManager.js +20 -24
- package/dist/editor/hooks/useSchemaManager.js.map +1 -1
- package/dist/editor/schema-editor/CollectionEditor.d.ts +6 -5
- package/dist/editor/schema-editor/CollectionEditor.d.ts.map +1 -1
- package/dist/editor/schema-editor/CollectionEditor.js +9 -4
- package/dist/editor/schema-editor/CollectionEditor.js.map +1 -1
- package/dist/github-service.d.ts +63 -7
- package/dist/github-service.d.ts.map +1 -1
- package/dist/github-service.js +147 -39
- package/dist/github-service.js.map +1 -1
- package/dist/services.js +4 -0
- package/dist/services.js.map +1 -1
- package/dist/static/index.d.ts +32 -0
- package/dist/static/index.d.ts.map +1 -1
- package/dist/static/index.js +90 -0
- package/dist/static/index.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +6 -3
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +21 -38
- package/dist/worker/cms-worker.js.map +1 -1
- package/package.json +2 -1
package/dist/github-service.js
CHANGED
|
@@ -1,11 +1,149 @@
|
|
|
1
1
|
import { Octokit } from '@octokit/rest';
|
|
2
|
+
import { throttling } from '@octokit/plugin-throttling';
|
|
2
3
|
import { operatingStrategy } from './operating-mode/index.js';
|
|
4
|
+
import { getErrorMessage } from './utils/error.js';
|
|
5
|
+
const ThrottledOctokit = Octokit.plugin(throttling);
|
|
6
|
+
/**
|
|
7
|
+
* Retry primary rate limits at most twice and only for short waits; beyond
|
|
8
|
+
* that, task-level retry/backoff (worker) or the caller's error path takes
|
|
9
|
+
* over. The worker's task timeout would abort a longer in-request wait
|
|
10
|
+
* anyway.
|
|
11
|
+
*/
|
|
12
|
+
export const shouldRetryRateLimit = (retryAfter, retryCount) => retryCount < 2 && retryAfter <= 60;
|
|
13
|
+
/**
|
|
14
|
+
* Secondary (abuse-detection) rate limits are stricter to trip and usually
|
|
15
|
+
* signal we're hammering the API too fast — retry at most once, and only for
|
|
16
|
+
* a short wait.
|
|
17
|
+
*/
|
|
18
|
+
export const shouldRetrySecondaryRateLimit = (retryAfter, retryCount) => retryCount < 1 && retryAfter <= 60;
|
|
19
|
+
/**
|
|
20
|
+
* Create an Octokit instance with the throttling plugin attached, so it
|
|
21
|
+
* proactively respects GitHub's `retry-after` guidance on rate limits
|
|
22
|
+
* instead of failing immediately (see cms-worker.ts isPermanentTaskFailure
|
|
23
|
+
* for the safety net this doesn't cover: exhausted plugin retries and
|
|
24
|
+
* errors the plugin never sees, like non-403 network failures).
|
|
25
|
+
*/
|
|
26
|
+
export function createCanopyOctokit(options) {
|
|
27
|
+
return new ThrottledOctokit({
|
|
28
|
+
auth: options.auth,
|
|
29
|
+
throttle: {
|
|
30
|
+
onRateLimit: (retryAfter, requestOptions, _octokit, retryCount) => {
|
|
31
|
+
console.warn(`CanopyCMS: GitHub primary rate limit hit for ${requestOptions.method} ${requestOptions.url} ` +
|
|
32
|
+
`(retryAfter=${retryAfter}s, retryCount=${retryCount})`);
|
|
33
|
+
return shouldRetryRateLimit(retryAfter, retryCount);
|
|
34
|
+
},
|
|
35
|
+
onSecondaryRateLimit: (retryAfter, requestOptions, _octokit, retryCount) => {
|
|
36
|
+
console.warn(`CanopyCMS: GitHub secondary rate limit hit for ${requestOptions.method} ${requestOptions.url} ` +
|
|
37
|
+
`(retryAfter=${retryAfter}s, retryCount=${retryCount})`);
|
|
38
|
+
return shouldRetrySecondaryRateLimit(retryAfter, retryCount);
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create or update a pull request (idempotent — GIT-H1).
|
|
45
|
+
*
|
|
46
|
+
* If an open PR already exists from head to base, update it and return its
|
|
47
|
+
* number/url instead of erroring. This makes PR submission safely
|
|
48
|
+
* retryable: if a caller crashes after GitHub creates the PR but before it
|
|
49
|
+
* persists the returned PR number, calling this again recovers the
|
|
50
|
+
* existing PR instead of hitting the 422 that a blind create would throw on
|
|
51
|
+
* a duplicate, which previously wedged the branch in 'sync-failed'
|
|
52
|
+
* permanently.
|
|
53
|
+
*
|
|
54
|
+
* Shared by `GitHubService.createOrUpdatePR` (direct-API callers) and the
|
|
55
|
+
* worker's `push-and-create-or-update-pr` task, so the list->tiebreak->
|
|
56
|
+
* update/create logic and the draft->ready conversion live in one place.
|
|
57
|
+
*/
|
|
58
|
+
export async function createOrUpdatePullRequest(params) {
|
|
59
|
+
const { octokit, owner, repo, head, base, title, body, markReadyIfDraft, signal } = params;
|
|
60
|
+
// CONDITIONAL spread: when no signal is passed, request objects below are
|
|
61
|
+
// byte-identical to the pre-refactor call sites (exact toHaveBeenCalledWith
|
|
62
|
+
// assertions in github-service.test.ts depend on this).
|
|
63
|
+
const requestOption = signal ? { request: { signal } } : {};
|
|
64
|
+
// Check if an open PR already exists for this head/base
|
|
65
|
+
const existingPRs = await octokit.pulls.list({
|
|
66
|
+
owner,
|
|
67
|
+
repo,
|
|
68
|
+
head: `${owner}:${head}`,
|
|
69
|
+
base,
|
|
70
|
+
state: 'open',
|
|
71
|
+
...requestOption,
|
|
72
|
+
});
|
|
73
|
+
if (existingPRs.data.length > 0) {
|
|
74
|
+
// GIT-M5: GitHub disallows more than one open PR for a given
|
|
75
|
+
// head+base pair, so this should always be a single match. Guard
|
|
76
|
+
// against blindly trusting array order anyway — if more than one is
|
|
77
|
+
// ever returned, warn and prefer the most recently updated instead of
|
|
78
|
+
// an arbitrary one.
|
|
79
|
+
let existing = existingPRs.data[0];
|
|
80
|
+
if (existingPRs.data.length > 1) {
|
|
81
|
+
existing = [...existingPRs.data].sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime())[0];
|
|
82
|
+
console.warn(`CanopyCMS: Found ${existingPRs.data.length} open PRs for ${head} -> ${base}; updating the most recently updated (#${existing.number})`);
|
|
83
|
+
}
|
|
84
|
+
await octokit.pulls.update({
|
|
85
|
+
owner,
|
|
86
|
+
repo,
|
|
87
|
+
pull_number: existing.number,
|
|
88
|
+
title,
|
|
89
|
+
body,
|
|
90
|
+
...requestOption,
|
|
91
|
+
});
|
|
92
|
+
// Only a pre-existing PR can be a draft on this path — pulls.create
|
|
93
|
+
// above is never called with draft: true, so a newly created PR is
|
|
94
|
+
// never draft and needs no conversion.
|
|
95
|
+
if (markReadyIfDraft && existing.draft) {
|
|
96
|
+
// Use GraphQL API for draft conversion (not available in REST API).
|
|
97
|
+
// Read the node id straight off the list payload — no extra pulls.get.
|
|
98
|
+
//
|
|
99
|
+
// Best-effort: the push + pulls.update above already succeeded, so the
|
|
100
|
+
// submit itself is done. A fine-grained token that can update PRs but
|
|
101
|
+
// lacks this mutation's scope throws a GraphqlResponseError, which
|
|
102
|
+
// carries no numeric HTTP status (the GraphQL endpoint responds 200
|
|
103
|
+
// even for a mutation-level failure) — the worker's
|
|
104
|
+
// isPermanentTaskFailure would classify that as transient and retry
|
|
105
|
+
// the whole re-push until the retry cap, wedging the branch in
|
|
106
|
+
// 'sync-failed' even though the PR already exists and is current.
|
|
107
|
+
// Warn and continue instead of letting this sink an already-succeeded
|
|
108
|
+
// submit.
|
|
109
|
+
try {
|
|
110
|
+
await octokit.graphql(`
|
|
111
|
+
mutation($pullRequestId: ID!) {
|
|
112
|
+
markPullRequestReadyForReview(input: {pullRequestId: $pullRequestId}) {
|
|
113
|
+
pullRequest {
|
|
114
|
+
id
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
`, {
|
|
119
|
+
pullRequestId: existing.node_id,
|
|
120
|
+
...requestOption,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
console.warn(`CanopyCMS: Failed to convert PR #${existing.number} to ready for review (the PR update itself succeeded; continuing):`, getErrorMessage(err));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return { number: existing.number, url: existing.html_url, created: false };
|
|
128
|
+
}
|
|
129
|
+
// Create new PR
|
|
130
|
+
const pr = await octokit.pulls.create({
|
|
131
|
+
owner,
|
|
132
|
+
repo,
|
|
133
|
+
head,
|
|
134
|
+
base,
|
|
135
|
+
title,
|
|
136
|
+
body,
|
|
137
|
+
...requestOption,
|
|
138
|
+
});
|
|
139
|
+
return { number: pr.data.number, url: pr.data.html_url, created: true };
|
|
140
|
+
}
|
|
3
141
|
/**
|
|
4
142
|
* Service for interacting with GitHub API (pull requests, branches, etc.)
|
|
5
143
|
*/
|
|
6
144
|
export class GitHubService {
|
|
7
145
|
constructor(options) {
|
|
8
|
-
this.octokit =
|
|
146
|
+
this.octokit = createCanopyOctokit({ auth: options.token });
|
|
9
147
|
this.owner = options.owner;
|
|
10
148
|
this.repo = options.repo;
|
|
11
149
|
this.baseBranch = options.baseBranch ?? 'main';
|
|
@@ -43,53 +181,23 @@ export class GitHubService {
|
|
|
43
181
|
/**
|
|
44
182
|
* Create or update a pull request (idempotent — GIT-H1).
|
|
45
183
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* existing PR instead of hitting the 422 that `createPullRequest` would
|
|
51
|
-
* throw on a duplicate, which previously wedged the branch in
|
|
52
|
-
* 'sync-failed' permanently.
|
|
184
|
+
* Thin delegate to the module-level `createOrUpdatePullRequest` helper
|
|
185
|
+
* (shared with the worker's `push-and-create-or-update-pr` task) bound to
|
|
186
|
+
* this instance's octokit/owner/repo. See that function's doc comment for
|
|
187
|
+
* the idempotency rationale.
|
|
53
188
|
*/
|
|
54
189
|
async createOrUpdatePR(options) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
owner: this.owner,
|
|
58
|
-
repo: this.repo,
|
|
59
|
-
head: `${this.owner}:${options.head}`,
|
|
60
|
-
base: options.base,
|
|
61
|
-
state: 'open',
|
|
62
|
-
});
|
|
63
|
-
if (existingPRs.data.length > 0) {
|
|
64
|
-
// GIT-M5: GitHub disallows more than one open PR for a given
|
|
65
|
-
// head+base pair, so this should always be a single match. Guard
|
|
66
|
-
// against blindly trusting array order anyway — if more than one is
|
|
67
|
-
// ever returned, warn and prefer the most recently updated instead of
|
|
68
|
-
// an arbitrary one.
|
|
69
|
-
let pr = existingPRs.data[0];
|
|
70
|
-
if (existingPRs.data.length > 1) {
|
|
71
|
-
pr = [...existingPRs.data].sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime())[0];
|
|
72
|
-
console.warn(`CanopyCMS: Found ${existingPRs.data.length} open PRs for ${options.head} -> ${options.base}; updating the most recently updated (#${pr.number})`);
|
|
73
|
-
}
|
|
74
|
-
await this.octokit.pulls.update({
|
|
75
|
-
owner: this.owner,
|
|
76
|
-
repo: this.repo,
|
|
77
|
-
pull_number: pr.number,
|
|
78
|
-
title: options.title,
|
|
79
|
-
body: options.body,
|
|
80
|
-
});
|
|
81
|
-
return { number: pr.number, url: pr.html_url };
|
|
82
|
-
}
|
|
83
|
-
// Create new PR
|
|
84
|
-
const pr = await this.octokit.pulls.create({
|
|
190
|
+
const result = await createOrUpdatePullRequest({
|
|
191
|
+
octokit: this.octokit,
|
|
85
192
|
owner: this.owner,
|
|
86
193
|
repo: this.repo,
|
|
87
194
|
head: options.head,
|
|
88
195
|
base: options.base,
|
|
89
196
|
title: options.title,
|
|
90
197
|
body: options.body,
|
|
198
|
+
markReadyIfDraft: options.markReadyIfDraft,
|
|
91
199
|
});
|
|
92
|
-
return { number:
|
|
200
|
+
return { number: result.number, url: result.url };
|
|
93
201
|
}
|
|
94
202
|
/**
|
|
95
203
|
* Get pull request details
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-service.js","sourceRoot":"","sources":["../src/github-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"github-service.js","sourceRoot":"","sources":["../src/github-service.ts"],"names":[],"mappings":"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"}
|
package/dist/services.js
CHANGED
|
@@ -246,6 +246,10 @@ async function _createCanopyServicesInternal(config, options) {
|
|
|
246
246
|
if (githubService) {
|
|
247
247
|
let prUrl;
|
|
248
248
|
try {
|
|
249
|
+
// Settings-branch PRs deliberately never pass markReadyIfDraft:
|
|
250
|
+
// unlike content submits, a settings sync has no explicit "submit
|
|
251
|
+
// for review" step, so an existing draft PR here should stay
|
|
252
|
+
// draft until an admin is ready — don't "helpfully" enable this.
|
|
249
253
|
const result = await githubService.createOrUpdatePR({
|
|
250
254
|
head: settingsBranch,
|
|
251
255
|
base: config.defaultBaseBranch ?? 'main',
|
package/dist/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
package/dist/static/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CanopyBuildContext } from '../context';
|
|
2
|
+
import type { ListEntriesItem } from '../content-listing';
|
|
3
|
+
import { type EntryFieldError } from '../validation/entry-validator';
|
|
2
4
|
/**
|
|
3
5
|
* Framework-agnostic helpers for static-site generation. These produce neutral data structures
|
|
4
6
|
* (no Next.js types) so that any framework adapter — e.g. canopycms-next — can map them to its own
|
|
@@ -48,4 +50,34 @@ export interface CollectStaticPathsOptions {
|
|
|
48
50
|
* const posts = await collectStaticPaths(await getCanopyForBuild(), { rootPath: 'content/posts' })
|
|
49
51
|
*/
|
|
50
52
|
export declare function collectStaticPaths(ctx: Pick<CanopyBuildContext, 'listEntries'>, options?: CollectStaticPathsOptions): Promise<StaticPathEntry[]>;
|
|
53
|
+
/**
|
|
54
|
+
* One schema-invalid entry found during a build-time content scan.
|
|
55
|
+
*/
|
|
56
|
+
export interface InvalidBuildEntry {
|
|
57
|
+
entryPath: string;
|
|
58
|
+
errors: EntryFieldError[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Scan listEntries-shaped items for schema-invalid entries.
|
|
62
|
+
*
|
|
63
|
+
* Runs `validateEntryData` — the same pure validation used at the server write boundary
|
|
64
|
+
* (api/content.ts) for on-disk-shaped data — against each item's raw data. listEntries already
|
|
65
|
+
* merges an md/mdx body into `data` under the schema's `isBody` field name (see `readEntryData`
|
|
66
|
+
* in content-listing.ts), so no FormValue-style remapping is needed or correct here. This is how
|
|
67
|
+
* an abandoned create-scaffold — an empty entry the editor's create flow writes before the user
|
|
68
|
+
* fills it in (skipped from validation there via `isCreateScaffold`) — gets caught before it
|
|
69
|
+
* ships in a static build, since nothing else re-validates it once it's on disk.
|
|
70
|
+
*
|
|
71
|
+
* Items whose `schema` couldn't be resolved (unknown entry type) are skipped here — that's a
|
|
72
|
+
* different failure class, handled elsewhere.
|
|
73
|
+
*/
|
|
74
|
+
export declare function findInvalidEntries(items: readonly Pick<ListEntriesItem, 'entryPath' | 'schema' | 'data'>[]): InvalidBuildEntry[];
|
|
75
|
+
/**
|
|
76
|
+
* Throw a single, descriptive Error if any item is schema-invalid.
|
|
77
|
+
*
|
|
78
|
+
* Fails the build rather than silently skipping the offending entry: a page that silently
|
|
79
|
+
* disappears from a static build is a worse failure mode than a red build. Lists every
|
|
80
|
+
* offending entry so one build catches every abandoned scaffold, not just the first.
|
|
81
|
+
*/
|
|
82
|
+
export declare function assertBuildEntriesValid(items: readonly Pick<ListEntriesItem, 'entryPath' | 'schema' | 'data'>[], phaseLabel: string): void;
|
|
51
83
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/static/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,yGAAyG;IACzG,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oGAAoG;IACpG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAA;CAC7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAC5C,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/static/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEvF;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,yGAAyG;IACzG,IAAI,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oGAAoG;IACpG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAA;CAC7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAC5C,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,eAAe,EAAE,CAAC,CAc5B;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,eAAe,EAAE,CAAA;CAC1B;AAkCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,GACvE,iBAAiB,EAAE,CAWrB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC,EAAE,EACxE,UAAU,EAAE,MAAM,GACjB,IAAI,CAkBN"}
|
package/dist/static/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isBuildMode } from '../build-mode.js';
|
|
2
|
+
import { validateEntryData } from '../validation/entry-validator.js';
|
|
1
3
|
/**
|
|
2
4
|
* Enumerate routable content entries as neutral path descriptors for static generation.
|
|
3
5
|
*
|
|
@@ -13,6 +15,12 @@
|
|
|
13
15
|
*/
|
|
14
16
|
export async function collectStaticPaths(ctx, options = {}) {
|
|
15
17
|
const entries = await ctx.listEntries({ rootPath: options.rootPath });
|
|
18
|
+
// Build-time only: `next dev` runs generateStaticParams against the live working tree, where
|
|
19
|
+
// fresh create-scaffolds legitimately exist mid-edit. Only fail the actual production build —
|
|
20
|
+
// an abandoned schema-invalid scaffold shipping into a static build silently drops that page's
|
|
21
|
+
// route (or worse, renders broken), which is worse than a red build.
|
|
22
|
+
if (isBuildMode())
|
|
23
|
+
assertBuildEntriesValid(entries, 'static path enumeration');
|
|
16
24
|
const mapped = entries.map((entry) => ({
|
|
17
25
|
urlPath: entry.urlPath,
|
|
18
26
|
segments: entry.urlPath === '/' ? [] : entry.urlPath.replace(/^\//, '').split('/'),
|
|
@@ -21,4 +29,86 @@ export async function collectStaticPaths(ctx, options = {}) {
|
|
|
21
29
|
}));
|
|
22
30
|
return options.filter ? mapped.filter(options.filter) : mapped;
|
|
23
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Deep-walk a plain data value (objects and arrays only — the shapes YAML/JSON parsing can
|
|
34
|
+
* produce), converting every `Date` instance to its ISO string.
|
|
35
|
+
*
|
|
36
|
+
* gray-matter parses unquoted YAML dates in hand-authored frontmatter (`date: 2024-01-15`) into
|
|
37
|
+
* JS `Date` objects rather than strings. The shared validator's datetime check requires a string
|
|
38
|
+
* (see `validateScalar` in entry-validator.ts), so a legitimate hand-authored or migrated entry
|
|
39
|
+
* would otherwise fail this build guard. CMS-authored entries round-trip as quoted strings, so
|
|
40
|
+
* this only affects pre-existing content — which is the primary path for adopters retrofitting
|
|
41
|
+
* CanopyCMS onto an existing repo.
|
|
42
|
+
*
|
|
43
|
+
* Normalization lives here, in the guard, rather than in the shared validator: the editor/server
|
|
44
|
+
* save boundary always receives JSON-shaped payloads over HTTP and can never see a `Date` there —
|
|
45
|
+
* only this build-time read of on-disk YAML/frontmatter can produce one. The shared validator
|
|
46
|
+
* stays strict.
|
|
47
|
+
*
|
|
48
|
+
* No cycle guard: this only ever walks data parsed fresh from YAML/JSON/frontmatter on disk,
|
|
49
|
+
* which cannot contain circular references.
|
|
50
|
+
*/
|
|
51
|
+
function normalizeDatesDeep(value) {
|
|
52
|
+
if (value instanceof Date)
|
|
53
|
+
return value.toISOString();
|
|
54
|
+
if (Array.isArray(value))
|
|
55
|
+
return value.map(normalizeDatesDeep);
|
|
56
|
+
if (value && typeof value === 'object') {
|
|
57
|
+
const result = {};
|
|
58
|
+
for (const [key, v] of Object.entries(value)) {
|
|
59
|
+
result[key] = normalizeDatesDeep(v);
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Scan listEntries-shaped items for schema-invalid entries.
|
|
67
|
+
*
|
|
68
|
+
* Runs `validateEntryData` — the same pure validation used at the server write boundary
|
|
69
|
+
* (api/content.ts) for on-disk-shaped data — against each item's raw data. listEntries already
|
|
70
|
+
* merges an md/mdx body into `data` under the schema's `isBody` field name (see `readEntryData`
|
|
71
|
+
* in content-listing.ts), so no FormValue-style remapping is needed or correct here. This is how
|
|
72
|
+
* an abandoned create-scaffold — an empty entry the editor's create flow writes before the user
|
|
73
|
+
* fills it in (skipped from validation there via `isCreateScaffold`) — gets caught before it
|
|
74
|
+
* ships in a static build, since nothing else re-validates it once it's on disk.
|
|
75
|
+
*
|
|
76
|
+
* Items whose `schema` couldn't be resolved (unknown entry type) are skipped here — that's a
|
|
77
|
+
* different failure class, handled elsewhere.
|
|
78
|
+
*/
|
|
79
|
+
export function findInvalidEntries(items) {
|
|
80
|
+
const invalid = [];
|
|
81
|
+
for (const item of items) {
|
|
82
|
+
if (!item.schema)
|
|
83
|
+
continue;
|
|
84
|
+
const data = normalizeDatesDeep(item.data);
|
|
85
|
+
const errors = validateEntryData(item.schema, data);
|
|
86
|
+
if (errors.length > 0) {
|
|
87
|
+
invalid.push({ entryPath: item.entryPath, errors });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return invalid;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Throw a single, descriptive Error if any item is schema-invalid.
|
|
94
|
+
*
|
|
95
|
+
* Fails the build rather than silently skipping the offending entry: a page that silently
|
|
96
|
+
* disappears from a static build is a worse failure mode than a red build. Lists every
|
|
97
|
+
* offending entry so one build catches every abandoned scaffold, not just the first.
|
|
98
|
+
*/
|
|
99
|
+
export function assertBuildEntriesValid(items, phaseLabel) {
|
|
100
|
+
const invalid = findInvalidEntries(items);
|
|
101
|
+
if (invalid.length === 0)
|
|
102
|
+
return;
|
|
103
|
+
const lines = invalid.map(({ entryPath, errors }) => {
|
|
104
|
+
const [first, ...rest] = errors;
|
|
105
|
+
const summary = rest.length > 0
|
|
106
|
+
? `${first.fieldPath}: ${first.message} (+${rest.length} more)`
|
|
107
|
+
: `${first.fieldPath}: ${first.message}`;
|
|
108
|
+
return ` - ${entryPath} — ${summary}`;
|
|
109
|
+
});
|
|
110
|
+
throw new Error(`CanopyCMS static build: found ${invalid.length} schema-invalid ${invalid.length === 1 ? 'entry' : 'entries'} during ${phaseLabel}:\n${lines.join('\n')}\n` +
|
|
111
|
+
`These are likely abandoned create-scaffolds (empty entries left behind when a create was started but never finished). ` +
|
|
112
|
+
`Finish editing the entry (fill in its required fields) or delete the abandoned draft, then rebuild.`);
|
|
113
|
+
}
|
|
24
114
|
//# sourceMappingURL=index.js.map
|
package/dist/static/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/static/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/static/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,9 +60,12 @@ export declare class PermanentTaskError extends Error {
|
|
|
60
60
|
* - HTTP 408 (request timeout) and 429 (rate limited)
|
|
61
61
|
* - HTTP 403 that carries a rate-limit signal (see `isRateLimitSignal403`):
|
|
62
62
|
* GitHub returns 403, not 429, for both primary and secondary/abuse rate
|
|
63
|
-
* limits
|
|
64
|
-
* this carve-out
|
|
65
|
-
*
|
|
63
|
+
* limits. The throttling plugin (see github-service.ts createCanopyOctokit)
|
|
64
|
+
* proactively retries short waits, but this carve-out remains the safety
|
|
65
|
+
* net for waits the plugin gives up on (`shouldRetryRateLimit`/
|
|
66
|
+
* `shouldRetrySecondaryRateLimit`) and for errors it never sees — without
|
|
67
|
+
* it a rate-limited push-and-create-or-update-pr task would fail
|
|
68
|
+
* permanently and wedge the branch (`sync-failed`, no retry).
|
|
66
69
|
* - HTTP 5xx (server-side, usually recovers)
|
|
67
70
|
*
|
|
68
71
|
* Permanent — retrying the identical request cannot succeed:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cms-worker.d.ts","sourceRoot":"","sources":["../../src/worker/cms-worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cms-worker.d.ts","sourceRoot":"","sources":["../../src/worker/cms-worker.ts"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAEpD,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;IACrC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kEAAkE;IAClE,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAMD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;CAAG;AAEhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAO5D;AA2DD;;;;;;;;;;GAUG;AACH,qBAAa,SAAS;IAkBR,OAAO,CAAC,MAAM;IAjB1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,GAAG,CAAqB;gBAEZ,MAAM,EAAE,eAAe;IAcrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,WAAW;YAyBX,WAAW;IAWzB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;YACW,eAAe;IAe7B;;;;;OAKG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCvC;;;;;;;;OAQG;YACW,sBAAsB;YAqBtB,WAAW;IAkHzB;;;OAGG;YACW,oBAAoB;IA4BlC;;;OAGG;YACW,6BAA6B;IAsB3C,OAAO,CAAC,cAAc;YAIR,kBAAkB;IAahC;;;OAGG;YACW,oBAAoB;IAqB5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BhB,oBAAoB;IA8L5B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAYxC"}
|
|
@@ -2,8 +2,8 @@ import fs from 'node:fs/promises';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { simpleGit } from 'simple-git';
|
|
4
4
|
import lockfile from 'proper-lockfile';
|
|
5
|
-
import { Octokit } from '@octokit/rest';
|
|
6
5
|
import { dequeueTask, completeTask, failTask, retryTask, recoverOrphanedTasks, cleanupOldTasks, cmsTaskQueueLogger, } from './task-queue.js';
|
|
6
|
+
import { createOrUpdatePullRequest, createCanopyOctokit } from '../github-service.js';
|
|
7
7
|
import { getBranchMetadataFileManager, BranchMetadataFileManager } from '../branch-metadata.js';
|
|
8
8
|
import { extractIdFromFilename } from '../content-id-index.js';
|
|
9
9
|
import { invalidateContentIndexesDurable } from '../content-index-generation.js';
|
|
@@ -29,9 +29,12 @@ export class PermanentTaskError extends Error {
|
|
|
29
29
|
* - HTTP 408 (request timeout) and 429 (rate limited)
|
|
30
30
|
* - HTTP 403 that carries a rate-limit signal (see `isRateLimitSignal403`):
|
|
31
31
|
* GitHub returns 403, not 429, for both primary and secondary/abuse rate
|
|
32
|
-
* limits
|
|
33
|
-
* this carve-out
|
|
34
|
-
*
|
|
32
|
+
* limits. The throttling plugin (see github-service.ts createCanopyOctokit)
|
|
33
|
+
* proactively retries short waits, but this carve-out remains the safety
|
|
34
|
+
* net for waits the plugin gives up on (`shouldRetryRateLimit`/
|
|
35
|
+
* `shouldRetrySecondaryRateLimit`) and for errors it never sees — without
|
|
36
|
+
* it a rate-limited push-and-create-or-update-pr task would fail
|
|
37
|
+
* permanently and wedge the branch (`sync-failed`, no retry).
|
|
35
38
|
* - HTTP 5xx (server-side, usually recovers)
|
|
36
39
|
*
|
|
37
40
|
* Permanent — retrying the identical request cannot succeed:
|
|
@@ -127,7 +130,7 @@ export class CmsWorker {
|
|
|
127
130
|
this.activeOperations = new Set();
|
|
128
131
|
this.releaseLockFn = null;
|
|
129
132
|
this.log = cmsTaskQueueLogger;
|
|
130
|
-
this.octokit =
|
|
133
|
+
this.octokit = createCanopyOctokit({ auth: config.githubToken });
|
|
131
134
|
this.taskDir = path.join(config.workspacePath, '.tasks');
|
|
132
135
|
this.remoteGitPath = path.join(config.workspacePath, 'remote.git');
|
|
133
136
|
this.contentBranchesPath = path.join(config.workspacePath, 'content-branches');
|
|
@@ -404,48 +407,28 @@ export class CmsWorker {
|
|
|
404
407
|
// completed on GitHub but branch metadata never recorded the PR
|
|
405
408
|
// number) recovers the existing PR instead of hitting the 422 that
|
|
406
409
|
// a blind `pulls.create` would throw on a duplicate head+base.
|
|
410
|
+
// Delegates to the shared helper (also used by GitHubService's
|
|
411
|
+
// direct-API path) so the list->tiebreak->update/create logic and
|
|
412
|
+
// the draft->ready conversion live in one place.
|
|
407
413
|
const branch = requireString(payload, 'branch');
|
|
408
414
|
await this.pushBranchToGitHub(branch);
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
owner: this.config.githubOwner,
|
|
412
|
-
repo: this.config.githubRepo,
|
|
413
|
-
head: `${this.config.githubOwner}:${branch}`,
|
|
414
|
-
base: optionalString(payload, 'baseBranch', this.baseBranch),
|
|
415
|
-
state: 'open',
|
|
416
|
-
request: { signal },
|
|
417
|
-
});
|
|
418
|
-
if (existingPRs.data.length > 0) {
|
|
419
|
-
// GIT-M5: GitHub disallows more than one open PR for a given
|
|
420
|
-
// head+base pair, so this should always be a single match. Guard
|
|
421
|
-
// against blindly trusting array order anyway.
|
|
422
|
-
let existing = existingPRs.data[0];
|
|
423
|
-
if (existingPRs.data.length > 1) {
|
|
424
|
-
existing = [...existingPRs.data].sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime())[0];
|
|
425
|
-
console.warn(`Found ${existingPRs.data.length} open PRs for ${branch}; updating the most recently updated (#${existing.number})`);
|
|
426
|
-
}
|
|
427
|
-
await this.octokit.pulls.update({
|
|
428
|
-
owner: this.config.githubOwner,
|
|
429
|
-
repo: this.config.githubRepo,
|
|
430
|
-
pull_number: existing.number,
|
|
431
|
-
title: optionalString(payload, 'title', `Submit ${branch}`),
|
|
432
|
-
body: optionalString(payload, 'body', ''),
|
|
433
|
-
request: { signal },
|
|
434
|
-
});
|
|
435
|
-
console.log(`Updated existing PR #${existing.number} for ${branch}`);
|
|
436
|
-
return { prUrl: existing.html_url, prNumber: existing.number };
|
|
437
|
-
}
|
|
438
|
-
const newPr = await this.octokit.pulls.create({
|
|
415
|
+
const result = await createOrUpdatePullRequest({
|
|
416
|
+
octokit: this.octokit,
|
|
439
417
|
owner: this.config.githubOwner,
|
|
440
418
|
repo: this.config.githubRepo,
|
|
441
419
|
head: branch,
|
|
442
420
|
base: optionalString(payload, 'baseBranch', this.baseBranch),
|
|
443
421
|
title: optionalString(payload, 'title', `Submit ${branch}`),
|
|
444
422
|
body: optionalString(payload, 'body', ''),
|
|
445
|
-
|
|
423
|
+
// Content submits (api/github-sync.ts) set this; settings-branch
|
|
424
|
+
// syncs (services.ts) deliberately don't.
|
|
425
|
+
markReadyIfDraft: payload.markReadyIfDraft === true,
|
|
426
|
+
signal,
|
|
446
427
|
});
|
|
447
|
-
console.log(
|
|
448
|
-
|
|
428
|
+
console.log(result.created
|
|
429
|
+
? `Created PR #${result.number} for ${branch}`
|
|
430
|
+
: `Updated existing PR #${result.number} for ${branch}`);
|
|
431
|
+
return { prUrl: result.url, prNumber: result.number };
|
|
449
432
|
}
|
|
450
433
|
case 'convert-to-draft': {
|
|
451
434
|
const draftPrNumber = requireNumber(payload, 'pullRequestNumber');
|