@lark-apaas/db-schema-sync 0.1.6-alpha.1 → 0.1.6-alpha.2

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-HRE26HBV.js";
9
+ } from "./chunk-TQCGDNFC.js";
10
10
 
11
11
  // node_modules/dotenv/package.json
12
12
  var require_package = __commonJS({
@@ -424,10 +424,12 @@ function parseArgs(argv) {
424
424
 
425
425
  // src/bin.ts
426
426
  async function main() {
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");
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
+ }
431
433
  }
432
434
  const cliArgs = parseArgs(process.argv);
433
435
  const output = cliArgs.output || process.env.DB_SCHEMA_OUTPUT || "server/database/schema.ts";
@@ -228,9 +228,21 @@ var require_dist = __commonJS({
228
228
  };
229
229
  }
230
230
  };
231
+ var StaticTokenSource = class {
232
+ constructor(token) {
233
+ this.token = token;
234
+ if (!token) {
235
+ throw new Error("StaticTokenSource: token \u4E0D\u80FD\u4E3A\u7A7A");
236
+ }
237
+ }
238
+ getToken(_claims) {
239
+ return this.token;
240
+ }
241
+ };
231
242
  var DEFAULT_DOMAIN_ENV = "FORCE_AUTHN_INNERAPI_DOMAIN";
232
243
  var DEFAULT_ACCESS_KEY_ENV = "FORCE_AUTHN_ACCESS_KEY";
233
244
  var DEFAULT_SECRET_KEY_ENV = "FORCE_AUTHN_ACCESS_SECRET";
245
+ var DEFAULT_TOKEN_ENV = "FORCE_AUTHN_TOKEN";
234
246
  var DEFAULT_ADMIN_DOMAIN_ENV = "MIAODA_DEV_INNER_DOMAIN_WITH_PREFIX";
235
247
  var DEFAULT_CLIENT_TOKEN_ENV = "MIAODA_AUTHN_CODE";
236
248
  var MIAODA_CLIENT_TOKEN_HEADER = "X-Miaoda-Client-Token";
@@ -256,6 +268,11 @@ var require_dist = __commonJS({
256
268
  const accessKeyEnv = options.accessKeyEnv || DEFAULT_ACCESS_KEY_ENV;
257
269
  const secretKeyEnv = options.secretKeyEnv || DEFAULT_SECRET_KEY_ENV;
258
270
  const accessKey = options.accessKey ?? (process.env[accessKeyEnv] || "");
271
+ if (!accessKey) {
272
+ throw new Error(
273
+ `\u5E73\u53F0\u9274\u6743\u9700\u8981 access key,\u8BF7\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF ${accessKeyEnv} \u6216\u4F20 options.accessKey`
274
+ );
275
+ }
259
276
  const secretKey = options.secretKey ?? (process.env[secretKeyEnv] || "");
260
277
  const expireTimeMs = options.expireTimeMs ?? DEFAULT_JWT_EXPIRE_TIME_MS;
261
278
  const tokenManager = new JWTTokenManager({
@@ -264,6 +281,16 @@ var require_dist = __commonJS({
264
281
  expireTimeMs,
265
282
  refreshBeforeMs: options.refreshBeforeMs
266
283
  });
284
+ const tokenEnv = options.tokenEnv || DEFAULT_TOKEN_ENV;
285
+ const platformToken = options.token ?? (process.env[tokenEnv] || "");
286
+ const staticTokenSource = platformToken ? new StaticTokenSource(platformToken) : null;
287
+ if (!staticTokenSource && !secretKey) {
288
+ throw new Error(
289
+ `\u5E73\u53F0\u9274\u6743\u9700\u8981 token \u6216 secret key,\u8BF7\u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF ${tokenEnv}(\u63A8\u8350) \u6216 ${secretKeyEnv}`
290
+ );
291
+ }
292
+ const primaryTokenSource = staticTokenSource ?? tokenManager;
293
+ const fallbackTokenSource = staticTokenSource && secretKey ? tokenManager : null;
267
294
  const clientTokenEnv = options.clientTokenEnv || DEFAULT_CLIENT_TOKEN_ENV;
268
295
  interceptors.request.use((config) => {
269
296
  ensureNoAccessKeyOverride("request.platformAuth.customClaims", config.platformAuth?.customClaims);
@@ -272,7 +299,13 @@ var require_dist = __commonJS({
272
299
  ...config.platformAuth?.customClaims || {},
273
300
  access_key: accessKey
274
301
  };
275
- const token = tokenManager.getToken(claims);
302
+ let token;
303
+ try {
304
+ token = primaryTokenSource.getToken(claims);
305
+ } catch (err) {
306
+ if (!fallbackTokenSource) throw err;
307
+ token = fallbackTokenSource.getToken(claims);
308
+ }
276
309
  const headers = {
277
310
  ...config.headers,
278
311
  "Authorization": `Bearer ${token}`,
@@ -1276,11 +1309,17 @@ var primitiveMappers = [
1276
1309
  generate: (f) => `uuid("${escapeDoubleQuote(f.fieldName)}")`,
1277
1310
  imports: () => [{ name: "uuid", from: PG_CORE }]
1278
1311
  },
1279
- // varchar
1312
+ // varchar (honors extraInfo.max_length from listTableView API)
1280
1313
  {
1281
1314
  name: "varchar",
1282
1315
  match: (f) => f.type === "varchar",
1283
- generate: (f) => `varchar("${escapeDoubleQuote(f.fieldName)}")`,
1316
+ generate: (f) => {
1317
+ const maxLength = f.extraInfo?.max_length;
1318
+ if (typeof maxLength === "number" && Number.isInteger(maxLength) && maxLength > 0) {
1319
+ return `varchar("${escapeDoubleQuote(f.fieldName)}", { length: ${maxLength} })`;
1320
+ }
1321
+ return `varchar("${escapeDoubleQuote(f.fieldName)}")`;
1322
+ },
1284
1323
  imports: () => [{ name: "varchar", from: PG_CORE }]
1285
1324
  },
1286
1325
  // text
@@ -1501,9 +1540,7 @@ var ImportCollector = class {
1501
1540
  };
1502
1541
 
1503
1542
  // src/generator/default-value.ts
1504
- var CUSTOM_CAST_TYPES = /* @__PURE__ */ new Set(["user_profile", "file_attachment"]);
1505
- var CURRENT_USER_SENTINEL = "current_user";
1506
- function formatDefaultValue(value, field) {
1543
+ function formatDefaultValue(value) {
1507
1544
  if (value == null || value === "") return "";
1508
1545
  const trimmed = value.trim();
1509
1546
  if (!trimmed || trimmed.toUpperCase() === "NULL") return "";
@@ -1512,12 +1549,6 @@ function formatDefaultValue(value, field) {
1512
1549
  if (trimmed === "true") return ".default(true)";
1513
1550
  if (trimmed === "false") return ".default(false)";
1514
1551
  if (/^-?\d+(\.\d+)?$/.test(trimmed)) return `.default(${trimmed})`;
1515
- if (field && CUSTOM_CAST_TYPES.has(field.type) && !trimmed.includes("::") && trimmed.toLowerCase() !== CURRENT_USER_SENTINEL) {
1516
- const pgLiteral = trimmed.replace(/'/g, "''");
1517
- const escaped = pgLiteral.replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
1518
- const cast = field.isArray ? `${field.type}[]` : field.type;
1519
- return `.default(sql\`'${escaped}'::${cast}\`)`;
1520
- }
1521
1552
  if (/::|\(|CASE|current_setting/i.test(trimmed)) {
1522
1553
  const escaped = trimmed.replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
1523
1554
  return `.default(sql\`${escaped}\`)`;
@@ -1546,7 +1577,7 @@ var defaultModifiers = [
1546
1577
  {
1547
1578
  name: "defaultValue",
1548
1579
  match: (f) => f.defaultValue != null && f.defaultValue !== "",
1549
- modify: (f) => formatDefaultValue(f.defaultValue, f)
1580
+ modify: (f) => formatDefaultValue(f.defaultValue)
1550
1581
  }
1551
1582
  ];
1552
1583
  function applyModifiers(field, modifiers) {
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  generateSchemaFromData,
6
6
  normalizeApiResponse,
7
7
  resolveEnvOptions
8
- } from "./chunk-HRE26HBV.js";
8
+ } from "./chunk-TQCGDNFC.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-alpha.1",
3
+ "version": "0.1.6-alpha.2",
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.6",
32
+ "@lark-apaas/http-client": "0.1.7-alpha.8",
33
33
  "dotenv": "^17.3.1",
34
34
  "tiny-pinyin": "^1.3.2"
35
35
  },