@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 +7 -5
- package/dist/{chunk-HRE26HBV.js → chunk-TQCGDNFC.js} +44 -13
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/bin.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
__toESM,
|
|
7
7
|
generateSchema,
|
|
8
8
|
resolveEnvOptions
|
|
9
|
-
} from "./chunk-
|
|
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
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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
|
-
|
|
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) =>
|
|
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
|
-
|
|
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
|
|
1580
|
+
modify: (f) => formatDefaultValue(f.defaultValue)
|
|
1550
1581
|
}
|
|
1551
1582
|
];
|
|
1552
1583
|
function applyModifiers(field, modifiers) {
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/db-schema-sync",
|
|
3
|
-
"version": "0.1.6-alpha.
|
|
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": "
|
|
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
|
},
|