@anthusai/papyrus 1.4.0-next.4 → 1.4.0-next.6
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/amplify/data/resource.js +13 -3
- package/amplify/data/resource.ts +13 -3
- package/amplify/data/schema.js +10 -0
- package/amplify/data/schema.ts +10 -0
- package/amplify/functions/category-action/handler.ts +20 -19
- package/amplify/functions/console-chat-responder/src/main.rs +1 -1
- package/amplify/functions/content-actions/handler.py +23 -0
- package/amplify/functions/content-actions/requirements.txt +1 -1
- package/amplify/functions/content-actions/resource.js +1 -1
- package/amplify/functions/content-actions/resource.ts +1 -1
- package/amplify/functions/renditions/requirements.txt +1 -1
- package/amplify/functions/shared/reference-curation-metadata.ts +15 -0
- package/amplify/functions/shared/slack-events.ts +2 -2
- package/amplify/publication/renditions-function.js +1 -1
- package/amplify/publication/renditions-function.ts +1 -1
- package/app/api/local-preview/derive/route.ts +28 -0
- package/app/api/local-preview/media/route.ts +25 -0
- package/app/globals.css +28 -28
- package/app/layout.tsx +8 -5
- package/app/newsroom/[section]/[...selection]/page.tsx +0 -1
- package/app/newsroom/[section]/page.tsx +0 -1
- package/app/newsroom/insights/[threadId]/page.tsx +5 -16
- package/app/newsroom/insights/page.tsx +4 -12
- package/components/board-card-excerpts.tsx +45 -0
- package/components/markus-ir-preview.tsx +47 -2
- package/components/news-desk-page.tsx +0 -1
- package/components/news-desk-taxonomy-client.ts +25 -220
- package/components/newsroom-article-editor.tsx +135 -39
- package/components/newsroom-assignment-detail.tsx +35 -1
- package/components/newsroom-board-view.tsx +29 -7
- package/components/newsroom-newsprint-board.css +10 -2
- package/components/newsroom-ops-overview.tsx +27 -5
- package/components/newsroom-organizer-shell.tsx +25 -7
- package/components/newsroom-organizer.css +196 -4
- package/components/priming-proof-page.tsx +17 -8
- package/components/prospectus-account-chooser.tsx +98 -0
- package/components/story-reporting-trail-client.ts +91 -0
- package/components/story-reporting-trail.tsx +115 -0
- package/components/topic-steering-workspace.tsx +154 -671
- package/components/ui/sheet.tsx +1 -0
- package/components/wiki-concepts-view.tsx +153 -0
- package/components/wiki-index-client.ts +51 -0
- package/lib/content-actions-client.ts +3 -0
- package/lib/content-actions-demo.ts +55 -3
- package/lib/content-item-lifecycle.ts +4 -2
- package/lib/content-source-context.ts +9 -1
- package/lib/front-matter-fields.ts +42 -0
- package/lib/graphql-content-repository.ts +42 -7
- package/lib/local-preview-seed.ts +55 -2
- package/lib/local-preview-tenant.ts +27 -0
- package/lib/newsroom-articles.ts +2 -0
- package/lib/newsroom-board.ts +4 -0
- package/lib/newsroom-forum-routes.ts +2 -43
- package/lib/newsroom-index-filters.ts +3 -40
- package/lib/newsroom-media-backend.ts +5 -0
- package/lib/newsroom-nav.ts +1 -3
- package/lib/newsroom-organizer-nav.ts +5 -12
- package/lib/newsroom-section-routing.ts +1 -1
- package/lib/newsroom-sections.ts +12 -0
- package/lib/papyrus-web-locations.ts +3 -24
- package/lib/priming-proof-report.ts +1 -0
- package/lib/prospectus-tenant.ts +22 -0
- package/lib/semantic-graph.ts +5 -5
- package/lib/site-brand.ts +9 -0
- package/lib/story-reporting-trail.ts +106 -0
- package/lib/tenant-keys.ts +32 -0
- package/lib/wiki.ts +56 -0
- package/package.json +15 -1
- package/routes.manifest.json +23 -7
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Everything the reporting process recorded about one story, gathered by the story's lineage id:
|
|
3
|
+
* the draft versions of the copy, the research, reporting and copywriting assignments with their events,
|
|
4
|
+
* the notes and packets in the threads anchored to the story or its assignments, the references it draws on,
|
|
5
|
+
* and attached files. See docs/content-item-lifecycle.md for how these records join.
|
|
6
|
+
*/
|
|
7
|
+
export type TrailVersion = {
|
|
8
|
+
id: string;
|
|
9
|
+
versionNumber: number;
|
|
10
|
+
versionState: string | null;
|
|
11
|
+
status: string | null;
|
|
12
|
+
stage: string | null;
|
|
13
|
+
headline: string | null;
|
|
14
|
+
changeReason: string | null;
|
|
15
|
+
versionCreatedBy: string | null;
|
|
16
|
+
versionCreatedAt: string | null;
|
|
17
|
+
updatedAt: string | null;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type TrailAssignmentEvent = {
|
|
21
|
+
id: string;
|
|
22
|
+
eventType: string;
|
|
23
|
+
fromStatus: string | null;
|
|
24
|
+
toStatus: string | null;
|
|
25
|
+
actorLabel: string | null;
|
|
26
|
+
note: string | null;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type TrailAssignment = {
|
|
31
|
+
id: string;
|
|
32
|
+
title: string;
|
|
33
|
+
assignmentTypeKey: string;
|
|
34
|
+
status: string;
|
|
35
|
+
assigneeKey: string | null;
|
|
36
|
+
summary: string | null;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
events: TrailAssignmentEvent[];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export type TrailMessage = {
|
|
42
|
+
id: string;
|
|
43
|
+
sequenceNumber?: number | null;
|
|
44
|
+
messageKind: string | null;
|
|
45
|
+
authorLabel: string | null;
|
|
46
|
+
summary: string | null;
|
|
47
|
+
content: string | null;
|
|
48
|
+
createdAt: string;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type TrailThread = {
|
|
52
|
+
id: string;
|
|
53
|
+
title: string | null;
|
|
54
|
+
threadKind: string | null;
|
|
55
|
+
summary: string | null;
|
|
56
|
+
messages: TrailMessage[];
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export type TrailReference = {
|
|
60
|
+
relationId: string;
|
|
61
|
+
predicate: string;
|
|
62
|
+
referenceId: string;
|
|
63
|
+
referenceLineageId: string | null;
|
|
64
|
+
title: string | null;
|
|
65
|
+
sourceUri: string | null;
|
|
66
|
+
/** consulted: read during reporting; cited: a citation in the article. */
|
|
67
|
+
role: "consulted" | "cited";
|
|
68
|
+
note: string | null;
|
|
69
|
+
citationKey: string | null;
|
|
70
|
+
addedBy: string | null;
|
|
71
|
+
addedAt: string | null;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export type TrailAttachment = {
|
|
75
|
+
id: string;
|
|
76
|
+
role: string | null;
|
|
77
|
+
filename: string | null;
|
|
78
|
+
mediaType: string | null;
|
|
79
|
+
byteSize: number | null;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export type StoryReportingTrail = {
|
|
83
|
+
versions: TrailVersion[];
|
|
84
|
+
assignments: TrailAssignment[];
|
|
85
|
+
threads: TrailThread[];
|
|
86
|
+
references: TrailReference[];
|
|
87
|
+
attachments: TrailAttachment[];
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const EMPTY_STORY_REPORTING_TRAIL: StoryReportingTrail = { versions: [], assignments: [], threads: [], references: [], attachments: [] };
|
|
91
|
+
|
|
92
|
+
export function storyReportingTrailIsEmpty(trail: StoryReportingTrail): boolean {
|
|
93
|
+
return trail.assignments.length === 0 && trail.threads.length === 0 && trail.references.length === 0 && trail.attachments.length === 0 && trail.versions.length <= 1;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export type StoryFeedEntry =
|
|
97
|
+
| ({ entryKind: "message"; threadTitle: string | null } & TrailMessage)
|
|
98
|
+
| { entryKind: "reference"; id: string; createdAt: string; reference: TrailReference };
|
|
99
|
+
|
|
100
|
+
/** Every message of the story's threads and every reference found for it in one chronological feed, newest first. */
|
|
101
|
+
export function storyMessageFeed(trail: StoryReportingTrail): StoryFeedEntry[] {
|
|
102
|
+
const messages: StoryFeedEntry[] = trail.threads.flatMap(thread => thread.messages.map(message => ({ ...message, entryKind: "message" as const, threadTitle: thread.title })));
|
|
103
|
+
const references: StoryFeedEntry[] = trail.references.filter(reference => reference.addedAt).map(reference => ({ entryKind: "reference" as const, id: `reference-${reference.relationId}`, createdAt: reference.addedAt as string, reference }));
|
|
104
|
+
const sequenceOf = (entry: StoryFeedEntry) => (entry.entryKind === "message" ? entry.sequenceNumber ?? 0 : 0);
|
|
105
|
+
return [...messages, ...references].sort((left, right) => right.createdAt.localeCompare(left.createdAt) || sequenceOf(right) - sequenceOf(left));
|
|
106
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const TENANT_ID_ENVIRONMENT_VARIABLE = "PAPYRUS_TENANT_ID";
|
|
2
|
+
const TENANT_KEY_SEPARATOR = "#";
|
|
3
|
+
const TENANT_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
4
|
+
|
|
5
|
+
export function validateTenantId(tenantId: string): string {
|
|
6
|
+
if (!TENANT_ID_PATTERN.test(tenantId)) {
|
|
7
|
+
throw new Error(`Tenant id "${tenantId}" must be lowercase letters, digits and hyphens, starting with a letter or digit.`);
|
|
8
|
+
}
|
|
9
|
+
return tenantId;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function tenantIdFromEnvironment(environment: NodeJS.ProcessEnv = process.env): string | undefined {
|
|
13
|
+
const configured = environment[TENANT_ID_ENVIRONMENT_VARIABLE]?.trim();
|
|
14
|
+
return configured ? validateTenantId(configured) : undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function tenantScopedValue(tenantId: string | undefined, value: string): string {
|
|
18
|
+
if (!tenantId) return value;
|
|
19
|
+
const prefix = `${tenantId}${TENANT_KEY_SEPARATOR}`;
|
|
20
|
+
return value.startsWith(prefix) ? value : `${prefix}${value}`;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function rowBelongsToTenant(tenantId: string | undefined, row: { tenantId?: string | null } | null | undefined): boolean {
|
|
24
|
+
if (!tenantId || !row) return true;
|
|
25
|
+
return row.tenantId === tenantId;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The tenant a Prospectus publishing account maps to: its id as lowercase letters, digits and hyphens. */
|
|
29
|
+
export function tenantIdForProspectusAccount(accountId: string | null | undefined): string | undefined {
|
|
30
|
+
const normalized = (accountId ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 63);
|
|
31
|
+
return normalized ? validateTenantId(normalized) : undefined;
|
|
32
|
+
}
|
package/lib/wiki.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SemanticNodeRecord } from "./category-repository";
|
|
2
|
+
|
|
3
|
+
/** The wiki's front page is an ordinary content item with this slug; its Markus body holds the dynamic components. */
|
|
4
|
+
export const WIKI_INDEX_SLUG = "wiki-index";
|
|
5
|
+
export const WIKI_PAGE_ITEM_TYPE = "wiki_page";
|
|
6
|
+
export const WIKI_CONCEPT_LINK_SCHEME = "concept:";
|
|
7
|
+
|
|
8
|
+
export const DEFAULT_WIKI_INDEX_MARKUS = `# Concept wiki
|
|
9
|
+
|
|
10
|
+
Every page in this wiki is a concept: an entity in the knowledge graph that the newsroom has reported on, researched or cited. Open one to see what it is, what it connects to, and the references behind it.
|
|
11
|
+
|
|
12
|
+
## Recently edited
|
|
13
|
+
|
|
14
|
+
::recent-concepts{limit=10}
|
|
15
|
+
|
|
16
|
+
## Browse all concepts
|
|
17
|
+
|
|
18
|
+
::concept-list
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
export function conceptEditedAt(node: SemanticNodeRecord): string {
|
|
22
|
+
return node.updatedAt ?? node.versionCreatedAt ?? node.createdAt ?? "";
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function conceptTitle(node: SemanticNodeRecord): string {
|
|
26
|
+
return node.displayName?.trim() || node.nodeKey;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function conceptId(node: SemanticNodeRecord): string {
|
|
30
|
+
return node.lineageId ?? node.id;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function recentlyEditedConcepts(nodes: readonly SemanticNodeRecord[], options: { limit?: number; kind?: string | null } = {}): SemanticNodeRecord[] {
|
|
34
|
+
const { limit = 10, kind = null } = options;
|
|
35
|
+
return nodes
|
|
36
|
+
.filter(node => !kind || node.nodeKind === kind)
|
|
37
|
+
.slice()
|
|
38
|
+
.sort((left, right) => conceptEditedAt(right).localeCompare(conceptEditedAt(left)) || conceptTitle(left).localeCompare(conceptTitle(right)))
|
|
39
|
+
.slice(0, limit);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function conceptsByTitle(nodes: readonly SemanticNodeRecord[], options: { kind?: string | null; limit?: number | null } = {}): SemanticNodeRecord[] {
|
|
43
|
+
const filtered = nodes.filter(node => !options.kind || node.nodeKind === options.kind).slice().sort((left, right) => conceptTitle(left).localeCompare(conceptTitle(right)));
|
|
44
|
+
return options.limit ? filtered.slice(0, options.limit) : filtered;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Finds the concept a `concept:<key>` wiki link names, by lineage id, node key or title. */
|
|
48
|
+
export function resolveConceptLink(href: string, nodes: readonly SemanticNodeRecord[]): SemanticNodeRecord | null {
|
|
49
|
+
if (!href.startsWith(WIKI_CONCEPT_LINK_SCHEME)) return null;
|
|
50
|
+
const reference = decodeURIComponent(href.slice(WIKI_CONCEPT_LINK_SCHEME.length)).trim().toLowerCase();
|
|
51
|
+
return nodes.find(node => conceptId(node).toLowerCase() === reference || node.nodeKey.toLowerCase() === reference || conceptTitle(node).toLowerCase() === reference) ?? null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function conceptWikiPath(node: SemanticNodeRecord): string {
|
|
55
|
+
return `/newsroom/concepts/${encodeURIComponent(conceptId(node))}`;
|
|
56
|
+
}
|
package/package.json
CHANGED
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"./components/archive-shell": "./components/archive-shell.tsx",
|
|
76
76
|
"./components/article-video": "./components/article-video.tsx",
|
|
77
77
|
"./components/blog-page-background": "./components/blog-page-background.tsx",
|
|
78
|
+
"./components/board-card-excerpts": "./components/board-card-excerpts.tsx",
|
|
78
79
|
"./components/dev-sandbox-editor-sign-in": "./components/dev-sandbox-editor-sign-in.tsx",
|
|
79
80
|
"./components/markus-ir-preview": "./components/markus-ir-preview.tsx",
|
|
80
81
|
"./components/news-desk-client-provider": "./components/news-desk-client-provider.tsx",
|
|
@@ -100,6 +101,7 @@
|
|
|
100
101
|
"./components/presentation-header": "./components/presentation-header.tsx",
|
|
101
102
|
"./components/presentation-rhythm-hrule": "./components/presentation-rhythm-hrule.tsx",
|
|
102
103
|
"./components/priming-proof-page": "./components/priming-proof-page.tsx",
|
|
104
|
+
"./components/prospectus-account-chooser": "./components/prospectus-account-chooser.tsx",
|
|
103
105
|
"./components/publication-cyclotron-panel": "./components/publication-cyclotron-panel.tsx",
|
|
104
106
|
"./components/reader-auth-control": "./components/reader-auth-control.tsx",
|
|
105
107
|
"./components/reader-auth-state": "./components/reader-auth-state.ts",
|
|
@@ -114,6 +116,8 @@
|
|
|
114
116
|
"./components/settings-page": "./components/settings-page.tsx",
|
|
115
117
|
"./components/signup-entries-panel": "./components/signup-entries-panel.tsx",
|
|
116
118
|
"./components/staging-banner": "./components/staging-banner.tsx",
|
|
119
|
+
"./components/story-reporting-trail-client": "./components/story-reporting-trail-client.ts",
|
|
120
|
+
"./components/story-reporting-trail": "./components/story-reporting-trail.tsx",
|
|
117
121
|
"./components/topic-steering-workspace": "./components/topic-steering-workspace.tsx",
|
|
118
122
|
"./components/ui/badge": "./components/ui/badge.tsx",
|
|
119
123
|
"./components/ui/button-group": "./components/ui/button-group.tsx",
|
|
@@ -139,6 +143,8 @@
|
|
|
139
143
|
"./components/use-paged-content-item-versions": "./components/use-paged-content-item-versions.ts",
|
|
140
144
|
"./components/use-resolved-papyrus-theme": "./components/use-resolved-papyrus-theme.ts",
|
|
141
145
|
"./components/use-rhythm-overlay": "./components/use-rhythm-overlay.ts",
|
|
146
|
+
"./components/wiki-concepts-view": "./components/wiki-concepts-view.tsx",
|
|
147
|
+
"./components/wiki-index-client": "./components/wiki-index-client.ts",
|
|
142
148
|
"./lib/amplify-outputs-guard": "./lib/amplify-outputs-guard.ts",
|
|
143
149
|
"./lib/amplify-outputs-path": "./lib/amplify-outputs-path.ts",
|
|
144
150
|
"./lib/amplify-server-runtime": "./lib/amplify-server-runtime.ts",
|
|
@@ -174,6 +180,7 @@
|
|
|
174
180
|
"./lib/edition-sections": "./lib/edition-sections.ts",
|
|
175
181
|
"./lib/empty-edition-layout-plan": "./lib/empty-edition-layout-plan.ts",
|
|
176
182
|
"./lib/excerpts": "./lib/excerpts.ts",
|
|
183
|
+
"./lib/front-matter-fields": "./lib/front-matter-fields.ts",
|
|
177
184
|
"./lib/front-mosaic": "./lib/front-mosaic.ts",
|
|
178
185
|
"./lib/furniture": "./lib/furniture.ts",
|
|
179
186
|
"./lib/graphql-content-repository": "./lib/graphql-content-repository.ts",
|
|
@@ -185,6 +192,7 @@
|
|
|
185
192
|
"./lib/layout-types": "./lib/layout-types.ts",
|
|
186
193
|
"./lib/layout-warnings": "./lib/layout-warnings.ts",
|
|
187
194
|
"./lib/local-preview-seed": "./lib/local-preview-seed.ts",
|
|
195
|
+
"./lib/local-preview-tenant": "./lib/local-preview-tenant.ts",
|
|
188
196
|
"./lib/local-preview": "./lib/local-preview.ts",
|
|
189
197
|
"./lib/markus-body": "./lib/markus-body.ts",
|
|
190
198
|
"./lib/markus-ir": "./lib/markus-ir.ts",
|
|
@@ -227,6 +235,7 @@
|
|
|
227
235
|
"./lib/prospectus-session": "./lib/prospectus-session.ts",
|
|
228
236
|
"./lib/prospectus-sign-in-routes": "./lib/prospectus-sign-in-routes.ts",
|
|
229
237
|
"./lib/prospectus-site-identity": "./lib/prospectus-site-identity.ts",
|
|
238
|
+
"./lib/prospectus-tenant": "./lib/prospectus-tenant.ts",
|
|
230
239
|
"./lib/public-placeholder-config": "./lib/public-placeholder-config.ts",
|
|
231
240
|
"./lib/publication-cyclotron": "./lib/publication-cyclotron.ts",
|
|
232
241
|
"./lib/publication-items": "./lib/publication-items.ts",
|
|
@@ -259,6 +268,8 @@
|
|
|
259
268
|
"./lib/staging-gate": "./lib/staging-gate.ts",
|
|
260
269
|
"./lib/staging-gated-path": "./lib/staging-gated-path.ts",
|
|
261
270
|
"./lib/staging-preview-object": "./lib/staging-preview-object.ts",
|
|
271
|
+
"./lib/story-reporting-trail": "./lib/story-reporting-trail.ts",
|
|
272
|
+
"./lib/tenant-keys": "./lib/tenant-keys.ts",
|
|
262
273
|
"./lib/test-editor-override": "./lib/test-editor-override.ts",
|
|
263
274
|
"./lib/text-columns": "./lib/text-columns.ts",
|
|
264
275
|
"./lib/themed-image": "./lib/themed-image.ts",
|
|
@@ -266,6 +277,7 @@
|
|
|
266
277
|
"./lib/video-loading": "./lib/video-loading.ts",
|
|
267
278
|
"./lib/video-mode": "./lib/video-mode.ts",
|
|
268
279
|
"./lib/video-script": "./lib/video-script.ts",
|
|
280
|
+
"./lib/wiki": "./lib/wiki.ts",
|
|
269
281
|
"./renderers/markus/index": "./renderers/markus/index.ts",
|
|
270
282
|
"./renderers/markus/stubs": "./renderers/markus/stubs.tsx",
|
|
271
283
|
"./renderers/pretext/article-page": "./renderers/pretext/article-page.tsx",
|
|
@@ -288,6 +300,8 @@
|
|
|
288
300
|
"./app/api/auth/prospectus/sign-in/route": "./app/api/auth/prospectus/sign-in/route.ts",
|
|
289
301
|
"./app/api/auth/prospectus/sign-out/route": "./app/api/auth/prospectus/sign-out/route.ts",
|
|
290
302
|
"./app/api/cyclotron/priming-proof/route": "./app/api/cyclotron/priming-proof/route.ts",
|
|
303
|
+
"./app/api/local-preview/derive/route": "./app/api/local-preview/derive/route.ts",
|
|
304
|
+
"./app/api/local-preview/media/route": "./app/api/local-preview/media/route.ts",
|
|
291
305
|
"./app/api/media/[...path]/route": "./app/api/media/[...path]/route.ts",
|
|
292
306
|
"./app/api/revalidate/route": "./app/api/revalidate/route.ts",
|
|
293
307
|
"./app/archive/page": "./app/archive/page.tsx",
|
|
@@ -354,7 +368,7 @@
|
|
|
354
368
|
"optional": true
|
|
355
369
|
}
|
|
356
370
|
},
|
|
357
|
-
"version": "1.4.0-next.
|
|
371
|
+
"version": "1.4.0-next.6",
|
|
358
372
|
"dependencies": {
|
|
359
373
|
"@aws-amplify/adapter-nextjs": "^1.7.3",
|
|
360
374
|
"@aws-crypto/sha256-js": "5.2.0",
|
package/routes.manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.4.0-next.
|
|
2
|
+
"version": "1.4.0-next.6",
|
|
3
3
|
"routes": [
|
|
4
4
|
{
|
|
5
5
|
"file": "app/%5F_preview/[[...path]]/route.ts",
|
|
@@ -129,6 +129,26 @@
|
|
|
129
129
|
],
|
|
130
130
|
"config": {}
|
|
131
131
|
},
|
|
132
|
+
{
|
|
133
|
+
"file": "app/api/local-preview/derive/route.ts",
|
|
134
|
+
"hasDefault": false,
|
|
135
|
+
"exports": [
|
|
136
|
+
"POST"
|
|
137
|
+
],
|
|
138
|
+
"config": {
|
|
139
|
+
"dynamic": "\"force-dynamic\""
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"file": "app/api/local-preview/media/route.ts",
|
|
144
|
+
"hasDefault": false,
|
|
145
|
+
"exports": [
|
|
146
|
+
"GET"
|
|
147
|
+
],
|
|
148
|
+
"config": {
|
|
149
|
+
"dynamic": "\"force-dynamic\""
|
|
150
|
+
}
|
|
151
|
+
},
|
|
132
152
|
{
|
|
133
153
|
"file": "app/api/media/[...path]/route.ts",
|
|
134
154
|
"hasDefault": false,
|
|
@@ -230,17 +250,13 @@
|
|
|
230
250
|
"file": "app/newsroom/insights/[threadId]/page.tsx",
|
|
231
251
|
"hasDefault": true,
|
|
232
252
|
"exports": [],
|
|
233
|
-
"config": {
|
|
234
|
-
"dynamic": "\"force-dynamic\""
|
|
235
|
-
}
|
|
253
|
+
"config": {}
|
|
236
254
|
},
|
|
237
255
|
{
|
|
238
256
|
"file": "app/newsroom/insights/page.tsx",
|
|
239
257
|
"hasDefault": true,
|
|
240
258
|
"exports": [],
|
|
241
|
-
"config": {
|
|
242
|
-
"dynamic": "\"force-dynamic\""
|
|
243
|
-
}
|
|
259
|
+
"config": {}
|
|
244
260
|
},
|
|
245
261
|
{
|
|
246
262
|
"file": "app/newsroom/layout.tsx",
|