@lark-base-open/base-database-cli 1.1.0 → 1.3.7

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 (222) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/LICENSE +6 -0
  3. package/README.md +55 -31
  4. package/dist/ai-functions.d.ts +42 -0
  5. package/dist/ai-functions.d.ts.map +1 -0
  6. package/dist/ai-functions.js +327 -0
  7. package/dist/ai-functions.js.map +1 -0
  8. package/dist/archive.d.ts +21 -0
  9. package/dist/archive.d.ts.map +1 -1
  10. package/dist/archive.js +65 -10
  11. package/dist/archive.js.map +1 -1
  12. package/dist/auth.d.ts +8 -1
  13. package/dist/auth.d.ts.map +1 -1
  14. package/dist/auth.js +60 -6
  15. package/dist/auth.js.map +1 -1
  16. package/dist/check.d.ts +74 -0
  17. package/dist/check.d.ts.map +1 -0
  18. package/dist/check.js +283 -0
  19. package/dist/check.js.map +1 -0
  20. package/dist/dependency-policy.d.ts +10 -0
  21. package/dist/dependency-policy.d.ts.map +1 -0
  22. package/dist/dependency-policy.js +162 -0
  23. package/dist/dependency-policy.js.map +1 -0
  24. package/dist/deploy.d.ts +1 -0
  25. package/dist/deploy.d.ts.map +1 -1
  26. package/dist/deploy.js +122 -175
  27. package/dist/deploy.js.map +1 -1
  28. package/dist/environment-variables.d.ts +52 -0
  29. package/dist/environment-variables.d.ts.map +1 -0
  30. package/dist/environment-variables.js +563 -0
  31. package/dist/environment-variables.js.map +1 -0
  32. package/dist/environment.d.ts +1 -1
  33. package/dist/environment.js +1 -1
  34. package/dist/environment.js.map +1 -1
  35. package/dist/function-input-types.d.ts +10 -0
  36. package/dist/function-input-types.d.ts.map +1 -0
  37. package/dist/function-input-types.js +160 -0
  38. package/dist/function-input-types.js.map +1 -0
  39. package/dist/function-schema.d.ts.map +1 -1
  40. package/dist/function-schema.js +89 -36
  41. package/dist/function-schema.js.map +1 -1
  42. package/dist/init-field-retry.d.ts +17 -0
  43. package/dist/init-field-retry.d.ts.map +1 -0
  44. package/dist/init-field-retry.js +127 -0
  45. package/dist/init-field-retry.js.map +1 -0
  46. package/dist/init-journal.d.ts +98 -0
  47. package/dist/init-journal.d.ts.map +1 -0
  48. package/dist/init-journal.js +492 -0
  49. package/dist/init-journal.js.map +1 -0
  50. package/dist/init-schema.d.ts +8 -0
  51. package/dist/init-schema.d.ts.map +1 -0
  52. package/dist/init-schema.js +423 -0
  53. package/dist/init-schema.js.map +1 -0
  54. package/dist/init.d.ts +14 -0
  55. package/dist/init.d.ts.map +1 -1
  56. package/dist/init.js +886 -243
  57. package/dist/init.js.map +1 -1
  58. package/dist/lark-cli-error.d.ts +46 -0
  59. package/dist/lark-cli-error.d.ts.map +1 -0
  60. package/dist/lark-cli-error.js +171 -0
  61. package/dist/lark-cli-error.js.map +1 -0
  62. package/dist/lark-cli.d.ts +2 -1
  63. package/dist/lark-cli.d.ts.map +1 -1
  64. package/dist/lark-cli.js +292 -29
  65. package/dist/lark-cli.js.map +1 -1
  66. package/dist/mutation-schema.d.ts +146 -0
  67. package/dist/mutation-schema.d.ts.map +1 -0
  68. package/dist/mutation-schema.js +153 -0
  69. package/dist/mutation-schema.js.map +1 -0
  70. package/dist/mutation.d.ts +10 -0
  71. package/dist/mutation.d.ts.map +1 -0
  72. package/dist/mutation.js +131 -0
  73. package/dist/mutation.js.map +1 -0
  74. package/dist/npm.d.ts +1 -0
  75. package/dist/npm.d.ts.map +1 -1
  76. package/dist/npm.js +2 -2
  77. package/dist/npm.js.map +1 -1
  78. package/dist/preview-receipt.d.ts.map +1 -1
  79. package/dist/preview-receipt.js +15 -5
  80. package/dist/preview-receipt.js.map +1 -1
  81. package/dist/process.d.ts +3 -1
  82. package/dist/process.d.ts.map +1 -1
  83. package/dist/process.js +16 -4
  84. package/dist/process.js.map +1 -1
  85. package/dist/program.d.ts.map +1 -1
  86. package/dist/program.js +241 -42
  87. package/dist/program.js.map +1 -1
  88. package/dist/project-build.d.ts +25 -0
  89. package/dist/project-build.d.ts.map +1 -0
  90. package/dist/project-build.js +229 -0
  91. package/dist/project-build.js.map +1 -0
  92. package/dist/project-context.d.ts +344 -0
  93. package/dist/project-context.d.ts.map +1 -0
  94. package/dist/project-context.js +485 -0
  95. package/dist/project-context.js.map +1 -0
  96. package/dist/project-layout.d.ts +5 -0
  97. package/dist/project-layout.d.ts.map +1 -0
  98. package/dist/project-layout.js +24 -0
  99. package/dist/project-layout.js.map +1 -0
  100. package/dist/public-sql-error.d.ts +25 -0
  101. package/dist/public-sql-error.d.ts.map +1 -0
  102. package/dist/public-sql-error.js +81 -0
  103. package/dist/public-sql-error.js.map +1 -0
  104. package/dist/pull.d.ts.map +1 -1
  105. package/dist/pull.js +54 -15
  106. package/dist/pull.js.map +1 -1
  107. package/dist/site-readme.d.ts +3 -0
  108. package/dist/site-readme.d.ts.map +1 -0
  109. package/dist/site-readme.js +83 -0
  110. package/dist/site-readme.js.map +1 -0
  111. package/dist/workspace-fingerprint.d.ts +21 -1
  112. package/dist/workspace-fingerprint.d.ts.map +1 -1
  113. package/dist/workspace-fingerprint.js +81 -2
  114. package/dist/workspace-fingerprint.js.map +1 -1
  115. package/package.json +2 -1
  116. package/skills/lark-base-database/SKILL.md +70 -53
  117. package/skills/lark-base-database/references/ai-function.md +471 -0
  118. package/skills/lark-base-database/references/base-capability-routing.md +3 -3
  119. package/skills/lark-base-database/references/database-function-limitations.md +46 -0
  120. package/skills/lark-base-database/references/database-function.md +349 -0
  121. package/skills/lark-base-database/references/design/components/actions-fields.md +16 -0
  122. package/skills/lark-base-database/references/design/components/code/controls.css +122 -0
  123. package/skills/lark-base-database/references/design/components/code/controls.tsx +73 -0
  124. package/skills/lark-base-database/references/design/components/code/date-picker.tsx +42 -0
  125. package/skills/lark-base-database/references/design/components/code/floating.tsx +41 -0
  126. package/skills/lark-base-database/references/design/components/code/overlays.tsx +19 -0
  127. package/skills/lark-base-database/references/design/components/code/select.tsx +34 -0
  128. package/skills/lark-base-database/references/design/components/code/styles.d.ts +1 -0
  129. package/skills/lark-base-database/references/design/components/code/theme.css +49 -0
  130. package/skills/lark-base-database/references/design/components/code/usage.tsx +38 -0
  131. package/skills/lark-base-database/references/design/components/date-time-number.md +9 -0
  132. package/skills/lark-base-database/references/design/components/feedback-navigation.md +9 -0
  133. package/skills/lark-base-database/references/design/components/index.md +18 -0
  134. package/skills/lark-base-database/references/design/components/overlays.md +9 -0
  135. package/skills/lark-base-database/references/design/components/patterns/flat-business.md +7 -0
  136. package/skills/lark-base-database/references/design/components/selection.md +24 -0
  137. package/skills/lark-base-database/references/design/components.md +91 -0
  138. package/skills/lark-base-database/references/design/composition.md +90 -0
  139. package/skills/lark-base-database/references/design/control-recipes.md +107 -0
  140. package/skills/lark-base-database/references/design/examples.md +172 -0
  141. package/skills/lark-base-database/references/design/foundations.md +126 -0
  142. package/skills/lark-base-database/references/design/review.md +82 -0
  143. package/skills/lark-base-database/references/design/scenes/analysis-report.md +66 -0
  144. package/skills/lark-base-database/references/design/scenes/brand-showcase.md +70 -0
  145. package/skills/lark-base-database/references/design/scenes/business-operations.md +85 -0
  146. package/skills/lark-base-database/references/design/scenes/campaign-report.md +66 -0
  147. package/skills/lark-base-database/references/design/scenes/dashboard.md +77 -0
  148. package/skills/lark-base-database/references/design/scenes/festive-campaign.md +69 -0
  149. package/skills/lark-base-database/references/design/theme.md +27 -0
  150. package/skills/lark-base-database/references/design/typography.md +56 -0
  151. package/skills/lark-base-database/references/development.md +165 -32
  152. package/skills/lark-base-database/references/environment-variables.md +55 -0
  153. package/skills/lark-base-database/references/faas.md +41 -48
  154. package/skills/lark-base-database/references/file-transfer.md +25 -25
  155. package/skills/lark-base-database/references/frontend-design-guide.md +33 -77
  156. package/skills/lark-base-database/references/mutations.md +295 -0
  157. package/skills/lark-base-database/references/permission-design.md +24 -24
  158. package/skills/lark-base-database/references/release.md +54 -27
  159. package/skills/lark-base-database/references/style-guide.md +10 -67
  160. package/skills/lark-base-database/references/verification.md +17 -13
  161. package/skills/lark-base-database/references/workspace.md +71 -22
  162. package/templates/database-starter/README.md +34 -4
  163. package/templates/database-starter/database-functions/README.md +8 -0
  164. package/templates/database-starter/mutations/README.md +19 -0
  165. package/templates/database-starter/page/README.md +25 -19
  166. package/templates/database-starter/page/package-lock.json +8 -16
  167. package/templates/database-starter/page/package.json +2 -3
  168. package/templates/database-starter/page/src/App.tsx +23 -3
  169. package/templates/database-starter/page/src/components/UserSelectorEditor/index.tsx +32 -4
  170. package/templates/database-starter/page/src/components/UserSelectorPanel/index.tsx +104 -34
  171. package/templates/database-starter/page/src/components/UserSelectorPanel/user-search.test.ts +55 -11
  172. package/templates/database-starter/page/src/components/UserSelectorPanel/user-search.ts +68 -25
  173. package/templates/database-starter/page/src/components/database-runtime-ready.tsx +1 -1
  174. package/templates/database-starter/page/src/components/database-user-menu/index.tsx +4 -7
  175. package/templates/database-starter/page/src/components/feedback/page-state.tsx +40 -5
  176. package/templates/database-starter/page/src/components/floating-button/assets/edit-active.svg +3 -0
  177. package/templates/database-starter/page/src/components/floating-button/assets/edit-default.svg +3 -0
  178. package/templates/database-starter/page/src/components/floating-button/index.tsx +75 -112
  179. package/templates/database-starter/page/src/components/floating-button/utils/project-meta.test.ts +107 -37
  180. package/templates/database-starter/page/src/components/floating-button/utils/project-meta.ts +13 -50
  181. package/templates/database-starter/page/src/components/ui-language.test.tsx +101 -0
  182. package/templates/database-starter/page/src/examples/ai-function/ImageTaskOperation.tsx +202 -0
  183. package/templates/database-starter/page/src/examples/ai-function/README.md +14 -0
  184. package/templates/database-starter/page/src/examples/ai-function/TextStreamOperation.tsx +184 -0
  185. package/templates/database-starter/page/src/examples/ai-function/ai-copy.ts +173 -0
  186. package/templates/database-starter/page/src/examples/ai-function/ai-delta.test.ts +30 -0
  187. package/templates/database-starter/page/src/examples/ai-function/ai-delta.ts +26 -0
  188. package/templates/database-starter/page/src/examples/ai-function/ai-language.test.tsx +86 -0
  189. package/templates/database-starter/page/src/examples/ai-function/ai-media-panel.test.ts +201 -0
  190. package/templates/database-starter/page/src/examples/ai-function/ai-media-panel.tsx +382 -0
  191. package/templates/database-starter/page/src/lib/attachment-image.tsx +144 -0
  192. package/templates/database-starter/page/src/lib/database-function-inputs.generated.ts +4 -0
  193. package/templates/database-starter/page/src/lib/database-runtime-attachment.test.ts +180 -76
  194. package/templates/database-starter/page/src/lib/database-runtime.test.ts +130 -10
  195. package/templates/database-starter/page/src/lib/database-runtime.ts +484 -51
  196. package/templates/database-starter/page/src/lib/date-time.ts +61 -0
  197. package/templates/database-starter/page/src/lib/ui-language.ts +86 -0
  198. package/templates/database-starter/page/src/main.tsx +1 -1
  199. package/templates/database-starter/page/tsconfig.json +2 -2
  200. package/templates/database-starter/page/vite.config.ts +1 -2
  201. package/templates/database-starter/prettierignore +1 -1
  202. package/templates/database-starter/server-functions/README.md +2 -2
  203. package/templates/database-starter/server-functions/package-lock.json +4 -4
  204. package/templates/database-starter/server-functions/package.json +1 -1
  205. package/dist/agent-guide.d.ts +0 -19
  206. package/dist/agent-guide.d.ts.map +0 -1
  207. package/dist/agent-guide.js +0 -31
  208. package/dist/agent-guide.js.map +0 -1
  209. package/dist/database-skill.d.ts +0 -24
  210. package/dist/database-skill.d.ts.map +0 -1
  211. package/dist/database-skill.js +0 -151
  212. package/dist/database-skill.js.map +0 -1
  213. package/skills/lark-base-database/references/base-sql-unsupported.md +0 -42
  214. package/skills/lark-base-database/references/database-capability-skill.md +0 -40
  215. package/skills/lark-base-database/references/sql-function.md +0 -289
  216. package/templates/database-capability/SKILL.md.tmpl +0 -58
  217. package/templates/database-starter/page/src/components/floating-button/chatbot-entry.test.ts +0 -23
  218. package/templates/database-starter/page/src/components/floating-button/chatbot-entry.tsx +0 -873
  219. package/templates/database-starter/page/src/components/floating-button/local-chat-panel.test.ts +0 -25
  220. package/templates/database-starter/page/src/components/floating-button/local-chat-panel.tsx +0 -197
  221. package/templates/database-starter/page/src/components/floating-button/utils/env.ts +0 -18
  222. package/templates/database-starter/sql/README.md +0 -8
