@forumone/create-throughline 0.3.0 → 0.3.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 +7 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +3 -1
- package/dist/generator.js.map +1 -1
- package/dist/post-install.js +1 -1
- package/dist/post-install.js.map +1 -1
- package/dist/templates/base/README.md +8 -9
- package/dist/templates/base/apps/web/package.json.template +10 -10
- package/dist/templates/base/apps/web/src/app/api/inngest/route.ts.template +32 -3
- package/dist/templates/base/apps/web/src/payload.config.ts.template +17 -4
- package/dist/templates/with-reference-ds/design-system/package.json.template +3 -3
- package/dist/utils/versions.d.ts +20 -0
- package/dist/utils/versions.d.ts.map +1 -0
- package/dist/utils/versions.js +59 -0
- package/dist/utils/versions.js.map +1 -0
- package/dist/versions.json +14 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @forumone/create-throughline
|
|
2
2
|
|
|
3
|
+
## 0.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- eec328e: A scaffolded site depends on the current release of every Throughline package. The ranges were typed into the templates as `^0.2.0`, which admits patches only for a 0.x version, so a new site installed the earliest releases. They are now read from the workspace when the scaffolder is built, and baked into `dist/versions.json`.
|
|
8
|
+
- 70223ef: The scaffolded `payload.config.ts` signs approval links with `generateActionToken` and points them at `/api/approvals/action`, the route `approvalsPlugin` serves. It used to build an unsigned query string against `/api/approvals/decision`, which nothing serves, so every button in an approval email 404'd.
|
|
9
|
+
|
|
3
10
|
## 0.3.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAA;AAK5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAK3C,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qEAAqE;IACrE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC7F;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,iBAAe,eAAe,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClF;AAiBD,iBAAS,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI3C;AAUD,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AA6BD,eAAO,MAAM,SAAS;;;;;;;CAAsE,CAAA"}
|
package/dist/generator.js
CHANGED
|
@@ -3,6 +3,7 @@ import { cp, mkdir, readFile, readdir, rename, rm, stat, writeFile } from 'node:
|
|
|
3
3
|
import { dirname, join, resolve } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { renderTemplate } from './utils/templates.js';
|
|
6
|
+
import { loadPackageVersions } from './utils/versions.js';
|
|
6
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
8
|
const DEFAULT_TEMPLATES_DIR = resolve(__dirname, 'templates');
|
|
8
9
|
/**
|
|
@@ -25,7 +26,8 @@ export async function generate(answers, options = {}) {
|
|
|
25
26
|
const designSystemName = answers.packageScope
|
|
26
27
|
? `@${answers.packageScope}/design-system`
|
|
27
28
|
: `${answers.projectName}-design-system`;
|
|
28
|
-
const
|
|
29
|
+
const versions = await loadPackageVersions(templatesDir);
|
|
30
|
+
const data = { ...answers, designSystemName, ...versions };
|
|
29
31
|
onProgress('Creating project structure');
|
|
30
32
|
await mkdir(answers.targetDir, { recursive: true });
|
|
31
33
|
await renderDirectory({
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/post-install.js
CHANGED
|
@@ -32,7 +32,7 @@ export function printNextSteps(answers) {
|
|
|
32
32
|
lines.push(formatStep(step++, 'Open http://localhost:3000/admin and create your first admin user'));
|
|
33
33
|
lines.push(formatStep(step++, 'In the admin, go to API Keys and create one key per MCP server'));
|
|
34
34
|
lines.push(formatStep(step++, 'Paste those keys into .env.local'));
|
|
35
|
-
lines.push(formatStep(step
|
|
35
|
+
lines.push(formatStep(step, 'Wire Claude (or your MCP client) to your MCP endpoints — see the generated README.md'));
|
|
36
36
|
// eslint-disable-next-line no-console
|
|
37
37
|
console.log();
|
|
38
38
|
// eslint-disable-next-line no-console
|
package/dist/post-install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,MAAM,YAAY,CAAA;AAG3B;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,IAAI,GAAG,CAAC,CAAA;IAEZ,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC3C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAA;IAE7D,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAAU,CACR,IAAI,EAAE,EACN,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,CACjF,CACF,CAAA;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,qEAAqE,CAAC,EAAE,CAAC,CAAA;IACvG,CAAC;SAAM,IAAI,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,gFAAgF,CAAC,EAAE,CAAC,CAAA;IAClH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,+EAA+E,CAAC,EAAE,CAAC,CAAA;IACjH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAA;IAC5D,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAA;IAC3E,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,kDAAkD,CAAC,EAAE,CAAC,CAAA;IAClF,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAA;IAEjF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACvE,KAAK,CAAC,IAAI,CACR,UAAU,CACR,IAAI,EAAE,EACN,mEAAmE,CACpE,CACF,CAAA;IACD,KAAK,CAAC,IAAI,CACR,UAAU,CACR,IAAI,EAAE,EACN,gEAAgE,CACjE,CACF,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAA;IAClE,KAAK,CAAC,IAAI,CACR,UAAU,CACR,IAAI,
|
|
1
|
+
{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,20 +40,19 @@ pnpm dev
|
|
|
40
40
|
|
|
41
41
|
## After admin signup
|
|
42
42
|
|
|
43
|
-
1. In the Payload admin, open
|
|
43
|
+
1. In the Payload admin, open **MCP → Payload MCP API Keys** and create one key. Pick a **User** — required; the key inherits that user's access control — tick **Enable API Key**, save, and copy the key. It is shown once, and it does not go in `.env.local`.
|
|
44
44
|
|
|
45
|
-
2. **Plug
|
|
45
|
+
2. **Plug it into Claude (or your MCP client).** One endpoint carries every server's tools:
|
|
46
46
|
|
|
47
47
|
```
|
|
48
|
-
/api/
|
|
49
|
-
|
|
50
|
-
/api/approvals/mcp
|
|
51
|
-
/api/audit/mcp
|
|
52
|
-
/api/forms/mcp
|
|
53
|
-
/api/integrations/mcp
|
|
48
|
+
POST /api/mcp
|
|
49
|
+
Authorization: Bearer <your key>
|
|
54
50
|
```
|
|
55
51
|
|
|
56
|
-
|
|
52
|
+
```bash
|
|
53
|
+
claude mcp add throughline http://localhost:3000/api/mcp \
|
|
54
|
+
--header "Authorization: Bearer $THROUGHLINE_API_KEY"
|
|
55
|
+
```
|
|
57
56
|
|
|
58
57
|
3. **Replace the example `pages` collection** in `apps/web/src/payload.config.ts` with your real content model. Keep the `policy` group on collections that should require approval — that field shape is what the approvals plugin reads.
|
|
59
58
|
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
"payload": "payload"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forumone/throughline-approvals": "^
|
|
16
|
-
"@forumone/throughline-audit": "^
|
|
17
|
-
"@forumone/throughline-components": "^
|
|
18
|
-
"@forumone/throughline-core": "^
|
|
19
|
-
"@forumone/throughline-email": "^
|
|
20
|
-
"@forumone/throughline-forms": "^
|
|
21
|
-
"@forumone/throughline-integrations": "^
|
|
22
|
-
"@forumone/throughline-publishing": "^
|
|
23
|
-
"@forumone/throughline-workflows": "^
|
|
24
|
-
{{#if useReferenceDs}}"@forumone/throughline-design-contract": "^
|
|
15
|
+
"@forumone/throughline-approvals": "^{{version_approvals}}",
|
|
16
|
+
"@forumone/throughline-audit": "^{{version_audit}}",
|
|
17
|
+
"@forumone/throughline-components": "^{{version_components}}",
|
|
18
|
+
"@forumone/throughline-core": "^{{version_core}}",
|
|
19
|
+
"@forumone/throughline-email": "^{{version_email}}",
|
|
20
|
+
"@forumone/throughline-forms": "^{{version_forms}}",
|
|
21
|
+
"@forumone/throughline-integrations": "^{{version_integrations}}",
|
|
22
|
+
"@forumone/throughline-publishing": "^{{version_publishing}}",
|
|
23
|
+
"@forumone/throughline-workflows": "^{{version_workflows}}",
|
|
24
|
+
{{#if useReferenceDs}}"@forumone/throughline-design-contract": "^{{version_design_contract}}",
|
|
25
25
|
"{{designSystemName}}": "workspace:*",
|
|
26
26
|
{{/if}}"@payloadcms/db-postgres": "^3.83.0",
|
|
27
27
|
"@payloadcms/next": "^3.83.0",
|
|
@@ -8,8 +8,11 @@ import {
|
|
|
8
8
|
createExpireStaleApprovalsFunction,
|
|
9
9
|
createHealthcheckFunction,
|
|
10
10
|
createPayloadReachableCheck,
|
|
11
|
+
createPublishAtScheduledTimeFunction,
|
|
11
12
|
createRevalidateOnPublishFunction,
|
|
13
|
+
type ScheduledPublishRequest,
|
|
12
14
|
} from '@forumone/throughline-workflows'
|
|
15
|
+
import { getPublishingService } from '@forumone/throughline-publishing'
|
|
13
16
|
import { getEmailFunctions } from '@forumone/throughline-email'
|
|
14
17
|
import { getFormsFunctions } from '@forumone/throughline-forms'
|
|
15
18
|
import {
|
|
@@ -22,6 +25,23 @@ const payload = await getPayload({ config })
|
|
|
22
25
|
|
|
23
26
|
const emailFunctions = getEmailFunctions(payload) ?? []
|
|
24
27
|
const formsFunctions = getFormsFunctions(payload) ?? []
|
|
28
|
+
/*
|
|
29
|
+
Through the publishing service, in process — so a scheduled publish passes the
|
|
30
|
+
same composition, accessibility and approval gates as an interactive one. Not
|
|
31
|
+
`payload.update`, which skips all of them.
|
|
32
|
+
*/
|
|
33
|
+
async function publishScheduled({ collection, id, reasoning }: ScheduledPublishRequest) {
|
|
34
|
+
const outcome = await getPublishingService(payload).publish({
|
|
35
|
+
collection,
|
|
36
|
+
id,
|
|
37
|
+
actor: { apiKeyName: 'scheduled-publish', channel: 'mcp' },
|
|
38
|
+
meta: { reasoning },
|
|
39
|
+
})
|
|
40
|
+
return { published: outcome.published, reason: outcome.reason }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const scheduledCollections = [{ slug: 'pages' }]
|
|
44
|
+
|
|
25
45
|
const integrationRegistry = getIntegrationRegistry(payload)
|
|
26
46
|
const integrationContext = getIntegrationContext(payload)
|
|
27
47
|
const integrationFunctions =
|
|
@@ -35,12 +55,21 @@ export const { GET, POST, PUT } = serve({
|
|
|
35
55
|
client: inngest,
|
|
36
56
|
functions: [
|
|
37
57
|
createRevalidateOnPublishFunction({ inngest, payload }),
|
|
58
|
+
// On time: sleeps until each document's scheduled time.
|
|
59
|
+
createPublishAtScheduledTimeFunction({
|
|
60
|
+
inngest,
|
|
61
|
+
payload,
|
|
62
|
+
collections: scheduledCollections,
|
|
63
|
+
publish: publishScheduled,
|
|
64
|
+
}),
|
|
65
|
+
// The backstop, for a schedule whose wake-up event never arrived.
|
|
38
66
|
createExecuteScheduledPublishesFunction({
|
|
39
67
|
inngest,
|
|
40
68
|
payload,
|
|
41
|
-
collections:
|
|
42
|
-
|
|
43
|
-
|
|
69
|
+
collections: scheduledCollections,
|
|
70
|
+
publish: publishScheduled,
|
|
71
|
+
schedule: '17 3 * * *',
|
|
72
|
+
overdueByMs: 60 * 60 * 1000,
|
|
44
73
|
}),
|
|
45
74
|
createExpireStaleApprovalsFunction({ inngest, payload }),
|
|
46
75
|
createAuditEventEchoFunction({ inngest }),
|
|
@@ -11,7 +11,11 @@ import {
|
|
|
11
11
|
} from '@forumone/throughline-core'
|
|
12
12
|
import { componentsPlugin } from '@forumone/throughline-components'
|
|
13
13
|
import { publishingPlugin } from '@forumone/throughline-publishing'
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
approvalsPlugin,
|
|
16
|
+
buildActionUrl,
|
|
17
|
+
generateActionToken,
|
|
18
|
+
} from '@forumone/throughline-approvals'
|
|
15
19
|
import { auditQueryPlugin } from '@forumone/throughline-audit'
|
|
16
20
|
import { integrationsPlugin } from '@forumone/throughline-integrations'
|
|
17
21
|
import { emailPlugin } from '@forumone/throughline-email'
|
|
@@ -140,9 +144,18 @@ export default buildConfig({
|
|
|
140
144
|
// TODO: replace with your real user lookups
|
|
141
145
|
resolveApprover: async (_userId) => null,
|
|
142
146
|
resolveRequester: async (_userId) => null,
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
// Signed, and pointed at the route approvalsPlugin serves
|
|
148
|
+
// (`/api/approvals/action`). The token binds one approval, one action
|
|
149
|
+
// and one approver, so a link cannot be edited into a different decision.
|
|
150
|
+
buildActionUrl: async ({ approvalId, action, approverId }) => {
|
|
151
|
+
const secret = process.env.APPROVAL_TOKEN_SECRET
|
|
152
|
+
if (!secret) throw new Error('APPROVAL_TOKEN_SECRET is required to sign approval links.')
|
|
153
|
+
const token = await generateActionToken(
|
|
154
|
+
{ approvalId, action, approverId, issuedAt: Date.now() },
|
|
155
|
+
secret,
|
|
156
|
+
)
|
|
157
|
+
return buildActionUrl(process.env.NEXT_PUBLIC_SERVER_URL!, token)
|
|
158
|
+
},
|
|
146
159
|
tokens: { brandName: '{{projectName}}' },
|
|
147
160
|
}),
|
|
148
161
|
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"clean": "rm -rf dist .turbo storybook-static *.tsbuildinfo"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@forumone/throughline-design-contract": "^
|
|
37
|
+
"@forumone/throughline-design-contract": "^{{version_design_contract}}",
|
|
38
38
|
"clsx": "^2.1.1"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@storybook/addon-a11y": "^10.3.5",
|
|
46
46
|
"@storybook/react-vite": "^10.3.5",
|
|
47
|
-
"@testing-library/jest-dom": "^
|
|
47
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
48
48
|
"@testing-library/react": "^16.3.2",
|
|
49
49
|
"@types/node": "^20.17.0",
|
|
50
50
|
"@types/react": "^19.2.0",
|
|
@@ -57,6 +57,6 @@
|
|
|
57
57
|
"tsx": "^4.21.0",
|
|
58
58
|
"typescript": "^5.6.0",
|
|
59
59
|
"vite": "^8.0.9",
|
|
60
|
-
"vitest": "^
|
|
60
|
+
"vitest": "^4.1.10"
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The version of every Throughline package the scaffold depends on, keyed for
|
|
3
|
+
* the template renderer: `@forumone/throughline-design-contract` becomes
|
|
4
|
+
* `version_design_contract`, rendered as `"^{{version_design_contract}}"`.
|
|
5
|
+
*
|
|
6
|
+
* The ranges used to be typed into the templates by hand, and nothing moved
|
|
7
|
+
* them: they sat at `^0.2.0` — which for a 0.x version admits patches only —
|
|
8
|
+
* while the packages reached 0.9 and 0.10. A scaffolded site installed the
|
|
9
|
+
* earliest releases, against a `payload.config.ts` written for today's APIs.
|
|
10
|
+
*
|
|
11
|
+
* So the versions are read, never typed. A published scaffolder reads
|
|
12
|
+
* `versions.json`, which `copy-templates` writes beside `templates/` at build
|
|
13
|
+
* time; `publish-packages` builds after `changeset version`, so that file names
|
|
14
|
+
* exactly the set being published. Running from source (tests, `tsx`), there is
|
|
15
|
+
* no such file and the workspace's own `package.json` files are the answer.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadPackageVersions(templatesDir: string): Promise<Record<string, string>>;
|
|
18
|
+
/** `{ '@forumone/throughline-core': '0.9.1', … }` from a `packages/` directory. */
|
|
19
|
+
export declare function readWorkspaceVersions(packagesDir: string): Promise<Record<string, string>>;
|
|
20
|
+
//# sourceMappingURL=versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO/F;AAED,mFAAmF;AACnF,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0BhG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
const SCOPE_PREFIX = '@forumone/throughline-';
|
|
5
|
+
/**
|
|
6
|
+
* The version of every Throughline package the scaffold depends on, keyed for
|
|
7
|
+
* the template renderer: `@forumone/throughline-design-contract` becomes
|
|
8
|
+
* `version_design_contract`, rendered as `"^{{version_design_contract}}"`.
|
|
9
|
+
*
|
|
10
|
+
* The ranges used to be typed into the templates by hand, and nothing moved
|
|
11
|
+
* them: they sat at `^0.2.0` — which for a 0.x version admits patches only —
|
|
12
|
+
* while the packages reached 0.9 and 0.10. A scaffolded site installed the
|
|
13
|
+
* earliest releases, against a `payload.config.ts` written for today's APIs.
|
|
14
|
+
*
|
|
15
|
+
* So the versions are read, never typed. A published scaffolder reads
|
|
16
|
+
* `versions.json`, which `copy-templates` writes beside `templates/` at build
|
|
17
|
+
* time; `publish-packages` builds after `changeset version`, so that file names
|
|
18
|
+
* exactly the set being published. Running from source (tests, `tsx`), there is
|
|
19
|
+
* no such file and the workspace's own `package.json` files are the answer.
|
|
20
|
+
*/
|
|
21
|
+
export async function loadPackageVersions(templatesDir) {
|
|
22
|
+
const baked = resolve(templatesDir, '..', 'versions.json');
|
|
23
|
+
if (existsSync(baked)) {
|
|
24
|
+
return templateKeys(JSON.parse(await readFile(baked, 'utf-8')));
|
|
25
|
+
}
|
|
26
|
+
// src/templates or dist/templates -> the package -> packages/
|
|
27
|
+
return templateKeys(await readWorkspaceVersions(resolve(templatesDir, '..', '..', '..')));
|
|
28
|
+
}
|
|
29
|
+
/** `{ '@forumone/throughline-core': '0.9.1', … }` from a `packages/` directory. */
|
|
30
|
+
export async function readWorkspaceVersions(packagesDir) {
|
|
31
|
+
const versions = {};
|
|
32
|
+
const entries = await readdir(packagesDir, { withFileTypes: true }).catch(() => []);
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
if (!entry.isDirectory())
|
|
35
|
+
continue;
|
|
36
|
+
const manifest = join(packagesDir, entry.name, 'package.json');
|
|
37
|
+
if (!existsSync(manifest))
|
|
38
|
+
continue;
|
|
39
|
+
const { name, version, private: isPrivate, } = JSON.parse(await readFile(manifest, 'utf-8'));
|
|
40
|
+
if (!name?.startsWith(SCOPE_PREFIX) || !version || isPrivate)
|
|
41
|
+
continue;
|
|
42
|
+
versions[name] = version;
|
|
43
|
+
}
|
|
44
|
+
if (Object.keys(versions).length === 0) {
|
|
45
|
+
throw new Error(`create-throughline: no package versions found. Expected versions.json beside the ` +
|
|
46
|
+
`templates, or @forumone/throughline-* packages in ${packagesDir}.`);
|
|
47
|
+
}
|
|
48
|
+
return versions;
|
|
49
|
+
}
|
|
50
|
+
function templateKeys(versions) {
|
|
51
|
+
const keys = {};
|
|
52
|
+
for (const [name, version] of Object.entries(versions)) {
|
|
53
|
+
if (!name.startsWith(SCOPE_PREFIX))
|
|
54
|
+
continue;
|
|
55
|
+
keys[`version_${name.slice(SCOPE_PREFIX.length).replace(/-/g, '_')}`] = version;
|
|
56
|
+
}
|
|
57
|
+
return keys;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAE7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,YAAoB;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,eAAe,CAAC,CAAA;IAC1D,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAA2B,CAAC,CAAA;IAC3F,CAAC;IACD,8DAA8D;IAC9D,OAAO,YAAY,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IAC7D,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACnF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAQ;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAC9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAQ;QACnC,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EAAE,SAAS,GACnB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAI/C,CAAA;QACD,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS;YAAE,SAAQ;QACtE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,mFAAmF;YACjF,qDAAqD,WAAW,GAAG,CACtE,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,QAAgC;IACpD,MAAM,IAAI,GAA2B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,SAAQ;QAC5C,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAA;IACjF,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@forumone/throughline-approvals": "0.8.8",
|
|
3
|
+
"@forumone/throughline-audit": "0.5.4",
|
|
4
|
+
"@forumone/throughline-components": "0.5.7",
|
|
5
|
+
"@forumone/throughline-core": "0.9.1",
|
|
6
|
+
"@forumone/throughline-design-contract": "0.6.0",
|
|
7
|
+
"@forumone/throughline-email": "0.2.12",
|
|
8
|
+
"@forumone/throughline-forms": "0.6.4",
|
|
9
|
+
"@forumone/throughline-integrations": "0.8.5",
|
|
10
|
+
"@forumone/throughline-plugin-contract": "0.4.1",
|
|
11
|
+
"@forumone/throughline-publishing": "0.10.0",
|
|
12
|
+
"@forumone/throughline-reference-ds": "0.3.5",
|
|
13
|
+
"@forumone/throughline-workflows": "0.4.0"
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forumone/create-throughline",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Scaffolder for new Throughline projects (Payload CMS + MCP servers + Inngest workflows).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/node": "^20.17.0",
|
|
48
|
-
"eslint": "^
|
|
48
|
+
"eslint": "^10.11.0",
|
|
49
49
|
"tsx": "^4.21.0",
|
|
50
50
|
"typescript": "^5.6.0",
|
|
51
|
-
"vitest": "^
|
|
52
|
-
"@forumone/throughline-
|
|
53
|
-
"@forumone/throughline-
|
|
51
|
+
"vitest": "^4.1.10",
|
|
52
|
+
"@forumone/throughline-tsconfig": "0.0.0",
|
|
53
|
+
"@forumone/throughline-eslint-config": "0.0.0"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=20.9.0"
|