@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.
@@ -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.escapeNote(t)}`).join(`
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.escapeNote(t)}`).join("\n")}\n}\n`;
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={start:{line:1,column:1}}){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
+ 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.js
1
+ //#region src/model_structure/element.ts
2
2
  var e = class extends Error {
3
- constructor(e, t = { start: {
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,5 +1,5 @@
1
1
  import { DEFAULT_SCHEMA_NAME as e } from "./config.mjs";
2
- //#region src/model_structure/utils.js
2
+ //#region src/model_structure/utils.ts
3
3
  function t(e) {
4
4
  return e.name !== "public" || e.name === "public" && e.database.hasDefaultSchema;
5
5
  }
@@ -1 +1 @@
1
- require("../../_virtual/_rolldown/runtime.cjs");var e=`10.4.0-alpha.1`;exports.version=e;
1
+ require("../../_virtual/_rolldown/runtime.cjs");var e=`10.4.0-metadata-ref-type.0`;exports.version=e;
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var e = "10.4.0-alpha.1";
2
+ var e = "10.4.0-metadata-ref-type.0";
3
3
  //#endregion
4
4
  export { e as version };
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-alpha.1",
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-alpha.1",
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": "2abacb40597047ca589b2c18117f57f8fe3978e6",
62
+ "gitHead": "f2806cfb089ae685523e444dd409fd1e4514962b",
63
63
  "engines": {
64
64
  "node": ">=16"
65
65
  }
package/types/index.d.ts CHANGED
@@ -88,6 +88,7 @@ export type {
88
88
  NoteIdentifier,
89
89
  TableGroupIdentifier,
90
90
  CustomMetadata,
91
+ CustomMetadataValue,
91
92
  RelationCardinality,
92
93
  RelationshipOp,
93
94
  DbmlProjectLayout,
@@ -1,32 +1,4 @@
1
- import type { Filepath } from '@dbml/parse';
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;