@dbml/core 10.4.0-alpha.1 → 10.4.0-metadata-ref-type.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/lib/export/DbmlExporter.cjs +2 -2
- package/lib/export/DbmlExporter.mjs +5 -2
- package/lib/model_structure/element.cjs +1 -1
- package/lib/model_structure/element.mjs +2 -5
- package/lib/model_structure/utils.mjs +1 -1
- package/lib/packages/dbml-core/package.json.cjs +1 -1
- package/lib/packages/dbml-core/package.json.mjs +1 -1
- package/package.json +3 -3
- package/types/index.d.ts +1 -0
- package/types/model_structure/element.d.ts +2 -30
|
@@ -4,7 +4,7 @@ require("../_virtual/_rolldown/runtime.cjs");const e=require("../node_modules/lo
|
|
|
4
4
|
`)}\n}\n`});return n.length?n.join(`
|
|
5
5
|
`):``}static getFieldLines(e,t){return t.tables[e].fieldIds.map(e=>{let n=t.fields[e],i=``;n.type.schemaName&&n.type.schemaName!==`public`&&(i=r.hasWhiteSpace(n.type.schemaName)?`"${n.type.schemaName}".`:`${n.type.schemaName}.`);let a=`"${n.name}" ${i}${r.hasWhiteSpace(n.type.type_name)||r.hasSquareBracket(n.type.type_name)?`"${n.type.type_name}"`:n.type.type_name}`,o=[];if(n.unique&&o.push(`unique`),n.pk&&o.push(`pk`),n.not_null&&o.push(`not null`),n.increment&&o.push(`increment`),n.checkIds&&o.push(...n.checkIds.map(e=>`check: \`${t.checks[e].expression}\``)),n.dbdefault&&!(n.dbdefault.type===`boolean`&&(n.dbdefault.value===null||typeof n.dbdefault.value==`string`&&n.dbdefault.value.toLowerCase()===`null`))){let e=`default: `;switch(n.dbdefault.type){case`boolean`:case`number`:e+=`${n.dbdefault.value}`;break;case`string`:{let t=String(n.dbdefault.value),r=t.includes(`
|
|
6
6
|
`)?`'''`:`'`;e+=`${r}${t}${r}`;break}case`expression`:e+=`\`${n.dbdefault.value}\``;break;default:e+=`\`${n.dbdefault.value}\``;break}o.push(e)}return n.note&&o.push(`note: ${r.escapeNote(n.note)}`),o.length>0&&(a+=` [${o.join(`, `)}]`),a})}static getIndexLines(e,t){return t.tables[e].indexIds.map(e=>{let n=``,r=t.indexes[e];if(r.columnIds.length>1)n=`(${r.columnIds.map(e=>{let n=t.indexColumns[e];return n.type===`expression`?`\`${n.value}\``:n.value}).join(`, `)})`;else if(r.columnIds.length===1){let e=t.indexColumns[r.columnIds[0]];n=e.type===`expression`?`\`${e.value}\``:e.value}let i=[];return r.pk&&i.push(`pk`),r.type&&i.push(`type: ${r.type.toLowerCase()}`),r.unique&&i.push(`unique`),r.name&&i.push(`name: "${r.name}"`),i.length>1?n+=` [${i.join(`, `)}]`:i.length===1&&(n+=` [${i[0]}]`),n})}static getCheckLines(e,t){return t.tables[e].checkIds.map(e=>{let n=``,{expression:r,name:i}=t.checks[e];return n+=`\`${r}\``,i&&(n+=` [name: '${i}']`),n})}static getTableContentArr(e,t){return e.map(e=>({tableId:e,fieldContents:r.getFieldLines(e,t),checkContents:r.getCheckLines(e,t),indexContents:r.getIndexLines(e,t)}))}static getTableSettings(e){let t=``;return e.headerColor&&(t+=`headerColor: ${e.headerColor}, `),t.endsWith(`, `)&&(t=t.replace(/,\s$/,``)),t?` [${t}]`:``}static exportTables(e,n){let o=r.getTableContentArr(e,n).map(e=>{let o=n.tables[e.tableId],s=n.schemas[o.schemaId],c=r.getTableSettings(o),l=`"${o.name}"`;i.shouldPrintSchema(s,n)&&(l=`"${s.name}"."${o.name}"`);let u=o.alias?` as ${(0,a.addDoubleQuoteIfNeeded)(o.alias)}`:``,d=e.fieldContents.map(e=>` ${e}\n`).join(``),f=``;t.default(e.checkContents)||(f=`\n Checks {\n${e.checkContents.map(e=>` ${e}\n`).join(``)} }\n`);let p=``;t.default(e.indexContents)||(p=`\n Indexes {\n${e.indexContents.map(e=>` ${e}\n`).join(``)} }\n`);let m=o.note?` Note: ${r.escapeNote(o.note)}\n`:``;return`Table ${l}${u}${c} {\n${d}${f}${p}${m}}\n`});return o.length?o.join(`
|
|
7
|
-
`):``}static buildFieldName(e,t){let n=e.map(e=>`"${t.fields[e].name}"`).join(`, `);return e.length===1?n:`(${n})`}static exportRefs(e,t){let n=e.map(e=>{let n=t.refs[e],o=n.endpointIds.findIndex(e=>(0,a.parseCardinality)(t.endpoints[e].relation).max===1),s=o===-1?0:o,c=t.endpoints[n.endpointIds[s]],l=t.endpoints[n.endpointIds[1-s]],u=(0,a.getRelationshipOp)(c.relation,l.relation),d=t.fields[c.fieldIds[0]],f=t.tables[d.tableId],p=t.schemas[f.schemaId],m=r.buildFieldName(c.fieldIds,t),h=`Ref`;n.name&&(h+=` ${i.shouldPrintSchema(t.schemas[n.schemaId],t)?`"${t.schemas[n.schemaId].name}".`:``}"${n.name}"`),h+=`:`,h+=`${i.shouldPrintSchema(p,t)?`"${p.name}".`:``}"${f.name}".${m} `;let g=t.fields[l.fieldIds[0]],_=t.tables[g.tableId],v=t.schemas[_.schemaId],y=r.buildFieldName(l.fieldIds,t);h+=`${u} `,h+=`${i.shouldPrintSchema(v,t)?`"${v.name}".`:``}"${_.name}".${y}`;let b=[];return n.onUpdate&&b.push(`update: ${n.onUpdate.toLowerCase()}`),n.onDelete&&b.push(`delete: ${n.onDelete.toLowerCase()}`),n.color&&b.push(`color: ${n.color}`),n.inactive&&b.push(`inactive`),Object.entries(n.metadata??{}).forEach(([e,t])=>{b.push(`${e}: ${r.formatDepCustomValue(t)}`)}),b.length>0&&(h+=` [${b.join(`, `)}]`),h+=`
|
|
7
|
+
`):``}static buildFieldName(e,t){let n=e.map(e=>`"${t.fields[e].name}"`).join(`, `);return e.length===1?n:`(${n})`}static exportRefs(e,t){let n=e.map(e=>{let n=t.refs[e],o=n.endpointIds.findIndex(e=>(0,a.parseCardinality)(t.endpoints[e].relation).max===1),s=o===-1?0:o,c=t.endpoints[n.endpointIds[s]],l=t.endpoints[n.endpointIds[1-s]],u=(0,a.getRelationshipOp)(c.relation,l.relation),d=t.fields[c.fieldIds[0]],f=t.tables[d.tableId],p=t.schemas[f.schemaId],m=r.buildFieldName(c.fieldIds,t),h=`Ref`;n.name&&(h+=` ${i.shouldPrintSchema(t.schemas[n.schemaId],t)?`"${t.schemas[n.schemaId].name}".`:``}"${n.name}"`),h+=`:`,h+=`${i.shouldPrintSchema(p,t)?`"${p.name}".`:``}"${f.name}".${m} `;let g=t.fields[l.fieldIds[0]],_=t.tables[g.tableId],v=t.schemas[_.schemaId],y=r.buildFieldName(l.fieldIds,t);h+=`${u} `,h+=`${i.shouldPrintSchema(v,t)?`"${v.name}".`:``}"${_.name}".${y}`;let b=[];return n.onUpdate&&b.push(`update: ${n.onUpdate.toLowerCase()}`),n.onDelete&&b.push(`delete: ${n.onDelete.toLowerCase()}`),n.color&&b.push(`color: ${n.color}`),n.inactive&&b.push(`inactive`),n.note&&b.push(`note: ${r.escapeNote(n.note)}`),Object.entries(n.metadata??{}).forEach(([e,t])=>{b.push(`${e}: ${r.formatDepCustomValue(t)}`)}),b.length>0&&(h+=` [${b.join(`, `)}]`),h+=`
|
|
8
8
|
`,h});return n.length?n.join(`
|
|
9
9
|
`):``}static getTableGroupSettings(e){let t=[];return e.color&&t.push(`color: ${e.color}`),t.length?` [${t.join(`, `)}]`:``}static formatDepEndpoint(e){let t=e.schemaName?`"${e.schemaName}".`:``,n=`"${e.tableName}"`;return!e.fieldNames||e.fieldNames.length===0?`${t}${n}`:`${t}${n}.${e.fieldNames.length===1?`"${e.fieldNames[0]}"`:`(${e.fieldNames.map(e=>`"${e}"`).join(`, `)})`}`}static formatDepCustomValue(e){return typeof e==`string`?`'${(0,a.escapeString)(e)}'`:e==null?`null`:String(e)}static exportDeps(e,t){let n=e.map(e=>{let n=t.deps[e],i=n.edgeIds.map(e=>t.depEdges[e]),a=!!n.note,o=n.metadata?Object.entries(n.metadata):[],s=a||o.length>0;if(i.length===1&&!s)return`Dep: ${r.formatDepEndpoint(i[0].upstream)} -> ${r.formatDepEndpoint(i[0].downstream)}\n`;let c=`Dep {
|
|
10
10
|
`;return i.forEach(e=>{c+=` ${r.formatDepEndpoint(e.upstream)} -> ${r.formatDepEndpoint(e.downstream)}\n`}),s&&(c+=`
|
|
@@ -13,7 +13,7 @@ require("../_virtual/_rolldown/runtime.cjs");const e=require("../node_modules/lo
|
|
|
13
13
|
`):``}static exportTableGroups(e,t){let n=e.map(e=>{let n=t.tableGroups[e],a=r.getTableGroupSettings(n),o=n.note?` Note: ${r.escapeNote(n.note)}\n`:``;return`TableGroup ${`"${n.name}"`}${a} {\n${n.tableIds.reduce((e,n)=>{let r=t.tables[n],a=t.schemas[r.schemaId];return`${e}${` ${i.shouldPrintSchema(a,t)?`"${a.name}".`:``}"${r.name}"`}\n`},``)}${o}}\n`});return n.length?n.join(`
|
|
14
14
|
`):``}static getStickyNoteSettings(e){let t=``;return e.color&&(t+=`color: ${e.color}`),t?` [${t}]`:``}static exportStickyNotes(e){return n.default(e.notes,(e,t)=>{let n=` ${r.escapeNote(t.content)}`,i=r.getStickyNoteSettings(t),a=`Note ${t.name}${i} {\n${n}\n}\n`;return e?`${e}\n${a}`:a},``)}static exportRecords(n){let{records:r}=n;if(!r||t.default(r))return``;let i=e.default(Object.values(r),e=>`${e.schemaName||``}.${e.tableName}`);return Object.values(i).map(e=>{let{schemaName:t,tableName:n}=e[0],r=t?(0,a.normalizeQualifiedName)(t,n):(0,a.addDoubleQuoteIfNeeded)(n),i=[...new Set(e.flatMap(e=>e.columns))],o=i.map(a.addDoubleQuoteIfNeeded).join(`, `),s=e.flatMap(e=>{let t=i.map(t=>e.columns.indexOf(t));return e.values.map(e=>t.map(t=>t===-1?{value:null,type:`expression`}:e[t]))}).map(e=>` ${e.map(a.formatRecordValue).join(`, `)}`);return`Records ${r}(${o})${e.some(e=>e.example)?` [example]`:``} {\n${s.join(`
|
|
15
15
|
`)}\n}\n`}).join(`
|
|
16
|
-
`)}static exportMetadata(e){let n=[],a=e.database[1],o=(e,t)=>`Metadata ${e} {\n${Object.entries(t).map(([e,t])=>` ${e}: ${r.
|
|
16
|
+
`)}static formatMetadataValue(e){return typeof e==`string`?r.escapeNote(e):String(e)}static exportMetadata(e){let n=[],a=e.database[1],o=(e,t)=>`Metadata ${e} {\n${Object.entries(t).map(([e,t])=>` ${e}: ${r.formatMetadataValue(t)}`).join(`
|
|
17
17
|
`)}\n}\n`;return a.schemaIds.forEach(r=>{let{tableIds:a,tableGroupIds:s}=e.schemas[r];a.forEach(r=>{let a=e.tables[r],s=e.schemas[a.schemaId],c=i.shouldPrintSchema(s,e)?`"${s.name}".`:``;t.default(a.metadata)||n.push(o(`Table ${c}"${a.name}"`,a.metadata)),a.fieldIds.map(t=>e.fields[t]).filter(e=>!t.default(e.metadata)).forEach(e=>n.push(o(`Column ${c}"${a.name}"."${e.name}"`,e.metadata)))}),s.map(t=>e.tableGroups[t]).filter(e=>!t.default(e.metadata)).forEach(e=>n.push(o(`TableGroup "${e.name}"`,e.metadata)))}),Object.values(e.notes).filter(e=>!t.default(e.metadata)).forEach(e=>n.push(o(`Note ${e.name}`,e.metadata))),n.join(`
|
|
18
18
|
`)}static export(e,n){let i=[],a=e.database[1],{includeRecords:o}=n;a.schemaIds.forEach(n=>{let{enumIds:a,tableIds:o,tableGroupIds:s,refIds:c,depIds:l}=e.schemas[n];t.default(a)||i.push(r.exportEnums(a,e)),t.default(o)||i.push(r.exportTables(o,e)),t.default(s)||i.push(r.exportTableGroups(s,e)),t.default(c)||i.push(r.exportRefs(c,e)),t.default(l)||i.push(r.exportDeps(l,e))}),t.default(e.notes)||i.push(r.exportStickyNotes(e)),o&&!t.default(e.records)&&i.push(r.exportRecords(e));let s=r.exportMetadata(e);return s&&i.push(s),i.join(`
|
|
19
19
|
`)}};exports.default=o;
|
|
@@ -115,7 +115,7 @@ var d = class r {
|
|
|
115
115
|
let _ = t.fields[l.fieldIds[0]], v = t.tables[_.tableId], y = t.schemas[v.schemaId], b = r.buildFieldName(l.fieldIds, t);
|
|
116
116
|
g += `${d} `, g += `${i(y, t) ? `"${y.name}".` : ""}"${v.name}".${b}`;
|
|
117
117
|
let x = [];
|
|
118
|
-
return n.onUpdate && x.push(`update: ${n.onUpdate.toLowerCase()}`), n.onDelete && x.push(`delete: ${n.onDelete.toLowerCase()}`), n.color && x.push(`color: ${n.color}`), n.inactive && x.push("inactive"), Object.entries(n.metadata ?? {}).forEach(([e, t]) => {
|
|
118
|
+
return n.onUpdate && x.push(`update: ${n.onUpdate.toLowerCase()}`), n.onDelete && x.push(`delete: ${n.onDelete.toLowerCase()}`), n.color && x.push(`color: ${n.color}`), n.inactive && x.push("inactive"), n.note && x.push(`note: ${r.escapeNote(n.note)}`), Object.entries(n.metadata ?? {}).forEach(([e, t]) => {
|
|
119
119
|
x.push(`${e}: ${r.formatDepCustomValue(t)}`);
|
|
120
120
|
}), x.length > 0 && (g += ` [${x.join(", ")}]`), g += "\n", g;
|
|
121
121
|
});
|
|
@@ -180,8 +180,11 @@ var d = class r {
|
|
|
180
180
|
return `Records ${r}(${o})${e.some((e) => e.example) ? " [example]" : ""} {\n${c.join("\n")}\n}\n`;
|
|
181
181
|
}).join("\n");
|
|
182
182
|
}
|
|
183
|
+
static formatMetadataValue(e) {
|
|
184
|
+
return typeof e == "string" ? r.escapeNote(e) : String(e);
|
|
185
|
+
}
|
|
183
186
|
static exportMetadata(e) {
|
|
184
|
-
let n = [], a = e.database[1], o = (e, t) => `Metadata ${e} {\n${Object.entries(t).map(([e, t]) => ` ${e}: ${r.
|
|
187
|
+
let n = [], a = e.database[1], o = (e, t) => `Metadata ${e} {\n${Object.entries(t).map(([e, t]) => ` ${e}: ${r.formatMetadataValue(t)}`).join("\n")}\n}\n`;
|
|
185
188
|
return a.schemaIds.forEach((r) => {
|
|
186
189
|
let { tableIds: a, tableGroupIds: s } = e.schemas[r];
|
|
187
190
|
a.forEach((r) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("../_virtual/_rolldown/runtime.cjs");var e=class extends Error{constructor(e,t
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");var e=class extends Error{constructor(e,t){super(e),this.location=t,this.error=`error`}},t=class{constructor(e){this.token=e}bind(e){this.selection=e}error(t){throw new e(t,this.token)}};exports.default=t;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
//#region src/model_structure/element.
|
|
1
|
+
//#region src/model_structure/element.ts
|
|
2
2
|
var e = class extends Error {
|
|
3
|
-
constructor(e, t
|
|
4
|
-
line: 1,
|
|
5
|
-
column: 1
|
|
6
|
-
} }) {
|
|
3
|
+
constructor(e, t) {
|
|
7
4
|
super(e), this.location = t, this.error = "error";
|
|
8
5
|
}
|
|
9
6
|
}, t = class {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("../../_virtual/_rolldown/runtime.cjs");var e=`10.4.0-
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");var e=`10.4.0-metadata-ref-type.0`;exports.version=e;
|
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": "10.4.0-
|
|
4
|
+
"version": "10.4.0-metadata-ref-type.0",
|
|
5
5
|
"description": "> TODO: description",
|
|
6
6
|
"author": "Holistics <dev@holistics.io>",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"lint:fix": "eslint --fix ."
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@dbml/parse": "^10.4.0-
|
|
51
|
+
"@dbml/parse": "^10.4.0-metadata-ref-type.0",
|
|
52
52
|
"antlr4": "^4.13.1",
|
|
53
53
|
"lodash": "^4.18.1",
|
|
54
54
|
"lodash-es": "^4.18.1",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"bluebird": "^3.5.5"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "f2806cfb089ae685523e444dd409fd1e4514962b",
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=16"
|
|
65
65
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1,32 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export type { Color, Token, RawNote } from '../../src/model_structure/element';
|
|
2
|
+
import Element from '../../src/model_structure/element';
|
|
2
3
|
|
|
3
|
-
export type Color = `#${string}` | 'none';
|
|
4
|
-
|
|
5
|
-
export interface Token {
|
|
6
|
-
end: {
|
|
7
|
-
column: number;
|
|
8
|
-
line: number;
|
|
9
|
-
offset: number;
|
|
10
|
-
};
|
|
11
|
-
start: {
|
|
12
|
-
column: number;
|
|
13
|
-
line: number;
|
|
14
|
-
offset: number;
|
|
15
|
-
};
|
|
16
|
-
filepath?: Filepath;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface RawNote {
|
|
20
|
-
value: string;
|
|
21
|
-
token: Token;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
declare class Element {
|
|
25
|
-
token: Token;
|
|
26
|
-
id: number;
|
|
27
|
-
selection: string;
|
|
28
|
-
constructor(token: Token);
|
|
29
|
-
bind(selection: any): void;
|
|
30
|
-
error(message: string): void;
|
|
31
|
-
}
|
|
32
4
|
export default Element;
|