@lark-base-open/base-database-cli 1.0.0

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.
Files changed (149) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +169 -0
  3. package/changelog/CHANGELOG-0.x.md +103 -0
  4. package/config-schema.json +28 -0
  5. package/dist/agent-guide.d.ts +18 -0
  6. package/dist/agent-guide.d.ts.map +1 -0
  7. package/dist/agent-guide.js +30 -0
  8. package/dist/agent-guide.js.map +1 -0
  9. package/dist/archive.d.ts +16 -0
  10. package/dist/archive.d.ts.map +1 -0
  11. package/dist/archive.js +162 -0
  12. package/dist/archive.js.map +1 -0
  13. package/dist/assets.d.ts +4 -0
  14. package/dist/assets.d.ts.map +1 -0
  15. package/dist/assets.js +6 -0
  16. package/dist/assets.js.map +1 -0
  17. package/dist/auth.d.ts +17 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +63 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/cli.d.ts +3 -0
  22. package/dist/cli.d.ts.map +1 -0
  23. package/dist/cli.js +15 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/config.d.ts +5 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +50 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/database-skill.d.ts +22 -0
  30. package/dist/database-skill.d.ts.map +1 -0
  31. package/dist/database-skill.js +135 -0
  32. package/dist/database-skill.js.map +1 -0
  33. package/dist/deploy.d.ts +28 -0
  34. package/dist/deploy.d.ts.map +1 -0
  35. package/dist/deploy.js +476 -0
  36. package/dist/deploy.js.map +1 -0
  37. package/dist/environment.d.ts +12 -0
  38. package/dist/environment.d.ts.map +1 -0
  39. package/dist/environment.js +27 -0
  40. package/dist/environment.js.map +1 -0
  41. package/dist/function-schema.d.ts +3 -0
  42. package/dist/function-schema.d.ts.map +1 -0
  43. package/dist/function-schema.js +310 -0
  44. package/dist/function-schema.js.map +1 -0
  45. package/dist/init.d.ts +77 -0
  46. package/dist/init.d.ts.map +1 -0
  47. package/dist/init.js +418 -0
  48. package/dist/init.js.map +1 -0
  49. package/dist/lark-cli.d.ts +8 -0
  50. package/dist/lark-cli.d.ts.map +1 -0
  51. package/dist/lark-cli.js +228 -0
  52. package/dist/lark-cli.js.map +1 -0
  53. package/dist/npm.d.ts +13 -0
  54. package/dist/npm.d.ts.map +1 -0
  55. package/dist/npm.js +93 -0
  56. package/dist/npm.js.map +1 -0
  57. package/dist/page-title.d.ts +3 -0
  58. package/dist/page-title.d.ts.map +1 -0
  59. package/dist/page-title.js +47 -0
  60. package/dist/page-title.js.map +1 -0
  61. package/dist/preview-receipt.d.ts +23 -0
  62. package/dist/preview-receipt.d.ts.map +1 -0
  63. package/dist/preview-receipt.js +133 -0
  64. package/dist/preview-receipt.js.map +1 -0
  65. package/dist/process.d.ts +17 -0
  66. package/dist/process.d.ts.map +1 -0
  67. package/dist/process.js +53 -0
  68. package/dist/process.js.map +1 -0
  69. package/dist/program.d.ts +12 -0
  70. package/dist/program.d.ts.map +1 -0
  71. package/dist/program.js +204 -0
  72. package/dist/program.js.map +1 -0
  73. package/dist/pull.d.ts +18 -0
  74. package/dist/pull.d.ts.map +1 -0
  75. package/dist/pull.js +324 -0
  76. package/dist/pull.js.map +1 -0
  77. package/dist/skill.d.ts +7 -0
  78. package/dist/skill.d.ts.map +1 -0
  79. package/dist/skill.js +28 -0
  80. package/dist/skill.js.map +1 -0
  81. package/dist/types.d.ts +32 -0
  82. package/dist/types.d.ts.map +1 -0
  83. package/dist/types.js +2 -0
  84. package/dist/types.js.map +1 -0
  85. package/dist/workspace-fingerprint.d.ts +8 -0
  86. package/dist/workspace-fingerprint.d.ts.map +1 -0
  87. package/dist/workspace-fingerprint.js +64 -0
  88. package/dist/workspace-fingerprint.js.map +1 -0
  89. package/package.json +54 -0
  90. package/skills/lark-base-database/SKILL.md +307 -0
  91. package/skills/lark-base-database/references/base-capability-routing.md +81 -0
  92. package/skills/lark-base-database/references/base-sql-unsupported.md +42 -0
  93. package/skills/lark-base-database/references/database-capability-skill.md +24 -0
  94. package/skills/lark-base-database/references/development.md +642 -0
  95. package/skills/lark-base-database/references/file-transfer.md +275 -0
  96. package/skills/lark-base-database/references/permission-design.md +138 -0
  97. package/skills/lark-base-database/references/release.md +81 -0
  98. package/skills/lark-base-database/references/sql-function.md +276 -0
  99. package/skills/lark-base-database/references/style-guide.md +88 -0
  100. package/templates/database-capability/SKILL.md.tmpl +41 -0
  101. package/templates/database-starter/README.md +11 -0
  102. package/templates/database-starter/gitignore +3 -0
  103. package/templates/database-starter/page/.prettierignore +4 -0
  104. package/templates/database-starter/page/.prettierrc.json +7 -0
  105. package/templates/database-starter/page/README.md +29 -0
  106. package/templates/database-starter/page/index.html +24 -0
  107. package/templates/database-starter/page/package-lock.json +2675 -0
  108. package/templates/database-starter/page/package.json +44 -0
  109. package/templates/database-starter/page/public/favicon.png +0 -0
  110. package/templates/database-starter/page/src/App.tsx +18 -0
  111. package/templates/database-starter/page/src/components/UserSelectorEditor/index.tsx +267 -0
  112. package/templates/database-starter/page/src/components/UserSelectorPanel/index.css +32 -0
  113. package/templates/database-starter/page/src/components/UserSelectorPanel/index.test.ts +24 -0
  114. package/templates/database-starter/page/src/components/UserSelectorPanel/index.tsx +478 -0
  115. package/templates/database-starter/page/src/components/UserSelectorPanel/user-search.test.ts +175 -0
  116. package/templates/database-starter/page/src/components/UserSelectorPanel/user-search.ts +201 -0
  117. package/templates/database-starter/page/src/components/database-runtime-ready.tsx +21 -0
  118. package/templates/database-starter/page/src/components/database-user-menu/index.tsx +238 -0
  119. package/templates/database-starter/page/src/components/feedback/page-state.tsx +66 -0
  120. package/templates/database-starter/page/src/components/floating-button/chatbot-entry.test.ts +23 -0
  121. package/templates/database-starter/page/src/components/floating-button/chatbot-entry.tsx +873 -0
  122. package/templates/database-starter/page/src/components/floating-button/index.tsx +196 -0
  123. package/templates/database-starter/page/src/components/floating-button/local-chat-panel.test.ts +25 -0
  124. package/templates/database-starter/page/src/components/floating-button/local-chat-panel.tsx +197 -0
  125. package/templates/database-starter/page/src/components/floating-button/utils/current-user.ts +56 -0
  126. package/templates/database-starter/page/src/components/floating-button/utils/env.ts +18 -0
  127. package/templates/database-starter/page/src/components/floating-button/utils/project-meta.test.ts +79 -0
  128. package/templates/database-starter/page/src/components/floating-button/utils/project-meta.ts +252 -0
  129. package/templates/database-starter/page/src/components/ui/button.tsx +56 -0
  130. package/templates/database-starter/page/src/index.css +67 -0
  131. package/templates/database-starter/page/src/lib/cn.test.ts +9 -0
  132. package/templates/database-starter/page/src/lib/cn.ts +7 -0
  133. package/templates/database-starter/page/src/lib/database-runtime-attachment.test.ts +168 -0
  134. package/templates/database-starter/page/src/lib/database-runtime-context.test.ts +111 -0
  135. package/templates/database-starter/page/src/lib/database-runtime.test.ts +103 -0
  136. package/templates/database-starter/page/src/lib/database-runtime.ts +389 -0
  137. package/templates/database-starter/page/src/main.tsx +34 -0
  138. package/templates/database-starter/page/src/vite-env.d.ts +1 -0
  139. package/templates/database-starter/page/tsconfig.json +23 -0
  140. package/templates/database-starter/page/vite.config.ts +13 -0
  141. package/templates/database-starter/prettierignore +1 -0
  142. package/templates/database-starter/server-functions/.prettierignore +3 -0
  143. package/templates/database-starter/server-functions/.prettierrc.json +7 -0
  144. package/templates/database-starter/server-functions/README.md +11 -0
  145. package/templates/database-starter/server-functions/package-lock.json +1687 -0
  146. package/templates/database-starter/server-functions/package.json +22 -0
  147. package/templates/database-starter/server-functions/scripts/run-tsc.mjs +50 -0
  148. package/templates/database-starter/server-functions/tsconfig.json +20 -0
  149. package/templates/database-starter/sql/README.md +8 -0
