@dbml/core 8.0.0-alpha.0 → 8.0.0-alpha.4
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/lib/index.cjs +43 -43
- package/lib/index.mjs +167 -79
- package/package.json +3 -3
package/lib/index.mjs
CHANGED
|
@@ -2475,13 +2475,13 @@ var isAbsolute = function(_) {
|
|
|
2475
2475
|
function resolveImportFilepath(_, VY) {
|
|
2476
2476
|
if (!Filepath.isRelative(VY)) return;
|
|
2477
2477
|
let P = Filepath.resolve(_.dirname, VY);
|
|
2478
|
-
return P.absolute.endsWith(".dbml") ? P : Filepath.from(P.absolute +
|
|
2478
|
+
return P.absolute.endsWith(".dbml") ? P : Filepath.from(P.absolute + ".dbml");
|
|
2479
2479
|
}
|
|
2480
2480
|
var KEYWORDS_OF_DEFAULT_SETTING = [
|
|
2481
2481
|
"null",
|
|
2482
2482
|
"true",
|
|
2483
2483
|
"false"
|
|
2484
|
-
],
|
|
2484
|
+
], NUMERIC_LITERAL_PREFIX = ["-", "+"], DEFAULT_SCHEMA_NAME$1 = "public", DEFAULT_ENTRY = Filepath.from("/main.dbml"), CompileErrorCode = /* @__PURE__ */ function(_) {
|
|
2485
2485
|
return _[_.UNKNOWN_SYMBOL = 1e3] = "UNKNOWN_SYMBOL", _[_.UNEXPECTED_SYMBOL = 1001] = "UNEXPECTED_SYMBOL", _[_.UNEXPECTED_EOF = 1002] = "UNEXPECTED_EOF", _[_.UNEXPECTED_NEWLINE = 1003] = "UNEXPECTED_NEWLINE", _[_.UNKNOWN_TOKEN = 1004] = "UNKNOWN_TOKEN", _[_.UNEXPECTED_TOKEN = 1005] = "UNEXPECTED_TOKEN", _[_.UNEXPECTED_ELEMENT_DECLARATION = 1006] = "UNEXPECTED_ELEMENT_DECLARATION", _[_.MISSING_SPACES = 1007] = "MISSING_SPACES", _[_.UNKNOWN_PREFIX_OP = 1008] = "UNKNOWN_PREFIX_OP", _[_.INVALID_OPERAND = 1009] = "INVALID_OPERAND", _[_.EMPTY_ATTRIBUTE_NAME = 1010] = "EMPTY_ATTRIBUTE_NAME", _[_.INVALID_ESCAPE_SEQUENCE = 1011] = "INVALID_ESCAPE_SEQUENCE", _[_.INVALID_NAME = 3e3] = "INVALID_NAME", _[_.UNEXPECTED_NAME = 3001] = "UNEXPECTED_NAME", _[_.NAME_NOT_FOUND = 3002] = "NAME_NOT_FOUND", _[_.DUPLICATE_NAME = 3003] = "DUPLICATE_NAME", _[_.INVALID_ALIAS = 3004] = "INVALID_ALIAS", _[_.UNEXPECTED_ALIAS = 3005] = "UNEXPECTED_ALIAS", _[_.UNEXPECTED_SETTINGS = 3006] = "UNEXPECTED_SETTINGS", _[_.INVALID_SETTINGS = 3007] = "INVALID_SETTINGS", _[_.UNEXPECTED_SIMPLE_BODY = 3008] = "UNEXPECTED_SIMPLE_BODY", _[_.UNEXPECTED_COMPLEX_BODY = 3009] = "UNEXPECTED_COMPLEX_BODY", _[_.INVALID_TABLE_CONTEXT = 3010] = "INVALID_TABLE_CONTEXT", _[_.UNKNOWN_TABLE_SETTING = 3011] = "UNKNOWN_TABLE_SETTING", _[_.DUPLICATE_TABLE_SETTING = 3012] = "DUPLICATE_TABLE_SETTING", _[_.INVALID_TABLEGROUP_CONTEXT = 3013] = "INVALID_TABLEGROUP_CONTEXT", _[_.INVALID_TABLEGROUP_ELEMENT_NAME = 3014] = "INVALID_TABLEGROUP_ELEMENT_NAME", _[_.DUPLICATE_TABLEGROUP_ELEMENT_NAME = 3015] = "DUPLICATE_TABLEGROUP_ELEMENT_NAME", _[_.DUPLICATE_TABLEGROUP_FIELD_NAME = 3016] = "DUPLICATE_TABLEGROUP_FIELD_NAME", _[_.INVALID_TABLEGROUP_FIELD = 3017] = "INVALID_TABLEGROUP_FIELD", _[_.EMPTY_TABLE = 3018] = "EMPTY_TABLE", _[_.INVALID_COLUMN = 3019] = "INVALID_COLUMN", _[_.INVALID_COLUMN_NAME = 3020] = "INVALID_COLUMN_NAME", _[_.UNKNOWN_COLUMN_SETTING = 3021] = "UNKNOWN_COLUMN_SETTING", _[_.INVALID_COLUMN_TYPE = 3022] = "INVALID_COLUMN_TYPE", _[_.DUPLICATE_COLUMN_NAME = 3023] = "DUPLICATE_COLUMN_NAME", _[_.DUPLICATE_COLUMN_SETTING = 3024] = "DUPLICATE_COLUMN_SETTING", _[_.INVALID_COLUMN_SETTING_VALUE = 3025] = "INVALID_COLUMN_SETTING_VALUE", _[_.INVALID_ENUM_CONTEXT = 3026] = "INVALID_ENUM_CONTEXT", _[_.INVALID_ENUM_ELEMENT_NAME = 3027] = "INVALID_ENUM_ELEMENT_NAME", _[_.INVALID_ENUM_ELEMENT = 3028] = "INVALID_ENUM_ELEMENT", _[_.DUPLICATE_ENUM_ELEMENT_NAME = 3029] = "DUPLICATE_ENUM_ELEMENT_NAME", _[_.UNKNOWN_ENUM_ELEMENT_SETTING = 3030] = "UNKNOWN_ENUM_ELEMENT_SETTING", _[_.DUPLICATE_ENUM_ELEMENT_SETTING = 3031] = "DUPLICATE_ENUM_ELEMENT_SETTING", _[_.INVALID_ENUM_ELEMENT_SETTING = 3032] = "INVALID_ENUM_ELEMENT_SETTING", _[_.EMPTY_ENUM = 3033] = "EMPTY_ENUM", _[_.INVALID_REF_CONTEXT = 3034] = "INVALID_REF_CONTEXT", _[_.UNKNOWN_REF_SETTING = 3035] = "UNKNOWN_REF_SETTING", _[_.DUPLICATE_REF_SETTING = 3036] = "DUPLICATE_REF_SETTING", _[_.INVALID_REF_SETTING_VALUE = 3037] = "INVALID_REF_SETTING_VALUE", _[_.INVALID_REF_RELATIONSHIP = 3038] = "INVALID_REF_RELATIONSHIP", _[_.INVALID_REF_FIELD = 3039] = "INVALID_REF_FIELD", _[_.EMPTY_REF = 3040] = "EMPTY_REF", _[_.REF_REDEFINED = 3041] = "REF_REDEFINED", _[_.INVALID_NOTE_CONTEXT = 3042] = "INVALID_NOTE_CONTEXT", _[_.INVALID_NOTE = 3043] = "INVALID_NOTE", _[_.NOTE_REDEFINED = 3044] = "NOTE_REDEFINED", _[_.NOTE_CONTENT_REDEFINED = 3045] = "NOTE_CONTENT_REDEFINED", _[_.EMPTY_NOTE = 3046] = "EMPTY_NOTE", _[_.INVALID_INDEXES_CONTEXT = 3047] = "INVALID_INDEXES_CONTEXT", _[_.INVALID_INDEXES_FIELD = 3048] = "INVALID_INDEXES_FIELD", _[_.INVALID_INDEX = 3049] = "INVALID_INDEX", _[_.UNKNOWN_INDEX_SETTING = 3050] = "UNKNOWN_INDEX_SETTING", _[_.DUPLICATE_INDEX_SETTING = 3051] = "DUPLICATE_INDEX_SETTING", _[_.UNEXPECTED_INDEX_SETTING_VALUE = 3052] = "UNEXPECTED_INDEX_SETTING_VALUE", _[_.INVALID_INDEX_SETTING_VALUE = 3053] = "INVALID_INDEX_SETTING_VALUE", _[_.INVALID_PROJECT_CONTEXT = 3054] = "INVALID_PROJECT_CONTEXT", _[_.PROJECT_REDEFINED = 3055] = "PROJECT_REDEFINED", _[_.INVALID_PROJECT_FIELD = 3056] = "INVALID_PROJECT_FIELD", _[_.INVALID_CUSTOM_CONTEXT = 3057] = "INVALID_CUSTOM_CONTEXT", _[_.INVALID_CUSTOM_ELEMENT_VALUE = 3058] = "INVALID_CUSTOM_ELEMENT_VALUE", _[_.INVALID_ELEMENT_IN_SIMPLE_BODY = 3059] = "INVALID_ELEMENT_IN_SIMPLE_BODY", _[_.INVALID_TABLE_PARTIAL_CONTEXT = 3060] = "INVALID_TABLE_PARTIAL_CONTEXT", _[_.INVALID_TABLE_PARTIAL_ELEMENT_NAME = 3061] = "INVALID_TABLE_PARTIAL_ELEMENT_NAME", _[_.INVALID_TABLE_PARTIAL_SETTING_VALUE = 3062] = "INVALID_TABLE_PARTIAL_SETTING_VALUE", _[_.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME = 3063] = "DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME", _[_.DUPLICATE_TABLE_PARTIAL_SETTING = 3064] = "DUPLICATE_TABLE_PARTIAL_SETTING", _[_.INVALID_TABLE_PARTIAL_INJECTION = 3065] = "INVALID_TABLE_PARTIAL_INJECTION", _[_.INVALID_TABLE_PARTIAL_INJECTION_OP = 3066] = "INVALID_TABLE_PARTIAL_INJECTION_OP", _[_.INVALID_TABLE_PARTIAL_INJECTION_NAME = 3067] = "INVALID_TABLE_PARTIAL_INJECTION_NAME", _[_.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME = 3068] = "DUPLICATE_TABLE_PARTIAL_INJECTION_NAME", _[_.UNKNOWN_TABLE_PARTIAL_SETTING = 3069] = "UNKNOWN_TABLE_PARTIAL_SETTING", _[_.INVALID_TABLE_SETTING_VALUE = 3070] = "INVALID_TABLE_SETTING_VALUE", _[_.INVALID_CHECKS_CONTEXT = 3071] = "INVALID_CHECKS_CONTEXT", _[_.INVALID_CHECKS_FIELD = 3072] = "INVALID_CHECKS_FIELD", _[_.INVALID_CHECK = 3073] = "INVALID_CHECK", _[_.UNKNOWN_CHECK_SETTING = 3074] = "UNKNOWN_CHECK_SETTING", _[_.DUPLICATE_CHECK_SETTING = 3075] = "DUPLICATE_CHECK_SETTING", _[_.INVALID_CHECK_SETTING_VALUE = 3076] = "INVALID_CHECK_SETTING_VALUE", _[_.INVALID_RECORDS_CONTEXT = 3077] = "INVALID_RECORDS_CONTEXT", _[_.INVALID_RECORDS_NAME = 3078] = "INVALID_RECORDS_NAME", _[_.INVALID_RECORDS_FIELD = 3079] = "INVALID_RECORDS_FIELD", _[_.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS = 3080] = "DUPLICATE_COLUMN_REFERENCES_IN_RECORDS", _[_.DUPLICATE_RECORDS_FOR_TABLE = 3081] = "DUPLICATE_RECORDS_FOR_TABLE", _[_.INVALID_USE_CONTEXT = 3082] = "INVALID_USE_CONTEXT", _[_.INVALID_USE_SPECIFIER_KIND = 3083] = "INVALID_USE_SPECIFIER_KIND", _[_.INVALID_USE_SPECIFIER_NAME = 3084] = "INVALID_USE_SPECIFIER_NAME", _[_.INVALID_DIAGRAMVIEW_CONTEXT = 3085] = "INVALID_DIAGRAMVIEW_CONTEXT", _[_.DUPLICATE_DIAGRAMVIEW_NAME = 3086] = "DUPLICATE_DIAGRAMVIEW_NAME", _[_.INVALID_DIAGRAMVIEW_FIELD = 3087] = "INVALID_DIAGRAMVIEW_FIELD", _[_.DUPLICATE_DIAGRAMVIEW_FIELD = 3088] = "DUPLICATE_DIAGRAMVIEW_FIELD", _[_.BINDING_ERROR = 4e3] = "BINDING_ERROR", _[_.NONEXISTENT_MODULE = 4001] = "NONEXISTENT_MODULE", _[_.UNSUPPORTED = 5e3] = "UNSUPPORTED", _[_.CIRCULAR_REF = 5001] = "CIRCULAR_REF", _[_.SAME_ENDPOINT = 5002] = "SAME_ENDPOINT", _[_.UNEQUAL_FIELDS_BINARY_REF = 5003] = "UNEQUAL_FIELDS_BINARY_REF", _[_.CONFLICTING_SETTING = 5004] = "CONFLICTING_SETTING", _[_.TABLE_REAPPEAR_IN_TABLEGROUP = 5005] = "TABLE_REAPPEAR_IN_TABLEGROUP", _;
|
|
2486
2486
|
}({}), CompileError = class _ extends Error {
|
|
2487
2487
|
constructor(VY, P, HY) {
|
|
@@ -2720,7 +2720,7 @@ function destructureIndexNode(_) {
|
|
|
2720
2720
|
};
|
|
2721
2721
|
}
|
|
2722
2722
|
function extractQuotedStringToken(_) {
|
|
2723
|
-
if (isExpressionAQuotedString(_)) return _
|
|
2723
|
+
if (isExpressionAQuotedString(_)) return _.expression instanceof VariableNode ? _?.expression?.variable?.value : _.expression.literal.value;
|
|
2724
2724
|
}
|
|
2725
2725
|
function extractNumericLiteral(_) {
|
|
2726
2726
|
return _ instanceof PrimaryExpressionNode && _.expression instanceof LiteralNode && _.expression.literal?.kind === SyntaxTokenKind.NUMERIC_LITERAL ? Number(_.expression.literal.value) : null;
|
|
@@ -8760,24 +8760,16 @@ var ProgramInterpreter = class {
|
|
|
8760
8760
|
},
|
|
8761
8761
|
symbolMembers(_, VY) {
|
|
8762
8762
|
if (!VY.isKind(SymbolKind.Program)) return Report.create(PASS_THROUGH);
|
|
8763
|
-
|
|
8764
|
-
|
|
8765
|
-
let HY
|
|
8766
|
-
|
|
8767
|
-
let
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
let { name: UY } = P;
|
|
8774
|
-
HY.has(UY) || HY.set(UY, _.symbolFactory.create(SchemaSymbol, { name: UY }, VY.filepath));
|
|
8775
|
-
}
|
|
8776
|
-
}
|
|
8777
|
-
let UY = HY.get(DEFAULT_SCHEMA_NAME$1);
|
|
8778
|
-
if (!UY) return Report.create([...HY.values()]);
|
|
8779
|
-
let WY = _.symbolMembers(UY).getFiltered(UNHANDLED)?.filter((_) => !_.isKind(SymbolKind.Schema));
|
|
8780
|
-
return WY ? Report.create([...HY.values(), ...WY]) : Report.create([...HY.values()]);
|
|
8763
|
+
if (!(VY.declaration instanceof ProgramNode)) return Report.create([]);
|
|
8764
|
+
let P = /* @__PURE__ */ new Map();
|
|
8765
|
+
for (let HY of _.reachableFiles(VY.filepath)) {
|
|
8766
|
+
let { schemaMembers: VY } = _.usableMembers(HY).getValue();
|
|
8767
|
+
for (let _ of VY) P.has(_.name) || P.set(_.name, _);
|
|
8768
|
+
}
|
|
8769
|
+
let HY = P.get(DEFAULT_SCHEMA_NAME$1);
|
|
8770
|
+
if (!HY) return Report.create([...P.values()]);
|
|
8771
|
+
let UY = _.symbolMembers(HY).getFiltered(UNHANDLED)?.filter((_) => !_.isKind(SymbolKind.Schema));
|
|
8772
|
+
return UY ? Report.create([...P.values(), ...UY]) : Report.create([...P.values()]);
|
|
8781
8773
|
},
|
|
8782
8774
|
bindNode(_, VY) {
|
|
8783
8775
|
return isProgramNode(VY) ? new Binder(VY, _).resolve() : Report.create(PASS_THROUGH);
|
|
@@ -9408,15 +9400,15 @@ var useUtils = { visibleName(_, VY) {
|
|
|
9408
9400
|
nodeSymbol(_, VY) {
|
|
9409
9401
|
if (!isUseSpecifier(VY) || !VY.name) return Report.create(PASS_THROUGH);
|
|
9410
9402
|
let P = VY.getSymbolKind();
|
|
9411
|
-
if (P === void 0
|
|
9403
|
+
if (P === void 0) return Report.create(PASS_THROUGH);
|
|
9412
9404
|
let HY = _.nodeReferee(VY.name).getFiltered(UNHANDLED);
|
|
9413
|
-
return HY && !HY.canBeImported ? Report.create(PASS_THROUGH) : Report.create(_.symbolFactory.create(UseSymbol, {
|
|
9405
|
+
return HY && !HY.canBeImported && P !== SymbolKind.Schema ? Report.create(PASS_THROUGH) : Report.create(_.symbolFactory.create(UseSymbol, {
|
|
9414
9406
|
useSpecifierDeclaration: VY,
|
|
9415
9407
|
declaration: HY?.declaration,
|
|
9416
9408
|
usedSymbol: HY,
|
|
9417
9409
|
kind: P,
|
|
9418
9410
|
name: useUtils.visibleName(_, VY)?.at(-1)
|
|
9419
|
-
}, VY.filepath), HY === void 0 ? [new CompileError(CompileErrorCode.BINDING_ERROR, `Failed to resolve the import of ${P} '${(
|
|
9411
|
+
}, VY.filepath), HY === void 0 ? [new CompileError(CompileErrorCode.BINDING_ERROR, `Failed to resolve the import of ${P} '${(destructureComplexVariable(VY.name) || []).map(addDoubleQuoteIfNeeded).join(".")}'`, VY)] : []);
|
|
9420
9412
|
},
|
|
9421
9413
|
symbolMembers(_, VY) {
|
|
9422
9414
|
if (!(VY instanceof UseSymbol)) return Report.create(PASS_THROUGH);
|
|
@@ -9497,64 +9489,23 @@ function lookupMemberInFilepath(_, VY, P, HY, UY = /* @__PURE__ */ new Set()) {
|
|
|
9497
9489
|
}
|
|
9498
9490
|
}
|
|
9499
9491
|
function usableMembers(_) {
|
|
9500
|
-
let VY = [], P = /* @__PURE__ */ new Map(), HY = [], UY = [], WY = [], GY = [], KY = _ instanceof Filepath ? _ : _.filepath, qY = this.parseFile(KY), { ast: JY } = qY.getValue();
|
|
9501
|
-
for (let _ of JY.body) {
|
|
9502
|
-
if (!(_ instanceof UseDeclarationNode) || !_.specifiers || !_.importPath) continue;
|
|
9503
|
-
let VY = resolveImportFilepath(KY, _.importPath.value);
|
|
9504
|
-
VY && (_.isReuse ? _.specifiers instanceof WildcardNode ? HY.push({
|
|
9505
|
-
importPath: VY,
|
|
9506
|
-
node: _.specifiers
|
|
9507
|
-
}) : UY.push(..._.specifiers.specifiers) : _.specifiers instanceof WildcardNode ? WY.push({
|
|
9508
|
-
importPath: VY,
|
|
9509
|
-
node: _.specifiers
|
|
9510
|
-
}) : GY.push(..._.specifiers.specifiers));
|
|
9511
|
-
}
|
|
9512
|
-
let YY = [];
|
|
9513
9492
|
if (_ instanceof Filepath) {
|
|
9514
|
-
let
|
|
9515
|
-
|
|
9516
|
-
let HY = this.nodeFullname(VY).getFiltered(UNHANDLED) || [], UY = HY.length <= 1 ? DEFAULT_SCHEMA_NAME$1 : HY[0];
|
|
9517
|
-
P.has(UY) || P.set(UY, this.symbolFactory.create(SchemaSymbol, { name: UY }, _));
|
|
9518
|
-
}
|
|
9519
|
-
YY.push(...P.values());
|
|
9520
|
-
let HY = YY.find((_) => _.isPublicSchema());
|
|
9521
|
-
if (HY) {
|
|
9522
|
-
let _ = this.usableMembers(HY).getFiltered(UNHANDLED);
|
|
9523
|
-
_ && VY.push(..._.nonSchemaMembers);
|
|
9524
|
-
}
|
|
9525
|
-
} else {
|
|
9526
|
-
let HY = _;
|
|
9527
|
-
for (let _ of JY.body) {
|
|
9528
|
-
if (!(_ instanceof ElementDeclarationNode)) continue;
|
|
9529
|
-
let UY = schemaMembership(this, HY, _), WY = this.nodeAlias(_).getFiltered(UNHANDLED), GY = this.nodeSymbol(_).getFiltered(UNHANDLED);
|
|
9530
|
-
if (WY !== void 0 && HY.isPublicSchema() && GY && VY.push(this.symbolFactory.create(AliasSymbol, {
|
|
9531
|
-
kind: GY.kind,
|
|
9532
|
-
declaration: _,
|
|
9533
|
-
aliasedSymbol: GY,
|
|
9534
|
-
name: WY
|
|
9535
|
-
}, HY.filepath)), UY.kind !== "none") if (UY.kind === "direct") {
|
|
9536
|
-
let P = this.nodeSymbol(_).getFiltered(UNHANDLED);
|
|
9537
|
-
if (!P) continue;
|
|
9538
|
-
VY.push(P);
|
|
9539
|
-
} else P.has(UY.schemaName) || P.set(UY.schemaName, this.symbolFactory.create(SchemaSymbol, {
|
|
9540
|
-
name: UY.schemaName,
|
|
9541
|
-
parent: HY
|
|
9542
|
-
}, HY.filepath));
|
|
9543
|
-
}
|
|
9544
|
-
YY.push(...P.values());
|
|
9493
|
+
let { ast: VY } = this.parseFile(_).getValue(), P = this.nodeSymbol(VY).getFiltered(UNHANDLED);
|
|
9494
|
+
return this.usableMembers(P);
|
|
9545
9495
|
}
|
|
9496
|
+
let VY = _.filepath, P = collectImports(this, VY), { nonSchemaMembers: HY, schemaMembers: UY } = _ instanceof ProgramSymbol ? usableMembersForProgram(this, _, P) : usableMembersForSchema(this, _, P);
|
|
9546
9497
|
return new Report({
|
|
9547
|
-
nonSchemaMembers:
|
|
9548
|
-
schemaMembers:
|
|
9498
|
+
nonSchemaMembers: HY,
|
|
9499
|
+
schemaMembers: UY,
|
|
9549
9500
|
reuses: {
|
|
9550
|
-
selective:
|
|
9551
|
-
wildcard:
|
|
9501
|
+
selective: P.selectiveReuses,
|
|
9502
|
+
wildcard: P.wildcardReuses
|
|
9552
9503
|
},
|
|
9553
9504
|
uses: {
|
|
9554
|
-
selective:
|
|
9555
|
-
wildcard:
|
|
9505
|
+
selective: P.selectiveUses,
|
|
9506
|
+
wildcard: P.wildcardUses
|
|
9556
9507
|
}
|
|
9557
|
-
},
|
|
9508
|
+
}, P.parseResult.getErrors(), P.parseResult.getWarnings());
|
|
9558
9509
|
}
|
|
9559
9510
|
function schemaMembership(_, VY, P) {
|
|
9560
9511
|
let HY = VY.qualifiedName, UY;
|
|
@@ -9565,6 +9516,124 @@ function schemaMembership(_, VY, P) {
|
|
|
9565
9516
|
schemaName: WY[HY.length]
|
|
9566
9517
|
};
|
|
9567
9518
|
}
|
|
9519
|
+
function collectImports(_, VY) {
|
|
9520
|
+
let P = _.parseFile(VY), { ast: HY } = P.getValue(), UY = [], WY = [], GY = [], KY = [];
|
|
9521
|
+
for (let _ of HY.body) {
|
|
9522
|
+
if (!(_ instanceof UseDeclarationNode) || !_.specifiers || !_.importPath) continue;
|
|
9523
|
+
let P = resolveImportFilepath(VY, _.importPath.value);
|
|
9524
|
+
P && (_.isReuse ? _.specifiers instanceof WildcardNode ? UY.push({
|
|
9525
|
+
importPath: P,
|
|
9526
|
+
node: _.specifiers
|
|
9527
|
+
}) : WY.push(..._.specifiers.specifiers) : _.specifiers instanceof WildcardNode ? GY.push({
|
|
9528
|
+
importPath: P,
|
|
9529
|
+
node: _.specifiers
|
|
9530
|
+
}) : KY.push(..._.specifiers.specifiers));
|
|
9531
|
+
}
|
|
9532
|
+
return {
|
|
9533
|
+
ast: HY,
|
|
9534
|
+
parseResult: P,
|
|
9535
|
+
selectiveReuses: WY,
|
|
9536
|
+
wildcardReuses: UY,
|
|
9537
|
+
selectiveUses: KY,
|
|
9538
|
+
wildcardUses: GY
|
|
9539
|
+
};
|
|
9540
|
+
}
|
|
9541
|
+
function usableMembersForProgram(_, VY, P) {
|
|
9542
|
+
let { ast: HY, selectiveUses: UY, selectiveReuses: WY } = P, GY = VY.filepath, KY = new Map([[DEFAULT_SCHEMA_NAME$1, _.symbolFactory.create(SchemaSymbol, { name: DEFAULT_SCHEMA_NAME$1 }, GY)]]);
|
|
9543
|
+
for (let VY of HY.declarations) {
|
|
9544
|
+
let P = _.nodeFullname(VY).getFiltered(UNHANDLED) || [], HY = P.length <= 1 ? DEFAULT_SCHEMA_NAME$1 : P[0];
|
|
9545
|
+
KY.has(HY) || KY.set(HY, _.symbolFactory.create(SchemaSymbol, { name: HY }, GY));
|
|
9546
|
+
}
|
|
9547
|
+
registerProgramSchemas(_, [...UY, ...WY], KY, GY);
|
|
9548
|
+
for (let VY of _.reachableFiles(GY)) for (let P of collectTopLevelSchemaNames(_, VY)) KY.has(P) || KY.set(P, _.symbolFactory.create(SchemaSymbol, { name: P }, GY));
|
|
9549
|
+
let qY = [...KY.values()], JY = [], YY = qY.find((_) => _.isPublicSchema());
|
|
9550
|
+
if (YY) {
|
|
9551
|
+
let VY = _.usableMembers(YY).getFiltered(UNHANDLED);
|
|
9552
|
+
VY && JY.push(...VY.nonSchemaMembers);
|
|
9553
|
+
}
|
|
9554
|
+
return {
|
|
9555
|
+
nonSchemaMembers: JY,
|
|
9556
|
+
schemaMembers: qY
|
|
9557
|
+
};
|
|
9558
|
+
}
|
|
9559
|
+
function usableMembersForSchema(_, VY, P) {
|
|
9560
|
+
let { ast: HY, selectiveUses: UY, selectiveReuses: WY } = P, GY = [], KY = /* @__PURE__ */ new Map();
|
|
9561
|
+
for (let P of HY.body) {
|
|
9562
|
+
if (!(P instanceof ElementDeclarationNode)) continue;
|
|
9563
|
+
let HY = schemaMembership(_, VY, P), UY = _.nodeAlias(P).getFiltered(UNHANDLED), WY = _.nodeSymbol(P).getFiltered(UNHANDLED);
|
|
9564
|
+
if (UY !== void 0 && VY.isPublicSchema() && WY && GY.push(_.symbolFactory.create(AliasSymbol, {
|
|
9565
|
+
kind: WY.kind,
|
|
9566
|
+
declaration: P,
|
|
9567
|
+
aliasedSymbol: WY,
|
|
9568
|
+
name: UY
|
|
9569
|
+
}, VY.filepath)), HY.kind !== "none") if (HY.kind === "direct") {
|
|
9570
|
+
let VY = _.nodeSymbol(P).getFiltered(UNHANDLED);
|
|
9571
|
+
if (!VY) continue;
|
|
9572
|
+
GY.push(VY);
|
|
9573
|
+
} else KY.has(HY.schemaName) || KY.set(HY.schemaName, _.symbolFactory.create(SchemaSymbol, {
|
|
9574
|
+
name: HY.schemaName,
|
|
9575
|
+
parent: VY
|
|
9576
|
+
}, VY.filepath));
|
|
9577
|
+
}
|
|
9578
|
+
registerSchemaChildren(_, [...UY, ...WY], VY, KY);
|
|
9579
|
+
let qY = VY.qualifiedName;
|
|
9580
|
+
for (let P of _.reachableFiles(VY.filepath)) for (let HY of collectChildSchemaNames(_, P, qY)) KY.has(HY) || KY.set(HY, _.symbolFactory.create(SchemaSymbol, {
|
|
9581
|
+
name: HY,
|
|
9582
|
+
parent: VY
|
|
9583
|
+
}, VY.filepath));
|
|
9584
|
+
return {
|
|
9585
|
+
nonSchemaMembers: GY,
|
|
9586
|
+
schemaMembers: [...KY.values()]
|
|
9587
|
+
};
|
|
9588
|
+
}
|
|
9589
|
+
function registerProgramSchemas(_, VY, P, HY) {
|
|
9590
|
+
for (let UY of VY) {
|
|
9591
|
+
if (UY.getSymbolKind() !== SymbolKind.Schema) continue;
|
|
9592
|
+
let VY = useUtils.visibleName(_, UY)?.at(0);
|
|
9593
|
+
VY !== void 0 && !P.has(VY) && P.set(VY, _.symbolFactory.create(SchemaSymbol, { name: VY }, HY));
|
|
9594
|
+
}
|
|
9595
|
+
}
|
|
9596
|
+
function registerSchemaChildren(_, VY, P, HY) {
|
|
9597
|
+
let UY = P.qualifiedName;
|
|
9598
|
+
for (let WY of VY) {
|
|
9599
|
+
if (WY.getSymbolKind() !== SymbolKind.Schema) continue;
|
|
9600
|
+
let VY = useUtils.visibleName(_, WY);
|
|
9601
|
+
if (!VY || VY.length <= UY.length || !UY.every((_, P) => _ === VY[P])) continue;
|
|
9602
|
+
let GY = VY[UY.length];
|
|
9603
|
+
GY && !HY.has(GY) && HY.set(GY, _.symbolFactory.create(SchemaSymbol, {
|
|
9604
|
+
name: GY,
|
|
9605
|
+
parent: P
|
|
9606
|
+
}, P.filepath));
|
|
9607
|
+
}
|
|
9608
|
+
}
|
|
9609
|
+
function collectTopLevelSchemaNames(_, VY) {
|
|
9610
|
+
let { ast: P } = _.parseFile(VY).getValue(), HY = [];
|
|
9611
|
+
for (let VY of P.declarations) {
|
|
9612
|
+
let P = _.nodeFullname(VY).getFiltered(UNHANDLED) || [], UY = P.length <= 1 ? DEFAULT_SCHEMA_NAME$1 : P[0];
|
|
9613
|
+
HY.push(UY);
|
|
9614
|
+
}
|
|
9615
|
+
let UY = collectImports(_, VY);
|
|
9616
|
+
for (let VY of [...UY.selectiveUses, ...UY.selectiveReuses]) {
|
|
9617
|
+
if (VY.getSymbolKind() !== SymbolKind.Schema) continue;
|
|
9618
|
+
let P = useUtils.visibleName(_, VY)?.at(0);
|
|
9619
|
+
P !== void 0 && HY.push(P);
|
|
9620
|
+
}
|
|
9621
|
+
return HY;
|
|
9622
|
+
}
|
|
9623
|
+
function collectChildSchemaNames(_, VY, P) {
|
|
9624
|
+
let { ast: HY } = _.parseFile(VY).getValue(), UY = [];
|
|
9625
|
+
for (let VY of HY.declarations) {
|
|
9626
|
+
let HY = _.nodeFullname(VY).getFiltered(UNHANDLED) || [], WY = HY.length <= 1 ? [DEFAULT_SCHEMA_NAME$1] : HY.slice(0, -1);
|
|
9627
|
+
WY.length > P.length && P.every((_, VY) => _ === WY[VY]) && UY.push(WY[P.length]);
|
|
9628
|
+
}
|
|
9629
|
+
let WY = collectImports(_, VY);
|
|
9630
|
+
for (let VY of [...WY.selectiveUses, ...WY.selectiveReuses]) {
|
|
9631
|
+
if (VY.getSymbolKind() !== SymbolKind.Schema) continue;
|
|
9632
|
+
let HY = useUtils.visibleName(_, VY);
|
|
9633
|
+
!HY || HY.length <= P.length || P.every((_, VY) => _ === HY[VY]) && UY.push(HY[P.length]);
|
|
9634
|
+
}
|
|
9635
|
+
return UY;
|
|
9636
|
+
}
|
|
9568
9637
|
var TableBinder = class {
|
|
9569
9638
|
constructor(_, VY) {
|
|
9570
9639
|
this.compiler = _, this.declarationNode = VY;
|
|
@@ -10554,14 +10623,14 @@ var schemaModule = { symbolMembers(_, VY) {
|
|
|
10554
10623
|
let HY = handleMemberSelectiveUses(_, VY, P, WY);
|
|
10555
10624
|
GY.push(...HY.getErrors());
|
|
10556
10625
|
let KY = HY.getFiltered(UNHANDLED);
|
|
10557
|
-
KY && UY.push(KY);
|
|
10626
|
+
KY && UY.push(KY), UY.push(...mergeImportedSchema(_, VY, P));
|
|
10558
10627
|
}
|
|
10559
10628
|
for (let { importPath: P, node: GY } of HY.reuses.wildcard) UY.push(...handleMemberWildcardUses(_, VY, P, GY, WY));
|
|
10560
10629
|
for (let P of HY.uses.selective) {
|
|
10561
10630
|
let HY = handleMemberSelectiveUses(_, VY, P, WY);
|
|
10562
10631
|
GY.push(...HY.getErrors());
|
|
10563
10632
|
let KY = HY.getFiltered(UNHANDLED);
|
|
10564
|
-
KY && UY.push(KY);
|
|
10633
|
+
KY && UY.push(KY), UY.push(...mergeImportedSchema(_, VY, P));
|
|
10565
10634
|
}
|
|
10566
10635
|
for (let { importPath: P, node: GY } of HY.uses.wildcard) UY.push(...handleMemberWildcardUses(_, VY, P, GY, WY));
|
|
10567
10636
|
UY.push(...WY.values());
|
|
@@ -10602,6 +10671,25 @@ function handleMemberSelectiveUses(_, VY, P, HY) {
|
|
|
10602
10671
|
parent: VY
|
|
10603
10672
|
}, VY.filepath)), Report.create(void 0);
|
|
10604
10673
|
}
|
|
10674
|
+
function mergeImportedSchema(_, VY, P, HY = /* @__PURE__ */ new Set()) {
|
|
10675
|
+
if (P.getSymbolKind() !== SymbolKind.Schema || !P.name) return [];
|
|
10676
|
+
let UY = _.nodeReferee(P.name).getFiltered(UNHANDLED);
|
|
10677
|
+
if (!UY || !UY.isKind(SymbolKind.Schema) || UY.name !== VY.name) return [];
|
|
10678
|
+
let WY = UY.intern();
|
|
10679
|
+
if (HY.has(WY)) return [];
|
|
10680
|
+
HY.add(WY);
|
|
10681
|
+
let GY = _.usableMembers(UY).getFiltered(UNHANDLED);
|
|
10682
|
+
if (!GY) return [];
|
|
10683
|
+
let KY = GY.nonSchemaMembers.filter((_) => _.canBeImported).map((P) => _.symbolFactory.create(UseSymbol, {
|
|
10684
|
+
kind: P.kind,
|
|
10685
|
+
declaration: P.originalSymbol.declaration,
|
|
10686
|
+
usedSymbol: P.originalSymbol,
|
|
10687
|
+
useSpecifierDeclaration: void 0,
|
|
10688
|
+
name: P.name
|
|
10689
|
+
}, VY.filepath));
|
|
10690
|
+
for (let P of GY.reuses.selective) KY.push(...mergeImportedSchema(_, VY, P, HY));
|
|
10691
|
+
return KY;
|
|
10692
|
+
}
|
|
10605
10693
|
function handleMemberWildcardUses(_, VY, P, HY, UY, WY = /* @__PURE__ */ new Set()) {
|
|
10606
10694
|
if (WY.has(P)) return [];
|
|
10607
10695
|
WY.add(P);
|
|
@@ -12196,7 +12284,7 @@ var tablePartialModule = {
|
|
|
12196
12284
|
nodeFullname(_, VY) {
|
|
12197
12285
|
if (!isUseSpecifier(VY)) return Report.create(PASS_THROUGH);
|
|
12198
12286
|
let P = destructureComplexVariable(VY.name);
|
|
12199
|
-
return !P || P.length === 0 ? Report.create(void 0, [new CompileError(CompileErrorCode.INVALID_NAME, "Use specifiers must have a valid name (simple name or schema-qualified name)", VY)]) : VY.isKind(ImportKind.TableGroup) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A TableGroup name must be a simple name", VY)]) : VY.isKind(ImportKind.TablePartial) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A TablePartial name must be a simple name", VY)]) : VY.isKind(ImportKind.Note) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A Sticky note name must be a simple name", VY)]) : (P.length === 1 && P.unshift(DEFAULT_SCHEMA_NAME$1), new Report(P));
|
|
12287
|
+
return !P || P.length === 0 ? Report.create(void 0, [new CompileError(CompileErrorCode.INVALID_NAME, "Use specifiers must have a valid name (simple name or schema-qualified name)", VY)]) : VY.isKind(ImportKind.TableGroup) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A TableGroup name must be a simple name", VY)]) : VY.isKind(ImportKind.TablePartial) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A TablePartial name must be a simple name", VY)]) : VY.isKind(ImportKind.Note) && P.length > 1 ? Report.create(P, [new CompileError(CompileErrorCode.INVALID_USE_SPECIFIER_NAME, "A Sticky note name must be a simple name", VY)]) : (P.length === 1 && !VY.isKind(ImportKind.Schema) && P.unshift(DEFAULT_SCHEMA_NAME$1), new Report(P));
|
|
12200
12288
|
},
|
|
12201
12289
|
nodeAlias(_, VY) {
|
|
12202
12290
|
return isUseSpecifier(VY) ? VY.alias ? isValidAlias(VY.alias) ? new Report(extractVariableFromExpression(VY.alias)) : new Report(void 0, [new CompileError(CompileErrorCode.INVALID_ALIAS, "Use aliases can only contain alphanumeric and underscore unless surrounded by double quotes", VY.alias)]) : new Report(void 0) : Report.create(PASS_THROUGH);
|
|
@@ -1825646,5 +1825734,5 @@ function findDiagramViewBlocks(_) {
|
|
|
1825646
1825734
|
let VY = new Compiler();
|
|
1825647
1825735
|
return VY.setSource(DEFAULT_ENTRY, _), VY.findDiagramViewBlocks(DEFAULT_ENTRY);
|
|
1825648
1825736
|
}
|
|
1825649
|
-
const VERSION = "8.0.0-alpha.
|
|
1825737
|
+
const VERSION = "8.0.0-alpha.4";
|
|
1825650
1825738
|
export { CompilerError, ModelExporter_default as ModelExporter, Parser_default as Parser, VERSION, addDoubleQuoteIfNeeded, dbmlMonarchTokensProvider, export_default as exporter, findDiagramViewBlocks, formatRecordValue, import_default as importer, isBinaryType, isBooleanType, isDateTimeType, isFloatType, isIntegerType, isNumericType, isSerialType, isStringType, renameTable, syncDiagramView, tryExtractBoolean, tryExtractDateTime, tryExtractEnum, tryExtractInteger, tryExtractNumeric, tryExtractString };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "@dbml/core",
|
|
4
|
-
"version": "8.0.0-alpha.
|
|
4
|
+
"version": "8.0.0-alpha.4",
|
|
5
5
|
"description": "> TODO: description",
|
|
6
6
|
"author": "Holistics <dev@holistics.io>",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"lint:fix": "eslint --fix ."
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@dbml/parse": "^8.0.0-alpha.
|
|
49
|
+
"@dbml/parse": "^8.0.0-alpha.4",
|
|
50
50
|
"antlr4": "^4.13.1",
|
|
51
51
|
"lodash": "^4.18.1",
|
|
52
52
|
"lodash-es": "^4.18.1",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"bluebird": "^3.5.5"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "17d4675433b702912a20dcc65a63c03c73c56db5",
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">=16"
|
|
63
63
|
}
|