@payloadcms/figma 0.0.1-alpha.44 → 0.0.1-alpha.46
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/control-plane.d.ts.map +1 -1
- package/dist/api/control-plane.js +90 -54
- package/dist/api/control-plane.js.map +1 -1
- package/dist/api/figma-api.d.ts +20 -0
- package/dist/api/figma-api.d.ts.map +1 -1
- package/dist/api/figma-api.js +34 -0
- package/dist/api/figma-api.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/debug.d.ts +8 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +156 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/db-content-api/index.d.ts.map +1 -1
- package/dist/db-content-api/index.js +26 -7
- package/dist/db-content-api/index.js.map +1 -1
- package/dist/db-content-api/temp-utilities/types.d.ts +22 -0
- package/dist/db-content-api/temp-utilities/types.d.ts.map +1 -0
- package/dist/db-content-api/temp-utilities/types.js +15 -0
- package/dist/db-content-api/temp-utilities/types.js.map +1 -0
- package/dist/db-content-api/utilities/data/index.d.ts +14 -4
- package/dist/db-content-api/utilities/data/index.d.ts.map +1 -1
- package/dist/db-content-api/utilities/data/index.js +15 -8
- package/dist/db-content-api/utilities/data/index.js.map +1 -1
- package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts +23 -0
- package/dist/db-content-api/utilities/data/transformPublishedLocale.d.ts.map +1 -0
- package/dist/db-content-api/utilities/data/transformPublishedLocale.js +42 -0
- package/dist/db-content-api/utilities/data/transformPublishedLocale.js.map +1 -0
- package/dist/db-content-api/utilities/meta/buildLocalizedPaths.d.ts.map +1 -1
- package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js +11 -0
- package/dist/db-content-api/utilities/meta/buildLocalizedPaths.js.map +1 -1
- package/dist/db-content-api/utilities/meta/buildMeta.d.ts +17 -2
- package/dist/db-content-api/utilities/meta/buildMeta.d.ts.map +1 -1
- package/dist/db-content-api/utilities/meta/buildMeta.js +4 -1
- package/dist/db-content-api/utilities/meta/buildMeta.js.map +1 -1
- package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts +8 -2
- package/dist/db-content-api/utilities/meta/buildPathTypes.d.ts.map +1 -1
- package/dist/db-content-api/utilities/meta/buildPathTypes.js +41 -11
- package/dist/db-content-api/utilities/meta/buildPathTypes.js.map +1 -1
- package/dist/db-content-api/utilities/where.d.ts +8 -0
- package/dist/db-content-api/utilities/where.d.ts.map +1 -1
- package/dist/db-content-api/utilities/where.js +6 -0
- package/dist/db-content-api/utilities/where.js.map +1 -1
- package/dist/exports/client.d.ts +2 -0
- package/dist/exports/client.d.ts.map +1 -1
- package/dist/exports/client.js +2 -0
- package/dist/exports/client.js.map +1 -1
- package/dist/oauth/components/FigmaAvatar/index.d.ts +4 -0
- package/dist/oauth/components/FigmaAvatar/index.d.ts.map +1 -0
- package/dist/oauth/components/FigmaAvatar/index.js +27 -0
- package/dist/oauth/components/FigmaAvatar/index.js.map +1 -0
- package/dist/oauth/components/FigmaAvatar/index.scss +12 -0
- package/dist/oauth/components/FigmaAvatarCell/index.d.ts +5 -0
- package/dist/oauth/components/FigmaAvatarCell/index.d.ts.map +1 -0
- package/dist/oauth/components/FigmaAvatarCell/index.js +25 -0
- package/dist/oauth/components/FigmaAvatarCell/index.js.map +1 -0
- package/dist/oauth/components/FigmaAvatarCell/index.scss +5 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts +9 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.d.ts.map +1 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.js +37 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.js.map +1 -0
- package/dist/oauth/components/FigmaAvatarPlaceholder/index.scss +28 -0
- package/dist/oauth/defaults.d.ts.map +1 -1
- package/dist/oauth/defaults.js +38 -5
- package/dist/oauth/defaults.js.map +1 -1
- package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -1
- package/dist/oauth/endpoints/getLoginEndpoint.js +49 -14
- package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -1
- package/dist/plugin/build-config.d.ts.map +1 -1
- package/dist/plugin/build-config.js +44 -2
- package/dist/plugin/build-config.js.map +1 -1
- package/dist/templates/README.md +1 -1
- package/dist/types/config.d.ts +2 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +0 -2
- package/dist/types/config.js.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/lambda-config.d.ts +1 -1
- package/dist/utils/lambda-config.d.ts.map +1 -1
- package/dist/utils/lambda-config.js +2 -2
- package/dist/utils/lambda-config.js.map +1 -1
- package/dist/utils/messages.d.ts +1 -1
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +1 -0
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/package-manager.d.ts +24 -0
- package/dist/utils/package-manager.d.ts.map +1 -1
- package/dist/utils/package-manager.js +53 -0
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/payload-config-modifier.d.ts +1 -1
- package/dist/utils/payload-config-modifier.d.ts.map +1 -1
- package/dist/utils/payload-config-modifier.js +4 -3
- package/dist/utils/payload-config-modifier.js.map +1 -1
- package/dist/utils/project.d.ts +3 -2
- package/dist/utils/project.d.ts.map +1 -1
- package/dist/utils/project.js +4 -2
- package/dist/utils/project.js.map +1 -1
- package/package.json +1 -1
- package/dist/db-content-api/utilities/meta/index.d.ts +0 -5
- package/dist/db-content-api/utilities/meta/index.d.ts.map +0 -1
- package/dist/db-content-api/utilities/meta/index.js +0 -5
- package/dist/db-content-api/utilities/meta/index.js.map +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import fsSync from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { getTokenStore } from '../auth/token-store.js';
|
|
6
|
+
import { getEnvironment } from '../constants.js';
|
|
7
|
+
import { getEnvVarSync } from '../utils/env-management.js';
|
|
8
|
+
import { maskToken } from '../utils/token-display.js';
|
|
9
|
+
import { getOwnVersion } from '../utils/version-check.js';
|
|
10
|
+
/**
|
|
11
|
+
* Handle the `@payloadcms/figma debug` command
|
|
12
|
+
*
|
|
13
|
+
* Outputs environment, auth, project, and package info for debugging.
|
|
14
|
+
* All data is local — no network calls are made.
|
|
15
|
+
*/ export async function debugCommand() {
|
|
16
|
+
const env = getEnvironment();
|
|
17
|
+
const tokenStore = getTokenStore(env);
|
|
18
|
+
const cwd = process.cwd();
|
|
19
|
+
const lines = [
|
|
20
|
+
'Debug Info:',
|
|
21
|
+
''
|
|
22
|
+
];
|
|
23
|
+
appendSystemSection(lines, env);
|
|
24
|
+
appendAuthSection(lines, tokenStore, cwd);
|
|
25
|
+
appendProjectSection(lines, tokenStore, cwd);
|
|
26
|
+
await appendPackagesSection(lines);
|
|
27
|
+
// eslint-disable-next-line no-console
|
|
28
|
+
console.log(lines.join('\n'));
|
|
29
|
+
}
|
|
30
|
+
function appendSystemSection(lines, env) {
|
|
31
|
+
lines.push(`Environment: ${env}`);
|
|
32
|
+
lines.push(`Node: ${process.version}`);
|
|
33
|
+
lines.push(`OS: ${os.platform()} ${os.arch()}`);
|
|
34
|
+
lines.push('');
|
|
35
|
+
}
|
|
36
|
+
function appendAuthSection(lines, tokenStore, cwd) {
|
|
37
|
+
const tokens = tokenStore.getTokens();
|
|
38
|
+
lines.push('Auth:');
|
|
39
|
+
if (!tokens) {
|
|
40
|
+
lines.push(' Status: Not authenticated');
|
|
41
|
+
lines.push('');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const isValid = tokenStore.hasValidTokens();
|
|
45
|
+
lines.push(` Status: ${isValid ? 'Authenticated' : 'Token expired'}`);
|
|
46
|
+
const email = getEmailFromClaims(tokenStore, cwd);
|
|
47
|
+
if (email) {
|
|
48
|
+
lines.push(` Email: ${email}`);
|
|
49
|
+
} else if (tokens.userId) {
|
|
50
|
+
lines.push(` User ID: ${tokens.userId}`);
|
|
51
|
+
}
|
|
52
|
+
lines.push(` Token Expires: ${formatExpiryTime(tokens.expiresAt)}`);
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
function appendProjectSection(lines, tokenStore, cwd) {
|
|
56
|
+
const contentSystemId = getEnvVarSync(cwd, 'FIGMA_CONTENT_SYSTEM_ID');
|
|
57
|
+
const tenantId = getEnvVarSync(cwd, 'FIGMA_TENANT_ID');
|
|
58
|
+
const oauthClientId = getEnvVarSync(cwd, 'FIGMA_OAUTH_CLIENT_ID');
|
|
59
|
+
lines.push('Project:');
|
|
60
|
+
if (!contentSystemId && !tenantId && !oauthClientId) {
|
|
61
|
+
lines.push(" Not initialized (run 'init' first)");
|
|
62
|
+
lines.push('');
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (contentSystemId) {
|
|
66
|
+
lines.push(` Content System ID: ${contentSystemId}`);
|
|
67
|
+
}
|
|
68
|
+
if (tenantId) {
|
|
69
|
+
lines.push(` Tenant ID: ${tenantId}`);
|
|
70
|
+
}
|
|
71
|
+
if (oauthClientId) {
|
|
72
|
+
lines.push(` OAuth Client ID: ${maskToken(oauthClientId)}`);
|
|
73
|
+
}
|
|
74
|
+
if (contentSystemId) {
|
|
75
|
+
const projectToken = tokenStore.getProjectToken(contentSystemId);
|
|
76
|
+
if (projectToken) {
|
|
77
|
+
lines.push(` Project Token: ${formatExpiryTime(projectToken.expiresAt)}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
lines.push('');
|
|
81
|
+
}
|
|
82
|
+
async function appendPackagesSection(lines) {
|
|
83
|
+
lines.push('Packages:');
|
|
84
|
+
const cliVersion = await getOwnVersion();
|
|
85
|
+
lines.push(` @payloadcms/figma: ${cliVersion}`);
|
|
86
|
+
const payloadVersion = getPayloadVersion();
|
|
87
|
+
lines.push(` payload: ${payloadVersion}`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Try env-based tenant ID first, then iterate all stored project tokens.
|
|
91
|
+
*/ function getEmailFromClaims(tokenStore, cwd) {
|
|
92
|
+
const tenantId = getEnvVarSync(cwd, 'FIGMA_TENANT_ID');
|
|
93
|
+
if (tenantId) {
|
|
94
|
+
const email = tokenStore.getProjectTokenClaims(tenantId)?.email;
|
|
95
|
+
if (email) {
|
|
96
|
+
return email;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const id of tokenStore.getAllProjectTokenTenantIds()){
|
|
100
|
+
const email = tokenStore.getProjectTokenClaims(id)?.email;
|
|
101
|
+
if (email) {
|
|
102
|
+
return email;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
function getPayloadVersion() {
|
|
108
|
+
try {
|
|
109
|
+
const require = createRequire(path.join(process.cwd(), 'noop.js'));
|
|
110
|
+
const resolved = require.resolve('payload');
|
|
111
|
+
const packageJsonPath = findPackageJson(path.dirname(resolved));
|
|
112
|
+
if (!packageJsonPath) {
|
|
113
|
+
return 'not found';
|
|
114
|
+
}
|
|
115
|
+
const content = fsSync.readFileSync(packageJsonPath, 'utf-8');
|
|
116
|
+
return JSON.parse(content).version;
|
|
117
|
+
} catch {
|
|
118
|
+
return 'not found';
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function findPackageJson(dir) {
|
|
122
|
+
const { root } = path.parse(dir);
|
|
123
|
+
while(dir !== root){
|
|
124
|
+
const candidate = path.join(dir, 'package.json');
|
|
125
|
+
if (fsSync.existsSync(candidate)) {
|
|
126
|
+
return candidate;
|
|
127
|
+
}
|
|
128
|
+
dir = path.dirname(dir);
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Format expiry timestamp as ISO string with relative time
|
|
134
|
+
* e.g. "2026-02-11T10:30:00.000Z (in 23h 15m)" or "2026-02-10T08:00:00.000Z (expired 2h ago)"
|
|
135
|
+
*/ function formatExpiryTime(expiresAt) {
|
|
136
|
+
const iso = new Date(expiresAt).toISOString();
|
|
137
|
+
const diff = expiresAt - Date.now();
|
|
138
|
+
if (diff < 0) {
|
|
139
|
+
return `${iso} (expired ${formatDuration(Math.abs(diff))} ago)`;
|
|
140
|
+
}
|
|
141
|
+
return `${iso} (in ${formatDuration(diff)})`;
|
|
142
|
+
}
|
|
143
|
+
function formatDuration(ms) {
|
|
144
|
+
const minutes = Math.floor(ms / 60000);
|
|
145
|
+
const hours = Math.floor(minutes / 60);
|
|
146
|
+
const days = Math.floor(hours / 24);
|
|
147
|
+
if (days > 0) {
|
|
148
|
+
return `${days}d ${hours % 24}h`;
|
|
149
|
+
}
|
|
150
|
+
if (hours > 0) {
|
|
151
|
+
return `${hours}h ${minutes % 60}m`;
|
|
152
|
+
}
|
|
153
|
+
return `${minutes}m`;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/debug.ts"],"sourcesContent":["import fsSync from 'node:fs'\nimport { createRequire } from 'node:module'\nimport os from 'node:os'\nimport path from 'node:path'\n\nimport type { TokenStore } from '../auth/token-store.js'\nimport type { Environment } from '../constants.js'\n\nimport { getTokenStore } from '../auth/token-store.js'\nimport { getEnvironment } from '../constants.js'\nimport { getEnvVarSync } from '../utils/env-management.js'\nimport { maskToken } from '../utils/token-display.js'\nimport { getOwnVersion } from '../utils/version-check.js'\n\n/**\n * Handle the `@payloadcms/figma debug` command\n *\n * Outputs environment, auth, project, and package info for debugging.\n * All data is local — no network calls are made.\n */\nexport async function debugCommand(): Promise<void> {\n const env = getEnvironment()\n const tokenStore = getTokenStore(env)\n const cwd = process.cwd()\n\n const lines: string[] = ['Debug Info:', '']\n\n appendSystemSection(lines, env)\n appendAuthSection(lines, tokenStore, cwd)\n appendProjectSection(lines, tokenStore, cwd)\n await appendPackagesSection(lines)\n\n // eslint-disable-next-line no-console\n console.log(lines.join('\\n'))\n}\n\nfunction appendSystemSection(lines: string[], env: Environment): void {\n lines.push(`Environment: ${env}`)\n lines.push(`Node: ${process.version}`)\n lines.push(`OS: ${os.platform()} ${os.arch()}`)\n lines.push('')\n}\n\nfunction appendAuthSection(lines: string[], tokenStore: TokenStore, cwd: string): void {\n const tokens = tokenStore.getTokens()\n\n lines.push('Auth:')\n\n if (!tokens) {\n lines.push(' Status: Not authenticated')\n lines.push('')\n return\n }\n\n const isValid = tokenStore.hasValidTokens()\n lines.push(` Status: ${isValid ? 'Authenticated' : 'Token expired'}`)\n\n const email = getEmailFromClaims(tokenStore, cwd)\n if (email) {\n lines.push(` Email: ${email}`)\n } else if (tokens.userId) {\n lines.push(` User ID: ${tokens.userId}`)\n }\n\n lines.push(` Token Expires: ${formatExpiryTime(tokens.expiresAt)}`)\n lines.push('')\n}\n\nfunction appendProjectSection(lines: string[], tokenStore: TokenStore, cwd: string): void {\n const contentSystemId = getEnvVarSync(cwd, 'FIGMA_CONTENT_SYSTEM_ID')\n const tenantId = getEnvVarSync(cwd, 'FIGMA_TENANT_ID')\n const oauthClientId = getEnvVarSync(cwd, 'FIGMA_OAUTH_CLIENT_ID')\n\n lines.push('Project:')\n\n if (!contentSystemId && !tenantId && !oauthClientId) {\n lines.push(\" Not initialized (run 'init' first)\")\n lines.push('')\n return\n }\n\n if (contentSystemId) {\n lines.push(` Content System ID: ${contentSystemId}`)\n }\n if (tenantId) {\n lines.push(` Tenant ID: ${tenantId}`)\n }\n if (oauthClientId) {\n lines.push(` OAuth Client ID: ${maskToken(oauthClientId)}`)\n }\n if (contentSystemId) {\n const projectToken = tokenStore.getProjectToken(contentSystemId)\n if (projectToken) {\n lines.push(` Project Token: ${formatExpiryTime(projectToken.expiresAt)}`)\n }\n }\n lines.push('')\n}\n\nasync function appendPackagesSection(lines: string[]): Promise<void> {\n lines.push('Packages:')\n\n const cliVersion = await getOwnVersion()\n lines.push(` @payloadcms/figma: ${cliVersion}`)\n\n const payloadVersion = getPayloadVersion()\n lines.push(` payload: ${payloadVersion}`)\n}\n\n/**\n * Try env-based tenant ID first, then iterate all stored project tokens.\n */\nfunction getEmailFromClaims(tokenStore: TokenStore, cwd: string): null | string {\n const tenantId = getEnvVarSync(cwd, 'FIGMA_TENANT_ID')\n if (tenantId) {\n const email = tokenStore.getProjectTokenClaims(tenantId)?.email\n if (email) {\n return email\n }\n }\n\n for (const id of tokenStore.getAllProjectTokenTenantIds()) {\n const email = tokenStore.getProjectTokenClaims(id)?.email\n if (email) {\n return email\n }\n }\n\n return null\n}\n\nfunction getPayloadVersion(): string {\n try {\n const require = createRequire(path.join(process.cwd(), 'noop.js'))\n const resolved = require.resolve('payload')\n const packageJsonPath = findPackageJson(path.dirname(resolved))\n if (!packageJsonPath) {\n return 'not found'\n }\n const content = fsSync.readFileSync(packageJsonPath, 'utf-8')\n return JSON.parse(content).version\n } catch {\n return 'not found'\n }\n}\n\nfunction findPackageJson(dir: string): null | string {\n const { root } = path.parse(dir)\n while (dir !== root) {\n const candidate = path.join(dir, 'package.json')\n if (fsSync.existsSync(candidate)) {\n return candidate\n }\n dir = path.dirname(dir)\n }\n return null\n}\n\n/**\n * Format expiry timestamp as ISO string with relative time\n * e.g. \"2026-02-11T10:30:00.000Z (in 23h 15m)\" or \"2026-02-10T08:00:00.000Z (expired 2h ago)\"\n */\nfunction formatExpiryTime(expiresAt: number): string {\n const iso = new Date(expiresAt).toISOString()\n const diff = expiresAt - Date.now()\n\n if (diff < 0) {\n return `${iso} (expired ${formatDuration(Math.abs(diff))} ago)`\n }\n return `${iso} (in ${formatDuration(diff)})`\n}\n\nfunction formatDuration(ms: number): string {\n const minutes = Math.floor(ms / 60000)\n const hours = Math.floor(minutes / 60)\n const days = Math.floor(hours / 24)\n\n if (days > 0) {\n return `${days}d ${hours % 24}h`\n }\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m`\n }\n return `${minutes}m`\n}\n"],"names":["fsSync","createRequire","os","path","getTokenStore","getEnvironment","getEnvVarSync","maskToken","getOwnVersion","debugCommand","env","tokenStore","cwd","process","lines","appendSystemSection","appendAuthSection","appendProjectSection","appendPackagesSection","console","log","join","push","version","platform","arch","tokens","getTokens","isValid","hasValidTokens","email","getEmailFromClaims","userId","formatExpiryTime","expiresAt","contentSystemId","tenantId","oauthClientId","projectToken","getProjectToken","cliVersion","payloadVersion","getPayloadVersion","getProjectTokenClaims","id","getAllProjectTokenTenantIds","require","resolved","resolve","packageJsonPath","findPackageJson","dirname","content","readFileSync","JSON","parse","dir","root","candidate","existsSync","iso","Date","toISOString","diff","now","formatDuration","Math","abs","ms","minutes","floor","hours","days"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAwCA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mDAAmD;IACnD,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAoED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuX5E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -13,6 +13,7 @@ import { addOrUpdateEnvVar } from '../utils/env-management.js';
|
|
|
13
13
|
import { isDebug } from '../utils/is-debug.js';
|
|
14
14
|
import { applyLambdaModifications } from '../utils/lambda-config.js';
|
|
15
15
|
import * as log from '../utils/log.js';
|
|
16
|
+
import { detectPackageManagerFromEnvironment, getRunCommand, resolvePackageManager } from '../utils/package-manager.js';
|
|
16
17
|
import { displayManualInstructions, ensurePayloadFigmaConfig } from '../utils/payload-config-modifier.js';
|
|
17
18
|
import { runScript } from '../utils/payload-package-check.js';
|
|
18
19
|
import { detectPayloadProject, hasRequiredDependencies, initializeGitRepo, installDependencies, isInProjectDirectory, scaffoldProject, validatePayloadVersion } from '../utils/project.js';
|
|
@@ -149,6 +150,7 @@ import { loginCommand } from './login.js';
|
|
|
149
150
|
log.debug('Project directory detected');
|
|
150
151
|
// Detect Payload
|
|
151
152
|
const projectInfo = await detectPayloadProject();
|
|
153
|
+
const packageManager = await resolvePackageManager(process.cwd());
|
|
152
154
|
if (projectInfo.hasPayload) {
|
|
153
155
|
// Validate existing Payload version
|
|
154
156
|
if (projectInfo.payloadVersion && !validatePayloadVersion(projectInfo.payloadVersion)) {
|
|
@@ -168,17 +170,17 @@ import { loginCommand } from './login.js';
|
|
|
168
170
|
});
|
|
169
171
|
if (!p.isCancel(shouldInstall) && shouldInstall) {
|
|
170
172
|
s.start('Installing dependencies...');
|
|
171
|
-
await installDependencies(process.cwd(),
|
|
173
|
+
await installDependencies(process.cwd(), packageManager);
|
|
172
174
|
s.stop(pc.green('✓ Dependencies installed'));
|
|
173
175
|
}
|
|
174
176
|
}
|
|
175
177
|
s.start('Checking Payload configuration...');
|
|
176
|
-
const modResult = await ensurePayloadFigmaConfig(process.cwd(),
|
|
178
|
+
const modResult = await ensurePayloadFigmaConfig(process.cwd(), packageManager, {
|
|
177
179
|
contentSystemId
|
|
178
180
|
});
|
|
179
181
|
if (!modResult.success) {
|
|
180
182
|
s.stop(pc.red('✗ Configuration check failed'));
|
|
181
|
-
displayManualInstructions(modResult.error || 'Unknown error');
|
|
183
|
+
displayManualInstructions(modResult.error || 'Unknown error', packageManager);
|
|
182
184
|
process.exit(1);
|
|
183
185
|
}
|
|
184
186
|
if (modResult.modified) {
|
|
@@ -233,10 +235,10 @@ import { loginCommand } from './login.js';
|
|
|
233
235
|
p.note('Create a new project or manually add Payload dependencies', 'Action Required');
|
|
234
236
|
process.exit(1);
|
|
235
237
|
}
|
|
236
|
-
// Generate import map to prevent errors on first
|
|
237
|
-
await runScript(process.cwd(), 'generate:importmap',
|
|
238
|
+
// Generate import map to prevent errors on first dev run
|
|
239
|
+
await runScript(process.cwd(), 'generate:importmap', packageManager);
|
|
238
240
|
// Apply Lambda modifications (run.sh, standalone output, lambda:buildzip script)
|
|
239
|
-
await applyLambdaModifications(process.cwd(),
|
|
241
|
+
await applyLambdaModifications(process.cwd(), packageManager);
|
|
240
242
|
// Ensure .gitignore has required entries
|
|
241
243
|
await ensureGitignore(process.cwd(), [
|
|
242
244
|
'.env',
|
|
@@ -250,7 +252,7 @@ import { loginCommand } from './login.js';
|
|
|
250
252
|
// Success message for existing project
|
|
251
253
|
p.outro(pc.green('✓ Project initialized successfully!'));
|
|
252
254
|
const nextSteps = [
|
|
253
|
-
|
|
255
|
+
`Start development server: \`${getRunCommand(packageManager)} dev\``
|
|
254
256
|
].filter(Boolean);
|
|
255
257
|
p.note(nextSteps.join('\n'), 'Next Steps');
|
|
256
258
|
} else {
|
|
@@ -277,6 +279,7 @@ import { loginCommand } from './login.js';
|
|
|
277
279
|
const fullPath = path.resolve(process.cwd(), projectPath);
|
|
278
280
|
// Get project name from path or prompt
|
|
279
281
|
const projectName = options.name || path.basename(fullPath);
|
|
282
|
+
const packageManager = detectPackageManagerFromEnvironment();
|
|
280
283
|
// Create directory
|
|
281
284
|
try {
|
|
282
285
|
await fs.mkdir(fullPath, {
|
|
@@ -289,10 +292,10 @@ import { loginCommand } from './login.js';
|
|
|
289
292
|
// Scaffold project
|
|
290
293
|
s.start('Downloading template from GitHub...');
|
|
291
294
|
try {
|
|
292
|
-
await scaffoldProject(fullPath, projectName);
|
|
295
|
+
await scaffoldProject(fullPath, projectName, packageManager);
|
|
293
296
|
s.stop(pc.green('✓ Template downloaded'));
|
|
294
297
|
s.start('Installing dependencies...');
|
|
295
|
-
await installDependencies(fullPath,
|
|
298
|
+
await installDependencies(fullPath, packageManager);
|
|
296
299
|
s.stop(pc.green('✓ Dependencies installed'));
|
|
297
300
|
} catch (error) {
|
|
298
301
|
s.stop(pc.red('✗ Failed'));
|
|
@@ -301,12 +304,12 @@ import { loginCommand } from './login.js';
|
|
|
301
304
|
}
|
|
302
305
|
// Modify Payload configuration
|
|
303
306
|
s.start('Checking Payload configuration...');
|
|
304
|
-
const modResult = await ensurePayloadFigmaConfig(fullPath,
|
|
307
|
+
const modResult = await ensurePayloadFigmaConfig(fullPath, packageManager, {
|
|
305
308
|
contentSystemId
|
|
306
309
|
});
|
|
307
310
|
if (!modResult.success) {
|
|
308
311
|
s.stop(pc.red('✗ Configuration check failed'));
|
|
309
|
-
displayManualInstructions(modResult.error || 'Unknown error');
|
|
312
|
+
displayManualInstructions(modResult.error || 'Unknown error', packageManager);
|
|
310
313
|
process.exit(1);
|
|
311
314
|
}
|
|
312
315
|
if (modResult.modified) {
|
|
@@ -341,8 +344,8 @@ import { loginCommand } from './login.js';
|
|
|
341
344
|
} catch (error) {
|
|
342
345
|
p.log.warn(pc.yellow(`⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
343
346
|
}
|
|
344
|
-
// Generate import map to prevent errors on first
|
|
345
|
-
await runScript(fullPath, 'generate:importmap',
|
|
347
|
+
// Generate import map to prevent errors on first dev run
|
|
348
|
+
await runScript(fullPath, 'generate:importmap', packageManager);
|
|
346
349
|
// Generate project token (unless skipping auth)
|
|
347
350
|
if (!options.skipAuth) {
|
|
348
351
|
await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s);
|
|
@@ -357,7 +360,7 @@ import { loginCommand } from './login.js';
|
|
|
357
360
|
if (relativePath && relativePath !== '.') {
|
|
358
361
|
nextSteps.push(`cd ${relativePath}`);
|
|
359
362
|
}
|
|
360
|
-
nextSteps.push(
|
|
363
|
+
nextSteps.push(`${getRunCommand(packageManager)} dev or follow directions in README.md`, '', 'Documentation:', '- Getting Started: https://payloadcms.com/docs/getting-started/what-is-payload', '- Configuration: https://payloadcms.com/docs/configuration/overview');
|
|
361
364
|
p.note(nextSteps.join('\n'), 'Next Steps');
|
|
362
365
|
p.outro(pc.green('✓ Done'));
|
|
363
366
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/init.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport fs from 'fs/promises'\nimport path from 'path'\nimport pc from 'picocolors'\n\nimport type { TokenStore } from '../auth/token-store.js'\n\nimport { getDatasetInfo } from '../api/control-plane.js'\nimport { FigmaApiError } from '../api/figma-api.js'\nimport { getValidAccessToken } from '../auth/oauth-flow.js'\nimport { getValidProjectToken, ProjectTokenError } from '../auth/project-token.js'\nimport { getTokenStore } from '../auth/token-store.js'\nimport { getEnvironment } from '../constants.js'\nimport { ensureGitignore } from '../utils/config.js'\nimport { addOrUpdateEnvVar } from '../utils/env-management.js'\nimport { isDebug } from '../utils/is-debug.js'\nimport { applyLambdaModifications } from '../utils/lambda-config.js'\nimport * as log from '../utils/log.js'\nimport {\n displayManualInstructions,\n ensurePayloadFigmaConfig,\n} from '../utils/payload-config-modifier.js'\nimport { runScript } from '../utils/payload-package-check.js'\nimport {\n detectPayloadProject,\n hasRequiredDependencies,\n initializeGitRepo,\n installDependencies,\n isInProjectDirectory,\n scaffoldProject,\n validatePayloadVersion,\n} from '../utils/project.js'\nimport { checkForUpdates, getOwnVersion } from '../utils/version-check.js'\nimport { loginCommand } from './login.js'\n\n/**\n * Options for init command\n */\nexport interface InitCommandOptions {\n /** Enable debug mode */\n debug?: boolean\n /** Force reconfiguration of existing project */\n force?: boolean\n /** Content System ID to use */\n id?: string\n /** Project name (for scaffolding) */\n name?: string\n /** Skip authentication check (for testing/development) */\n skipAuth?: boolean\n /** Skip prompts and use defaults where possible */\n yes?: boolean\n}\n\n/**\n * Generate and store project token for a content system\n * Non-blocking - will show warning but not exit on failure\n * Only shows feedback if DEBUG mode is enabled, otherwise runs silently\n *\n * @param tokenStore - Token store instance\n * @param contentSystemId - Content System ID to generate token for\n * @param spinner - Clack spinner instance for status updates (only used in debug mode)\n */\nasync function generateProjectTokenWithFeedback(\n tokenStore: TokenStore,\n contentSystemId: string,\n spinner: ReturnType<typeof p.spinner>,\n): Promise<void> {\n if (isDebug()) {\n spinner.start('Generating project token...')\n }\n\n try {\n const projectToken = await getValidProjectToken(tokenStore, contentSystemId)\n if (isDebug()) {\n if (projectToken) {\n spinner.stop(pc.green('✓ Project token generated'))\n } else {\n spinner.stop(pc.yellow('⚠ Project token not generated (authentication required)'))\n }\n }\n } catch (error) {\n if (isDebug()) {\n spinner.stop(pc.yellow('⚠ Project token generation failed'))\n }\n // Always show failures, even without debug\n if (error instanceof ProjectTokenError || error instanceof FigmaApiError) {\n log.warning(error.message)\n p.note(\n 'Project token is used for authenticating to the Content API.\\nYou can continue without it, but may need to regenerate later.',\n 'Note',\n )\n } else {\n log.warning(\n `Unable to retrieve project token: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n // Don't exit - token generation failure shouldn't block initialization\n }\n}\n\n/**\n * Fetch dataset info from the API\n * Throws on error - caller must handle\n */\nasync function fetchDatasetInfo(\n accessToken: string,\n datasetId: string,\n): Promise<{ oauthClientId: string; oauthClientSecret: string; tenantId: string }> {\n log.debug('Fetching dataset info...')\n\n const datasetInfo = await getDatasetInfo(accessToken, datasetId)\n log.debug('Dataset info retrieved successfully')\n return {\n oauthClientId: datasetInfo.oauthClientId,\n oauthClientSecret: datasetInfo.oauthClientSecret,\n tenantId: datasetInfo.tenantId,\n }\n}\n\n/**\n * Handle the `init` command\n *\n * Sets up a project by:\n * 1. Checking authentication\n * 2. Detecting/scaffolding Payload project\n * 3. Fetching tenant details\n * 4. Storing configuration\n *\n * @param options - Command options\n */\nexport async function initCommand(options: InitCommandOptions): Promise<void> {\n // Check for outdated version (non-blocking)\n const currentVersion = await getOwnVersion()\n await checkForUpdates(currentVersion)\n\n // Check authentication\n const tokenStore = getTokenStore(getEnvironment())\n const s = p.spinner()\n\n if (options.skipAuth) {\n // Skip authentication for testing/development\n p.log.warn(pc.yellow('Skipping authentication (--skip-auth mode)'))\n } else {\n try {\n // Check for valid cached tokens first (no API call needed)\n if (!tokenStore.hasValidTokens()) {\n // Need to refresh or authenticate - show spinner for API call\n s.start('Checking authentication...')\n const token = await getValidAccessToken(tokenStore)\n if (!token) {\n s.stop('Authentication required to continue')\n\n // Run login command\n await loginCommand({ showNextSteps: false })\n\n // Get token after auth\n const newToken = await getValidAccessToken(tokenStore)\n if (!newToken) {\n p.log.error('Authentication failed')\n process.exit(1)\n }\n } else {\n s.stop(pc.green('✓ Authenticated'))\n }\n }\n } catch (error) {\n s.stop(pc.red('✗ Authentication failed'))\n log.error(error instanceof Error ? error.message : 'Unknown error')\n p.note('Run `figma auth` to authenticate', 'Tip')\n process.exit(1)\n }\n }\n\n // Note: We no longer check for figma.config.json here\n // Instead, the AST detection will check if figma object already exists in payload.config.ts\n // and skip modification if it does (unless --force is used)\n\n // Step 3: Get Content System ID (required argument)\n log.debug('Configuring Project...')\n\n if (!options.id) {\n p.log.error('Content System ID is required. Use --id <content_system_id>')\n process.exit(1)\n }\n\n const contentSystemId = options.id\n\n // Fetch dataset info (required - will fail if feature not enabled)\n let datasetInfo: { oauthClientId: string; oauthClientSecret: string; tenantId: string } | null =\n null\n if (!options.skipAuth) {\n const accessToken = await getValidAccessToken(tokenStore)\n if (accessToken) {\n try {\n datasetInfo = await fetchDatasetInfo(accessToken, contentSystemId)\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error'\n p.log.error(\n pc.red(`✗ Unable to fetch dataset info for content system \"${contentSystemId}\"`),\n )\n p.log.error(pc.dim(`Details: ${message}`))\n p.note(\n 'This may indicate the CMS feature is not enabled for your account.\\n' +\n 'Contact support if you believe this is an error.',\n 'Error',\n )\n process.exit(1)\n }\n }\n }\n\n // Step 4: Detect or scaffold Payload project\n const isInProject = await isInProjectDirectory()\n\n if (isInProject) {\n // ===== EXISTING PROJECT FLOW =====\n log.debug('Project directory detected')\n\n // Detect Payload\n const projectInfo = await detectPayloadProject()\n\n if (projectInfo.hasPayload) {\n // Validate existing Payload version\n if (projectInfo.payloadVersion && !validatePayloadVersion(projectInfo.payloadVersion)) {\n p.log.warn(\n pc.yellow(\n `Payload version ${projectInfo.payloadVersion} detected. Version 3.x is required.`,\n ),\n )\n p.note('Upgrade to Payload 3.x before continuing', 'Action Required')\n process.exit(1)\n }\n\n p.log.success(pc.green(`✓ Payload ${projectInfo.payloadVersion || 'detected'}`))\n\n // Check dependencies\n s.start('Checking dependencies...')\n const hasDeps = await hasRequiredDependencies(process.cwd())\n s.stop(pc.green('✓ Dependencies checked'))\n\n if (!hasDeps) {\n const shouldInstall = await p.confirm({\n initialValue: true,\n message: 'Install dependencies now?',\n })\n\n if (!p.isCancel(shouldInstall) && shouldInstall) {\n s.start('Installing dependencies...')\n await installDependencies(process.cwd(), projectInfo.packageManager || 'pnpm')\n s.stop(pc.green('✓ Dependencies installed'))\n }\n }\n\n s.start('Checking Payload configuration...')\n const modResult = await ensurePayloadFigmaConfig(\n process.cwd(),\n projectInfo.packageManager || 'pnpm',\n {\n contentSystemId,\n },\n )\n\n if (!modResult.success) {\n s.stop(pc.red('✗ Configuration check failed'))\n displayManualInstructions(modResult.error || 'Unknown error')\n process.exit(1)\n }\n\n if (modResult.modified) {\n s.stop(pc.green('✓ Payload configuration updated'))\n if (modResult.changes.length > 0) {\n modResult.changes.forEach((change) => log.debug(pc.dim(` → ${change}`)))\n }\n } else {\n s.stop(pc.green('✓ Payload configuration valid'))\n }\n\n // Display warnings if any\n if (modResult.warnings && modResult.warnings.length > 0) {\n modResult.warnings.forEach((warning) => {\n p.log.warn(pc.yellow(`⚠ ${warning}`))\n })\n }\n\n // Write environment variables to .env file\n try {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_CONTENT_SYSTEM_ID', contentSystemId)\n log.debug(`Added FIGMA_CONTENT_SYSTEM_ID to .env file`)\n\n const env = getEnvironment()\n if (env !== 'production') {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_ENV', env)\n log.debug(`Added FIGMA_ENV=${env} to .env file`)\n }\n\n if (datasetInfo) {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_TENANT_ID', datasetInfo.tenantId)\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId)\n await addOrUpdateEnvVar(\n process.cwd(),\n 'FIGMA_OAUTH_CLIENT_SECRET',\n datasetInfo.oauthClientSecret,\n )\n log.debug(\n `Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`,\n )\n }\n } catch (error) {\n p.log.warn(\n pc.yellow(\n `⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n ),\n )\n }\n } else {\n // Has package.json but no Payload - offer to add Payload\n p.log.warn(pc.yellow('⚠ No Payload detected in this project'))\n\n const shouldAddPayload = await p.confirm({\n initialValue: true,\n message: 'Would you like to add Payload to this project?',\n })\n\n if (p.isCancel(shouldAddPayload)) {\n p.cancel('Operation cancelled')\n process.exit(0)\n }\n\n if (!shouldAddPayload) {\n p.log.error('Payload is required to use Figma CMS')\n process.exit(1)\n }\n\n // TODO: Add Payload to existing project (future enhancement)\n p.log.error('Adding Payload to existing projects is not yet supported')\n p.note('Create a new project or manually add Payload dependencies', 'Action Required')\n process.exit(1)\n }\n\n // Generate import map to prevent errors on first pnpm dev\n await runScript(process.cwd(), 'generate:importmap', projectInfo.packageManager || 'pnpm')\n\n // Apply Lambda modifications (run.sh, standalone output, lambda:buildzip script)\n await applyLambdaModifications(process.cwd(), projectInfo.packageManager || 'pnpm')\n\n // Ensure .gitignore has required entries\n await ensureGitignore(process.cwd(), ['.env', '.env.local', 'lambda.zip'])\n\n // Generate project token (unless skipping auth)\n if (!options.skipAuth) {\n await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s)\n }\n\n // Success message for existing project\n p.outro(pc.green('✓ Project initialized successfully!'))\n\n const nextSteps = ['Start development server: `pnpm dev`'].filter(Boolean)\n\n p.note(nextSteps.join('\\n'), 'Next Steps')\n } else {\n // ===== NEW PROJECT FLOW =====\n // p.log.info('No project detected - Creating New Project')\n\n // Prompt for path\n const projectPathInput = await p.text({\n initialValue: './',\n message: 'Enter path to create project:',\n placeholder: './my-cms-project',\n validate: (value) => {\n if (!value) {\n return 'Path is required'\n }\n // Allow relative or absolute paths\n return undefined\n },\n })\n\n if (p.isCancel(projectPathInput)) {\n p.cancel('Operation cancelled')\n process.exit(0)\n }\n\n const projectPath = projectPathInput\n const fullPath = path.resolve(process.cwd(), projectPath)\n\n // Get project name from path or prompt\n const projectName = options.name || path.basename(fullPath)\n\n // Create directory\n try {\n await fs.mkdir(fullPath, { recursive: true })\n } catch (error) {\n p.log.error(\n `Failed to create directory: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n process.exit(1)\n }\n\n // Scaffold project\n s.start('Downloading template from GitHub...')\n try {\n await scaffoldProject(fullPath, projectName)\n s.stop(pc.green('✓ Template downloaded'))\n\n s.start('Installing dependencies...')\n await installDependencies(fullPath, 'pnpm')\n s.stop(pc.green('✓ Dependencies installed'))\n } catch (error) {\n s.stop(pc.red('✗ Failed'))\n log.error(error instanceof Error ? error.message : 'Unknown error')\n process.exit(1)\n }\n\n // Modify Payload configuration\n s.start('Checking Payload configuration...')\n const modResult = await ensurePayloadFigmaConfig(fullPath, 'pnpm', {\n contentSystemId,\n })\n\n if (!modResult.success) {\n s.stop(pc.red('✗ Configuration check failed'))\n displayManualInstructions(modResult.error || 'Unknown error')\n process.exit(1)\n }\n\n if (modResult.modified) {\n s.stop(pc.green('✓ Payload configuration updated'))\n if (modResult.changes.length > 0) {\n modResult.changes.forEach((change) => log.debug(pc.dim(` → ${change}`)))\n }\n } else {\n s.stop(pc.green('✓ Payload configuration valid'))\n }\n\n // Display warnings if any\n if (modResult.warnings && modResult.warnings.length > 0) {\n modResult.warnings.forEach((warning) => {\n p.log.warn(pc.yellow(`⚠ ${warning}`))\n })\n }\n\n // Write environment variables to .env file\n try {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_CONTENT_SYSTEM_ID', contentSystemId)\n log.debug(`Added FIGMA_CONTENT_SYSTEM_ID to .env file`)\n\n const env = getEnvironment()\n if (env !== 'production') {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_ENV', env)\n log.debug(`Added FIGMA_ENV=${env} to .env file`)\n }\n\n if (datasetInfo) {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_TENANT_ID', datasetInfo.tenantId)\n await addOrUpdateEnvVar(fullPath, 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId)\n await addOrUpdateEnvVar(\n fullPath,\n 'FIGMA_OAUTH_CLIENT_SECRET',\n datasetInfo.oauthClientSecret,\n )\n log.debug(\n `Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`,\n )\n }\n } catch (error) {\n p.log.warn(\n pc.yellow(\n `⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n ),\n )\n }\n\n // Generate import map to prevent errors on first pnpm dev\n await runScript(fullPath, 'generate:importmap', 'pnpm')\n\n // Generate project token (unless skipping auth)\n if (!options.skipAuth) {\n await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s)\n }\n\n // Initialize git repository (after all files including lock file are ready)\n initializeGitRepo(fullPath)\n\n // Success message for NEW project\n p.log.step(pc.bgGreen(pc.black(' Project created successfully! ')))\n\n const relativePath = path.relative(process.cwd(), fullPath)\n const nextSteps: string[] = []\n\n // Only show cd command if user needs to navigate\n if (relativePath && relativePath !== '.') {\n nextSteps.push(`cd ${relativePath}`)\n }\n\n nextSteps.push(\n 'pnpm dev or follow directions in README.md',\n '',\n 'Documentation:',\n '- Getting Started: https://payloadcms.com/docs/getting-started/what-is-payload',\n '- Configuration: https://payloadcms.com/docs/configuration/overview',\n )\n\n p.note(nextSteps.join('\\n'), 'Next Steps')\n p.outro(pc.green('✓ Done'))\n }\n}\n"],"names":["p","fs","path","pc","getDatasetInfo","FigmaApiError","getValidAccessToken","getValidProjectToken","ProjectTokenError","getTokenStore","getEnvironment","ensureGitignore","addOrUpdateEnvVar","isDebug","applyLambdaModifications","log","displayManualInstructions","ensurePayloadFigmaConfig","runScript","detectPayloadProject","hasRequiredDependencies","initializeGitRepo","installDependencies","isInProjectDirectory","scaffoldProject","validatePayloadVersion","checkForUpdates","getOwnVersion","loginCommand","generateProjectTokenWithFeedback","tokenStore","contentSystemId","spinner","start","projectToken","stop","green","yellow","error","warning","message","note","Error","fetchDatasetInfo","accessToken","datasetId","debug","datasetInfo","oauthClientId","oauthClientSecret","tenantId","initCommand","options","currentVersion","s","skipAuth","warn","hasValidTokens","token","showNextSteps","newToken","process","exit","red","id","dim","isInProject","projectInfo","hasPayload","payloadVersion","success","hasDeps","cwd","shouldInstall","confirm","initialValue","isCancel","packageManager","modResult","modified","changes","length","forEach","change","warnings","env","shouldAddPayload","cancel","outro","nextSteps","filter","Boolean","join","projectPathInput","text","placeholder","validate","value","undefined","projectPath","fullPath","resolve","projectName","name","basename","mkdir","recursive","step","bgGreen","black","relativePath","relative","push"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/commands/init.ts"],"sourcesContent":["import * as p from '@clack/prompts'\nimport fs from 'fs/promises'\nimport path from 'path'\nimport pc from 'picocolors'\n\nimport type { TokenStore } from '../auth/token-store.js'\n\nimport { getDatasetInfo } from '../api/control-plane.js'\nimport { FigmaApiError } from '../api/figma-api.js'\nimport { getValidAccessToken } from '../auth/oauth-flow.js'\nimport { getValidProjectToken, ProjectTokenError } from '../auth/project-token.js'\nimport { getTokenStore } from '../auth/token-store.js'\nimport { getEnvironment } from '../constants.js'\nimport { ensureGitignore } from '../utils/config.js'\nimport { addOrUpdateEnvVar } from '../utils/env-management.js'\nimport { isDebug } from '../utils/is-debug.js'\nimport { applyLambdaModifications } from '../utils/lambda-config.js'\nimport * as log from '../utils/log.js'\nimport {\n detectPackageManagerFromEnvironment,\n getRunCommand,\n resolvePackageManager,\n} from '../utils/package-manager.js'\nimport {\n displayManualInstructions,\n ensurePayloadFigmaConfig,\n} from '../utils/payload-config-modifier.js'\nimport { runScript } from '../utils/payload-package-check.js'\nimport {\n detectPayloadProject,\n hasRequiredDependencies,\n initializeGitRepo,\n installDependencies,\n isInProjectDirectory,\n scaffoldProject,\n validatePayloadVersion,\n} from '../utils/project.js'\nimport { checkForUpdates, getOwnVersion } from '../utils/version-check.js'\nimport { loginCommand } from './login.js'\n\n/**\n * Options for init command\n */\nexport interface InitCommandOptions {\n /** Enable debug mode */\n debug?: boolean\n /** Force reconfiguration of existing project */\n force?: boolean\n /** Content System ID to use */\n id?: string\n /** Project name (for scaffolding) */\n name?: string\n /** Skip authentication check (for testing/development) */\n skipAuth?: boolean\n /** Skip prompts and use defaults where possible */\n yes?: boolean\n}\n\n/**\n * Generate and store project token for a content system\n * Non-blocking - will show warning but not exit on failure\n * Only shows feedback if DEBUG mode is enabled, otherwise runs silently\n *\n * @param tokenStore - Token store instance\n * @param contentSystemId - Content System ID to generate token for\n * @param spinner - Clack spinner instance for status updates (only used in debug mode)\n */\nasync function generateProjectTokenWithFeedback(\n tokenStore: TokenStore,\n contentSystemId: string,\n spinner: ReturnType<typeof p.spinner>,\n): Promise<void> {\n if (isDebug()) {\n spinner.start('Generating project token...')\n }\n\n try {\n const projectToken = await getValidProjectToken(tokenStore, contentSystemId)\n if (isDebug()) {\n if (projectToken) {\n spinner.stop(pc.green('✓ Project token generated'))\n } else {\n spinner.stop(pc.yellow('⚠ Project token not generated (authentication required)'))\n }\n }\n } catch (error) {\n if (isDebug()) {\n spinner.stop(pc.yellow('⚠ Project token generation failed'))\n }\n // Always show failures, even without debug\n if (error instanceof ProjectTokenError || error instanceof FigmaApiError) {\n log.warning(error.message)\n p.note(\n 'Project token is used for authenticating to the Content API.\\nYou can continue without it, but may need to regenerate later.',\n 'Note',\n )\n } else {\n log.warning(\n `Unable to retrieve project token: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n // Don't exit - token generation failure shouldn't block initialization\n }\n}\n\n/**\n * Fetch dataset info from the API\n * Throws on error - caller must handle\n */\nasync function fetchDatasetInfo(\n accessToken: string,\n datasetId: string,\n): Promise<{ oauthClientId: string; oauthClientSecret: string; tenantId: string }> {\n log.debug('Fetching dataset info...')\n\n const datasetInfo = await getDatasetInfo(accessToken, datasetId)\n log.debug('Dataset info retrieved successfully')\n return {\n oauthClientId: datasetInfo.oauthClientId,\n oauthClientSecret: datasetInfo.oauthClientSecret,\n tenantId: datasetInfo.tenantId,\n }\n}\n\n/**\n * Handle the `init` command\n *\n * Sets up a project by:\n * 1. Checking authentication\n * 2. Detecting/scaffolding Payload project\n * 3. Fetching tenant details\n * 4. Storing configuration\n *\n * @param options - Command options\n */\nexport async function initCommand(options: InitCommandOptions): Promise<void> {\n // Check for outdated version (non-blocking)\n const currentVersion = await getOwnVersion()\n await checkForUpdates(currentVersion)\n\n // Check authentication\n const tokenStore = getTokenStore(getEnvironment())\n const s = p.spinner()\n\n if (options.skipAuth) {\n // Skip authentication for testing/development\n p.log.warn(pc.yellow('Skipping authentication (--skip-auth mode)'))\n } else {\n try {\n // Check for valid cached tokens first (no API call needed)\n if (!tokenStore.hasValidTokens()) {\n // Need to refresh or authenticate - show spinner for API call\n s.start('Checking authentication...')\n const token = await getValidAccessToken(tokenStore)\n if (!token) {\n s.stop('Authentication required to continue')\n\n // Run login command\n await loginCommand({ showNextSteps: false })\n\n // Get token after auth\n const newToken = await getValidAccessToken(tokenStore)\n if (!newToken) {\n p.log.error('Authentication failed')\n process.exit(1)\n }\n } else {\n s.stop(pc.green('✓ Authenticated'))\n }\n }\n } catch (error) {\n s.stop(pc.red('✗ Authentication failed'))\n log.error(error instanceof Error ? error.message : 'Unknown error')\n p.note('Run `figma auth` to authenticate', 'Tip')\n process.exit(1)\n }\n }\n\n // Note: We no longer check for figma.config.json here\n // Instead, the AST detection will check if figma object already exists in payload.config.ts\n // and skip modification if it does (unless --force is used)\n\n // Step 3: Get Content System ID (required argument)\n log.debug('Configuring Project...')\n\n if (!options.id) {\n p.log.error('Content System ID is required. Use --id <content_system_id>')\n process.exit(1)\n }\n\n const contentSystemId = options.id\n\n // Fetch dataset info (required - will fail if feature not enabled)\n let datasetInfo: { oauthClientId: string; oauthClientSecret: string; tenantId: string } | null =\n null\n if (!options.skipAuth) {\n const accessToken = await getValidAccessToken(tokenStore)\n if (accessToken) {\n try {\n datasetInfo = await fetchDatasetInfo(accessToken, contentSystemId)\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Unknown error'\n p.log.error(\n pc.red(`✗ Unable to fetch dataset info for content system \"${contentSystemId}\"`),\n )\n p.log.error(pc.dim(`Details: ${message}`))\n p.note(\n 'This may indicate the CMS feature is not enabled for your account.\\n' +\n 'Contact support if you believe this is an error.',\n 'Error',\n )\n process.exit(1)\n }\n }\n }\n\n // Step 4: Detect or scaffold Payload project\n const isInProject = await isInProjectDirectory()\n\n if (isInProject) {\n // ===== EXISTING PROJECT FLOW =====\n log.debug('Project directory detected')\n\n // Detect Payload\n const projectInfo = await detectPayloadProject()\n const packageManager = await resolvePackageManager(process.cwd())\n\n if (projectInfo.hasPayload) {\n // Validate existing Payload version\n if (projectInfo.payloadVersion && !validatePayloadVersion(projectInfo.payloadVersion)) {\n p.log.warn(\n pc.yellow(\n `Payload version ${projectInfo.payloadVersion} detected. Version 3.x is required.`,\n ),\n )\n p.note('Upgrade to Payload 3.x before continuing', 'Action Required')\n process.exit(1)\n }\n\n p.log.success(pc.green(`✓ Payload ${projectInfo.payloadVersion || 'detected'}`))\n\n // Check dependencies\n s.start('Checking dependencies...')\n const hasDeps = await hasRequiredDependencies(process.cwd())\n s.stop(pc.green('✓ Dependencies checked'))\n\n if (!hasDeps) {\n const shouldInstall = await p.confirm({\n initialValue: true,\n message: 'Install dependencies now?',\n })\n\n if (!p.isCancel(shouldInstall) && shouldInstall) {\n s.start('Installing dependencies...')\n await installDependencies(process.cwd(), packageManager)\n s.stop(pc.green('✓ Dependencies installed'))\n }\n }\n\n s.start('Checking Payload configuration...')\n const modResult = await ensurePayloadFigmaConfig(process.cwd(), packageManager, {\n contentSystemId,\n })\n\n if (!modResult.success) {\n s.stop(pc.red('✗ Configuration check failed'))\n displayManualInstructions(modResult.error || 'Unknown error', packageManager)\n process.exit(1)\n }\n\n if (modResult.modified) {\n s.stop(pc.green('✓ Payload configuration updated'))\n if (modResult.changes.length > 0) {\n modResult.changes.forEach((change) => log.debug(pc.dim(` → ${change}`)))\n }\n } else {\n s.stop(pc.green('✓ Payload configuration valid'))\n }\n\n // Display warnings if any\n if (modResult.warnings && modResult.warnings.length > 0) {\n modResult.warnings.forEach((warning) => {\n p.log.warn(pc.yellow(`⚠ ${warning}`))\n })\n }\n\n // Write environment variables to .env file\n try {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_CONTENT_SYSTEM_ID', contentSystemId)\n log.debug(`Added FIGMA_CONTENT_SYSTEM_ID to .env file`)\n\n const env = getEnvironment()\n if (env !== 'production') {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_ENV', env)\n log.debug(`Added FIGMA_ENV=${env} to .env file`)\n }\n\n if (datasetInfo) {\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_TENANT_ID', datasetInfo.tenantId)\n await addOrUpdateEnvVar(process.cwd(), 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId)\n await addOrUpdateEnvVar(\n process.cwd(),\n 'FIGMA_OAUTH_CLIENT_SECRET',\n datasetInfo.oauthClientSecret,\n )\n log.debug(\n `Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`,\n )\n }\n } catch (error) {\n p.log.warn(\n pc.yellow(\n `⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n ),\n )\n }\n } else {\n // Has package.json but no Payload - offer to add Payload\n p.log.warn(pc.yellow('⚠ No Payload detected in this project'))\n\n const shouldAddPayload = await p.confirm({\n initialValue: true,\n message: 'Would you like to add Payload to this project?',\n })\n\n if (p.isCancel(shouldAddPayload)) {\n p.cancel('Operation cancelled')\n process.exit(0)\n }\n\n if (!shouldAddPayload) {\n p.log.error('Payload is required to use Figma CMS')\n process.exit(1)\n }\n\n // TODO: Add Payload to existing project (future enhancement)\n p.log.error('Adding Payload to existing projects is not yet supported')\n p.note('Create a new project or manually add Payload dependencies', 'Action Required')\n process.exit(1)\n }\n\n // Generate import map to prevent errors on first dev run\n await runScript(process.cwd(), 'generate:importmap', packageManager)\n\n // Apply Lambda modifications (run.sh, standalone output, lambda:buildzip script)\n await applyLambdaModifications(process.cwd(), packageManager)\n\n // Ensure .gitignore has required entries\n await ensureGitignore(process.cwd(), ['.env', '.env.local', 'lambda.zip'])\n\n // Generate project token (unless skipping auth)\n if (!options.skipAuth) {\n await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s)\n }\n\n // Success message for existing project\n p.outro(pc.green('✓ Project initialized successfully!'))\n\n const nextSteps = [`Start development server: \\`${getRunCommand(packageManager)} dev\\``].filter(\n Boolean,\n )\n\n p.note(nextSteps.join('\\n'), 'Next Steps')\n } else {\n // ===== NEW PROJECT FLOW =====\n // p.log.info('No project detected - Creating New Project')\n\n // Prompt for path\n const projectPathInput = await p.text({\n initialValue: './',\n message: 'Enter path to create project:',\n placeholder: './my-cms-project',\n validate: (value) => {\n if (!value) {\n return 'Path is required'\n }\n // Allow relative or absolute paths\n return undefined\n },\n })\n\n if (p.isCancel(projectPathInput)) {\n p.cancel('Operation cancelled')\n process.exit(0)\n }\n\n const projectPath = projectPathInput\n const fullPath = path.resolve(process.cwd(), projectPath)\n\n // Get project name from path or prompt\n const projectName = options.name || path.basename(fullPath)\n const packageManager = detectPackageManagerFromEnvironment()\n\n // Create directory\n try {\n await fs.mkdir(fullPath, { recursive: true })\n } catch (error) {\n p.log.error(\n `Failed to create directory: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n process.exit(1)\n }\n\n // Scaffold project\n s.start('Downloading template from GitHub...')\n try {\n await scaffoldProject(fullPath, projectName, packageManager)\n s.stop(pc.green('✓ Template downloaded'))\n\n s.start('Installing dependencies...')\n await installDependencies(fullPath, packageManager)\n s.stop(pc.green('✓ Dependencies installed'))\n } catch (error) {\n s.stop(pc.red('✗ Failed'))\n log.error(error instanceof Error ? error.message : 'Unknown error')\n process.exit(1)\n }\n\n // Modify Payload configuration\n s.start('Checking Payload configuration...')\n const modResult = await ensurePayloadFigmaConfig(fullPath, packageManager, {\n contentSystemId,\n })\n\n if (!modResult.success) {\n s.stop(pc.red('✗ Configuration check failed'))\n displayManualInstructions(modResult.error || 'Unknown error', packageManager)\n process.exit(1)\n }\n\n if (modResult.modified) {\n s.stop(pc.green('✓ Payload configuration updated'))\n if (modResult.changes.length > 0) {\n modResult.changes.forEach((change) => log.debug(pc.dim(` → ${change}`)))\n }\n } else {\n s.stop(pc.green('✓ Payload configuration valid'))\n }\n\n // Display warnings if any\n if (modResult.warnings && modResult.warnings.length > 0) {\n modResult.warnings.forEach((warning) => {\n p.log.warn(pc.yellow(`⚠ ${warning}`))\n })\n }\n\n // Write environment variables to .env file\n try {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_CONTENT_SYSTEM_ID', contentSystemId)\n log.debug(`Added FIGMA_CONTENT_SYSTEM_ID to .env file`)\n\n const env = getEnvironment()\n if (env !== 'production') {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_ENV', env)\n log.debug(`Added FIGMA_ENV=${env} to .env file`)\n }\n\n if (datasetInfo) {\n await addOrUpdateEnvVar(fullPath, 'FIGMA_TENANT_ID', datasetInfo.tenantId)\n await addOrUpdateEnvVar(fullPath, 'FIGMA_OAUTH_CLIENT_ID', datasetInfo.oauthClientId)\n await addOrUpdateEnvVar(\n fullPath,\n 'FIGMA_OAUTH_CLIENT_SECRET',\n datasetInfo.oauthClientSecret,\n )\n log.debug(\n `Added FIGMA_TENANT_ID, FIGMA_OAUTH_CLIENT_ID, FIGMA_OAUTH_CLIENT_SECRET to .env file`,\n )\n }\n } catch (error) {\n p.log.warn(\n pc.yellow(\n `⚠ Failed to update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`,\n ),\n )\n }\n\n // Generate import map to prevent errors on first dev run\n await runScript(fullPath, 'generate:importmap', packageManager)\n\n // Generate project token (unless skipping auth)\n if (!options.skipAuth) {\n await generateProjectTokenWithFeedback(tokenStore, contentSystemId, s)\n }\n\n // Initialize git repository (after all files including lock file are ready)\n initializeGitRepo(fullPath)\n\n // Success message for NEW project\n p.log.step(pc.bgGreen(pc.black(' Project created successfully! ')))\n\n const relativePath = path.relative(process.cwd(), fullPath)\n const nextSteps: string[] = []\n\n // Only show cd command if user needs to navigate\n if (relativePath && relativePath !== '.') {\n nextSteps.push(`cd ${relativePath}`)\n }\n\n nextSteps.push(\n `${getRunCommand(packageManager)} dev or follow directions in README.md`,\n '',\n 'Documentation:',\n '- Getting Started: https://payloadcms.com/docs/getting-started/what-is-payload',\n '- Configuration: https://payloadcms.com/docs/configuration/overview',\n )\n\n p.note(nextSteps.join('\\n'), 'Next Steps')\n p.outro(pc.green('✓ Done'))\n }\n}\n"],"names":["p","fs","path","pc","getDatasetInfo","FigmaApiError","getValidAccessToken","getValidProjectToken","ProjectTokenError","getTokenStore","getEnvironment","ensureGitignore","addOrUpdateEnvVar","isDebug","applyLambdaModifications","log","detectPackageManagerFromEnvironment","getRunCommand","resolvePackageManager","displayManualInstructions","ensurePayloadFigmaConfig","runScript","detectPayloadProject","hasRequiredDependencies","initializeGitRepo","installDependencies","isInProjectDirectory","scaffoldProject","validatePayloadVersion","checkForUpdates","getOwnVersion","loginCommand","generateProjectTokenWithFeedback","tokenStore","contentSystemId","spinner","start","projectToken","stop","green","yellow","error","warning","message","note","Error","fetchDatasetInfo","accessToken","datasetId","debug","datasetInfo","oauthClientId","oauthClientSecret","tenantId","initCommand","options","currentVersion","s","skipAuth","warn","hasValidTokens","token","showNextSteps","newToken","process","exit","red","id","dim","isInProject","projectInfo","packageManager","cwd","hasPayload","payloadVersion","success","hasDeps","shouldInstall","confirm","initialValue","isCancel","modResult","modified","changes","length","forEach","change","warnings","env","shouldAddPayload","cancel","outro","nextSteps","filter","Boolean","join","projectPathInput","text","placeholder","validate","value","undefined","projectPath","fullPath","resolve","projectName","name","basename","mkdir","recursive","step","bgGreen","black","relativePath","relative","push"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db-content-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAcnB,kBAAkB,EA+BnB,MAAM,SAAS,CAAA;AAEhB,OAAO,YAAY,MAAM,eAAe,CAAA;AAIxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAK7D,OAAO,EAAE,KAAK,QAAQ,EAA+C,MAAM,qBAAqB,CAAA;AAOhG,KAAK,iBAAiB,GAAG;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db-content-api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAcnB,kBAAkB,EA+BnB,MAAM,SAAS,CAAA;AAEhB,OAAO,YAAY,MAAM,eAAe,CAAA;AAIxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAK7D,OAAO,EAAE,KAAK,QAAQ,EAA+C,MAAM,qBAAqB,CAAA;AAOhG,KAAK,iBAAiB,GAAG;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,IAAI,EAAE,QAAQ,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,mBAAmB,CAAA;AAmqBvB,eAAO,MAAM,iBAAiB,SAAU,iBAAiB,KAAG,kBAyD1D,CAAA"}
|
|
@@ -8,7 +8,7 @@ import { createAuthMiddleware, createErrorMiddleware } from './utilities/auth.js
|
|
|
8
8
|
import { dataToContentAPI } from './utilities/data/index.js';
|
|
9
9
|
import { convertPayloadJoinsToContentAPI } from './utilities/joins.js';
|
|
10
10
|
import { addFallbackLocale } from './utilities/locale/index.js';
|
|
11
|
-
import { buildMeta } from './utilities/meta/
|
|
11
|
+
import { buildMeta } from './utilities/meta/buildMeta.js';
|
|
12
12
|
import { convertPayloadWhereToContentAPI } from './utilities/where.js';
|
|
13
13
|
async function syncCollections() {
|
|
14
14
|
let existingIds;
|
|
@@ -126,7 +126,8 @@ async function find(args) {
|
|
|
126
126
|
async function findVersions(args) {
|
|
127
127
|
const sortWithFallback = addFallbackSort(args.sort || '-updatedAt', this.payload, args.collection);
|
|
128
128
|
const whereClause = convertPayloadWhereToContentAPI(args.where ?? {}, {
|
|
129
|
-
parentToDocumentId: true
|
|
129
|
+
parentToDocumentId: true,
|
|
130
|
+
stripVersionPrefix: true
|
|
130
131
|
});
|
|
131
132
|
const locale = addFallbackLocale(args.locale, this.payload);
|
|
132
133
|
const { data: response, error } = await this.client.POST('/api/v0/document_versions:find', {
|
|
@@ -192,10 +193,13 @@ async function createVersion(args) {
|
|
|
192
193
|
collection: args.collectionSlug,
|
|
193
194
|
contentSystemId: this.contentSystemId,
|
|
194
195
|
versionDoc: {
|
|
196
|
+
createdAt: args.createdAt,
|
|
195
197
|
latest: !args.autosave,
|
|
196
198
|
parent: String(args.parent),
|
|
199
|
+
updatedAt: args.updatedAt,
|
|
197
200
|
version: dataToContentAPI(this.payload, args.collectionSlug, args.versionData, {
|
|
198
|
-
applyDefaults: true
|
|
201
|
+
applyDefaults: true,
|
|
202
|
+
publishedLocale: args.publishedLocale
|
|
199
203
|
})
|
|
200
204
|
}
|
|
201
205
|
}
|
|
@@ -215,6 +219,8 @@ async function updateVersion(args) {
|
|
|
215
219
|
}
|
|
216
220
|
};
|
|
217
221
|
const locale = addFallbackLocale(args.locale, this.payload);
|
|
222
|
+
// versionData contains version metadata plus nested version content
|
|
223
|
+
const { publishedLocale, version, ...versionMeta } = args.versionData;
|
|
218
224
|
const { data: response, error } = await this.client.POST('/api/v0/document_versions:update', {
|
|
219
225
|
body: {
|
|
220
226
|
collection: args.collection,
|
|
@@ -222,9 +228,17 @@ async function updateVersion(args) {
|
|
|
222
228
|
createOnMissing: false,
|
|
223
229
|
locale,
|
|
224
230
|
versionDoc: {
|
|
225
|
-
|
|
231
|
+
createdAt: versionMeta.createdAt,
|
|
232
|
+
latest: versionMeta.latest,
|
|
233
|
+
parent: versionMeta.parent != null ? String(versionMeta.parent) : undefined,
|
|
234
|
+
updatedAt: versionMeta.updatedAt,
|
|
235
|
+
version: dataToContentAPI(this.payload, args.collection, version, {
|
|
236
|
+
publishedLocale
|
|
237
|
+
})
|
|
226
238
|
},
|
|
227
|
-
where: convertPayloadWhereToContentAPI(where
|
|
239
|
+
where: convertPayloadWhereToContentAPI(where, {
|
|
240
|
+
stripVersionPrefix: true
|
|
241
|
+
}),
|
|
228
242
|
...buildMeta(this.payload, {
|
|
229
243
|
collection: args.collection,
|
|
230
244
|
locale,
|
|
@@ -254,7 +268,9 @@ async function deleteVersions(args) {
|
|
|
254
268
|
collection: args.collection,
|
|
255
269
|
contentSystemId: this.contentSystemId,
|
|
256
270
|
locale,
|
|
257
|
-
where: convertPayloadWhereToContentAPI(args.where
|
|
271
|
+
where: convertPayloadWhereToContentAPI(args.where, {
|
|
272
|
+
stripVersionPrefix: true
|
|
273
|
+
}),
|
|
258
274
|
...buildMeta(this.payload, {
|
|
259
275
|
collection: args.collection,
|
|
260
276
|
locale,
|
|
@@ -473,7 +489,9 @@ async function countVersions(args) {
|
|
|
473
489
|
collection: args.collection,
|
|
474
490
|
contentSystemId: this.contentSystemId,
|
|
475
491
|
locale,
|
|
476
|
-
where: convertPayloadWhereToContentAPI(args.where
|
|
492
|
+
where: convertPayloadWhereToContentAPI(args.where, {
|
|
493
|
+
stripVersionPrefix: true
|
|
494
|
+
}),
|
|
477
495
|
...buildMeta(this.payload, {
|
|
478
496
|
collection: args.collection,
|
|
479
497
|
locale,
|
|
@@ -588,6 +606,7 @@ function createGlobalVersion(args) {
|
|
|
588
606
|
collectionSlug: getGlobalSlug(args.globalSlug),
|
|
589
607
|
createdAt: args.createdAt,
|
|
590
608
|
parent: args.globalSlug,
|
|
609
|
+
publishedLocale: args.publishedLocale,
|
|
591
610
|
updatedAt: args.updatedAt,
|
|
592
611
|
versionData: args.versionData
|
|
593
612
|
});
|