@se-studio/contentful-cms 3.5.3 → 3.6.1
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 +12 -0
- package/HOSTED.md +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +2 -2
- package/dist/cli/runner.js.map +1 -1
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +13 -6
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +12 -5
- package/dist/commands/peek.js.map +1 -1
- package/dist/config/hosted.d.ts.map +1 -1
- package/dist/config/hosted.js +3 -0
- package/dist/config/hosted.js.map +1 -1
- package/dist/contentful/cda-sync.d.ts.map +1 -1
- package/dist/contentful/cda-sync.js +11 -4
- package/dist/contentful/cda-sync.js.map +1 -1
- package/dist/contentful/client.d.ts +1 -0
- package/dist/contentful/client.d.ts.map +1 -1
- package/dist/contentful/client.js +42 -15
- package/dist/contentful/client.js.map +1 -1
- package/dist/contentful/cma-user-agent.d.ts +1 -1
- package/dist/contentful/fetch.d.ts +3 -1
- package/dist/contentful/fetch.d.ts.map +1 -1
- package/dist/contentful/fetch.js +8 -8
- package/dist/contentful/fetch.js.map +1 -1
- package/dist/contentful/linkedEntryFields.d.ts +3 -1
- package/dist/contentful/linkedEntryFields.d.ts.map +1 -1
- package/dist/contentful/linkedEntryFields.js +8 -6
- package/dist/contentful/linkedEntryFields.js.map +1 -1
- package/dist/generated/hosted-guide.d.ts +1 -1
- package/dist/generated/hosted-guide.d.ts.map +1 -1
- package/dist/generated/hosted-guide.js +1 -1
- package/dist/generated/hosted-guide.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/hosted/index.d.ts +3 -1
- package/dist/hosted/index.d.ts.map +1 -1
- package/dist/hosted/index.js +3 -1
- package/dist/hosted/index.js.map +1 -1
- package/dist/hosted/next/routes/mcp.d.ts.map +1 -1
- package/dist/hosted/next/routes/mcp.js +12 -2
- package/dist/hosted/next/routes/mcp.js.map +1 -1
- package/dist/hosted/oauth/handlers.d.ts +1 -1
- package/dist/hosted/oauth/handlers.d.ts.map +1 -1
- package/dist/hosted/oauth/handlers.js +7 -1
- package/dist/hosted/oauth/handlers.js.map +1 -1
- package/dist/hosted/oauth/pat-cache.d.ts +11 -0
- package/dist/hosted/oauth/pat-cache.d.ts.map +1 -0
- package/dist/hosted/oauth/pat-cache.js +42 -0
- package/dist/hosted/oauth/pat-cache.js.map +1 -0
- package/dist/hosted/oauth/refresh.d.ts.map +1 -1
- package/dist/hosted/oauth/refresh.js +4 -5
- package/dist/hosted/oauth/refresh.js.map +1 -1
- package/dist/hosted/oauth/store.d.ts +13 -1
- package/dist/hosted/oauth/store.d.ts.map +1 -1
- package/dist/hosted/oauth/store.js +55 -9
- package/dist/hosted/oauth/store.js.map +1 -1
- package/dist/index/hydrate.d.ts +5 -1
- package/dist/index/hydrate.d.ts.map +1 -1
- package/dist/index/hydrate.js +4 -2
- package/dist/index/hydrate.js.map +1 -1
- package/dist/index/invalidate.d.ts +5 -1
- package/dist/index/invalidate.d.ts.map +1 -1
- package/dist/index/invalidate.js +72 -18
- package/dist/index/invalidate.js.map +1 -1
- package/dist/index/patch-index.d.ts.map +1 -1
- package/dist/index/patch-index.js +42 -2
- package/dist/index/patch-index.js.map +1 -1
- package/dist/index/query.d.ts +1 -0
- package/dist/index/query.d.ts.map +1 -1
- package/dist/index/query.js +8 -0
- package/dist/index/query.js.map +1 -1
- package/dist/index/require.d.ts.map +1 -1
- package/dist/index/require.js +4 -1
- package/dist/index/require.js.map +1 -1
- package/dist/mcp/tools/cms-edit.d.ts +1 -1
- package/dist/mcp/tools/cms-edit.d.ts.map +1 -1
- package/dist/mcp/tools/cms-edit.js +2 -1
- package/dist/mcp/tools/cms-edit.js.map +1 -1
- package/dist/runtime/context.d.ts +2 -0
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js.map +1 -1
- package/dist/telemetry/enrich.d.ts.map +1 -1
- package/dist/telemetry/enrich.js +9 -0
- package/dist/telemetry/enrich.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -0
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +1 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/request-stats.d.ts +15 -0
- package/dist/telemetry/request-stats.d.ts.map +1 -0
- package/dist/telemetry/request-stats.js +34 -0
- package/dist/telemetry/request-stats.js.map +1 -0
- package/dist/telemetry/types.d.ts +6 -0
- package/dist/telemetry/types.d.ts.map +1 -1
- package/docs/help/workflow.md +3 -1
- package/docs/mcp/hosted-guide.md +4 -1
- package/package.json +1 -1
- package/skills/core/SKILL.md +5 -0
- package/skills/setup/SKILL.md +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pat-cache.d.ts","sourceRoot":"","sources":["../../../src/hosted/oauth/pat-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExF,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,8BAA8B,QAAU,CAAC;AAItD,wBAAgB,uBAAuB,IAAI,MAAM,CAMhD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,EAAE,GAAG,SAAa,GAAG,OAAO,CAKzF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,sBAAsB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAkB5B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { validatePatForDeployment } from '../../config/hosted.js';
|
|
2
|
+
export const DEFAULT_PAT_REVALIDATE_SECONDS = 15 * 60;
|
|
3
|
+
const MIN_PAT_REVALIDATE_SECONDS = 60;
|
|
4
|
+
const MAX_PAT_REVALIDATE_SECONDS = 24 * 60 * 60;
|
|
5
|
+
export function getPatRevalidateSeconds() {
|
|
6
|
+
const raw = process.env['CMS_EDIT_PAT_REVALIDATE_SECONDS']?.trim();
|
|
7
|
+
if (!raw)
|
|
8
|
+
return DEFAULT_PAT_REVALIDATE_SECONDS;
|
|
9
|
+
const parsed = Number.parseInt(raw, 10);
|
|
10
|
+
if (Number.isNaN(parsed))
|
|
11
|
+
return DEFAULT_PAT_REVALIDATE_SECONDS;
|
|
12
|
+
return Math.min(MAX_PAT_REVALIDATE_SECONDS, Math.max(MIN_PAT_REVALIDATE_SECONDS, parsed));
|
|
13
|
+
}
|
|
14
|
+
export function isCachedPatFresh(record, now = Date.now()) {
|
|
15
|
+
if (!record.userId || !record.email || !record.lastValidatedAt)
|
|
16
|
+
return false;
|
|
17
|
+
const validatedAt = Date.parse(record.lastValidatedAt);
|
|
18
|
+
if (Number.isNaN(validatedAt))
|
|
19
|
+
return false;
|
|
20
|
+
return now - validatedAt < getPatRevalidateSeconds() * 1000;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Use a cached PAT identity when still fresh; otherwise live-validate against CMA
|
|
24
|
+
* and rewrite the Redis envelope.
|
|
25
|
+
*/
|
|
26
|
+
export async function resolvePatForDeployment(store, sub, token, deployment) {
|
|
27
|
+
const record = await store.getContentfulTokenRecord(sub, deployment.spaceId);
|
|
28
|
+
if (record &&
|
|
29
|
+
record.token === token &&
|
|
30
|
+
isCachedPatFresh(record) &&
|
|
31
|
+
record.userId &&
|
|
32
|
+
record.email) {
|
|
33
|
+
return { token, userId: record.userId, email: record.email };
|
|
34
|
+
}
|
|
35
|
+
const user = await validatePatForDeployment(token, deployment);
|
|
36
|
+
await store.storeContentfulToken(sub, user.token, deployment.spaceId, {
|
|
37
|
+
userId: user.userId,
|
|
38
|
+
email: user.email,
|
|
39
|
+
});
|
|
40
|
+
return user;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=pat-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pat-cache.js","sourceRoot":"","sources":["../../../src/hosted/oauth/pat-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,EAAE,CAAC;AACtD,MAAM,0BAA0B,GAAG,EAAE,CAAC;AACtC,MAAM,0BAA0B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEhD,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,GAAG;QAAE,OAAO,8BAA8B,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,8BAA8B,CAAC;IAChE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAA6B,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9E,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,GAAG,GAAG,WAAW,GAAG,uBAAuB,EAAE,GAAG,IAAI,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAiB,EACjB,GAAW,EACX,KAAa,EACb,UAAkC;IAElC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7E,IACE,MAAM;QACN,MAAM,CAAC,KAAK,KAAK,KAAK;QACtB,gBAAgB,CAAC,MAAM,CAAC;QACxB,MAAM,CAAC,MAAM;QACb,MAAM,CAAC,KAAK,EACZ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE;QACpE,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/hosted/oauth/refresh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/hosted/oauth/refresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,8BAA8B,GACtC,uBAAuB,GACvB,yBAAyB,GACzB,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,CAAC;AAE/B,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;gBAEpC,MAAM,EAAE,8BAA8B,EAAE,OAAO,CAAC,EAAE,MAAM;CAKrE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE;IACL,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,GACA,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAyCD"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
1
|
import { isCachedContentfulTokenError, loadAndValidateContentfulToken } from './cached-cma.js';
|
|
3
2
|
import { signMcpAccessToken } from './jwt.js';
|
|
4
3
|
export class RefreshTokenGrantError extends Error {
|
|
@@ -33,15 +32,15 @@ export async function completeRefreshTokenGrant(store, input) {
|
|
|
33
32
|
}
|
|
34
33
|
throw error;
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await store.saveRefreshToken(
|
|
35
|
+
// Reuse the UUID; save to slide Redis TTL. Rotation breaks clients that retry
|
|
36
|
+
// with the old token.
|
|
37
|
+
await store.saveRefreshToken(input.refreshToken, record);
|
|
39
38
|
const { accessToken, expiresIn } = await signMcpAccessToken(record.sub, record.resource);
|
|
40
39
|
return {
|
|
41
40
|
accessToken,
|
|
42
41
|
tokenType: 'Bearer',
|
|
43
42
|
expiresIn,
|
|
44
|
-
refreshToken:
|
|
43
|
+
refreshToken: input.refreshToken,
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
46
|
//# sourceMappingURL=refresh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/hosted/oauth/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../../src/hosted/oauth/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAU9C,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,MAAM,CAAiC;IAEhD,YAAY,MAAsC,EAAE,OAAgB;QAClE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,sBAAsB,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,KAAiB,EACjB,KAQC;IAOD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,sBAAsB,CAAC,uBAAuB,EAAE,mCAAmC,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,sBAAsB,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzD,MAAM,IAAI,sBAAsB,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,8BAA8B,CAClC,KAAK,EACL,MAAM,CAAC,GAAG,EACV,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,uBAAuB,CAC9B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,IAAI,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,sBAAsB;IACtB,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEzD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEzF,OAAO;QACL,WAAW;QACX,SAAS,EAAE,QAAQ;QACnB,SAAS;QACT,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -22,6 +22,14 @@ export interface RefreshTokenRecord {
|
|
|
22
22
|
clientId: string;
|
|
23
23
|
resource: string;
|
|
24
24
|
}
|
|
25
|
+
/** Redis value for a cached CMA PAT. Legacy keys store the raw token string. */
|
|
26
|
+
export interface CachedContentfulToken {
|
|
27
|
+
token: string;
|
|
28
|
+
userId?: string;
|
|
29
|
+
email?: string;
|
|
30
|
+
lastValidatedAt?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function parseCachedContentfulToken(raw: unknown): CachedContentfulToken | null;
|
|
25
33
|
/**
|
|
26
34
|
* Contentful CMA token cache key — space-scoped for shared Redis across hosts.
|
|
27
35
|
*/
|
|
@@ -50,8 +58,12 @@ export interface OAuthStore {
|
|
|
50
58
|
saveAuthCode(code: string, record: AuthCodeRecord): Promise<void>;
|
|
51
59
|
peekAuthCode(code: string): Promise<AuthCodeRecord | null>;
|
|
52
60
|
consumeAuthCode(code: string): Promise<AuthCodeRecord | null>;
|
|
53
|
-
storeContentfulToken(sub: string, token: string, spaceId?: string
|
|
61
|
+
storeContentfulToken(sub: string, token: string, spaceId?: string, identity?: {
|
|
62
|
+
userId: string;
|
|
63
|
+
email: string;
|
|
64
|
+
}): Promise<void>;
|
|
54
65
|
getContentfulToken(sub: string, spaceId?: string): Promise<string | null>;
|
|
66
|
+
getContentfulTokenRecord(sub: string, spaceId?: string): Promise<CachedContentfulToken | null>;
|
|
55
67
|
/** Slide CMA TTL only after Contentful accepted the token. */
|
|
56
68
|
touchContentfulToken(sub: string, spaceId?: string): Promise<void>;
|
|
57
69
|
deleteContentfulToken(sub: string, spaceId?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/hosted/oauth/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,8FAA8F;AAC9F,eAAO,MAAM,4BAA4B,QAAoB,CAAC;AAG9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAcD,MAAM,WAAW,UAAU;IACzB,mBAAmB,CAAC,KAAK,EAAE;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IAC1E,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACjF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9D,oBAAoB,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/hosted/oauth/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,34 @@ const AUTH_CODE_TTL_SECONDS = 120;
|
|
|
4
4
|
/** Match MCP refresh lifetime so CMA cache does not die while Grok can still refresh JWTs. */
|
|
5
5
|
export const CONTENTFUL_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;
|
|
6
6
|
const REFRESH_TOKEN_TTL_SECONDS = CONTENTFUL_TOKEN_TTL_SECONDS;
|
|
7
|
+
export function parseCachedContentfulToken(raw) {
|
|
8
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
const trimmed = raw.trim();
|
|
11
|
+
if (trimmed.startsWith('{')) {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(trimmed);
|
|
14
|
+
if (typeof parsed.token === 'string' && parsed.token.length > 0) {
|
|
15
|
+
return {
|
|
16
|
+
token: parsed.token,
|
|
17
|
+
...(typeof parsed.userId === 'string' ? { userId: parsed.userId } : {}),
|
|
18
|
+
...(typeof parsed.email === 'string' ? { email: parsed.email } : {}),
|
|
19
|
+
...(typeof parsed.lastValidatedAt === 'string'
|
|
20
|
+
? { lastValidatedAt: parsed.lastValidatedAt }
|
|
21
|
+
: {}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return { token: raw };
|
|
31
|
+
}
|
|
32
|
+
function serializeCachedContentfulToken(record) {
|
|
33
|
+
return JSON.stringify(record);
|
|
34
|
+
}
|
|
7
35
|
/**
|
|
8
36
|
* Contentful CMA token cache key — space-scoped for shared Redis across hosts.
|
|
9
37
|
*/
|
|
@@ -95,29 +123,47 @@ export function createOAuthStore(redis) {
|
|
|
95
123
|
await redis.del(key);
|
|
96
124
|
return parseAuthCodeRecord(raw);
|
|
97
125
|
},
|
|
98
|
-
async storeContentfulToken(sub, token, spaceId) {
|
|
126
|
+
async storeContentfulToken(sub, token, spaceId, identity) {
|
|
99
127
|
const resolved = resolveOAuthSpaceId(spaceId);
|
|
100
128
|
if (!resolved) {
|
|
101
129
|
throw new Error('CONTENTFUL_SPACE_ID (or explicit spaceId) is required to store Contentful OAuth tokens');
|
|
102
130
|
}
|
|
103
131
|
const key = contentfulTokenKey(sub, resolved);
|
|
104
|
-
|
|
132
|
+
const record = {
|
|
133
|
+
token,
|
|
134
|
+
...(identity
|
|
135
|
+
? {
|
|
136
|
+
userId: identity.userId,
|
|
137
|
+
email: identity.email,
|
|
138
|
+
lastValidatedAt: new Date().toISOString(),
|
|
139
|
+
}
|
|
140
|
+
: {}),
|
|
141
|
+
};
|
|
142
|
+
await redis.set(key, serializeCachedContentfulToken(record), {
|
|
143
|
+
ex: CONTENTFUL_TOKEN_TTL_SECONDS,
|
|
144
|
+
});
|
|
105
145
|
},
|
|
106
146
|
async getContentfulToken(sub, spaceId) {
|
|
147
|
+
const record = await this.getContentfulTokenRecord(sub, spaceId);
|
|
148
|
+
return record?.token ?? null;
|
|
149
|
+
},
|
|
150
|
+
async getContentfulTokenRecord(sub, spaceId) {
|
|
107
151
|
const resolved = resolveOAuthSpaceId(spaceId);
|
|
108
152
|
if (!resolved) {
|
|
109
153
|
return null;
|
|
110
154
|
}
|
|
111
155
|
const key = contentfulTokenKey(sub, resolved);
|
|
112
|
-
const
|
|
113
|
-
if (
|
|
114
|
-
return
|
|
115
|
-
}
|
|
156
|
+
const scoped = parseCachedContentfulToken(await redis.get(key));
|
|
157
|
+
if (scoped)
|
|
158
|
+
return scoped;
|
|
116
159
|
// Soft cutover: pre-3.4.5 unscoped tokens (same Redis / shared cmsedit-sessions).
|
|
117
160
|
// Migrate into the space-scoped key so subsequent hosts stay isolated.
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
161
|
+
const legacyRaw = await redis.get(legacyContentfulTokenKey(sub));
|
|
162
|
+
const legacy = parseCachedContentfulToken(legacyRaw);
|
|
163
|
+
if (legacy) {
|
|
164
|
+
await redis.set(key, serializeCachedContentfulToken(legacy), {
|
|
165
|
+
ex: CONTENTFUL_TOKEN_TTL_SECONDS,
|
|
166
|
+
});
|
|
121
167
|
return legacy;
|
|
122
168
|
}
|
|
123
169
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/hosted/oauth/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAC9D,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/hosted/oauth/store.ts"],"names":[],"mappings":"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"}
|
package/dist/index/hydrate.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { SpaceConfig } from '../config/types.js';
|
|
2
|
+
export interface HydrateIndexOptions {
|
|
3
|
+
/** Restore even when a newer invalidation marker exists (save-path patch + republish). */
|
|
4
|
+
ignoreInvalidation?: boolean;
|
|
5
|
+
}
|
|
2
6
|
/** Restores a local SQLite index from a shared cache blob when missing and not invalidated. */
|
|
3
|
-
export declare function tryHydrateIndexFromCache(space: SpaceConfig, preview?: boolean): Promise<boolean>;
|
|
7
|
+
export declare function tryHydrateIndexFromCache(space: SpaceConfig, preview?: boolean, opts?: HydrateIndexOptions): Promise<boolean>;
|
|
4
8
|
//# sourceMappingURL=hydrate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../src/index/hydrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,+FAA+F;AAC/F,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../src/index/hydrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOtD,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,+FAA+F;AAC/F,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,OAAO,EACjB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAqBlB"}
|
package/dist/index/hydrate.js
CHANGED
|
@@ -4,7 +4,7 @@ import { getIndexCacheStore } from './cache-store.js';
|
|
|
4
4
|
import { resolveIndexPreview } from './mode.js';
|
|
5
5
|
import { ensureIndexDirectory, getIndexDbPath, indexExists } from './paths.js';
|
|
6
6
|
/** Restores a local SQLite index from a shared cache blob when missing and not invalidated. */
|
|
7
|
-
export async function tryHydrateIndexFromCache(space, preview) {
|
|
7
|
+
export async function tryHydrateIndexFromCache(space, preview, opts = {}) {
|
|
8
8
|
const usePreview = resolveIndexPreview(preview);
|
|
9
9
|
if (indexExists(space, usePreview))
|
|
10
10
|
return false;
|
|
@@ -13,7 +13,9 @@ export async function tryHydrateIndexFromCache(space, preview) {
|
|
|
13
13
|
const [inv, blob] = await Promise.all([cache.getInvalidation(key), cache.getBlob(key)]);
|
|
14
14
|
if (!blob)
|
|
15
15
|
return false;
|
|
16
|
-
if (
|
|
16
|
+
if (!opts.ignoreInvalidation &&
|
|
17
|
+
inv &&
|
|
18
|
+
Date.parse(inv.invalidatedAt) > Date.parse(blob.meta.syncedAt)) {
|
|
17
19
|
return false;
|
|
18
20
|
}
|
|
19
21
|
ensureIndexDirectory(space, usePreview);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../src/index/hydrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../src/index/hydrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO/E,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAkB,EAClB,OAAiB,EACjB,OAA4B,EAAE;IAE9B,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,IACE,CAAC,IAAI,CAAC,kBAAkB;QACxB,GAAG;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC9D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACjD,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -19,6 +19,10 @@ export interface NotifyContentIndexChangedOptions {
|
|
|
19
19
|
}>;
|
|
20
20
|
upsertAssets?: CdaAssetRecord[];
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Patches the local catalog from the saved session and republishes the Redis blob
|
|
24
|
+
* so the next lambda can hydrate instead of a full Preview rebuild.
|
|
25
|
+
* Catalog-type slug changes still leave invalidation so the next reader CPA-repairs dependents.
|
|
26
|
+
*/
|
|
23
27
|
export declare function notifyContentIndexChanged(space: SpaceConfig, opts?: NotifyContentIndexChangedOptions): Promise<void>;
|
|
24
28
|
//# sourceMappingURL=invalidate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidate.d.ts","sourceRoot":"","sources":["../../src/index/invalidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"invalidate.d.ts","sourceRoot":"","sources":["../../src/index/invalidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAYlF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAKtD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,OAAO,CAAC,EAAE;QACR,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACzC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;KAClD,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,kBAAkB,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAC/E,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;CACjC;AAqCD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,gCAAqC,GAC1C,OAAO,CAAC,IAAI,CAAC,CAyEf"}
|
package/dist/index/invalidate.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import { indexCacheKeyFromSpace } from './cache-keys.js';
|
|
2
2
|
import { getIndexCacheStore } from './cache-store.js';
|
|
3
|
+
import { openIndexDatabase, setMeta } from './db.js';
|
|
4
|
+
import { withDistributedIndexSyncLock } from './distributed-sync-lock.js';
|
|
5
|
+
import { tryHydrateIndexFromCache } from './hydrate.js';
|
|
6
|
+
import { resolveIndexPreview } from './mode.js';
|
|
3
7
|
import { patchIndexFromAssets, patchIndexFromCreatedEntries, patchIndexFromSavedEntries, } from './patch-index.js';
|
|
8
|
+
import { getIndexDbPath, indexExists } from './paths.js';
|
|
9
|
+
import { publishIndexCache } from './publish-cache.js';
|
|
4
10
|
import { isCatalogContentType } from './schema.js';
|
|
11
|
+
import { readIndexStatus } from './sync.js';
|
|
12
|
+
import { IndexSyncLockError } from './sync-lock.js';
|
|
5
13
|
function pickSlug(entry, locale) {
|
|
6
14
|
const slugField = entry.fields['slug'];
|
|
7
15
|
if (!slugField)
|
|
@@ -26,7 +34,8 @@ function resolveInvalidationMode(opts) {
|
|
|
26
34
|
const original = session.originalEntries[id];
|
|
27
35
|
if (!entry || !original)
|
|
28
36
|
continue;
|
|
29
|
-
|
|
37
|
+
const contentType = entry.sys.contentType.sys.id;
|
|
38
|
+
if (contentType !== 'articleType' && contentType !== 'tagType')
|
|
30
39
|
continue;
|
|
31
40
|
if (pickSlug(entry, session.defaultLocale) !== pickSlug(original, session.defaultLocale)) {
|
|
32
41
|
return 'full';
|
|
@@ -35,26 +44,71 @@ function resolveInvalidationMode(opts) {
|
|
|
35
44
|
}
|
|
36
45
|
return 'incremental';
|
|
37
46
|
}
|
|
38
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Patches the local catalog from the saved session and republishes the Redis blob
|
|
49
|
+
* so the next lambda can hydrate instead of a full Preview rebuild.
|
|
50
|
+
* Catalog-type slug changes still leave invalidation so the next reader CPA-repairs dependents.
|
|
51
|
+
*/
|
|
39
52
|
export async function notifyContentIndexChanged(space, opts = {}) {
|
|
40
|
-
const
|
|
53
|
+
const preview = resolveIndexPreview();
|
|
41
54
|
const cache = getIndexCacheStore();
|
|
42
|
-
const key = indexCacheKeyFromSpace(space);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
const key = indexCacheKeyFromSpace(space, preview);
|
|
56
|
+
const mode = resolveInvalidationMode(opts);
|
|
57
|
+
const dbPath = getIndexDbPath(space, preview);
|
|
58
|
+
try {
|
|
59
|
+
await withDistributedIndexSyncLock(space, preview, dbPath, async () => {
|
|
60
|
+
if (!indexExists(space, preview)) {
|
|
61
|
+
await tryHydrateIndexFromCache(space, preview, { ignoreInvalidation: true });
|
|
62
|
+
}
|
|
63
|
+
if (opts.session) {
|
|
64
|
+
patchIndexFromSavedEntries(space, opts.session.defaultLocale, opts.savedEntryIds ?? [], opts.deletedEntryIds ?? [], opts.session.entries);
|
|
65
|
+
}
|
|
66
|
+
if (opts.createdEntries?.length) {
|
|
67
|
+
patchIndexFromCreatedEntries(space, space.defaultLocale, opts.createdEntries);
|
|
68
|
+
}
|
|
69
|
+
if (opts.upsertAssets?.length) {
|
|
70
|
+
patchIndexFromAssets(space, opts.upsertAssets);
|
|
71
|
+
}
|
|
72
|
+
if (!indexExists(space, preview)) {
|
|
73
|
+
await cache.setInvalidation(key, {
|
|
74
|
+
invalidatedAt: new Date().toISOString(),
|
|
75
|
+
mode,
|
|
76
|
+
});
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const syncedAt = new Date().toISOString();
|
|
80
|
+
const db = openIndexDatabase(dbPath);
|
|
81
|
+
setMeta(db, 'syncedAt', syncedAt);
|
|
82
|
+
db.close();
|
|
83
|
+
const status = readIndexStatus(space, preview);
|
|
84
|
+
await publishIndexCache(space, preview, {
|
|
85
|
+
dbPath: status.dbPath,
|
|
86
|
+
assetCount: status.assetCount ?? 0,
|
|
87
|
+
mediaCount: status.mediaCount ?? 0,
|
|
88
|
+
referenceCount: status.referenceCount ?? 0,
|
|
89
|
+
syncedAt,
|
|
90
|
+
syncMode: 'incremental',
|
|
91
|
+
});
|
|
92
|
+
if (mode === 'full') {
|
|
93
|
+
await cache.setInvalidation(key, {
|
|
94
|
+
invalidatedAt: new Date(Date.parse(syncedAt) + 1).toISOString(),
|
|
95
|
+
mode: 'full',
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
await cache.clearInvalidation(key);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
55
102
|
}
|
|
56
|
-
|
|
57
|
-
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (err instanceof IndexSyncLockError) {
|
|
105
|
+
await cache.setInvalidation(key, {
|
|
106
|
+
invalidatedAt: new Date().toISOString(),
|
|
107
|
+
mode,
|
|
108
|
+
});
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
throw err;
|
|
58
112
|
}
|
|
59
113
|
}
|
|
60
114
|
//# sourceMappingURL=invalidate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../src/index/invalidate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAA8B,MAAM,kBAAkB,CAAC;AAClF,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../src/index/invalidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-index.d.ts","sourceRoot":"","sources":["../../src/index/patch-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"patch-index.d.ts","sourceRoot":"","sources":["../../src/index/patch-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAwEtD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACvC,IAAI,CAyBN;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,KAAK,CAAC;IAAE,WAAW,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GACrE,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAIvF"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { normalizeSlug } from '../contentful/fetch.js';
|
|
2
|
+
import { isEntryLink } from '../contentful/linkedEntryFields.js';
|
|
1
3
|
import { referenceRowFromCmaEntry } from '../contentful/reference-record.js';
|
|
4
|
+
import { findReferenceById } from './query.js';
|
|
2
5
|
import { isCatalogContentType } from './schema.js';
|
|
3
6
|
import { deleteReferenceRow, upsertAssetRow, upsertReferenceRow } from './sync.js';
|
|
4
7
|
function entryLikeFromSerialized(entry) {
|
|
@@ -7,6 +10,43 @@ function entryLikeFromSerialized(entry) {
|
|
|
7
10
|
fields: entry.fields,
|
|
8
11
|
};
|
|
9
12
|
}
|
|
13
|
+
function localizedField(fields, fieldId, locale) {
|
|
14
|
+
const field = fields[fieldId];
|
|
15
|
+
if (!field)
|
|
16
|
+
return undefined;
|
|
17
|
+
return field[locale] ?? field['en-US'];
|
|
18
|
+
}
|
|
19
|
+
function linkedEntryId(fields, fieldId, locale) {
|
|
20
|
+
const val = localizedField(fields, fieldId, locale);
|
|
21
|
+
return isEntryLink(val) ? val.sys.id : undefined;
|
|
22
|
+
}
|
|
23
|
+
function slugFromSessionOrIndex(space, entries, locale, entryId) {
|
|
24
|
+
if (!entryId)
|
|
25
|
+
return null;
|
|
26
|
+
const fromSession = entries?.[entryId];
|
|
27
|
+
if (fromSession) {
|
|
28
|
+
const raw = localizedField(fromSession.fields, 'slug', locale);
|
|
29
|
+
if (raw != null)
|
|
30
|
+
return normalizeSlug(String(raw));
|
|
31
|
+
}
|
|
32
|
+
const indexed = findReferenceById(space, entryId);
|
|
33
|
+
return indexed?.slug ?? null;
|
|
34
|
+
}
|
|
35
|
+
function parentSlugsForCatalogRow(space, contentType, fields, locale, entryId, entries) {
|
|
36
|
+
if (contentType === 'article') {
|
|
37
|
+
const typeId = linkedEntryId(fields, 'articleType', locale);
|
|
38
|
+
const fromParent = slugFromSessionOrIndex(space, entries, locale, typeId);
|
|
39
|
+
return {
|
|
40
|
+
articleTypeSlug: fromParent ?? findReferenceById(space, entryId)?.articleTypeSlug ?? null,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (contentType === 'tag') {
|
|
44
|
+
const typeId = linkedEntryId(fields, 'tagType', locale);
|
|
45
|
+
const fromParent = slugFromSessionOrIndex(space, entries, locale, typeId);
|
|
46
|
+
return { tagTypeSlug: fromParent ?? findReferenceById(space, entryId)?.tagTypeSlug ?? null };
|
|
47
|
+
}
|
|
48
|
+
return {};
|
|
49
|
+
}
|
|
10
50
|
export function patchIndexFromSavedEntries(space, locale, savedEntryIds, deletedEntryIds, entries) {
|
|
11
51
|
for (const id of deletedEntryIds) {
|
|
12
52
|
const entry = entries[id];
|
|
@@ -24,12 +64,12 @@ export function patchIndexFromSavedEntries(space, locale, savedEntryIds, deleted
|
|
|
24
64
|
const contentType = entry.sys.contentType.sys.id;
|
|
25
65
|
if (!isCatalogContentType(contentType))
|
|
26
66
|
continue;
|
|
27
|
-
upsertReferenceRow(space, referenceRowFromCmaEntry(contentType, entryLikeFromSerialized(entry), locale));
|
|
67
|
+
upsertReferenceRow(space, referenceRowFromCmaEntry(contentType, entryLikeFromSerialized(entry), locale, parentSlugsForCatalogRow(space, contentType, entry.fields, locale, id, entries)));
|
|
28
68
|
}
|
|
29
69
|
}
|
|
30
70
|
export function patchIndexFromCreatedEntries(space, locale, created) {
|
|
31
71
|
for (const { contentType, entry } of created) {
|
|
32
|
-
upsertReferenceRow(space, referenceRowFromCmaEntry(contentType, entry, locale));
|
|
72
|
+
upsertReferenceRow(space, referenceRowFromCmaEntry(contentType, entry, locale, parentSlugsForCatalogRow(space, contentType, entry.fields, locale, entry.sys.id)));
|
|
33
73
|
}
|
|
34
74
|
}
|
|
35
75
|
export function patchIndexFromAssets(space, assets) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-index.js","sourceRoot":"","sources":["../../src/index/patch-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"patch-index.js","sourceRoot":"","sources":["../../src/index/patch-index.ts"],"names":[],"mappings":"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"}
|
package/dist/index/query.d.ts
CHANGED
|
@@ -89,6 +89,7 @@ export declare function referenceListOrderBy(sort?: ReferenceListSort): string;
|
|
|
89
89
|
export declare function assertUniqueReferenceRows(rows: ReferenceEntryRow[], message: string): ReferenceEntryRow;
|
|
90
90
|
export declare function listReferencesBySlug(space: SpaceConfig, contentType: string, slug: string, preview?: boolean): ReferenceEntryRow[];
|
|
91
91
|
export declare function listReferencesByLabel(space: SpaceConfig, contentType: string, label: string, preview?: boolean): ReferenceEntryRow[];
|
|
92
|
+
export declare function findReferenceById(space: SpaceConfig, id: string, preview?: boolean): ReferenceEntryRow | null;
|
|
92
93
|
export declare function findReferenceBySlug(space: SpaceConfig, contentType: string, slug: string, preview?: boolean): ReferenceEntryRow | null;
|
|
93
94
|
export declare function findReferenceByLabel(space: SpaceConfig, contentType: string, label: string, preview?: boolean): ReferenceEntryRow | null;
|
|
94
95
|
export declare function listReferencesByCmsLabel(space: SpaceConfig, contentType: string, cmsLabel: string, preview?: boolean): ReferenceEntryRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/index/query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/index/query.ts"],"names":[],"mappings":"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"}
|
package/dist/index/query.js
CHANGED
|
@@ -257,6 +257,14 @@ export function listReferencesByLabel(space, contentType, label, preview) {
|
|
|
257
257
|
.all(contentType, label.trim());
|
|
258
258
|
});
|
|
259
259
|
}
|
|
260
|
+
export function findReferenceById(space, id, preview) {
|
|
261
|
+
return withIndexDb(space, preview, (db) => {
|
|
262
|
+
const row = db
|
|
263
|
+
.prepare(`SELECT ${REFERENCE_ROW_SELECT} FROM reference_entries WHERE id = ?`)
|
|
264
|
+
.get(id);
|
|
265
|
+
return row ?? null;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
260
268
|
export function findReferenceBySlug(space, contentType, slug, preview) {
|
|
261
269
|
const rows = listReferencesBySlug(space, contentType, slug, preview);
|
|
262
270
|
if (rows.length === 0)
|