package/dist/deploy.js ADDED
@@ -0,0 +1,476 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs';
3
+ import { dirname, join, relative, resolve } from 'node:path';
4
+ import { createInterface } from 'node:readline/promises';
5
+ import { archiveDatabase, prepareDatabaseMetadata, } from './archive.js';
6
+ import { deploymentAgentGuide } from './agent-guide.js';
7
+ import { readConfig } from './config.js';
8
+ import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
9
+ import { responseData, runLarkCli, runLarkCliOutput } from './lark-cli.js';
10
+ import { validatePageTitle } from './page-title.js';
11
+ import { lockRepairHint, resolveWorkspaceNpm, validateDependencyLock, } from './npm.js';
12
+ import { finalizePreviewReceipt, previewArtifact, readPreviewReceiptForProduction, writePendingPreviewReceipt, } from './preview-receipt.js';
13
+ import { CommandExecutionError } from './process.js';
14
+ import { workspaceInputFingerprint } from './workspace-fingerprint.js';
15
+ const dependencyDirectories = ['page', 'server-functions'];
16
+ function isRecord(value) {
17
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ }
19
+ export function collectBaseBinding(config, warn = (message) => process.stderr.write(`Warning: ${message}\n`)) {
20
+ if (config.bindings === undefined)
21
+ return undefined;
22
+ if (!isRecord(config.bindings)) {
23
+ warn('bindings cannot be parsed; fix base-database.jsonc.');
24
+ return undefined;
25
+ }
26
+ const bases = new Map();
27
+ for (const [name, value] of Object.entries(config.bindings)) {
28
+ if (!isRecord(value)) {
29
+ warn(`binding "${name}" cannot be parsed; fix base-database.jsonc.`);
30
+ continue;
31
+ }
32
+ if (value.type !== 'base') {
33
+ warn(`binding "${name}" has unsupported type ${JSON.stringify(value.type)}; only "base" is supported; fix base-database.jsonc.`);
34
+ continue;
35
+ }
36
+ const baseToken = value.baseToken;
37
+ const tableIds = value.tableIds;
38
+ if (typeof baseToken !== 'string' ||
39
+ baseToken.trim() === '' ||
40
+ !Array.isArray(tableIds) ||
41
+ tableIds.length === 0 ||
42
+ tableIds.some((tableId) => typeof tableId !== 'string' || tableId.trim() === '')) {
43
+ warn(`binding "${name}" cannot be parsed as a Base binding; fix base-database.jsonc.`);
44
+ continue;
45
+ }
46
+ const normalizedBaseToken = baseToken.trim();
47
+ const existing = bases.get(normalizedBaseToken);
48
+ if (existing) {
49
+ existing.names.push(name);
50
+ existing.tableIds = Array.from(new Set([...existing.tableIds, ...tableIds.map((id) => id.trim())]));
51
+ }
52
+ else {
53
+ bases.set(normalizedBaseToken, {
54
+ names: [name],
55
+ baseToken: normalizedBaseToken,
56
+ tableIds: Array.from(new Set(tableIds.map((id) => id.trim()))),
57
+ });
58
+ }
59
+ }
60
+ if (bases.size > 1) {
61
+ const detail = Array.from(bases.values())
62
+ .map((binding) => `${binding.names.join('/')} (${binding.baseToken})`)
63
+ .join(', ');
64
+ throw new Error(`Only one Base can be bound; found ${detail}. Remove the extra Base binding from base-database.jsonc.`);
65
+ }
66
+ return bases.values().next().value;
67
+ }
68
+ function syncBaseBinding(appToken, binding, env) {
69
+ if (!binding)
70
+ return;
71
+ runLarkCli([
72
+ 'api',
73
+ 'POST',
74
+ `/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/bind_base`,
75
+ '--data',
76
+ JSON.stringify({
77
+ baseToken: binding.baseToken,
78
+ tableIds: binding.tableIds,
79
+ }),
80
+ ], env);
81
+ }
82
+ function validateSQLFunctions(workspace, appToken, validations, env) {
83
+ const failures = [];
84
+ const token = encodeURIComponent(appToken);
85
+ for (const validation of validations) {
86
+ const response = runLarkCli([
87
+ 'api',
88
+ 'POST',
89
+ `/open-apis/base/v3/sites/${token}/validate_sql_functions`,
90
+ '--data',
91
+ `@${relative(workspace, validation.path)}`,
92
+ ], env, workspace);
93
+ const data = responseData(response);
94
+ if (data.isSuccess !== true) {
95
+ failures.push({
96
+ functionId: validation.functionId,
97
+ diagnostics: String(data.errMsg ?? ''),
98
+ });
99
+ }
100
+ }
101
+ if (failures.length === 0)
102
+ return;
103
+ throw new Error([
104
+ `SQL validation failed for ${failures.length}/${validations.length} functions:`,
105
+ ...failures.map((failure) => `- ${failure.functionId}: ${failure.diagnostics}`),
106
+ ].join('\n'));
107
+ }
108
+ function dependencyFingerprint(workspace, directory, npmVersion) {
109
+ const hash = createHash('sha256');
110
+ const project = join(workspace, directory);
111
+ for (const filename of [
112
+ 'package.json',
113
+ 'package-lock.json',
114
+ 'npm-shrinkwrap.json',
115
+ '.npmrc',
116
+ ]) {
117
+ const path = join(project, filename);
118
+ hash.update(filename);
119
+ hash.update('\0');
120
+ hash.update(existsSync(path) ? readFileSync(path) : '<missing>');
121
+ hash.update('\0');
122
+ }
123
+ hash.update(process.version);
124
+ hash.update('\0');
125
+ hash.update(npmVersion);
126
+ hash.update('\0');
127
+ hash.update(process.platform);
128
+ hash.update('\0');
129
+ hash.update(process.arch);
130
+ return hash.digest('hex');
131
+ }
132
+ function dependencyStatePath(workspace, directory) {
133
+ return join(workspace, '.base-database-cli/state/dependencies', `${directory}.json`);
134
+ }
135
+ function readDependencyState(path) {
136
+ try {
137
+ const value = JSON.parse(readFileSync(path, 'utf8'));
138
+ if (isRecord(value) &&
139
+ typeof value.fingerprint === 'string' &&
140
+ typeof value.nodeVersion === 'string' &&
141
+ typeof value.npmVersion === 'string' &&
142
+ typeof value.platform === 'string' &&
143
+ typeof value.arch === 'string') {
144
+ return {
145
+ fingerprint: value.fingerprint,
146
+ nodeVersion: value.nodeVersion,
147
+ npmVersion: value.npmVersion,
148
+ platform: value.platform,
149
+ arch: value.arch,
150
+ };
151
+ }
152
+ }
153
+ catch {
154
+ // 缓存缺失或损坏时重新安装依赖。
155
+ }
156
+ return undefined;
157
+ }
158
+ function writeDependencyState(path, state) {
159
+ mkdirSync(dirname(path), { recursive: true });
160
+ const temporary = `${path}.${String(process.pid)}.tmp`;
161
+ writeFileSync(temporary, `${JSON.stringify(state, null, 2)}\n`);
162
+ renameSync(temporary, path);
163
+ }
164
+ function canReuseDependencies(workspace, directory, fingerprint, npmVersion) {
165
+ const state = readDependencyState(dependencyStatePath(workspace, directory));
166
+ return (state?.fingerprint === fingerprint &&
167
+ state.nodeVersion === process.version &&
168
+ state.npmVersion === npmVersion &&
169
+ state.platform === process.platform &&
170
+ state.arch === process.arch &&
171
+ existsSync(join(workspace, directory, 'node_modules')));
172
+ }
173
+ async function installDependencies(workspace, forceInstall, npm) {
174
+ await Promise.all(dependencyDirectories.map(async (directory) => {
175
+ const fingerprint = dependencyFingerprint(workspace, directory, npm.version);
176
+ if (!forceInstall &&
177
+ canReuseDependencies(workspace, directory, fingerprint, npm.version)) {
178
+ process.stderr.write(`Dependencies unchanged; skipping npm ci for ${directory}.\n`);
179
+ return;
180
+ }
181
+ const statePath = dependencyStatePath(workspace, directory);
182
+ rmSync(statePath, { force: true });
183
+ process.stderr.write(`Installing ${directory} dependencies with npm@${npm.version} (Node ${process.version}).\n`);
184
+ try {
185
+ await npm.run(['ci'], { cwd: join(workspace, directory) });
186
+ }
187
+ catch (error) {
188
+ const diagnostics = error instanceof CommandExecutionError ? error.stderr : '';
189
+ const lockFailure = /EUSAGE|Invalid: lock file|Missing: .*from lock file|package\.json and .*lock.*in sync/is.test(diagnostics);
190
+ const hint = lockFailure
191
+ ? lockRepairHint(directory, npm.version)
192
+ : `Check the npm diagnostic above for ${directory}. Fix network, registry, authentication or installer errors before retrying; do not delete the lock or bypass installation.`;
193
+ throw new Error(`Dependency installation failed for ${directory} using npm@${npm.version}: ${error instanceof Error ? error.message : String(error)}. ${hint}`, { cause: error });
194
+ }
195
+ if (!existsSync(join(workspace, directory, 'node_modules'))) {
196
+ throw new Error(`npm ci completed without creating node_modules for ${directory}`);
197
+ }
198
+ writeDependencyState(statePath, {
199
+ fingerprint,
200
+ nodeVersion: process.version,
201
+ npmVersion: npm.version,
202
+ platform: process.platform,
203
+ arch: process.arch,
204
+ });
205
+ }));
206
+ }
207
+ async function buildProject(workspace, env, npm) {
208
+ await Promise.all(['page', 'server-functions'].map((directory) => npm.run(['run', 'build'], {
209
+ cwd: join(workspace, directory),
210
+ env,
211
+ })));
212
+ }
213
+ function publishId(data) {
214
+ const value = data.publishId ?? data.publish_id;
215
+ if (typeof value !== 'string' || value === '') {
216
+ throw new Error('Publish response does not contain publishId');
217
+ }
218
+ return value;
219
+ }
220
+ async function waitForPublish(appToken, id, env) {
221
+ const path = `/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/publish_status`;
222
+ for (let attempt = 0; attempt < 36; attempt += 1) {
223
+ const response = runLarkCli(['api', 'GET', path, '--params', JSON.stringify({ publishId: id })], env);
224
+ const data = responseData(response);
225
+ const publish = data.publish;
226
+ const status = publish?.status ?? data.status ?? data.publishStatus;
227
+ const normalized = publish ? { ...data, ...publish } : data;
228
+ if (status === 10 || status === '10')
229
+ return normalized;
230
+ if (status === 20 || status === '20') {
231
+ throw new Error(`Publish ${id} failed: ${JSON.stringify(normalized)}`);
232
+ }
233
+ if (status !== 0 && status !== 1 && status !== '0' && status !== '1') {
234
+ throw new Error(`Publish ${id} returned unknown status: ${String(status)}`);
235
+ }
236
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, 5_000));
237
+ }
238
+ throw new Error(`Publish ${id} did not finish within 3 minutes`);
239
+ }
240
+ export async function deploymentStatus(directory, id, wait, runtimeProfile = ONLINE_RUNTIME_PROFILE) {
241
+ const workspace = resolve(directory);
242
+ const config = readConfig(workspace);
243
+ assertProjectRuntimeProfile(config.runtimeProfile, runtimeProfile);
244
+ const environment = runtimeProfile.name;
245
+ const env = await runtimeProfile.commandEnvironment();
246
+ if (wait) {
247
+ const data = await waitForPublish(config.appToken, id, env);
248
+ const target = data.env === 'preview' ? 'preview' : 'prod';
249
+ const canonicalBaseAppURL = requiredBaseAppUrl(data);
250
+ const artifact = join(workspace, '.base-database-cli/state/artifacts/site.zip');
251
+ if (data.env === 'preview' && existsSync(artifact)) {
252
+ const url = staticUrl(data);
253
+ finalizePreviewReceipt(workspace, config.appToken, id, url);
254
+ }
255
+ return {
256
+ ok: true,
257
+ environment,
258
+ appToken: config.appToken,
259
+ publishId: id,
260
+ status: data.status,
261
+ baseAppUrl: environmentBaseAppUrl(canonicalBaseAppURL, target),
262
+ };
263
+ }
264
+ const response = runLarkCli([
265
+ 'api',
266
+ 'GET',
267
+ `/open-apis/base/v3/sites/${encodeURIComponent(config.appToken)}/publish_status`,
268
+ '--params',
269
+ JSON.stringify({ publishId: id }),
270
+ ], env);
271
+ const data = responseData(response);
272
+ const publish = data.publish;
273
+ const normalized = publish ? { ...data, ...publish } : data;
274
+ const target = normalized.env === 'preview' ? 'preview' : 'prod';
275
+ const canonicalBaseAppURL = publishedBaseAppUrl(normalized);
276
+ return {
277
+ ok: true,
278
+ environment,
279
+ appToken: config.appToken,
280
+ publishId: id,
281
+ status: normalized.status,
282
+ ...(canonicalBaseAppURL
283
+ ? {
284
+ baseAppUrl: environmentBaseAppUrl(canonicalBaseAppURL, target),
285
+ }
286
+ : {}),
287
+ };
288
+ }
289
+ function publish(appToken, target, env) {
290
+ const response = runLarkCli([
291
+ 'api',
292
+ 'POST',
293
+ `/open-apis/base/v3/sites/${encodeURIComponent(appToken)}/publish`,
294
+ '--data',
295
+ JSON.stringify({ env: target }),
296
+ ], env);
297
+ return publishId(responseData(response));
298
+ }
299
+ async function confirmProduction() {
300
+ if (!process.stdin.isTTY)
301
+ return false;
302
+ const prompt = createInterface({
303
+ input: process.stdin,
304
+ output: process.stdout,
305
+ });
306
+ try {
307
+ const answer = await prompt.question('Preview 已发布。确认使用同一制品继续发布到 Prod? [y/N] ');
308
+ return /^(y|yes)$/i.test(answer.trim());
309
+ }
310
+ finally {
311
+ prompt.close();
312
+ }
313
+ }
314
+ function publishResult(data) {
315
+ const result = data.result;
316
+ return isRecord(result) ? result : undefined;
317
+ }
318
+ function staticUrl(data) {
319
+ const result = publishResult(data);
320
+ const value = result?.staticUrl ??
321
+ result?.static_url ??
322
+ result?.appUrl ??
323
+ result?.app_url;
324
+ return typeof value === 'string' && value.trim() !== ''
325
+ ? value.trim()
326
+ : undefined;
327
+ }
328
+ function publishedBaseAppUrl(data) {
329
+ const result = publishResult(data);
330
+ const value = result?.baseAppUrl ?? result?.base_app_url;
331
+ return typeof value === 'string' && value.trim() !== ''
332
+ ? value.trim()
333
+ : undefined;
334
+ }
335
+ function requiredBaseAppUrl(data) {
336
+ const value = publishedBaseAppUrl(data);
337
+ if (!value) {
338
+ throw new Error('Successful publish response does not contain result.baseAppUrl');
339
+ }
340
+ return value;
341
+ }
342
+ function environmentBaseAppUrl(baseAppUrl, target) {
343
+ try {
344
+ const url = new URL(baseAppUrl);
345
+ if (target === 'preview') {
346
+ url.searchParams.set('mode', 'edit');
347
+ }
348
+ else {
349
+ url.searchParams.delete('mode');
350
+ }
351
+ return url.toString();
352
+ }
353
+ catch {
354
+ throw new Error(`Invalid baseAppUrl: ${baseAppUrl}`);
355
+ }
356
+ }
357
+ export async function deployProject(options, suppliedNpm) {
358
+ if (!options.install && options.forceInstall) {
359
+ throw new Error('--no-install cannot be combined with --force-install');
360
+ }
361
+ if (options.production && options.forceInstall) {
362
+ throw new Error('--force-install is not valid with --production');
363
+ }
364
+ const workspace = resolve(options.directory);
365
+ const config = readConfig(workspace);
366
+ const runtimeProfile = options.runtimeProfile ?? ONLINE_RUNTIME_PROFILE;
367
+ assertProjectRuntimeProfile(config.runtimeProfile, runtimeProfile);
368
+ const baseBinding = collectBaseBinding(config);
369
+ for (const directory of ['page', 'server-functions', 'sql']) {
370
+ if (!existsSync(join(workspace, directory))) {
371
+ throw new Error(`Required project directory is missing: ${directory}`);
372
+ }
373
+ }
374
+ if (!options.production) {
375
+ validatePageTitle(workspace);
376
+ }
377
+ // Validate local inputs before even constructing a remote/auth environment.
378
+ const npm = options.production
379
+ ? undefined
380
+ : (suppliedNpm ?? resolveWorkspaceNpm());
381
+ if (options.install && npm) {
382
+ for (const directory of dependencyDirectories) {
383
+ validateDependencyLock(join(workspace, directory), directory, npm.version);
384
+ }
385
+ }
386
+ const environment = runtimeProfile.name;
387
+ const env = await runtimeProfile.commandEnvironment();
388
+ const buildEnv = runtimeProfile.pageBuildEnvironment();
389
+ if (options.production) {
390
+ readPreviewReceiptForProduction(workspace, config.appToken);
391
+ const confirmed = options.yes || (await confirmProduction());
392
+ if (!confirmed) {
393
+ throw new Error('Prod publishing was not confirmed; Preview remains available');
394
+ }
395
+ const receipt = readPreviewReceiptForProduction(workspace, config.appToken);
396
+ syncBaseBinding(config.appToken, baseBinding, env);
397
+ const productionId = publish(config.appToken, 'prod', env);
398
+ const productionStatus = await waitForPublish(config.appToken, productionId, env);
399
+ const canonicalBaseAppURL = requiredBaseAppUrl(productionStatus);
400
+ const productionBaseAppURL = environmentBaseAppUrl(canonicalBaseAppURL, 'prod');
401
+ return {
402
+ ok: true,
403
+ environment,
404
+ appToken: config.appToken,
405
+ baseAppUrl: productionBaseAppURL,
406
+ publishId: productionId,
407
+ artifact: receipt.artifact,
408
+ bytes: receipt.bytes,
409
+ sha256: receipt.sha256,
410
+ agentGuide: deploymentAgentGuide(config.appToken, 'prod', {
411
+ workspace,
412
+ profile: runtimeProfile,
413
+ }),
414
+ };
415
+ }
416
+ const metadata = prepareDatabaseMetadata(workspace);
417
+ syncBaseBinding(config.appToken, baseBinding, env);
418
+ validateSQLFunctions(workspace, config.appToken, metadata.sqlValidation, env);
419
+ if (!npm)
420
+ throw new Error('Preview npm toolchain was not initialized');
421
+ if (options.install) {
422
+ await installDependencies(workspace, options.forceInstall ?? false, npm);
423
+ }
424
+ const workspaceInputBeforeBuild = workspaceInputFingerprint(workspace);
425
+ await buildProject(workspace, buildEnv, npm);
426
+ const artifact = await archiveDatabase(workspace, metadata);
427
+ const workspaceInputAfterBuild = workspaceInputFingerprint(workspace);
428
+ if (workspaceInputAfterBuild.sha256 !== workspaceInputBeforeBuild.sha256) {
429
+ throw new Error('The application workspace changed while building Preview; run `deploy` again');
430
+ }
431
+ const token = encodeURIComponent(config.appToken);
432
+ runLarkCli([
433
+ 'api',
434
+ 'POST',
435
+ `/open-apis/base/v3/sites/${token}/update_functions`,
436
+ '--data',
437
+ `@${relative(workspace, artifact.metaList)}`,
438
+ ], env, workspace);
439
+ runLarkCli([
440
+ 'api',
441
+ 'POST',
442
+ `/open-apis/base/v3/sites/${token}/artifact`,
443
+ '--file',
444
+ `file=${relative(workspace, artifact.archive)}`,
445
+ ], env, workspace);
446
+ const remoteSource = join(workspace, '.base-database-cli/state/artifacts/remote-source.zip');
447
+ runLarkCliOutput('GET', `/open-apis/base/v3/sites/${token}/source_code`, relative(workspace, remoteSource), env, workspace);
448
+ if (!existsSync(remoteSource) || statSync(remoteSource).size === 0) {
449
+ throw new Error('Artifact upload succeeded but source_code returned no file');
450
+ }
451
+ const previewId = publish(config.appToken, 'preview', env);
452
+ const pendingPreview = previewArtifact(config.appToken, artifact.archive, previewId);
453
+ writePendingPreviewReceipt(workspace, pendingPreview, workspaceInputAfterBuild);
454
+ const previewStatus = await waitForPublish(config.appToken, previewId, env);
455
+ const previewStaticUrl = staticUrl(previewStatus);
456
+ const canonicalBaseAppURL = requiredBaseAppUrl(previewStatus);
457
+ const previewBaseAppURL = environmentBaseAppUrl(canonicalBaseAppURL, 'preview');
458
+ const receipt = finalizePreviewReceipt(workspace, config.appToken, previewId, previewStaticUrl);
459
+ const result = {
460
+ ok: true,
461
+ environment,
462
+ appToken: config.appToken,
463
+ baseAppUrl: previewBaseAppURL,
464
+ publishId: previewId,
465
+ artifact: artifact.displayArchive,
466
+ bytes: receipt.bytes,
467
+ sha256: receipt.sha256,
468
+ agentGuide: deploymentAgentGuide(config.appToken, 'preview', {
469
+ workspace,
470
+ profile: runtimeProfile,
471
+ }),
472
+ nextAction: '请用户通过 baseAppUrl 体验当前版本;确认效果后回复“部署正式版”。在此之前停止,不执行运行态验收或 Prod 发布。',
473
+ };
474
+ return result;
475
+ }
476
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface RuntimeProfile {
2
+ name: string;
3
+ initAttempts: number;
4
+ deployCommand: string;
5
+ commandEnvironment(): Promise<NodeJS.ProcessEnv>;
6
+ pageBuildEnvironment(): NodeJS.ProcessEnv;
7
+ prepareWorkspace?(workspace: string): void;
8
+ }
9
+ export declare const ONLINE_RUNTIME_PROFILE: RuntimeProfile;
10
+ export declare function resolveRuntimeProfile(environment: string, profile?: RuntimeProfile): RuntimeProfile;
11
+ export declare function assertProjectRuntimeProfile(configuredName: string | undefined, profile: RuntimeProfile): void;
12
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,oBAAoB,IAAI,MAAM,CAAC,UAAU,CAAC;IAC1C,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAMD,eAAO,MAAM,sBAAsB,EAAE,cAUpC,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,cAAuC,GAC/C,cAAc,CAOhB;AAED,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,cAAc,GACtB,IAAI,CAON"}
@@ -0,0 +1,27 @@
1
+ function onlineCommandEnvironment() {
2
+ return { ...process.env };
3
+ }
4
+ export const ONLINE_RUNTIME_PROFILE = {
5
+ name: 'online',
6
+ initAttempts: 1,
7
+ deployCommand: 'npx @lark-base-open/base-database-cli deploy',
8
+ async commandEnvironment() {
9
+ return onlineCommandEnvironment();
10
+ },
11
+ pageBuildEnvironment() {
12
+ return onlineCommandEnvironment();
13
+ },
14
+ };
15
+ export function resolveRuntimeProfile(environment, profile = ONLINE_RUNTIME_PROFILE) {
16
+ if (environment !== profile.name) {
17
+ throw new Error(`Runtime profile mismatch: requested ${environment}, loaded ${profile.name}`);
18
+ }
19
+ return profile;
20
+ }
21
+ export function assertProjectRuntimeProfile(configuredName, profile) {
22
+ const projectProfile = configuredName ?? ONLINE_RUNTIME_PROFILE.name;
23
+ if (projectProfile !== profile.name) {
24
+ throw new Error(`Project requires runtime profile ${projectProfile}; current CLI provides ${profile.name}`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AASA,SAAS,wBAAwB;IAC/B,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,8CAA8C;IAC7D,KAAK,CAAC,kBAAkB;QACtB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;IACD,oBAAoB;QAClB,OAAO,wBAAwB,EAAE,CAAC;IACpC,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,OAAO,GAAmB,sBAAsB;IAEhD,IAAI,WAAW,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,uCAAuC,WAAW,YAAY,OAAO,CAAC,IAAI,EAAE,CAC7E,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,cAAkC,EAClC,OAAuB;IAEvB,MAAM,cAAc,GAAG,cAAc,IAAI,sBAAsB,CAAC,IAAI,CAAC;IACrE,IAAI,cAAc,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,oCAAoC,cAAc,0BAA0B,OAAO,CAAC,IAAI,EAAE,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function normalizeFunctionInputSchema(value: unknown, source: string): string;
2
+ export declare function deriveSQLInputSchema(meta: Record<string, unknown>, sql: string): string;
3
+ //# sourceMappingURL=function-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-schema.d.ts","sourceRoot":"","sources":["../src/function-schema.ts"],"names":[],"mappings":"AA6NA,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAOR;AAiHD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,MAAM,GACV,MAAM,CA6BR"}