@lark-apaas/db-schema-sync 0.1.6 → 0.1.7-alpha.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.
package/dist/bin.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  __toESM,
7
7
  generateSchema,
8
8
  resolveEnvOptions
9
- } from "./chunk-SWKVIZTR.js";
9
+ } from "./chunk-JOLAF4EV.js";
10
10
 
11
11
  // node_modules/dotenv/package.json
12
12
  var require_package = __commonJS({
@@ -424,12 +424,10 @@ function parseArgs(argv) {
424
424
 
425
425
  // src/bin.ts
426
426
  async function main() {
427
- for (const name of [".env.local", ".env"]) {
428
- const envPath = resolve(process.cwd(), name);
429
- if (existsSync(envPath)) {
430
- (0, import_dotenv.config)({ path: envPath });
431
- console.log(`[db-schema-sync] \u2713 Loaded ${name}`);
432
- }
427
+ const envPath = resolve(process.cwd(), ".env");
428
+ if (existsSync(envPath)) {
429
+ (0, import_dotenv.config)({ path: envPath });
430
+ console.log("[db-schema-sync] \u2713 Loaded .env file");
433
431
  }
434
432
  const cliArgs = parseArgs(process.argv);
435
433
  const output = cliArgs.output || process.env.DB_SCHEMA_OUTPUT || "server/database/schema.ts";
@@ -56,7 +56,6 @@ var require_dist = __commonJS({
56
56
  __export(index_exports, {
57
57
  DEFAULT_CLOCK_TOLERANCE_SEC: () => DEFAULT_CLOCK_TOLERANCE_SEC,
58
58
  DEFAULT_JWT_EXPIRE_TIME_MS: () => DEFAULT_JWT_EXPIRE_TIME_MS,
59
- FileTokenProvider: () => FileTokenProvider,
60
59
  HttpClient: () => HttpClient2,
61
60
  HttpError: () => HttpError,
62
61
  generateJWTToken: () => generateJWTToken,
@@ -229,92 +228,9 @@ var require_dist = __commonJS({
229
228
  };
230
229
  }
231
230
  };
232
- var StaticTokenSource = class {
233
- constructor(token) {
234
- this.token = token;
235
- if (!token) {
236
- throw new Error("StaticTokenSource: token \u4E0D\u80FD\u4E3A\u7A7A");
237
- }
238
- }
239
- getToken(_claims) {
240
- return this.token;
241
- }
242
- };
243
- var import_fs = __require("fs");
244
- var DEFAULT_REFRESH_BEFORE_MS = 5 * 60 * 1e3;
245
- var DEFAULT_TOKEN_PATHS = [
246
- "/home/gem/workspace/.force/openclaw/miaoda-provider-key"
247
- ];
248
- var FileTokenProvider = class {
249
- cache = /* @__PURE__ */ new Map();
250
- paths;
251
- refreshBeforeMs;
252
- constructor(config) {
253
- this.paths = config?.paths ?? DEFAULT_TOKEN_PATHS;
254
- this.refreshBeforeMs = config?.refreshBeforeMs ?? DEFAULT_REFRESH_BEFORE_MS;
255
- }
256
- /**
257
- * 获取 token,按路径优先级依次尝试
258
- *
259
- * 1. 缓存有效且不在刷新窗口 → 直接返回
260
- * 2. 进入刷新窗口 → 重读文件,更新缓存
261
- * 3. 文件未更新但缓存未过期 → 仍返回旧缓存
262
- * 4. 所有路径均无有效 token → 返回 null
263
- */
264
- getToken() {
265
- const now = Date.now();
266
- for (const filePath of this.paths) {
267
- const cached = this.cache.get(filePath);
268
- if (cached && cached.expiresAtMs - now > this.refreshBeforeMs) {
269
- return { token: cached.token, accessKey: cached.accessKey };
270
- }
271
- const result = this.readAndParse(filePath);
272
- if (result) {
273
- this.cache.set(filePath, result);
274
- if (result.expiresAtMs > now) {
275
- return { token: result.token, accessKey: result.accessKey };
276
- }
277
- }
278
- if (cached && cached.expiresAtMs > now) {
279
- return { token: cached.token, accessKey: cached.accessKey };
280
- }
281
- }
282
- return null;
283
- }
284
- clearCache() {
285
- this.cache.clear();
286
- }
287
- readAndParse(filePath) {
288
- try {
289
- const token = (0, import_fs.readFileSync)(filePath, "utf-8").trim();
290
- if (!token) return null;
291
- const payload = this.decodePayload(token);
292
- if (!payload?.exp) return null;
293
- return {
294
- token,
295
- accessKey: payload.access_key ?? "",
296
- expiresAtMs: payload.exp * 1e3
297
- };
298
- } catch {
299
- return null;
300
- }
301
- }
302
- decodePayload(token) {
303
- try {
304
- const segments = token.split(".");
305
- if (segments.length !== 3) return null;
306
- const padLength = (4 - (segments[1].length % 4 || 4)) % 4;
307
- const padded = `${segments[1]}${"=".repeat(padLength)}`.replace(/-/g, "+").replace(/_/g, "/");
308
- return JSON.parse(Buffer.from(padded, "base64").toString("utf8"));
309
- } catch {
310
- return null;
311
- }
312
- }
313
- };
314
231
  var DEFAULT_DOMAIN_ENV = "FORCE_AUTHN_INNERAPI_DOMAIN";
315
232
  var DEFAULT_ACCESS_KEY_ENV = "FORCE_AUTHN_ACCESS_KEY";
316
233
  var DEFAULT_SECRET_KEY_ENV = "FORCE_AUTHN_ACCESS_SECRET";
317
- var DEFAULT_TOKEN_ENV = "FORCE_AUTHN_TOKEN";
318
234
  var DEFAULT_ADMIN_DOMAIN_ENV = "MIAODA_DEV_INNER_DOMAIN_WITH_PREFIX";
319
235
  var DEFAULT_CLIENT_TOKEN_ENV = "MIAODA_AUTHN_CODE";
320
236
  var MIAODA_CLIENT_TOKEN_HEADER = "X-Miaoda-Client-Token";
@@ -337,13 +253,6 @@ var require_dist = __commonJS({
337
253
  return void 0;
338
254
  }
339
255
  ensureNoAccessKeyOverride("platform.defaultClaims", options.defaultClaims);
340
- let fileTokenProvider;
341
- if (options.tokenProvider?.type === "file") {
342
- fileTokenProvider = new FileTokenProvider({
343
- paths: options.tokenProvider.paths,
344
- refreshBeforeMs: options.refreshBeforeMs
345
- });
346
- }
347
256
  const accessKeyEnv = options.accessKeyEnv || DEFAULT_ACCESS_KEY_ENV;
348
257
  const secretKeyEnv = options.secretKeyEnv || DEFAULT_SECRET_KEY_ENV;
349
258
  const accessKey = options.accessKey ?? (process.env[accessKeyEnv] || "");
@@ -355,38 +264,15 @@ var require_dist = __commonJS({
355
264
  expireTimeMs,
356
265
  refreshBeforeMs: options.refreshBeforeMs
357
266
  });
358
- const tokenEnv = options.tokenEnv || DEFAULT_TOKEN_ENV;
359
- const platformToken = options.token ?? (process.env[tokenEnv] || "");
360
- const staticTokenSource = platformToken ? new StaticTokenSource(platformToken) : null;
361
267
  const clientTokenEnv = options.clientTokenEnv || DEFAULT_CLIENT_TOKEN_ENV;
362
268
  interceptors.request.use((config) => {
363
- if (fileTokenProvider) {
364
- const fileToken = fileTokenProvider.getToken();
365
- if (fileToken) {
366
- const headers2 = {
367
- ...config.headers,
368
- "Authorization": `Bearer ${fileToken.token}`,
369
- "x-api-key": fileToken.accessKey
370
- };
371
- return { ...config, headers: headers2 };
372
- }
373
- }
374
269
  ensureNoAccessKeyOverride("request.platformAuth.customClaims", config.platformAuth?.customClaims);
375
270
  const claims = {
376
271
  ...options.defaultClaims || {},
377
272
  ...config.platformAuth?.customClaims || {},
378
273
  access_key: accessKey
379
274
  };
380
- let token;
381
- if (staticTokenSource) {
382
- try {
383
- token = staticTokenSource.getToken(claims);
384
- } catch {
385
- token = tokenManager.getToken(claims);
386
- }
387
- } else {
388
- token = tokenManager.getToken(claims);
389
- }
275
+ const token = tokenManager.getToken(claims);
390
276
  const headers = {
391
277
  ...config.headers,
392
278
  "Authorization": `Bearer ${token}`,
@@ -1621,9 +1507,7 @@ var ImportCollector = class {
1621
1507
  };
1622
1508
 
1623
1509
  // src/generator/default-value.ts
1624
- var CUSTOM_CAST_TYPES = /* @__PURE__ */ new Set(["user_profile", "file_attachment"]);
1625
- var CURRENT_USER_SENTINEL = "current_user";
1626
- function formatDefaultValue(value, field) {
1510
+ function formatDefaultValue(value) {
1627
1511
  if (value == null || value === "") return "";
1628
1512
  const trimmed = value.trim();
1629
1513
  if (!trimmed || trimmed.toUpperCase() === "NULL") return "";
@@ -1632,12 +1516,6 @@ function formatDefaultValue(value, field) {
1632
1516
  if (trimmed === "true") return ".default(true)";
1633
1517
  if (trimmed === "false") return ".default(false)";
1634
1518
  if (/^-?\d+(\.\d+)?$/.test(trimmed)) return `.default(${trimmed})`;
1635
- if (field && CUSTOM_CAST_TYPES.has(field.type) && !trimmed.includes("::") && trimmed.toLowerCase() !== CURRENT_USER_SENTINEL) {
1636
- const pgLiteral = trimmed.replace(/'/g, "''");
1637
- const escaped = pgLiteral.replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
1638
- const cast = field.isArray ? `${field.type}[]` : field.type;
1639
- return `.default(sql\`'${escaped}'::${cast}\`)`;
1640
- }
1641
1519
  if (/::|\(|CASE|current_setting/i.test(trimmed)) {
1642
1520
  const escaped = trimmed.replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
1643
1521
  return `.default(sql\`${escaped}\`)`;
@@ -1666,7 +1544,7 @@ var defaultModifiers = [
1666
1544
  {
1667
1545
  name: "defaultValue",
1668
1546
  match: (f) => f.defaultValue != null && f.defaultValue !== "",
1669
- modify: (f) => formatDefaultValue(f.defaultValue, f)
1547
+ modify: (f) => formatDefaultValue(f.defaultValue)
1670
1548
  }
1671
1549
  ];
1672
1550
  function applyModifiers(field, modifiers) {
@@ -2058,7 +1936,7 @@ var inlineTypesEnhancer = {
2058
1936
  );
2059
1937
  if (pgCoreImportMatch) {
2060
1938
  const insertPoint = text.indexOf(pgCoreImportMatch[0]) + pgCoreImportMatch[0].length;
2061
- text = text.slice(0, insertPoint) + "import { sql } from 'drizzle-orm';\n" + text.slice(insertPoint);
1939
+ text = text.slice(0, insertPoint) + 'import { sql } from "drizzle-orm";\n' + text.slice(insertPoint);
2062
1940
  }
2063
1941
  }
2064
1942
  const definitions = [];
@@ -2099,7 +1977,14 @@ function ensureImportIdentifier(source, packageName, identifier) {
2099
1977
  );
2100
1978
  const match = source.match(importRegex);
2101
1979
  if (!match) {
2102
- return source;
1980
+ const importLine = `import { ${identifier} } from "${packageName}";
1981
+ `;
1982
+ const headerPrefix = `${FULL_HEADER}
1983
+ `;
1984
+ if (source.startsWith(headerPrefix)) {
1985
+ return source.slice(0, headerPrefix.length) + importLine + source.slice(headerPrefix.length);
1986
+ }
1987
+ return importLine + source;
2103
1988
  }
2104
1989
  const identifiers = match[1].split(",").map((id) => id.trim()).filter(Boolean);
2105
1990
  if (identifiers.includes(identifier)) {
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  generateSchemaFromData,
6
6
  normalizeApiResponse,
7
7
  resolveEnvOptions
8
- } from "./chunk-SWKVIZTR.js";
8
+ } from "./chunk-JOLAF4EV.js";
9
9
  export {
10
10
  generateSchema,
11
11
  generateSchemaCode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/db-schema-sync",
3
- "version": "0.1.6",
3
+ "version": "0.1.7-alpha.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "node": ">=18.0.0"
30
30
  },
31
31
  "dependencies": {
32
- "@lark-apaas/http-client": "^0.1.7",
32
+ "@lark-apaas/http-client": "^0.1.6",
33
33
  "dotenv": "^17.3.1",
34
34
  "tiny-pinyin": "^1.3.2"
35
35
  },