@@ -0,0 +1,563 @@
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
+ import { extname, join, relative, resolve } from 'node:path';
3
+ import { readConfig } from './config.js';
4
+ import { assertProjectRuntimeProfile, ONLINE_RUNTIME_PROFILE, } from './environment.js';
5
+ import { responseData, runLarkCli, resolveLarkProfileEnvironment, } from './lark-cli.js';
6
+ import { LarkCliError } from './lark-cli-error.js';
7
+ export const ENVIRONMENT_VARIABLE_TARGETS = ['preview', 'prod'];
8
+ export const ENVIRONMENT_VARIABLE_TYPES = ['config', 'secret'];
9
+ const sourceExtensions = new Set([
10
+ '.cjs',
11
+ '.cts',
12
+ '.js',
13
+ '.jsx',
14
+ '.mjs',
15
+ '.mts',
16
+ '.ts',
17
+ '.tsx',
18
+ ]);
19
+ const ignoredDirectories = new Set([
20
+ '.base-database-cli',
21
+ 'dist',
22
+ 'node_modules',
23
+ ]);
24
+ const environmentVariableNamePattern = /^[A-Za-z_][A-Za-z0-9_]{0,63}$/;
25
+ function isRecord(value) {
26
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
27
+ }
28
+ function optionalStringProperty(record, name) {
29
+ const value = record[name];
30
+ if (value === undefined)
31
+ return undefined;
32
+ if (typeof value === 'string')
33
+ return value;
34
+ throw new Error(`Environment variable API response field ${name} must be a string`);
35
+ }
36
+ function requiredBooleanProperty(record, name) {
37
+ const value = record[name];
38
+ if (typeof value !== 'boolean') {
39
+ throw new Error(`Environment variable API response field ${name} must be a boolean`);
40
+ }
41
+ return value;
42
+ }
43
+ function requiredNonNegativeIntegerProperty(record, name) {
44
+ const value = record[name];
45
+ if (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) {
46
+ return value;
47
+ }
48
+ throw new Error(`Environment variable API response field ${name} must be a non-negative integer`);
49
+ }
50
+ function normalizeType(value) {
51
+ if (value === 1)
52
+ return 'config';
53
+ if (value === 2)
54
+ return 'secret';
55
+ return undefined;
56
+ }
57
+ function normalizeEnvironmentVariablesView(response, fallbackTarget) {
58
+ const data = responseData(response);
59
+ const rawResult = data.result;
60
+ if (!isRecord(rawResult)) {
61
+ throw new Error('Environment variable API response is missing the result object');
62
+ }
63
+ const result = rawResult;
64
+ const target = optionalStringProperty(result, 'env');
65
+ if (!ENVIRONMENT_VARIABLE_TARGETS.includes(target)) {
66
+ throw new Error('Environment variable API response field env must be preview or prod');
67
+ }
68
+ if (target !== fallbackTarget) {
69
+ throw new Error(`Environment variable API response target mismatch: expected ${fallbackTarget}, received ${target}`);
70
+ }
71
+ const rawVariables = result.variables;
72
+ if (!Array.isArray(rawVariables)) {
73
+ throw new Error('Environment variable API response field variables must be an array');
74
+ }
75
+ const seenNames = new Set();
76
+ const variables = rawVariables.map((value, index) => {
77
+ if (!isRecord(value)) {
78
+ throw new Error(`Environment variable API response variable at index ${index} must be an object`);
79
+ }
80
+ const name = optionalStringProperty(value, 'name')?.trim();
81
+ if (!name || !environmentVariableNamePattern.test(name)) {
82
+ throw new Error(`Environment variable API response variable at index ${index} has an invalid name`);
83
+ }
84
+ if (seenNames.has(name)) {
85
+ throw new Error(`Environment variable API response contains duplicate variable ${name}`);
86
+ }
87
+ seenNames.add(name);
88
+ const type = normalizeType(value.type);
89
+ if (!type) {
90
+ throw new Error(`Environment variable API response variable ${name} has an invalid type`);
91
+ }
92
+ const description = optionalStringProperty(value, 'description') ?? '';
93
+ const required = requiredBooleanProperty(value, 'required');
94
+ const configured = requiredBooleanProperty(value, 'configured');
95
+ const configValue = optionalStringProperty(value, 'configValue');
96
+ const secretMask = optionalStringProperty(value, 'secretMask');
97
+ if (type === 'config' && configured && configValue === undefined) {
98
+ throw new Error(`Environment variable API response Config ${name} is configured but has no configValue`);
99
+ }
100
+ if (type === 'secret' && configured && secretMask === undefined) {
101
+ throw new Error(`Environment variable API response Secret ${name} is configured but has no secretMask`);
102
+ }
103
+ if (type === 'config' && secretMask !== undefined) {
104
+ throw new Error(`Environment variable API response Config ${name} must not contain secretMask`);
105
+ }
106
+ if (type === 'secret' && configValue !== undefined) {
107
+ throw new Error(`Environment variable API response Secret ${name} must not contain configValue`);
108
+ }
109
+ return {
110
+ name,
111
+ type,
112
+ description,
113
+ required,
114
+ configured,
115
+ ...(type === 'config' && configValue !== undefined
116
+ ? { configValue }
117
+ : {}),
118
+ ...(type === 'secret' && secretMask !== undefined
119
+ ? { secretMask }
120
+ : {}),
121
+ };
122
+ });
123
+ const rawMissing = result.missingRequiredVariables;
124
+ if (!Array.isArray(rawMissing) ||
125
+ rawMissing.some((name) => typeof name !== 'string')) {
126
+ throw new Error('Environment variable API response field missingRequiredVariables must be a string array');
127
+ }
128
+ const missingRequiredVariables = rawMissing;
129
+ const variableByName = new Map(variables.map((variable) => [variable.name, variable]));
130
+ for (const name of missingRequiredVariables) {
131
+ const variable = variableByName.get(name);
132
+ if (!variable || !variable.required || variable.configured) {
133
+ throw new Error(`Environment variable API response has inconsistent missing required variable ${name}`);
134
+ }
135
+ }
136
+ return {
137
+ target,
138
+ revision: requiredNonNegativeIntegerProperty(result, 'revision'),
139
+ variables,
140
+ missingRequiredVariables,
141
+ changed: requiredBooleanProperty(result, 'changed'),
142
+ };
143
+ }
144
+ function validateName(name) {
145
+ const normalized = name.trim();
146
+ if (!environmentVariableNamePattern.test(normalized) ||
147
+ isReservedEnvironmentVariable(normalized)) {
148
+ throw new Error(`Invalid or reserved environment variable name: ${name}`);
149
+ }
150
+ return normalized;
151
+ }
152
+ function environmentVariableContext(options) {
153
+ const workspace = resolve(options.directory);
154
+ const config = readConfig(workspace);
155
+ const runtimeProfile = options.runtimeProfile ?? ONLINE_RUNTIME_PROFILE;
156
+ assertProjectRuntimeProfile(config.runtimeProfile, runtimeProfile);
157
+ return { workspace, config, runtimeProfile };
158
+ }
159
+ async function commandEnvironment(options) {
160
+ const context = environmentVariableContext(options);
161
+ return {
162
+ ...context,
163
+ ...resolveLarkProfileEnvironment(await context.runtimeProfile.commandEnvironment(), options.larkProfile, context.config.larkProfile, context.runtimeProfile),
164
+ };
165
+ }
166
+ function environmentVariablesPath(siteToken) {
167
+ return `/open-apis/base/v3/sites/${encodeURIComponent(siteToken)}/environment_variables`;
168
+ }
169
+ function batchSavePath(siteToken) {
170
+ return `${environmentVariablesPath(siteToken)}/batch_save`;
171
+ }
172
+ function runBatchSave(workspace, siteToken, payload, env) {
173
+ return runLarkCli(['api', 'POST', batchSavePath(siteToken), '--data', '-'], env, workspace, JSON.stringify(payload));
174
+ }
175
+ function definitionMutation(options) {
176
+ return {
177
+ name: validateName(options.name),
178
+ operation: 1,
179
+ type: options.type === 'config' ? 1 : 2,
180
+ description: options.description.trim(),
181
+ required: options.required,
182
+ };
183
+ }
184
+ export async function listEnvironmentVariables(options) {
185
+ const { workspace, config, env } = await commandEnvironment(options);
186
+ return getEnvironmentVariables(config.appToken, options.target, env, workspace);
187
+ }
188
+ function getEnvironmentVariables(siteToken, target, env, workspace) {
189
+ return normalizeEnvironmentVariablesView(runLarkCli([
190
+ 'api',
191
+ 'GET',
192
+ environmentVariablesPath(siteToken),
193
+ '--params',
194
+ JSON.stringify({ env: target }),
195
+ ], env, workspace), target);
196
+ }
197
+ export async function declareEnvironmentVariable(options) {
198
+ const { workspace, config, env } = await commandEnvironment(options);
199
+ const name = validateName(options.name);
200
+ const description = options.description.trim();
201
+ const current = getEnvironmentVariables(config.appToken, options.target, env, workspace);
202
+ const existing = current.variables.find((variable) => variable.name === name);
203
+ if (existing) {
204
+ const unchanged = existing.type === options.type &&
205
+ existing.description === description &&
206
+ existing.required === options.required;
207
+ if (unchanged)
208
+ return current;
209
+ if (!options.force) {
210
+ throw new Error(`Environment variable ${name} already exists with different metadata; inspect it first and use --force only after the user confirms the shared definition change`);
211
+ }
212
+ }
213
+ return normalizeEnvironmentVariablesView(runBatchSave(workspace, config.appToken, {
214
+ env: options.target,
215
+ definitionMutations: [
216
+ definitionMutation({ ...options, name, description }),
217
+ ],
218
+ }, env), options.target);
219
+ }
220
+ export async function setEnvironmentVariable(options) {
221
+ if (options.value === '') {
222
+ throw new Error('Environment variable value cannot be empty');
223
+ }
224
+ const { workspace, config, env } = await commandEnvironment(options);
225
+ const name = validateName(options.name);
226
+ try {
227
+ return normalizeEnvironmentVariablesView(runBatchSave(workspace, config.appToken, {
228
+ env: options.target,
229
+ valueMutations: [{ name, operation: 1, value: options.value }],
230
+ }, env), options.target);
231
+ }
232
+ catch (error) {
233
+ const message = 'Environment variable save failed; write outcome is unconfirmed';
234
+ if (error instanceof LarkCliError) {
235
+ throw new LarkCliError({
236
+ kind: error.details.kind,
237
+ message,
238
+ code: typeof error.details.code === 'number'
239
+ ? error.details.code
240
+ : undefined,
241
+ });
242
+ }
243
+ throw new Error(message);
244
+ }
245
+ }
246
+ export async function clearEnvironmentVariable(options) {
247
+ const { workspace, config, env } = await commandEnvironment(options);
248
+ const name = validateName(options.name);
249
+ return normalizeEnvironmentVariablesView(runBatchSave(workspace, config.appToken, {
250
+ env: options.target,
251
+ valueMutations: [{ name, operation: 2 }],
252
+ }, env), options.target);
253
+ }
254
+ function sourceFiles(directory) {
255
+ const result = [];
256
+ const visit = (current) => {
257
+ for (const entry of readdirSync(current, { withFileTypes: true })) {
258
+ if (entry.isDirectory()) {
259
+ if (!ignoredDirectories.has(entry.name))
260
+ visit(join(current, entry.name));
261
+ }
262
+ else if (entry.isFile() && sourceExtensions.has(extname(entry.name))) {
263
+ result.push(join(current, entry.name));
264
+ }
265
+ }
266
+ };
267
+ visit(directory);
268
+ return result;
269
+ }
270
+ function sourceLocation(workspace, file, source, start) {
271
+ const lines = source.slice(0, start).split('\n');
272
+ return `${relative(workspace, file)}:${lines.length}:${(lines.at(-1)?.length ?? 0) + 1}`;
273
+ }
274
+ function tokenizeJavaScriptSource(source, location) {
275
+ const tokens = [];
276
+ let index = 0;
277
+ const identifierStart = (value) => /[A-Za-z_$]/.test(value);
278
+ const identifierPart = (value) => /[A-Za-z0-9_$]/.test(value);
279
+ const canEndExpression = () => {
280
+ const previous = tokens.at(-1);
281
+ if (!previous)
282
+ return false;
283
+ if (previous.kind === 'string' || previous.kind === 'closeBracket')
284
+ return true;
285
+ if (previous.kind === 'identifier') {
286
+ return !new Set([
287
+ 'return',
288
+ 'throw',
289
+ 'case',
290
+ 'delete',
291
+ 'typeof',
292
+ 'void',
293
+ 'yield',
294
+ 'await',
295
+ 'in',
296
+ 'of',
297
+ ]).has(previous.value);
298
+ }
299
+ return (previous.kind === 'other' &&
300
+ [')', 'number', '++', '--'].includes(previous.value));
301
+ };
302
+ const skipQuoted = (quote) => {
303
+ index += 1;
304
+ let value = '';
305
+ let escaped = false;
306
+ while (index < source.length) {
307
+ const character = source[index];
308
+ if (character === '\\') {
309
+ escaped = true;
310
+ index += 2;
311
+ continue;
312
+ }
313
+ if (character === quote) {
314
+ index += 1;
315
+ return { value, escaped };
316
+ }
317
+ value += character;
318
+ index += 1;
319
+ }
320
+ throw new Error(`Cannot scan environment variables because ${location(index)} contains an unterminated string`);
321
+ };
322
+ const skipRegularExpression = () => {
323
+ index += 1;
324
+ let inCharacterClass = false;
325
+ while (index < source.length) {
326
+ const character = source[index];
327
+ if (character === '\\') {
328
+ index += 2;
329
+ continue;
330
+ }
331
+ if (character === '[')
332
+ inCharacterClass = true;
333
+ else if (character === ']')
334
+ inCharacterClass = false;
335
+ else if (character === '/' && !inCharacterClass) {
336
+ index += 1;
337
+ while (index < source.length && /[A-Za-z]/.test(source[index]))
338
+ index += 1;
339
+ return;
340
+ }
341
+ index += 1;
342
+ }
343
+ throw new Error(`Cannot scan environment variables because ${location(index)} contains an unterminated regular expression`);
344
+ };
345
+ const scanCode = (templateExpression = false) => {
346
+ let braceDepth = 0;
347
+ while (index < source.length) {
348
+ const character = source[index];
349
+ if (/\s/.test(character)) {
350
+ index += 1;
351
+ continue;
352
+ }
353
+ if (character === '/' && source[index + 1] === '/') {
354
+ index += 2;
355
+ while (index < source.length && source[index] !== '\n')
356
+ index += 1;
357
+ continue;
358
+ }
359
+ if (character === '/' && source[index + 1] === '*') {
360
+ const start = index;
361
+ index = source.indexOf('*/', index + 2);
362
+ if (index < 0)
363
+ throw new Error(`Cannot scan environment variables because ${location(start)} contains an unterminated comment`);
364
+ index += 2;
365
+ continue;
366
+ }
367
+ if (character === '/' && !canEndExpression()) {
368
+ skipRegularExpression();
369
+ continue;
370
+ }
371
+ if (character === "'" || character === '"') {
372
+ const start = index;
373
+ const quoted = skipQuoted(character);
374
+ tokens.push({
375
+ kind: 'string',
376
+ value: quoted.escaped ? '' : quoted.value,
377
+ start,
378
+ });
379
+ continue;
380
+ }
381
+ if (character === '`') {
382
+ const start = index;
383
+ index += 1;
384
+ while (index < source.length) {
385
+ if (source[index] === '\\')
386
+ index += 2;
387
+ else if (source[index] === '`') {
388
+ index += 1;
389
+ break;
390
+ }
391
+ else if (source[index] === '$' && source[index + 1] === '{') {
392
+ index += 2;
393
+ scanCode(true);
394
+ }
395
+ else
396
+ index += 1;
397
+ }
398
+ if (index > source.length || source[index - 1] !== '`') {
399
+ throw new Error(`Cannot scan environment variables because ${location(start)} contains an unterminated template literal`);
400
+ }
401
+ continue;
402
+ }
403
+ if (templateExpression && character === '}') {
404
+ if (braceDepth === 0) {
405
+ index += 1;
406
+ return;
407
+ }
408
+ braceDepth -= 1;
409
+ }
410
+ else if (templateExpression && character === '{')
411
+ braceDepth += 1;
412
+ const start = index;
413
+ if (identifierStart(character)) {
414
+ index += 1;
415
+ while (index < source.length && identifierPart(source[index]))
416
+ index += 1;
417
+ tokens.push({
418
+ kind: 'identifier',
419
+ value: source.slice(start, index),
420
+ start,
421
+ });
422
+ }
423
+ else if (character === '?' && source[index + 1] === '.') {
424
+ index += 2;
425
+ tokens.push({ kind: 'questionDot', value: '?.', start });
426
+ }
427
+ else {
428
+ index += 1;
429
+ const kind = character === '.'
430
+ ? 'dot'
431
+ : character === '['
432
+ ? 'openBracket'
433
+ : character === ']'
434
+ ? 'closeBracket'
435
+ : 'other';
436
+ tokens.push({
437
+ kind,
438
+ value: /[0-9]/.test(character) ? 'number' : character,
439
+ start,
440
+ });
441
+ }
442
+ }
443
+ if (templateExpression) {
444
+ throw new Error(`Cannot scan environment variables because ${location(index)} contains an unterminated template expression`);
445
+ }
446
+ };
447
+ scanCode();
448
+ return tokens;
449
+ }
450
+ function scanSourceFileEnvironmentVariables(workspace, file) {
451
+ const source = readFileSync(file, 'utf8');
452
+ const location = (start) => sourceLocation(workspace, file, source, start);
453
+ const tokens = tokenizeJavaScriptSource(source, location);
454
+ const names = [];
455
+ const unsupported = [];
456
+ for (let index = 0; index < tokens.length; index += 1) {
457
+ const processToken = tokens[index];
458
+ if (processToken?.kind !== 'identifier' || processToken.value !== 'process')
459
+ continue;
460
+ let envTokenIndex = -1;
461
+ if ((tokens[index + 1]?.kind === 'dot' ||
462
+ tokens[index + 1]?.kind === 'questionDot') &&
463
+ tokens[index + 2]?.kind === 'identifier' &&
464
+ tokens[index + 2]?.value === 'env') {
465
+ envTokenIndex = index + 2;
466
+ }
467
+ else if (tokens[index + 1]?.kind === 'openBracket' &&
468
+ tokens[index + 2]?.kind === 'string' &&
469
+ tokens[index + 2]?.value === 'env' &&
470
+ tokens[index + 3]?.kind === 'closeBracket') {
471
+ envTokenIndex = index + 3;
472
+ }
473
+ else {
474
+ continue;
475
+ }
476
+ const access = tokens[envTokenIndex + 1];
477
+ const name = tokens[envTokenIndex + 2];
478
+ if ((access?.kind === 'dot' || access?.kind === 'questionDot') &&
479
+ name?.kind === 'identifier') {
480
+ names.push(name.value);
481
+ index = envTokenIndex + 2;
482
+ continue;
483
+ }
484
+ if (access?.kind === 'openBracket' &&
485
+ name?.kind === 'string' &&
486
+ environmentVariableNamePattern.test(name.value) &&
487
+ tokens[envTokenIndex + 3]?.kind === 'closeBracket') {
488
+ names.push(name.value);
489
+ index = envTokenIndex + 3;
490
+ continue;
491
+ }
492
+ unsupported.push(location(processToken.start));
493
+ }
494
+ return { names, unsupported };
495
+ }
496
+ export function scanEnvironmentVariableReferences(workspace) {
497
+ const functions = join(resolve(workspace), 'server-functions', 'functions');
498
+ if (!existsSync(functions))
499
+ return [];
500
+ const names = new Set();
501
+ const unsupported = [];
502
+ for (const file of sourceFiles(functions)) {
503
+ const scanned = scanSourceFileEnvironmentVariables(resolve(workspace), file);
504
+ for (const name of scanned.names)
505
+ names.add(name);
506
+ unsupported.push(...scanned.unsupported);
507
+ }
508
+ if (unsupported.length > 0) {
509
+ throw new Error(`Unsupported dynamic or destructured process.env access in server-functions: ${unsupported.join(', ')}. Replace it with a static reference such as process.env.NAME or process.env['NAME'] so the deployment can validate the declaration.`);
510
+ }
511
+ return [...names]
512
+ .filter((name) => !isReservedEnvironmentVariable(name))
513
+ .sort();
514
+ }
515
+ export async function validatePreviewEnvironmentVariableDeclarations(workspace, profile, larkProfile) {
516
+ const references = scanEnvironmentVariableReferences(workspace);
517
+ if (references.length === 0)
518
+ return;
519
+ const view = await listEnvironmentVariables({
520
+ directory: workspace,
521
+ target: 'preview',
522
+ runtimeProfile: profile,
523
+ larkProfile,
524
+ });
525
+ const declared = new Set(view.variables.map((variable) => variable.name));
526
+ const undeclared = references.filter((name) => !declared.has(name));
527
+ if (undeclared.length > 0) {
528
+ throw new Error(`Undeclared environment variables used by server-functions: ${undeclared.join(', ')}. Declare them with \`npx @lark-base-open/base-database-cli environment-variables declare\` before deploying Preview.`);
529
+ }
530
+ }
531
+ export async function validatePreviewEnvironmentVariableValues(workspace, profile, larkProfile) {
532
+ if (scanEnvironmentVariableReferences(workspace).length === 0)
533
+ return;
534
+ const view = await listEnvironmentVariables({
535
+ directory: workspace,
536
+ target: 'preview',
537
+ runtimeProfile: profile,
538
+ larkProfile,
539
+ });
540
+ if (view.missingRequiredVariables.length > 0) {
541
+ throw new Error(`Required Preview environment variables are not configured: ${view.missingRequiredVariables.join(', ')}. Configure them before deploying Preview.`);
542
+ }
543
+ }
544
+ export async function validateProdEnvironmentVariables(workspace, profile, larkProfile) {
545
+ if (scanEnvironmentVariableReferences(workspace).length === 0)
546
+ return;
547
+ const view = await listEnvironmentVariables({
548
+ directory: workspace,
549
+ target: 'prod',
550
+ runtimeProfile: profile,
551
+ larkProfile,
552
+ });
553
+ if (view.missingRequiredVariables.length > 0) {
554
+ throw new Error(`Required Prod environment variables are not configured: ${view.missingRequiredVariables.join(', ')}. Configure them before publishing Prod.`);
555
+ }
556
+ }
557
+ export function isReservedEnvironmentVariable(name) {
558
+ return (name === 'NODE_ENV' ||
559
+ name === 'PORT' ||
560
+ name.startsWith('BASE_SITE_') ||
561
+ name.startsWith('LARK_'));
562
+ }
563
+ //# sourceMappingURL=environment-variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment-variables.js","sourceRoot":"","sources":["../src/environment-variables.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export interface RuntimeProfile {
2
2
  name: string;
