@dbml/core 11.0.1 → 11.0.2-metadata-ref.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 +1 -1
- package/lib/export/DbmlExporter.mjs +3 -1
- package/lib/model_structure/element.cjs +1 -1
- package/lib/model_structure/element.mjs +2 -5
- package/lib/model_structure/ref.cjs +1 -1
- package/lib/model_structure/ref.mjs +12 -8
- 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/model_structure/element.d.ts +2 -30
- package/types/model_structure/ref.d.ts +13 -2
|
@@ -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}\``}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],i=r.columnIds.map(e=>{let n=t.indexColumns[e],r=n.type===`expression`?`\`${n.value}\``:n.value;return n.sortOrder===`desc`?`${r} [desc]`:r}),a=r.columnIds.some(e=>t.indexColumns[e].sortOrder===`desc`);i.length>1||a?n=`(${i.join(`, `)})`:i.length===1&&(n=i[0]);let o=[];return r.pk&&o.push(`pk`),r.type&&o.push(`type: ${r.type.toLowerCase()}`),r.unique&&o.push(`unique`),r.name&&o.push(`name: "${r.name}"`),o.length>1?n+=` [${o.join(`, `)}]`:o.length===1&&(n+=` [${o[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.inactive&&b.push(`inactive`),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.formatMetadataValue(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+=`
|
|
@@ -109,7 +109,9 @@ var d = class r {
|
|
|
109
109
|
let _ = t.fields[l.fieldIds[0]], v = t.tables[_.tableId], y = t.schemas[v.schemaId], b = r.buildFieldName(l.fieldIds, t);
|
|
110
110
|
g += `${d} `, g += `${i(y, t) ? `"${y.name}".` : ""}"${v.name}".${b}`;
|
|
111
111
|
let x = [];
|
|
112
|
-
return n.onUpdate && x.push(`update: ${n.onUpdate.toLowerCase()}`), n.onDelete && x.push(`delete: ${n.onDelete.toLowerCase()}`), n.inactive && x.push("inactive"),
|
|
112
|
+
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]) => {
|
|
113
|
+
x.push(`${e}: ${r.formatMetadataValue(t)}`);
|
|
114
|
+
}), x.length > 0 && (g += ` [${x.join(", ")}]`), g += "\n", g;
|
|
113
115
|
});
|
|
114
116
|
return n.length ? n.join("\n") : "";
|
|
115
117
|
}
|
|
@@ -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"),require("./config.cjs");const e=require("./element.cjs"),t=require("./endpoint.cjs");function
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs"),require("./config.cjs");const e=require("./element.cjs"),t=require("../packages/dbml-core/node_modules/lodash/lodash.cjs"),n=require("./endpoint.cjs");var r=t.default;function i(e,t){return e[0].equals(t[0])&&e[1].equals(t[1])}var a=class extends e.default{constructor({name:e,color:t,note:n,noteToken:i=null,endpoints:a,onDelete:o,onUpdate:s,inactive:c,token:l,schema:u={},injectedPartial:d=null,metadata:f={}}={}){super(l),this.name=e,this.color=t,this.note=n?(0,r.get)(n,`value`,n):null,this.noteToken=n?(0,r.get)(n,`token`,i):null,this.onDelete=o,this.onUpdate=s,this.inactive=c,this.metadata=f,this.endpoints=[],this.schema=u,this.injectedPartial=d,this.dbState=this.schema.dbState,this.generateId(),this.processEndpoints(a)}generateId(){this.id=this.dbState.generateId(`refId`)}processEndpoints(e){e.forEach(e=>{this.endpoints.push(new n.default({...e,ref:this})),e.schemaName}),this.endpoints[0].equals(this.endpoints[1])&&this.error(`Two endpoints are the same`),this.endpoints[0].fields.length!==this.endpoints[1].fields.length&&this.error(`Two endpoints have unequal number of fields`)}equals(e){return i(this.endpoints,e.endpoints)||i(this.endpoints,e.endpoints.slice().reverse())}export(){return{...this.shallowExport(),...this.exportChild()}}shallowExport(){return{name:this.name,color:this.color,note:this.note,onDelete:this.onDelete,onUpdate:this.onUpdate,inactive:this.inactive,metadata:this.metadata,injectedPartialId:this.injectedPartial?.id}}exportChild(){return{endpoints:this.endpoints.map(e=>e.export())}}exportChildIds(){return{endpointIds:this.endpoints.map(e=>e.id)}}exportParentIds(){return{schemaId:this.schema.id}}normalize(e){e.refs[this.id]={id:this.id,...this.shallowExport(),...this.exportChildIds(),...this.exportParentIds()},this.endpoints.forEach(t=>t.normalize(e))}};exports.default=a;
|
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import "./config.mjs";
|
|
2
2
|
import e from "./element.mjs";
|
|
3
|
-
import t from "
|
|
3
|
+
import { require_lodash as t } from "../packages/dbml-core/node_modules/lodash/lodash.mjs";
|
|
4
|
+
import n from "./endpoint.mjs";
|
|
4
5
|
//#region src/model_structure/ref.js
|
|
5
|
-
|
|
6
|
+
var r = t();
|
|
7
|
+
function i(e, t) {
|
|
6
8
|
return e[0].equals(t[0]) && e[1].equals(t[1]);
|
|
7
9
|
}
|
|
8
|
-
var
|
|
9
|
-
constructor({ name: e, color: t,
|
|
10
|
-
super(
|
|
10
|
+
var a = class extends e {
|
|
11
|
+
constructor({ name: e, color: t, note: n, noteToken: i = null, endpoints: a, onDelete: o, onUpdate: s, inactive: c, token: l, schema: u = {}, injectedPartial: d = null, metadata: f = {} } = {}) {
|
|
12
|
+
super(l), this.name = e, this.color = t, this.note = n ? (0, r.get)(n, "value", n) : null, this.noteToken = n ? (0, r.get)(n, "token", i) : null, this.onDelete = o, this.onUpdate = s, this.inactive = c, this.metadata = f, this.endpoints = [], this.schema = u, this.injectedPartial = d, this.dbState = this.schema.dbState, this.generateId(), this.processEndpoints(a);
|
|
11
13
|
}
|
|
12
14
|
generateId() {
|
|
13
15
|
this.id = this.dbState.generateId("refId");
|
|
14
16
|
}
|
|
15
17
|
processEndpoints(e) {
|
|
16
18
|
e.forEach((e) => {
|
|
17
|
-
this.endpoints.push(new
|
|
19
|
+
this.endpoints.push(new n({
|
|
18
20
|
...e,
|
|
19
21
|
ref: this
|
|
20
22
|
})), e.schemaName;
|
|
21
23
|
}), this.endpoints[0].equals(this.endpoints[1]) && this.error("Two endpoints are the same"), this.endpoints[0].fields.length !== this.endpoints[1].fields.length && this.error("Two endpoints have unequal number of fields");
|
|
22
24
|
}
|
|
23
25
|
equals(e) {
|
|
24
|
-
return
|
|
26
|
+
return i(this.endpoints, e.endpoints) || i(this.endpoints, e.endpoints.slice().reverse());
|
|
25
27
|
}
|
|
26
28
|
export() {
|
|
27
29
|
return {
|
|
@@ -33,9 +35,11 @@ var r = class extends e {
|
|
|
33
35
|
return {
|
|
34
36
|
name: this.name,
|
|
35
37
|
color: this.color,
|
|
38
|
+
note: this.note,
|
|
36
39
|
onDelete: this.onDelete,
|
|
37
40
|
onUpdate: this.onUpdate,
|
|
38
41
|
inactive: this.inactive,
|
|
42
|
+
metadata: this.metadata,
|
|
39
43
|
injectedPartialId: this.injectedPartial?.id
|
|
40
44
|
};
|
|
41
45
|
}
|
|
@@ -58,4 +62,4 @@ var r = class extends e {
|
|
|
58
62
|
}
|
|
59
63
|
};
|
|
60
64
|
//#endregion
|
|
61
|
-
export {
|
|
65
|
+
export { a as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("../../_virtual/_rolldown/runtime.cjs");var e=`11.0.
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");var e=`11.0.2-metadata-ref.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": "11.0.
|
|
4
|
+
"version": "11.0.2-metadata-ref.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": "^11.0.
|
|
51
|
+
"@dbml/parse": "^11.0.2-metadata-ref.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": "e12ad329a8f1b18669f87af891df7b59a9b18789",
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=16"
|
|
65
65
|
}
|
|
@@ -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;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { CustomMetadata } from '@dbml/parse';
|
|
2
|
+
import Element, { Token, Color, RawNote } from './element';
|
|
2
3
|
import Endpoint from './endpoint';
|
|
3
4
|
import Schema from './schema';
|
|
4
5
|
import DbState from './dbState';
|
|
@@ -7,26 +8,31 @@ import TablePartial from './tablePartial';
|
|
|
7
8
|
export interface RawRef {
|
|
8
9
|
name: string;
|
|
9
10
|
color?: Color;
|
|
11
|
+
note?: RawNote;
|
|
10
12
|
endpoints: Endpoint[];
|
|
11
13
|
onDelete: any;
|
|
12
14
|
onUpdate: any;
|
|
13
15
|
inactive?: boolean;
|
|
16
|
+
metadata?: CustomMetadata;
|
|
14
17
|
token: Token;
|
|
15
18
|
schema: Schema;
|
|
16
19
|
}
|
|
17
20
|
declare class Ref extends Element {
|
|
18
21
|
name: string;
|
|
19
22
|
color?: Color;
|
|
23
|
+
note: string;
|
|
24
|
+
noteToken: Token;
|
|
20
25
|
endpoints: Endpoint[];
|
|
21
26
|
onDelete: any;
|
|
22
27
|
onUpdate: any;
|
|
23
28
|
inactive?: boolean;
|
|
29
|
+
metadata: CustomMetadata;
|
|
24
30
|
schema: Schema;
|
|
25
31
|
dbState: DbState;
|
|
26
32
|
id: number;
|
|
27
33
|
database: Database;
|
|
28
34
|
injectedPartial?: TablePartial;
|
|
29
|
-
constructor({ name, endpoints, onDelete, onUpdate, token, schema }: RawRef);
|
|
35
|
+
constructor({ name, endpoints, onDelete, onUpdate, note, metadata, token, schema }: RawRef);
|
|
30
36
|
generateId(): void;
|
|
31
37
|
processEndpoints(rawEndpoints: any): void;
|
|
32
38
|
equals(ref: any): any;
|
|
@@ -40,13 +46,16 @@ declare class Ref extends Element {
|
|
|
40
46
|
name: string;
|
|
41
47
|
onDelete: any;
|
|
42
48
|
onUpdate: any;
|
|
49
|
+
metadata: CustomMetadata;
|
|
43
50
|
injectedPartialId?: number;
|
|
44
51
|
};
|
|
45
52
|
shallowExport(): {
|
|
46
53
|
name: string;
|
|
47
54
|
onDelete: any;
|
|
48
55
|
onUpdate: any;
|
|
56
|
+
metadata: CustomMetadata;
|
|
49
57
|
injectedPartialId?: number;
|
|
58
|
+
note: string;
|
|
50
59
|
};
|
|
51
60
|
exportChild(): {
|
|
52
61
|
endpoints: {
|
|
@@ -71,9 +80,11 @@ export interface NormalizedRef {
|
|
|
71
80
|
onUpdate?: string;
|
|
72
81
|
onDelete?: string;
|
|
73
82
|
inactive?: boolean;
|
|
83
|
+
metadata: CustomMetadata;
|
|
74
84
|
schemaId: number;
|
|
75
85
|
endpointIds: number[];
|
|
76
86
|
injectedPartialId?: number;
|
|
87
|
+
note: string;
|
|
77
88
|
}
|
|
78
89
|
|
|
79
90
|
export interface NormalizedRefIdMap {
|