kitcn 0.12.1 → 0.12.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/cli.mjs +87 -66
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -9,7 +9,6 @@ import { confirm, isCancel, multiselect, select, spinner } from "@clack/prompts"
|
|
|
9
9
|
import { parse } from "dotenv";
|
|
10
10
|
import { execa } from "execa";
|
|
11
11
|
import { createJiti } from "jiti";
|
|
12
|
-
import ts from "typescript";
|
|
13
12
|
import { createInterface } from "node:readline/promises";
|
|
14
13
|
import { build } from "esbuild";
|
|
15
14
|
import os from "node:os";
|
|
@@ -3470,20 +3469,40 @@ const buildPluginInstallPlan = async (params) => {
|
|
|
3470
3469
|
};
|
|
3471
3470
|
};
|
|
3472
3471
|
|
|
3472
|
+
//#endregion
|
|
3473
|
+
//#region src/cli/utils/typescript-runtime.ts
|
|
3474
|
+
const require$1 = createRequire(import.meta.url);
|
|
3475
|
+
let cachedTypeScript = null;
|
|
3476
|
+
const loadTypeScript = () => {
|
|
3477
|
+
if (cachedTypeScript) return cachedTypeScript;
|
|
3478
|
+
const loaded = require$1("typescript");
|
|
3479
|
+
const resolved = "default" in loaded && loaded.default ? loaded.default : loaded;
|
|
3480
|
+
cachedTypeScript = resolved;
|
|
3481
|
+
return resolved;
|
|
3482
|
+
};
|
|
3483
|
+
const createTypeScriptProxy = () => new Proxy({}, { get(_target, property) {
|
|
3484
|
+
return loadTypeScript()[property];
|
|
3485
|
+
} });
|
|
3486
|
+
|
|
3473
3487
|
//#endregion
|
|
3474
3488
|
//#region src/cli/registry/schema-ownership.ts
|
|
3475
3489
|
const OBJECT_ENTRY_INDENT = " ";
|
|
3476
3490
|
const LEADING_INDENT_RE = /^[ \t]*/;
|
|
3477
3491
|
const LEGACY_MANAGED_COMMENT_RE = /^[ \t]*\/\* kitcn-managed [^*]+ \*\/\n?/gm;
|
|
3478
3492
|
const WHITESPACE_RE = /\s/;
|
|
3479
|
-
const
|
|
3493
|
+
const ts$2 = createTypeScriptProxy();
|
|
3494
|
+
let printer = null;
|
|
3495
|
+
const getPrinter = () => {
|
|
3496
|
+
printer ??= ts$2.createPrinter({ removeComments: true });
|
|
3497
|
+
return printer;
|
|
3498
|
+
};
|
|
3480
3499
|
const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3481
3500
|
const normalizePathForMessage = (path) => {
|
|
3482
3501
|
const relativePath = relative(process.cwd(), path).replaceAll("\\", "/");
|
|
3483
3502
|
return relativePath.startsWith("..") ? path.replaceAll("\\", "/") : relativePath;
|
|
3484
3503
|
};
|
|
3485
3504
|
const stripLegacyManagedComments = (source) => source.replace(LEGACY_MANAGED_COMMENT_RE, "").replace(/\n{3,}/g, "\n\n");
|
|
3486
|
-
const parseSource = (source) => ts.createSourceFile("schema.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
3505
|
+
const parseSource = (source) => ts$2.createSourceFile("schema.ts", source, ts$2.ScriptTarget.Latest, true, ts$2.ScriptKind.TS);
|
|
3487
3506
|
const indentBlock = (value, indent) => value.trim().split("\n").map((line) => `${indent}${line}`).join("\n");
|
|
3488
3507
|
const ensureTrailingComma = (value) => {
|
|
3489
3508
|
const trimmed = value.trim();
|
|
@@ -3494,15 +3513,15 @@ const getIndentAt = (source, index) => {
|
|
|
3494
3513
|
return LEADING_INDENT_RE.exec(source.slice(lineStart))?.[0] ?? "";
|
|
3495
3514
|
};
|
|
3496
3515
|
const replaceRange = (source, start, end, content) => `${source.slice(0, start)}${content}${source.slice(end)}`;
|
|
3497
|
-
const isStringLiteralLike = (node) => ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node);
|
|
3516
|
+
const isStringLiteralLike = (node) => ts$2.isStringLiteral(node) || ts$2.isNoSubstitutionTemplateLiteral(node);
|
|
3498
3517
|
const getPropertyName = (property) => {
|
|
3499
|
-
if ((ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)) && property.name) {
|
|
3500
|
-
if (ts.isIdentifier(property.name)) return property.name.text;
|
|
3518
|
+
if ((ts$2.isPropertyAssignment(property) || ts$2.isShorthandPropertyAssignment(property)) && property.name) {
|
|
3519
|
+
if (ts$2.isIdentifier(property.name)) return property.name.text;
|
|
3501
3520
|
if (isStringLiteralLike(property.name)) return property.name.text;
|
|
3502
3521
|
}
|
|
3503
3522
|
return null;
|
|
3504
3523
|
};
|
|
3505
|
-
const renderNode = (node, sourceFile) =>
|
|
3524
|
+
const renderNode = (node, sourceFile) => getPrinter().printNode(ts$2.EmitHint.Unspecified, node, sourceFile).trim();
|
|
3506
3525
|
const renderObjectLiteral = (baseIndent, entries) => {
|
|
3507
3526
|
if (entries.length === 0) return "{}";
|
|
3508
3527
|
const entryIndent = `${baseIndent}${OBJECT_ENTRY_INDENT}`;
|
|
@@ -3516,8 +3535,8 @@ const renderArrayLiteral = (baseIndent, entries) => {
|
|
|
3516
3535
|
const findTablesObject = (source) => {
|
|
3517
3536
|
const sourceFile = parseSource(source);
|
|
3518
3537
|
for (const statement of sourceFile.statements) {
|
|
3519
|
-
if (!ts.isVariableStatement(statement)) continue;
|
|
3520
|
-
for (const declaration of statement.declarationList.declarations) if (ts.isIdentifier(declaration.name) && declaration.name.text === "tables" && declaration.initializer && ts.isObjectLiteralExpression(declaration.initializer)) return {
|
|
3538
|
+
if (!ts$2.isVariableStatement(statement)) continue;
|
|
3539
|
+
for (const declaration of statement.declarationList.declarations) if (ts$2.isIdentifier(declaration.name) && declaration.name.text === "tables" && declaration.initializer && ts$2.isObjectLiteralExpression(declaration.initializer)) return {
|
|
3521
3540
|
object: declaration.initializer,
|
|
3522
3541
|
sourceFile,
|
|
3523
3542
|
statementStart: statement.getStart(sourceFile)
|
|
@@ -3525,15 +3544,15 @@ const findTablesObject = (source) => {
|
|
|
3525
3544
|
}
|
|
3526
3545
|
let defineSchemaObject = null;
|
|
3527
3546
|
const visit = (node, statementStart) => {
|
|
3528
|
-
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "defineSchema") {
|
|
3547
|
+
if (ts$2.isCallExpression(node) && ts$2.isIdentifier(node.expression) && node.expression.text === "defineSchema") {
|
|
3529
3548
|
const firstArg = node.arguments[0];
|
|
3530
|
-
if (firstArg && ts.isObjectLiteralExpression(firstArg) && !defineSchemaObject) defineSchemaObject = {
|
|
3549
|
+
if (firstArg && ts$2.isObjectLiteralExpression(firstArg) && !defineSchemaObject) defineSchemaObject = {
|
|
3531
3550
|
object: firstArg,
|
|
3532
3551
|
sourceFile,
|
|
3533
3552
|
statementStart
|
|
3534
3553
|
};
|
|
3535
3554
|
}
|
|
3536
|
-
ts.forEachChild(node, (child) => visit(child, statementStart));
|
|
3555
|
+
ts$2.forEachChild(node, (child) => visit(child, statementStart));
|
|
3537
3556
|
};
|
|
3538
3557
|
for (const statement of sourceFile.statements) visit(statement, statement.getStart(sourceFile));
|
|
3539
3558
|
return defineSchemaObject;
|
|
@@ -3542,18 +3561,18 @@ const findRelationsCall = (source) => {
|
|
|
3542
3561
|
const sourceFile = parseSource(source);
|
|
3543
3562
|
let result = null;
|
|
3544
3563
|
const visit = (node) => {
|
|
3545
|
-
if (ts.isCallExpression(node) && ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "relations") {
|
|
3564
|
+
if (ts$2.isCallExpression(node) && ts$2.isPropertyAccessExpression(node.expression) && node.expression.name.text === "relations") {
|
|
3546
3565
|
const firstArg = node.arguments[0];
|
|
3547
|
-
if (firstArg && ts.isArrowFunction(firstArg)) {
|
|
3548
|
-
const body = ts.isParenthesizedExpression(firstArg.body) ? firstArg.body.expression : firstArg.body;
|
|
3549
|
-
if (ts.isObjectLiteralExpression(body) && !result) result = {
|
|
3566
|
+
if (firstArg && ts$2.isArrowFunction(firstArg)) {
|
|
3567
|
+
const body = ts$2.isParenthesizedExpression(firstArg.body) ? firstArg.body.expression : firstArg.body;
|
|
3568
|
+
if (ts$2.isObjectLiteralExpression(body) && !result) result = {
|
|
3550
3569
|
call: node,
|
|
3551
3570
|
object: body,
|
|
3552
3571
|
sourceFile
|
|
3553
3572
|
};
|
|
3554
3573
|
}
|
|
3555
3574
|
}
|
|
3556
|
-
ts.forEachChild(node, visit);
|
|
3575
|
+
ts$2.forEachChild(node, visit);
|
|
3557
3576
|
};
|
|
3558
3577
|
visit(sourceFile);
|
|
3559
3578
|
return result;
|
|
@@ -3562,36 +3581,36 @@ const hasStandaloneDefineRelations = (source) => {
|
|
|
3562
3581
|
const sourceFile = parseSource(source);
|
|
3563
3582
|
let found = false;
|
|
3564
3583
|
const visit = (node) => {
|
|
3565
|
-
if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "defineRelations") {
|
|
3584
|
+
if (ts$2.isCallExpression(node) && ts$2.isIdentifier(node.expression) && node.expression.text === "defineRelations") {
|
|
3566
3585
|
found = true;
|
|
3567
3586
|
return;
|
|
3568
3587
|
}
|
|
3569
|
-
if (!found) ts.forEachChild(node, visit);
|
|
3588
|
+
if (!found) ts$2.forEachChild(node, visit);
|
|
3570
3589
|
};
|
|
3571
3590
|
visit(sourceFile);
|
|
3572
3591
|
return found;
|
|
3573
3592
|
};
|
|
3574
3593
|
const getArrayLiteralFromExpression = (expression) => {
|
|
3575
|
-
if (ts.isArrayLiteralExpression(expression)) return expression;
|
|
3576
|
-
if (ts.isParenthesizedExpression(expression) && ts.isArrayLiteralExpression(expression.expression)) return expression.expression;
|
|
3594
|
+
if (ts$2.isArrayLiteralExpression(expression)) return expression;
|
|
3595
|
+
if (ts$2.isParenthesizedExpression(expression) && ts$2.isArrayLiteralExpression(expression.expression)) return expression.expression;
|
|
3577
3596
|
return null;
|
|
3578
3597
|
};
|
|
3579
3598
|
const readTableDeclarationInfo = (source, tableKey) => {
|
|
3580
3599
|
const sourceFile = parseSource(source);
|
|
3581
3600
|
for (const statement of sourceFile.statements) {
|
|
3582
|
-
if (!ts.isVariableStatement(statement)) continue;
|
|
3601
|
+
if (!ts$2.isVariableStatement(statement)) continue;
|
|
3583
3602
|
for (const declaration of statement.declarationList.declarations) {
|
|
3584
|
-
if (!ts.isIdentifier(declaration.name) || !declaration.initializer || !ts.isCallExpression(declaration.initializer) || !ts.isIdentifier(declaration.initializer.expression) || declaration.initializer.expression.text !== "convexTable") continue;
|
|
3603
|
+
if (!ts$2.isIdentifier(declaration.name) || !declaration.initializer || !ts$2.isCallExpression(declaration.initializer) || !ts$2.isIdentifier(declaration.initializer.expression) || declaration.initializer.expression.text !== "convexTable") continue;
|
|
3585
3604
|
const firstArg = declaration.initializer.arguments[0];
|
|
3586
3605
|
const secondArg = declaration.initializer.arguments[1];
|
|
3587
|
-
if (!firstArg || !secondArg || !isStringLiteralLike(firstArg) || firstArg.text !== tableKey || !ts.isObjectLiteralExpression(secondArg)) continue;
|
|
3606
|
+
if (!firstArg || !secondArg || !isStringLiteralLike(firstArg) || firstArg.text !== tableKey || !ts$2.isObjectLiteralExpression(secondArg)) continue;
|
|
3588
3607
|
const thirdArg = declaration.initializer.arguments[2];
|
|
3589
3608
|
let indexEntries = null;
|
|
3590
3609
|
let indexParamName = null;
|
|
3591
|
-
if (thirdArg && ts.isArrowFunction(thirdArg) && thirdArg.parameters[0] && ts.isIdentifier(thirdArg.parameters[0].name)) {
|
|
3592
|
-
const arrayLiteral = ts.isBlock(thirdArg.body) ? null : getArrayLiteralFromExpression(thirdArg.body);
|
|
3610
|
+
if (thirdArg && ts$2.isArrowFunction(thirdArg) && thirdArg.parameters[0] && ts$2.isIdentifier(thirdArg.parameters[0].name)) {
|
|
3611
|
+
const arrayLiteral = ts$2.isBlock(thirdArg.body) ? null : getArrayLiteralFromExpression(thirdArg.body);
|
|
3593
3612
|
if (arrayLiteral) {
|
|
3594
|
-
indexEntries = arrayLiteral.elements.filter((element) => ts.isExpression(element));
|
|
3613
|
+
indexEntries = arrayLiteral.elements.filter((element) => ts$2.isExpression(element));
|
|
3595
3614
|
indexParamName = thirdArg.parameters[0].name.text;
|
|
3596
3615
|
}
|
|
3597
3616
|
}
|
|
@@ -3619,11 +3638,11 @@ const parseUnitTableDeclaration = (unit) => {
|
|
|
3619
3638
|
const readPropertyObject = (source, expectedKey) => {
|
|
3620
3639
|
const sourceFile = parseSource(`const object = {${source.trim()}};`);
|
|
3621
3640
|
const statement = sourceFile.statements[0];
|
|
3622
|
-
if (!statement || !ts.isVariableStatement(statement)) return null;
|
|
3641
|
+
if (!statement || !ts$2.isVariableStatement(statement)) return null;
|
|
3623
3642
|
const declaration = statement.declarationList.declarations[0];
|
|
3624
|
-
if (!declaration?.initializer || !ts.isObjectLiteralExpression(declaration.initializer)) return null;
|
|
3643
|
+
if (!declaration?.initializer || !ts$2.isObjectLiteralExpression(declaration.initializer)) return null;
|
|
3625
3644
|
const property = declaration.initializer.properties[0];
|
|
3626
|
-
if (!property || !ts.isPropertyAssignment(property) || !property.name || !ts.isObjectLiteralExpression(property.initializer)) return null;
|
|
3645
|
+
if (!property || !ts$2.isPropertyAssignment(property) || !property.name || !ts$2.isObjectLiteralExpression(property.initializer)) return null;
|
|
3627
3646
|
const propertyName = getPropertyName(property);
|
|
3628
3647
|
if (expectedKey && propertyName !== expectedKey) return null;
|
|
3629
3648
|
return {
|
|
@@ -3639,21 +3658,21 @@ const getObjectPropertyMap = (object, _sourceFile) => new Map(object.properties.
|
|
|
3639
3658
|
}));
|
|
3640
3659
|
const getFieldRootSignature = (expression, sourceFile) => {
|
|
3641
3660
|
let current = expression;
|
|
3642
|
-
while (ts.isCallExpression(current) && ts.isPropertyAccessExpression(current.expression)) current = current.expression.expression;
|
|
3643
|
-
return ts.isCallExpression(current) ? renderNode(current, sourceFile) : null;
|
|
3661
|
+
while (ts$2.isCallExpression(current) && ts$2.isPropertyAccessExpression(current.expression)) current = current.expression.expression;
|
|
3662
|
+
return ts$2.isCallExpression(current) ? renderNode(current, sourceFile) : null;
|
|
3644
3663
|
};
|
|
3645
3664
|
const isCompatibleFieldProperty = (existingProperty, existingSourceFile, desiredProperty, desiredSourceFile) => {
|
|
3646
|
-
if (!ts.isPropertyAssignment(existingProperty) || !ts.isPropertyAssignment(desiredProperty)) return false;
|
|
3665
|
+
if (!ts$2.isPropertyAssignment(existingProperty) || !ts$2.isPropertyAssignment(desiredProperty)) return false;
|
|
3647
3666
|
if (renderNode(existingProperty, existingSourceFile) === renderNode(desiredProperty, desiredSourceFile)) return true;
|
|
3648
3667
|
const existingSignature = getFieldRootSignature(existingProperty.initializer, existingSourceFile);
|
|
3649
3668
|
const desiredSignature = getFieldRootSignature(desiredProperty.initializer, desiredSourceFile);
|
|
3650
3669
|
return typeof existingSignature === "string" && existingSignature === desiredSignature;
|
|
3651
3670
|
};
|
|
3652
3671
|
const getRelationCompatibilitySignature = (property, sourceFile) => {
|
|
3653
|
-
if (!ts.isPropertyAssignment(property) || !ts.isCallExpression(property.initializer)) return null;
|
|
3672
|
+
if (!ts$2.isPropertyAssignment(property) || !ts$2.isCallExpression(property.initializer)) return null;
|
|
3654
3673
|
const relationKind = renderNormalizedExpression(property.initializer.expression, sourceFile, {});
|
|
3655
3674
|
const firstArg = property.initializer.arguments[0];
|
|
3656
|
-
if (!firstArg || !ts.isObjectLiteralExpression(firstArg)) return relationKind;
|
|
3675
|
+
if (!firstArg || !ts$2.isObjectLiteralExpression(firstArg)) return relationKind;
|
|
3657
3676
|
const propertyMap = getObjectPropertyMap(firstArg, sourceFile);
|
|
3658
3677
|
const from = propertyMap.get("from");
|
|
3659
3678
|
const to = propertyMap.get("to");
|
|
@@ -3665,16 +3684,16 @@ const getRelationCompatibilitySignature = (property, sourceFile) => {
|
|
|
3665
3684
|
};
|
|
3666
3685
|
const getIndexIdentity = (expression, sourceFile) => {
|
|
3667
3686
|
let current = expression;
|
|
3668
|
-
while (ts.isCallExpression(current) && ts.isPropertyAccessExpression(current.expression)) current = current.expression.expression;
|
|
3669
|
-
if (ts.isCallExpression(current) && ts.isIdentifier(current.expression) && current.arguments[0] && isStringLiteralLike(current.arguments[0])) return `${current.expression.text}:${current.arguments[0].text}`;
|
|
3687
|
+
while (ts$2.isCallExpression(current) && ts$2.isPropertyAccessExpression(current.expression)) current = current.expression.expression;
|
|
3688
|
+
if (ts$2.isCallExpression(current) && ts$2.isIdentifier(current.expression) && current.arguments[0] && isStringLiteralLike(current.arguments[0])) return `${current.expression.text}:${current.arguments[0].text}`;
|
|
3670
3689
|
return renderNode(current, sourceFile);
|
|
3671
3690
|
};
|
|
3672
3691
|
const renderNormalizedExpression = (node, sourceFile, replacements) => {
|
|
3673
|
-
if (ts.isIdentifier(node)) return replacements[node.text] ?? node.text;
|
|
3692
|
+
if (ts$2.isIdentifier(node)) return replacements[node.text] ?? node.text;
|
|
3674
3693
|
if (isStringLiteralLike(node)) return JSON.stringify(node.text);
|
|
3675
|
-
if (ts.isPropertyAccessExpression(node)) return `${renderNormalizedExpression(node.expression, sourceFile, replacements)}.${node.name.text}`;
|
|
3676
|
-
if (ts.isCallExpression(node)) return `${renderNormalizedExpression(node.expression, sourceFile, replacements)}(${node.arguments.map((argument) => renderNormalizedExpression(argument, sourceFile, replacements)).join(",")})`;
|
|
3677
|
-
if (ts.isParenthesizedExpression(node)) return `(${renderNormalizedExpression(node.expression, sourceFile, replacements)})`;
|
|
3694
|
+
if (ts$2.isPropertyAccessExpression(node)) return `${renderNormalizedExpression(node.expression, sourceFile, replacements)}.${node.name.text}`;
|
|
3695
|
+
if (ts$2.isCallExpression(node)) return `${renderNormalizedExpression(node.expression, sourceFile, replacements)}(${node.arguments.map((argument) => renderNormalizedExpression(argument, sourceFile, replacements)).join(",")})`;
|
|
3696
|
+
if (ts$2.isParenthesizedExpression(node)) return `(${renderNormalizedExpression(node.expression, sourceFile, replacements)})`;
|
|
3678
3697
|
return renderNode(node, sourceFile);
|
|
3679
3698
|
};
|
|
3680
3699
|
const mergeNamedEntries = (params) => {
|
|
@@ -3852,7 +3871,7 @@ const findRelationsInsertIndex = (source) => {
|
|
|
3852
3871
|
const mergeRelationProperty = (params) => {
|
|
3853
3872
|
const desiredInfo = readPropertyObject(params.desiredRelation, params.tableKey);
|
|
3854
3873
|
if (!desiredInfo) throw new Error(`Schema patch error: expected relation block for "${params.tableKey}".`);
|
|
3855
|
-
if (!ts.isPropertyAssignment(params.existingProperty) || !ts.isObjectLiteralExpression(params.existingProperty.initializer)) throw new Error(`Schema patch conflict in ${params.displayPath}: ${params.pluginKey} relations for table "${params.tableKey}" are incompatible with the existing schema.`);
|
|
3874
|
+
if (!ts$2.isPropertyAssignment(params.existingProperty) || !ts$2.isObjectLiteralExpression(params.existingProperty.initializer)) throw new Error(`Schema patch conflict in ${params.displayPath}: ${params.pluginKey} relations for table "${params.tableKey}" are incompatible with the existing schema.`);
|
|
3856
3875
|
const existingPropertyName = params.existingProperty.name.getText(params.existingSourceFile);
|
|
3857
3876
|
const nestedMerge = mergeNamedEntries({
|
|
3858
3877
|
compatibilityLabel: "relation",
|
|
@@ -3920,9 +3939,9 @@ const updateRelationsObject = (source, params) => {
|
|
|
3920
3939
|
const printCanonicalObjectEntry = (content) => {
|
|
3921
3940
|
const sourceFile = parseSource(`const object = {\n${content.trim()}\n};`);
|
|
3922
3941
|
const statement = sourceFile.statements[0];
|
|
3923
|
-
if (!statement || !ts.isVariableStatement(statement)) return content.trim();
|
|
3942
|
+
if (!statement || !ts$2.isVariableStatement(statement)) return content.trim();
|
|
3924
3943
|
const declaration = statement.declarationList.declarations[0];
|
|
3925
|
-
if (!declaration?.initializer || !ts.isObjectLiteralExpression(declaration.initializer)) return content.trim();
|
|
3944
|
+
if (!declaration?.initializer || !ts$2.isObjectLiteralExpression(declaration.initializer)) return content.trim();
|
|
3926
3945
|
const property = declaration.initializer.properties[0];
|
|
3927
3946
|
if (!property) return content.trim();
|
|
3928
3947
|
return renderNode(property, sourceFile);
|
|
@@ -3968,9 +3987,9 @@ const readManagedChecksumFromSource = (source, unit) => {
|
|
|
3968
3987
|
const mergeOrmImports = (source, importNames) => {
|
|
3969
3988
|
if (importNames.length === 0) return source;
|
|
3970
3989
|
const sourceFile = parseSource(source);
|
|
3971
|
-
const ormImport = sourceFile.statements.find((statement) => ts.isImportDeclaration(statement) && isStringLiteralLike(statement.moduleSpecifier) && statement.moduleSpecifier.text === "kitcn/orm");
|
|
3990
|
+
const ormImport = sourceFile.statements.find((statement) => ts$2.isImportDeclaration(statement) && isStringLiteralLike(statement.moduleSpecifier) && statement.moduleSpecifier.text === "kitcn/orm");
|
|
3972
3991
|
if (!ormImport) return `${`import {\n ${[...new Set(importNames)].sort().join(",\n ")},\n} from 'kitcn/orm';\n\n`}${source}`;
|
|
3973
|
-
if (!ormImport.importClause?.namedBindings || !ts.isNamedImports(ormImport.importClause.namedBindings)) return source;
|
|
3992
|
+
if (!ormImport.importClause?.namedBindings || !ts$2.isNamedImports(ormImport.importClause.namedBindings)) return source;
|
|
3974
3993
|
const existingImports = ormImport.importClause.namedBindings.elements.map((element) => element.getText(sourceFile));
|
|
3975
3994
|
const nextImport = `import {\n ${[...new Set([...existingImports, ...importNames])].sort((a, b) => a.localeCompare(b)).join(",\n ")},\n} from 'kitcn/orm';`;
|
|
3976
3995
|
return replaceRange(source, ormImport.getStart(sourceFile), ormImport.end, nextImport);
|
|
@@ -5125,6 +5144,7 @@ const DEFAULT_AUTH_SCHEMA_ENV = {
|
|
|
5125
5144
|
};
|
|
5126
5145
|
const loadGetAuthTables = async () => (await import("better-auth/db")).getAuthTables;
|
|
5127
5146
|
const loadConvexAuthPlugin = async () => (await import("@convex-dev/better-auth/plugins")).convex;
|
|
5147
|
+
const ts$1 = createTypeScriptProxy();
|
|
5128
5148
|
const withAuthSchemaEnv = async (run) => {
|
|
5129
5149
|
const globalScope = globalThis;
|
|
5130
5150
|
const originalEntries = Object.fromEntries(Object.keys(DEFAULT_AUTH_SCHEMA_ENV).map((key) => [key, process.env[key]]));
|
|
@@ -5157,36 +5177,36 @@ const renderManagedAuthSchemaFile = async ({ authOptions, kind, outputPath }) =>
|
|
|
5157
5177
|
})).code;
|
|
5158
5178
|
};
|
|
5159
5179
|
const parseRootSchemaUnitsFromExtension = (source) => {
|
|
5160
|
-
const sourceFile = ts.createSourceFile("auth-schema.ts", source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
5161
|
-
const ormImport = sourceFile.statements.find((statement) => ts.isImportDeclaration(statement) && ts.isStringLiteral(statement.moduleSpecifier) && statement.moduleSpecifier.text === "kitcn/orm");
|
|
5162
|
-
const importNames = ormImport && ts.isImportDeclaration(ormImport) && ormImport.importClause?.namedBindings && ts.isNamedImports(ormImport.importClause.namedBindings) ? ormImport.importClause.namedBindings.elements.map((element) => element.getText(sourceFile)).filter((name) => name !== "defineSchemaExtension") : [];
|
|
5180
|
+
const sourceFile = ts$1.createSourceFile("auth-schema.ts", source, ts$1.ScriptTarget.Latest, true, ts$1.ScriptKind.TS);
|
|
5181
|
+
const ormImport = sourceFile.statements.find((statement) => ts$1.isImportDeclaration(statement) && ts$1.isStringLiteral(statement.moduleSpecifier) && statement.moduleSpecifier.text === "kitcn/orm");
|
|
5182
|
+
const importNames = ormImport && ts$1.isImportDeclaration(ormImport) && ormImport.importClause?.namedBindings && ts$1.isNamedImports(ormImport.importClause.namedBindings) ? ormImport.importClause.namedBindings.elements.map((element) => element.getText(sourceFile)).filter((name) => name !== "defineSchemaExtension") : [];
|
|
5163
5183
|
const declarations = /* @__PURE__ */ new Map();
|
|
5164
5184
|
for (const statement of sourceFile.statements) {
|
|
5165
|
-
if (!ts.isVariableStatement(statement)) continue;
|
|
5166
|
-
for (const declaration of statement.declarationList.declarations) if (declaration.initializer && ts.isCallExpression(declaration.initializer) && ts.isIdentifier(declaration.initializer.expression) && declaration.initializer.expression.text === "convexTable") {
|
|
5185
|
+
if (!ts$1.isVariableStatement(statement)) continue;
|
|
5186
|
+
for (const declaration of statement.declarationList.declarations) if (declaration.initializer && ts$1.isCallExpression(declaration.initializer) && ts$1.isIdentifier(declaration.initializer.expression) && declaration.initializer.expression.text === "convexTable") {
|
|
5167
5187
|
const firstArg = declaration.initializer.arguments[0];
|
|
5168
|
-
if (firstArg && (ts.isStringLiteral(firstArg) || ts.isNoSubstitutionTemplateLiteral(firstArg))) declarations.set(firstArg.text, statement.getText(sourceFile));
|
|
5188
|
+
if (firstArg && (ts$1.isStringLiteral(firstArg) || ts$1.isNoSubstitutionTemplateLiteral(firstArg))) declarations.set(firstArg.text, statement.getText(sourceFile));
|
|
5169
5189
|
}
|
|
5170
5190
|
}
|
|
5171
5191
|
let registrationObject = null;
|
|
5172
5192
|
let relationObject = null;
|
|
5173
5193
|
const visit = (node) => {
|
|
5174
|
-
if (ts.isCallExpression(node)) {
|
|
5175
|
-
if (ts.isIdentifier(node.expression) && node.expression.text === "defineSchemaExtension") {
|
|
5194
|
+
if (ts$1.isCallExpression(node)) {
|
|
5195
|
+
if (ts$1.isIdentifier(node.expression) && node.expression.text === "defineSchemaExtension") {
|
|
5176
5196
|
const secondArg = node.arguments[1];
|
|
5177
|
-
if (secondArg && ts.isObjectLiteralExpression(secondArg) && !registrationObject) registrationObject = secondArg;
|
|
5197
|
+
if (secondArg && ts$1.isObjectLiteralExpression(secondArg) && !registrationObject) registrationObject = secondArg;
|
|
5178
5198
|
}
|
|
5179
|
-
if (ts.isPropertyAccessExpression(node.expression) && node.expression.name.text === "relations" && ts.isCallExpression(node.expression.expression) && ts.isIdentifier(node.expression.expression.expression) && node.expression.expression.expression.text === "defineSchemaExtension") {
|
|
5199
|
+
if (ts$1.isPropertyAccessExpression(node.expression) && node.expression.name.text === "relations" && ts$1.isCallExpression(node.expression.expression) && ts$1.isIdentifier(node.expression.expression.expression) && node.expression.expression.expression.text === "defineSchemaExtension") {
|
|
5180
5200
|
const secondArg = node.expression.expression.arguments[1];
|
|
5181
|
-
if (secondArg && ts.isObjectLiteralExpression(secondArg) && !registrationObject) registrationObject = secondArg;
|
|
5201
|
+
if (secondArg && ts$1.isObjectLiteralExpression(secondArg) && !registrationObject) registrationObject = secondArg;
|
|
5182
5202
|
const firstArg = node.arguments[0];
|
|
5183
|
-
if (firstArg && ts.isArrowFunction(firstArg)) {
|
|
5184
|
-
const body = ts.isParenthesizedExpression(firstArg.body) ? firstArg.body.expression : firstArg.body;
|
|
5185
|
-
if (ts.isObjectLiteralExpression(body) && !relationObject) relationObject = body;
|
|
5203
|
+
if (firstArg && ts$1.isArrowFunction(firstArg)) {
|
|
5204
|
+
const body = ts$1.isParenthesizedExpression(firstArg.body) ? firstArg.body.expression : firstArg.body;
|
|
5205
|
+
if (ts$1.isObjectLiteralExpression(body) && !relationObject) relationObject = body;
|
|
5186
5206
|
}
|
|
5187
5207
|
}
|
|
5188
5208
|
}
|
|
5189
|
-
ts.forEachChild(node, visit);
|
|
5209
|
+
ts$1.forEachChild(node, visit);
|
|
5190
5210
|
};
|
|
5191
5211
|
visit(sourceFile);
|
|
5192
5212
|
if (!registrationObject) return [];
|
|
@@ -5194,15 +5214,15 @@ const parseRootSchemaUnitsFromExtension = (source) => {
|
|
|
5194
5214
|
const relationObjectLiteral = relationObject;
|
|
5195
5215
|
const relationMap = /* @__PURE__ */ new Map();
|
|
5196
5216
|
const relationProperties = relationObjectLiteral?.properties ?? [];
|
|
5197
|
-
for (const property of relationProperties) if (ts.isPropertyAssignment(property) && (ts.isIdentifier(property.name) || ts.isStringLiteral(property.name))) {
|
|
5198
|
-
const key = ts.isIdentifier(property.name) ? property.name.text : property.name.text;
|
|
5217
|
+
for (const property of relationProperties) if (ts$1.isPropertyAssignment(property) && (ts$1.isIdentifier(property.name) || ts$1.isStringLiteral(property.name))) {
|
|
5218
|
+
const key = ts$1.isIdentifier(property.name) ? property.name.text : property.name.text;
|
|
5199
5219
|
relationMap.set(key, property.getText(sourceFile));
|
|
5200
5220
|
}
|
|
5201
5221
|
return registrationObjectLiteral.properties.flatMap((property) => {
|
|
5202
|
-
if (!ts.isPropertyAssignment(property) && !ts.isShorthandPropertyAssignment(property)) return [];
|
|
5222
|
+
if (!ts$1.isPropertyAssignment(property) && !ts$1.isShorthandPropertyAssignment(property)) return [];
|
|
5203
5223
|
const propertyName = property.name;
|
|
5204
|
-
if (!ts.isIdentifier(propertyName) && !ts.isStringLiteral(propertyName)) return [];
|
|
5205
|
-
const key = ts.isIdentifier(propertyName) ? propertyName.text : propertyName.text;
|
|
5224
|
+
if (!ts$1.isIdentifier(propertyName) && !ts$1.isStringLiteral(propertyName)) return [];
|
|
5225
|
+
const key = ts$1.isIdentifier(propertyName) ? propertyName.text : propertyName.text;
|
|
5206
5226
|
const declaration = declarations.get(key);
|
|
5207
5227
|
if (!declaration) return [];
|
|
5208
5228
|
return [{
|
|
@@ -8250,6 +8270,7 @@ const createSpinner = (text, options = {}) => {
|
|
|
8250
8270
|
const __filename$2 = fileURLToPath(import.meta.url);
|
|
8251
8271
|
const __dirname$1 = dirname(__filename$2);
|
|
8252
8272
|
let ownVersion;
|
|
8273
|
+
const ts = createTypeScriptProxy();
|
|
8253
8274
|
const require = createRequire(import.meta.url);
|
|
8254
8275
|
const realConvex = join(dirname(require.resolve("convex/package.json")), "bin/main.js");
|
|
8255
8276
|
const MISSING_BACKFILL_FUNCTION_RE = /could not find function|function .* was not found|unknown function/i;
|