3
3
  supportedLarkBrands?: readonly ('feishu' | 'lark')[];
4
- initAttempts: number;
4
+ checkCommand: string;
5
5
  deployCommand: string;
6
6
  commandEnvironment(): Promise<NodeJS.ProcessEnv>;
7
7
  pageBuildEnvironment(): NodeJS.ProcessEnv;
@@ -3,7 +3,7 @@ function onlineCommandEnvironment() {
3
3
  }
4
4
  export const ONLINE_RUNTIME_PROFILE = {
5
5
  name: 'online',
6
- initAttempts: 1,
6
+ checkCommand: 'base-database-cli check --json',
7
7
  deployCommand: 'base-database-cli deploy',
8
8
  async commandEnvironment() {
9
9
  return onlineCommandEnvironment();
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAUA,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,0BAA0B;IACzC,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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../src/environment.ts"],"names":[],"mappings":"AAUA,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,gCAAgC;IAC9C,aAAa,EAAE,0BAA0B;IACzC,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,10 @@
1
+ export declare function renderDatabaseFunctionInputTypes(contracts: Array<{
2
+ functionId: string;
3
+ inputSchema: Record<string, unknown>;
4
+ }>): string;
5
+ export declare function syncDatabaseFunctionInputTypes(workspace: string): {
6
+ sql: number;
7
+ faas: number;
8
+ mutation: number;
9
+ };
10
+ //# sourceMappingURL=function-input-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-input-types.d.ts","sourceRoot":"","sources":["../src/function-input-types.ts"],"names":[],"mappings":"AAqJA,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,KAAK,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC,GACD,MAAM,CAqBR;AAcD,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM;IAK5D,GAAG;IACH,IAAI;IACJ,QAAQ;EAGX"}