@dineug/erd-editor 3.9.1 → 3.10.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.
Files changed (89) hide show
  1. package/README.md +46 -9
  2. package/dist/components/erd/Erd.d.ts +1 -0
  3. package/dist/components/erd/canvas/relationship-group/relationship/Relationship.d.ts +2 -0
  4. package/dist/components/erd/canvas/relationship-group/relationship/RelationshipActionLabel.d.ts +32 -0
  5. package/dist/components/erd/canvas/table/cellLayout.d.ts +11 -0
  6. package/dist/components/erd/canvas/table/column/Column.d.ts +7 -0
  7. package/dist/components/erd/canvas/table/goToErd.d.ts +3 -10
  8. package/dist/components/erd/erd-context-menu/menus/relationshipMenus.d.ts +11 -0
  9. package/dist/components/erd/goToErdTarget.d.ts +85 -0
  10. package/dist/components/erd/table-properties/TableProperties.d.ts +2 -0
  11. package/dist/components/erd/table-properties/TableProperties.styles.d.ts +24 -2
  12. package/dist/components/erd/table-properties/table-properties-indexes/TablePropertiesIndexes.d.ts +2 -0
  13. package/dist/components/erd/table-properties/table-properties-indexes/TablePropertiesIndexes.styles.d.ts +32 -0
  14. package/dist/components/erd/table-properties/table-properties-indexes/indexes-checkbox-column/IndexesCheckboxColumn.d.ts +7 -0
  15. package/dist/components/erd/table-properties/table-properties-indexes/indexes-checkbox-column/IndexesCheckboxColumn.styles.d.ts +5 -0
  16. package/dist/components/erd/table-properties/table-properties-indexes/indexes-column/IndexesColumn.d.ts +7 -0
  17. package/dist/components/erd/table-properties/table-properties-indexes/indexes-column/IndexesColumn.styles.d.ts +3 -0
  18. package/dist/components/erd/table-properties/table-properties-indexes/indexes-index/IndexesIndex.d.ts +7 -0
  19. package/dist/components/erd/table-properties/table-properties-indexes/indexes-index/IndexesIndex.styles.d.ts +6 -0
  20. package/dist/components/erd/table-properties/table-properties-indexes/indexes-key/IndexesKey.d.ts +15 -0
  21. package/dist/components/erd/table-properties/table-properties-indexes/indexes-key/IndexesKey.styles.d.ts +13 -0
  22. package/dist/components/erd-editor/ErdEditor.d.ts +1 -1
  23. package/dist/components/find-replace/FindReplace.d.ts +13 -0
  24. package/dist/components/find-replace/FindReplace.styles.d.ts +27 -0
  25. package/dist/components/find-replace/fieldIcon.d.ts +5 -0
  26. package/dist/components/find-replace/matchTarget.d.ts +26 -0
  27. package/dist/components/find-replace/panelLayout.d.ts +17 -0
  28. package/dist/components/primitives/icon/icons.d.ts +10 -1
  29. package/dist/components/quick-search/QuickSearch.styles.d.ts +6 -0
  30. package/dist/components/quick-search/actions.d.ts +23 -0
  31. package/dist/components/quick-search/hangul.d.ts +73 -0
  32. package/dist/components/quick-search/paletteQuery.d.ts +37 -0
  33. package/dist/components/quick-search/scopedActions.d.ts +41 -0
  34. package/dist/components/visualization/table/column/Column.d.ts +4 -0
  35. package/dist/constants/layout.d.ts +13 -0
  36. package/dist/constants/open.d.ts +1 -0
  37. package/dist/constants/schema.d.ts +13 -0
  38. package/dist/engine/index.d.ts +1 -1
  39. package/dist/engine/index.js +20 -14
  40. package/dist/engine/modules/relationship/actions.d.ts +13 -0
  41. package/dist/engine/modules/relationship/atom.actions.d.ts +54 -0
  42. package/dist/engine/modules/relationship/fkColumns.d.ts +20 -3
  43. package/dist/engine/modules/relationship/generator.actions.d.ts +5 -2
  44. package/dist/engine/modules/relationship/history.d.ts +2 -0
  45. package/dist/engine/modules/relationship/hooks.d.ts +11 -0
  46. package/dist/engine/modules/table-column/hooks.d.ts +6 -0
  47. package/dist/engine/replication-store.d.ts +15 -1
  48. package/dist/engine/rx-operators/flushOnNotifier.d.ts +6 -0
  49. package/dist/engine/shared-store.d.ts +2 -2
  50. package/dist/engine/store-hooks.d.ts +8 -0
  51. package/dist/erd-editor.umd.js +1038 -481
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +7151 -5306
  54. package/dist/konva/scene/metrics.d.ts +5 -0
  55. package/dist/{store-hooks-DuNN9ZKu.js → loadValue-Mdc5K4qO.js} +4002 -3426
  56. package/dist/peer/index.d.ts +1 -1
  57. package/dist/peer/index.js +77 -80
  58. package/dist/schemaGCService-CZtGFh2z.js +42 -0
  59. package/dist/services/schema-gc/schemaGCService.d.ts +5 -0
  60. package/dist/shared-store-D82WVL5a.js +1129 -0
  61. package/dist/utils/calcTable.d.ts +9 -1
  62. package/dist/utils/emitter.d.ts +13 -0
  63. package/dist/utils/find-replace/findMatches.d.ts +90 -0
  64. package/dist/utils/find-replace/index.d.ts +5 -0
  65. package/dist/utils/find-replace/matcher.d.ts +53 -0
  66. package/dist/utils/find-replace/present.d.ts +22 -0
  67. package/dist/utils/find-replace/replaceActions.d.ts +20 -0
  68. package/dist/utils/generator-code/utils.d.ts +12 -1
  69. package/dist/utils/keyboard-shortcut/index.d.ts +8 -1
  70. package/dist/utils/loadValue.d.ts +7 -0
  71. package/dist/utils/referentialAction.d.ts +21 -0
  72. package/dist/utils/schema-aml-parser/types.d.ts +6 -0
  73. package/dist/utils/schema-dbml-parser/types.d.ts +3 -0
  74. package/dist/utils/schema-sql/Databricks.d.ts +5 -0
  75. package/dist/utils/schema-sql/MSSQL.d.ts +5 -0
  76. package/dist/utils/schema-sql/MariaDB.d.ts +5 -0
  77. package/dist/utils/schema-sql/MySQL.d.ts +5 -0
  78. package/dist/utils/schema-sql/Oracle.d.ts +5 -0
  79. package/dist/utils/schema-sql/index.d.ts +5 -0
  80. package/dist/utils/schema-sql/utils.d.ts +19 -0
  81. package/dist/utils/schema-sql-parser/index.d.ts +5 -1
  82. package/dist/utils/table-clipboard/payload.d.ts +3 -0
  83. package/dist/utils/tableKeys.d.ts +46 -0
  84. package/dist/workers/elkLayout.shared-worker.js +1 -1
  85. package/dist/workers/exportPng.shared-worker.js +29 -27
  86. package/dist/workers/schemaGC.shared-worker.js +1 -1
  87. package/package.json +9 -8
  88. package/dist/schemaGCService-_8A8Oh9Q.js +0 -38
  89. package/dist/shared-store-CtJL8B4I.js +0 -1072
@@ -1 +1 @@
1
- import*as e from"comlink";import{round as t}from"es-toolkit/compat";import{clamp as n,difference as r,isBoolean as i,isNil as a,isNumber as o,isPlainObject as s,isString as c}from"es-toolkit";import{DateTime as l}from"luxon";var u=(e,t)=>e*(1-t)/2;function d(e){return{originX:t(e.scrollLeft+u(e.width,e.zoomLevel),4),originY:t(e.scrollTop+u(e.height,e.zoomLevel),4)}}function f(e,t,n){return r=>{if(!n)return;let i=n[r];e(i)&&(t[r]=i)}}function p(e){return t=>o(t)&&e.includes(t)}function m(){let e=Date.now();return{updateAt:e,createAt:e}}function h(e,t){let n=f(o,e,t);n(`updateAt`),n(`createAt`)}var g=()=>({tableIds:[],relationshipIds:[],indexIds:[],memoIds:[]});function _(e){let t=g();if(!s(e)||a(e))return t;let n=f(Array.isArray,t,e);return n(`tableIds`),n(`relationshipIds`),n(`indexIds`),n(`memoIds`),t}var v=()=>({id:``,name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:m()});function y(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=v(),r=f(c,e,n),a=f(i,e,n),o=f(Array.isArray,e,n);r(`id`),r(`name`),r(`tableId`),a(`unique`),o(`indexColumnIds`),o(`seqIndexColumnIds`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var b={ASC:1,DESC:2},x=Object.values(b),S=()=>({id:``,indexId:``,columnId:``,orderType:b.ASC,meta:m()});function C(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=S(),r=f(c,e,n);r(`id`),r(`indexId`),r(`columnId`),f(p(x),e,n)(`orderType`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var w=()=>({id:``,value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:m()});function T(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=w(),r=f(c,e,n),i=f(o,e.ui,n.ui),a=f(c,e.ui,n.ui);r(`id`),r(`value`),a(`color`),i(`x`),i(`y`),i(`zIndex`),i(`width`),i(`height`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var E={ZeroOne:2,ZeroN:4,OneOnly:8,OneN:16},D=Object.values(E),O={ring:1,dash:2},ee=Object.values(O),k={left:1,right:2,top:4,bottom:8},A=Object.values(k),te=()=>({id:``,identification:!1,relationshipType:E.ZeroN,startRelationshipType:O.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:k.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:k.bottom},meta:m()});function ne(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=te(),r=f(c,e,n),a=f(i,e,n),s=f(o,e.start,n.start),l=f(c,e.start,n.start),u=f(o,e.end,n.end),d=f(c,e.end,n.end);r(`id`),a(`identification`),f(p(D),e,n)(`relationshipType`),f(p(ee),e,n)(`startRelationshipType`),l(`tableId`),s(`x`),s(`y`),f(p(A),e.start,n.start)(`direction`),f(Array.isArray,e.start,n.start)(`columnIds`),d(`tableId`),u(`x`),u(`y`),f(p(A),e.end,n.end)(`direction`),f(Array.isArray,e.end,n.end)(`columnIds`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var j={ERD:`ERD`,visualization:`@dineug/erd-editor/builtin-visualization`,schemaSQL:`@dineug/erd-editor/builtin-schema-sql`,generatorCode:`@dineug/erd-editor/builtin-generator-code`,settings:`settings`};Object.values(j);var M={tableComment:1,columnComment:2,columnDataType:4,columnDefault:8,columnAutoIncrement:16,columnPrimaryKey:32,columnUnique:64,columnNotNull:128,relationship:256},N={columnName:1,columnDataType:2,columnNotNull:4,columnUnique:8,columnAutoIncrement:16,columnDefault:32,columnComment:64},P=Object.values(N),F={MariaDB:1,MSSQL:2,MySQL:4,Oracle:8,PostgreSQL:16,SQLite:32,Databricks:64,Snowflake:128},I=Object.values(F),L={GraphQL:1,csharp:2,Java:4,Kotlin:8,TypeScript:16,JPA:32,Scala:64,Go:128,SQLAlchemy:256,TypeORM:512,Sequelize:1024,Drizzle:2048,DBML:4096,AML:8192},re=Object.values(L),R={none:1,camelCase:2,pascalCase:4,snakeCase:8},z=Object.values(R),B={none:1,doubleQuote:2,singleQuote:4,backtick:8},ie=Object.values(B),ae=.1,V=1.5,H=2e3,U=2e4,W=M.tableComment|M.columnComment|M.columnDataType|M.columnDefault|M.columnPrimaryKey|M.columnNotNull|M.relationship,G=()=>({width:2e3,height:2e3,scrollTop:0,scrollLeft:0,originX:0,originY:0,zoomLevel:1,show:W,database:F.MySQL,databaseName:``,canvasType:j.ERD,language:L.GraphQL,tableNameCase:R.pascalCase,columnNameCase:R.camelCase,bracketType:B.none,relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[N.columnName,N.columnDataType,N.columnNotNull,N.columnUnique,N.columnAutoIncrement,N.columnDefault,N.columnComment],maxWidthComment:-1,ignoreSaveSettings:0}),K=e=>n(e,H,U),q=e=>n(e,ae,V),oe=e=>n(e,60,200);function se(e){let t=G();if(!s(e)||a(e))return t;let n=f(o,t,e),l=f(c,t,e),u=f(i,t,e);if(o(e.width)&&(t.width=K(e.width)),o(e.height)&&(t.height=K(e.height)),o(e.zoomLevel)&&(t.zoomLevel=q(e.zoomLevel)),o(e.maxWidthComment)&&e.maxWidthComment!==-1&&(t.maxWidthComment=oe(e.maxWidthComment)),n(`scrollTop`),n(`scrollLeft`),n(`show`),n(`ignoreSaveSettings`),l(`databaseName`),l(`canvasType`),u(`relationshipDataTypeSync`),u(`relationshipOptimization`),f(p(I),t,e)(`database`),f(p(re),t,e)(`language`),f(p(z),t,e)(`tableNameCase`),f(p(z),t,e)(`columnNameCase`),f(p(ie),t,e)(`bracketType`),Array.isArray(e.columnOrder)&&P.length===e.columnOrder.length&&r(P,e.columnOrder).length===0&&(t.columnOrder=e.columnOrder),o(e.originX)&&o(e.originY))t.originX=e.originX,t.originY=e.originY;else{let{originX:e,originY:n}=d(t);t.originX=e,t.originY=n}return t}var ce=()=>({id:``,name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:m()});function le(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ce(),r=f(c,e,n),i=f(Array.isArray,e,n),a=f(o,e.ui,n.ui),s=f(c,e.ui,n.ui);r(`id`),r(`name`),r(`comment`),i(`columnIds`),i(`seqColumnIds`),s(`color`),a(`x`),a(`y`),a(`zIndex`),a(`widthName`),a(`widthComment`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var ue=()=>({id:``,tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:m()});function de(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ue(),r=f(c,e,n),i=f(o,e,n),a=f(o,e.ui,n.ui);r(`id`),r(`tableId`),r(`name`),r(`comment`),r(`dataType`),r(`default`),i(`options`),a(`keys`),a(`widthName`),a(`widthComment`),a(`widthDataType`),a(`widthDefault`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}function fe(e){let t=e;return{$schema:`https://raw.githubusercontent.com/dineug/erd-editor/main/json-schema/schema.json`,version:`3.0.0`,settings:se(t.settings),doc:_(t.doc),collections:{tableEntities:le(t.collections?.tableEntities),tableColumnEntities:de(t.collections?.tableColumnEntities),relationshipEntities:ne(t.collections?.relationshipEntities),indexEntities:y(t.collections?.indexEntities),indexColumnEntities:C(t.collections?.indexColumnEntities),memoEntities:T(t.collections?.memoEntities)}}}function pe(e){return[e,-1,-1,{}]}function J(e,t,n){return e[t]||(e[t]=pe(n),e[t])}function me(e,t,n,r,i){let a=J(e,n,r),o=a[1],s=a[2];o<t&&(a[1]=t),s<t&&i()}function he(e,t,n,r,i){let a=J(e,n,r),o=a[2],s=a[1];o<t&&(a[2]=t),s<=t&&i()}function ge(e,t,n,r,i,a){let o=J(e,n,r);(o[3][i]??-1)<=t&&(o[3][i]=t,a())}function Y(e){"@babel/helpers - typeof";return Y=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Y(e)}function _e(e,t){if(Y(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Y(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ve(e){var t=_e(e,`string`);return Y(t)==`symbol`?t:t+``}function X(e,t,n){return(t=ve(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Z=class{constructor(e){X(this,`collections`,void 0),this.collections=e}collection(e){return new ye(this.collections[e],e)}},ye=class{constructor(e,t){X(this,`collection`,void 0),X(this,`collectionKey`,void 0),this.collection=e,this.collectionKey=t}selectById(e){return this.collection[e]}selectByIds(e){return e.length,e.map(e=>this.selectById(e)).filter(Boolean)}selectEntities(){return this.collection}selectAll(){return Object.values(this.collection)}setOne(e){return this.collection[e.id]=e,this}setMany(e){return e.forEach(e=>this.setOne(e)),this}setAll(e){return this.removeAll(),this.setMany(e),this}addOne(e){return this.selectById(e.id)||this.setOne(e),this}addMany(e){return e.forEach(e=>this.addOne(e)),this}removeOne(e){return this.selectById(e)&&Reflect.deleteProperty(this.collection,e),this}removeMany(e){return e.forEach(e=>this.removeOne(e)),this}removeAll(){return this.collection={},this}updateOne(e,t){let n=this.selectById(e);return n&&(t(n),n.meta.updateAt=Date.now()),this}updateMany(e,t){return e.forEach(e=>this.updateOne(e,t)),this}getOrCreate(e,t){let n=this.selectById(e);if(n)return n;let r=t(e);return this.setOne(r),this.selectById(e)}addOperator(e,t,n,r){return me(e,t,n,this.collectionKey,r),this}removeOperator(e,t,n,r){return he(e,t,n,this.collectionKey,r),this}replaceOperator(e,t,n,r,i){return ge(e,t,n,this.collectionKey,r,i),this}},Q=e=>new Z(e);function $(e){let t=new Set(e);return e=>t.has(e)}function be({collections:e},{tableIds:t,tableColumnIds:n,relationshipIds:r,indexIds:i,indexColumnIds:a,memoIds:o}){Q(e).collection(`tableEntities`).removeMany(t),Q(e).collection(`tableColumnEntities`).removeMany(n),Q(e).collection(`relationshipEntities`).removeMany(r),Q(e).collection(`indexEntities`).removeMany(i),Q(e).collection(`indexColumnEntities`).removeMany(a),Q(e).collection(`memoEntities`).removeMany(o)}var xe=class{async run(e){let t=fe(JSON.parse(e)),{doc:{tableIds:n,memoIds:r,indexIds:i,relationshipIds:a},collections:o}=t,s=$(n),c=$(r),u=$(i),d=$(a),f=Se(l.now()),p=Q(o).collection(`tableEntities`),m=Q(o).collection(`tableColumnEntities`),h=Q(o).collection(`indexEntities`),g=Q(o).collection(`indexColumnEntities`),_=Q(o).collection(`relationshipEntities`),v=Q(o).collection(`memoEntities`),y=new Set(p.selectAll().filter(f(s)).map(({id:e})=>e)),b=new Set,x=new Set(_.selectAll().filter(f(d)).map(({id:e})=>e)),S=new Set(h.selectAll().filter(f(u)).map(({id:e})=>e)),C=new Set,w=new Set(v.selectAll().filter(f(c)).map(({id:e})=>e));m.selectAll().filter(({tableId:e})=>y.has(e)).forEach(({id:e})=>b.add(e)),_.selectAll().filter(({id:e,start:t,end:n})=>!x.has(e)&&(y.has(t.tableId)||y.has(n.tableId))).forEach(({id:e})=>x.add(e)),h.selectAll().filter(({id:e,tableId:t})=>!S.has(e)&&y.has(t)).forEach(({id:e})=>S.add(e)),g.selectAll().filter(({indexId:e})=>S.has(e)).forEach(({id:e})=>C.add(e)),be(t,{tableIds:[...y],tableColumnIds:[...b],relationshipIds:[...x],indexIds:[...S],indexColumnIds:[...C],memoIds:[...w]});let T=$(p.selectAll().map(({id:e})=>e)),E=$(h.selectAll().map(({id:e})=>e));return m.selectAll().filter(({tableId:e,id:t,meta:n})=>!T(e)&&f(()=>!1)({id:t,meta:n})).forEach(({id:e})=>b.add(e)),g.selectAll().filter(({indexId:e,id:t,meta:n})=>!E(e)&&f(()=>!1)({id:t,meta:n})).forEach(({id:e})=>C.add(e)),{tableIds:[...y],tableColumnIds:[...b],relationshipIds:[...x],indexIds:[...S],indexColumnIds:[...C],memoIds:[...w]}}};const Se=e=>t=>({id:n,meta:r})=>!t(n)&&3<Math.floor(e.diff(l.fromMillis(r.updateAt),`days`).toObject().days??0),Ce=new xe;self.onconnect=t=>{let n=t.ports[0];e.expose(Ce,n)};
1
+ import*as e from"comlink";import{round as t}from"es-toolkit/compat";import{clamp as n,difference as r,isBoolean as i,isNil as a,isNumber as o,isPlainObject as s,isString as c}from"es-toolkit";import{DateTime as l}from"luxon";var u=(e,t)=>e*(1-t)/2;function d(e){return{originX:t(e.scrollLeft+u(e.width,e.zoomLevel),4),originY:t(e.scrollTop+u(e.height,e.zoomLevel),4)}}function f(e,t,n){return r=>{if(!n)return;let i=n[r];e(i)&&(t[r]=i)}}function p(e){return t=>o(t)&&e.includes(t)}function m(){let e=Date.now();return{updateAt:e,createAt:e}}function h(e,t){let n=f(o,e,t);n(`updateAt`),n(`createAt`)}var g=()=>({tableIds:[],relationshipIds:[],indexIds:[],memoIds:[]});function _(e){let t=g();if(!s(e)||a(e))return t;let n=f(Array.isArray,t,e);return n(`tableIds`),n(`relationshipIds`),n(`indexIds`),n(`memoIds`),t}var v=()=>({id:``,name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:m()});function y(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=v(),r=f(c,e,n),a=f(i,e,n),o=f(Array.isArray,e,n);r(`id`),r(`name`),r(`tableId`),a(`unique`),o(`indexColumnIds`),o(`seqIndexColumnIds`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var b={ASC:1,DESC:2},x=Object.values(b),S=()=>({id:``,indexId:``,columnId:``,orderType:b.ASC,meta:m()});function C(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=S(),r=f(c,e,n);r(`id`),r(`indexId`),r(`columnId`),f(p(x),e,n)(`orderType`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var w=()=>({id:``,value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:m()});function T(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=w(),r=f(c,e,n),i=f(o,e.ui,n.ui),a=f(c,e.ui,n.ui);r(`id`),r(`value`),a(`color`),i(`x`),i(`y`),i(`zIndex`),i(`width`),i(`height`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var E={ZeroOne:2,ZeroN:4,OneOnly:8,OneN:16},ee=Object.values(E),D={ring:1,dash:2},te=Object.values(D),O={none:1,noAction:2,cascade:4,setNull:8,setDefault:16,restrict:32},k=Object.values(O),A={left:1,right:2,top:4,bottom:8},j=Object.values(A),ne=()=>({id:``,identification:!1,relationshipType:E.ZeroN,startRelationshipType:D.dash,onDelete:O.none,onUpdate:O.none,start:{tableId:``,columnIds:[],x:0,y:0,direction:A.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:A.bottom},meta:m()});function re(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ne(),r=f(c,e,n),a=f(i,e,n),s=f(o,e.start,n.start),l=f(c,e.start,n.start),u=f(o,e.end,n.end),d=f(c,e.end,n.end);r(`id`),a(`identification`),f(p(ee),e,n)(`relationshipType`),f(p(te),e,n)(`startRelationshipType`),f(p(k),e,n)(`onDelete`),f(p(k),e,n)(`onUpdate`),l(`tableId`),s(`x`),s(`y`),f(p(j),e.start,n.start)(`direction`),f(Array.isArray,e.start,n.start)(`columnIds`),d(`tableId`),u(`x`),u(`y`),f(p(j),e.end,n.end)(`direction`),f(Array.isArray,e.end,n.end)(`columnIds`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var M={ERD:`ERD`,visualization:`@dineug/erd-editor/builtin-visualization`,schemaSQL:`@dineug/erd-editor/builtin-schema-sql`,generatorCode:`@dineug/erd-editor/builtin-generator-code`,settings:`settings`};Object.values(M);var N={tableComment:1,columnComment:2,columnDataType:4,columnDefault:8,columnAutoIncrement:16,columnPrimaryKey:32,columnUnique:64,columnNotNull:128,relationship:256,columnAlternateKey:512,hideReferentialAction:1024},P={columnName:1,columnDataType:2,columnNotNull:4,columnUnique:8,columnAutoIncrement:16,columnDefault:32,columnComment:64},F=Object.values(P),I={MariaDB:1,MSSQL:2,MySQL:4,Oracle:8,PostgreSQL:16,SQLite:32,Databricks:64,Snowflake:128},L=Object.values(I),R={GraphQL:1,csharp:2,Java:4,Kotlin:8,TypeScript:16,JPA:32,Scala:64,Go:128,SQLAlchemy:256,TypeORM:512,Sequelize:1024,Drizzle:2048,DBML:4096,AML:8192},ie=Object.values(R),z={none:1,camelCase:2,pascalCase:4,snakeCase:8},B=Object.values(z),V={none:1,doubleQuote:2,singleQuote:4,backtick:8},ae=Object.values(V),oe=.1,H=1.5,U=2e3,W=2e4,G=N.tableComment|N.columnComment|N.columnDataType|N.columnDefault|N.columnPrimaryKey|N.columnNotNull|N.relationship,K=()=>({width:2e3,height:2e3,scrollTop:0,scrollLeft:0,originX:0,originY:0,zoomLevel:1,show:G,database:I.MySQL,databaseName:``,canvasType:M.ERD,language:R.GraphQL,tableNameCase:z.pascalCase,columnNameCase:z.camelCase,bracketType:V.none,relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[P.columnName,P.columnDataType,P.columnNotNull,P.columnUnique,P.columnAutoIncrement,P.columnDefault,P.columnComment],maxWidthComment:-1,ignoreSaveSettings:0}),q=e=>n(e,U,W),se=e=>n(e,oe,H),ce=e=>n(e,60,200);function le(e){let t=K();if(!s(e)||a(e))return t;let n=f(o,t,e),l=f(c,t,e),u=f(i,t,e);if(o(e.width)&&(t.width=q(e.width)),o(e.height)&&(t.height=q(e.height)),o(e.zoomLevel)&&(t.zoomLevel=se(e.zoomLevel)),o(e.maxWidthComment)&&e.maxWidthComment!==-1&&(t.maxWidthComment=ce(e.maxWidthComment)),n(`scrollTop`),n(`scrollLeft`),n(`show`),n(`ignoreSaveSettings`),l(`databaseName`),l(`canvasType`),u(`relationshipDataTypeSync`),u(`relationshipOptimization`),f(p(L),t,e)(`database`),f(p(ie),t,e)(`language`),f(p(B),t,e)(`tableNameCase`),f(p(B),t,e)(`columnNameCase`),f(p(ae),t,e)(`bracketType`),Array.isArray(e.columnOrder)&&F.length===e.columnOrder.length&&r(F,e.columnOrder).length===0&&(t.columnOrder=e.columnOrder),o(e.originX)&&o(e.originY))t.originX=e.originX,t.originY=e.originY;else{let{originX:e,originY:n}=d(t);t.originX=e,t.originY=n}return t}var ue=()=>({id:``,name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:m()});function de(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ue(),r=f(c,e,n),i=f(Array.isArray,e,n),a=f(o,e.ui,n.ui),s=f(c,e.ui,n.ui);r(`id`),r(`name`),r(`comment`),i(`columnIds`),i(`seqColumnIds`),s(`color`),a(`x`),a(`y`),a(`zIndex`),a(`widthName`),a(`widthComment`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var fe=()=>({id:``,tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:m()});function pe(e){let t={};if(!s(e)||a(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=fe(),r=f(c,e,n),i=f(o,e,n),a=f(o,e.ui,n.ui);r(`id`),r(`tableId`),r(`name`),r(`comment`),r(`dataType`),r(`default`),i(`options`),a(`keys`),a(`widthName`),a(`widthComment`),a(`widthDataType`),a(`widthDefault`),h(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}function me(e){let t=e;return{$schema:`https://raw.githubusercontent.com/dineug/erd-editor/main/json-schema/schema.json`,version:`3.0.0`,settings:le(t.settings),doc:_(t.doc),collections:{tableEntities:de(t.collections?.tableEntities),tableColumnEntities:pe(t.collections?.tableColumnEntities),relationshipEntities:re(t.collections?.relationshipEntities),indexEntities:y(t.collections?.indexEntities),indexColumnEntities:C(t.collections?.indexColumnEntities),memoEntities:T(t.collections?.memoEntities)}}}function J(e){return[e,-1,-1,{}]}function Y(e,t,n){return e[t]||(e[t]=J(n),e[t])}function he(e,t,n,r,i){let a=Y(e,n,r),o=a[1],s=a[2];o<t&&(a[1]=t),s<t&&i()}function ge(e,t,n,r,i){let a=Y(e,n,r),o=a[2],s=a[1];o<t&&(a[2]=t),s<=t&&i()}function _e(e,t,n,r,i,a){let o=Y(e,n,r);(o[3][i]??-1)<=t&&(o[3][i]=t,a())}function X(e){"@babel/helpers - typeof";return X=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},X(e)}function ve(e,t){if(X(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(X(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ye(e){var t=ve(e,`string`);return X(t)==`symbol`?t:t+``}function Z(e,t,n){return(t=ye(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var be=class{constructor(e){Z(this,`collections`,void 0),this.collections=e}collection(e){return new xe(this.collections[e],e)}},xe=class{constructor(e,t){Z(this,`collection`,void 0),Z(this,`collectionKey`,void 0),this.collection=e,this.collectionKey=t}selectById(e){return this.collection[e]}selectByIds(e){return e.length,e.map(e=>this.selectById(e)).filter(Boolean)}selectEntities(){return this.collection}selectAll(){return Object.values(this.collection)}setOne(e){return this.collection[e.id]=e,this}setMany(e){return e.forEach(e=>this.setOne(e)),this}setAll(e){return this.removeAll(),this.setMany(e),this}addOne(e){return this.selectById(e.id)||this.setOne(e),this}addMany(e){return e.forEach(e=>this.addOne(e)),this}removeOne(e){return this.selectById(e)&&Reflect.deleteProperty(this.collection,e),this}removeMany(e){return e.forEach(e=>this.removeOne(e)),this}removeAll(){return this.collection={},this}updateOne(e,t){let n=this.selectById(e);return n&&(t(n),n.meta.updateAt=Date.now()),this}updateMany(e,t){return e.forEach(e=>this.updateOne(e,t)),this}getOrCreate(e,t){let n=this.selectById(e);if(n)return n;let r=t(e);return this.setOne(r),this.selectById(e)}addOperator(e,t,n,r){return he(e,t,n,this.collectionKey,r),this}removeOperator(e,t,n,r){return ge(e,t,n,this.collectionKey,r),this}replaceOperator(e,t,n,r,i){return _e(e,t,n,this.collectionKey,r,i),this}},Q=e=>new be(e);function $(e){let t=new Set(e);return e=>t.has(e)}function Se({collections:e},{tableIds:t,tableColumnIds:n,relationshipIds:r,indexIds:i,indexColumnIds:a,memoIds:o}){Q(e).collection(`tableEntities`).removeMany(t),Q(e).collection(`tableColumnEntities`).removeMany(n),Q(e).collection(`relationshipEntities`).removeMany(r),Q(e).collection(`indexEntities`).removeMany(i),Q(e).collection(`indexColumnEntities`).removeMany(a),Q(e).collection(`memoEntities`).removeMany(o)}var Ce=class{async run(e){return we(e)}};function we(e){let t=me(JSON.parse(e)),{doc:{tableIds:n,memoIds:r,indexIds:i,relationshipIds:a},collections:o}=t,s=$(n),c=$(r),u=$(i),d=$(a),f=Te(l.now()),p=Q(o).collection(`tableEntities`),m=Q(o).collection(`tableColumnEntities`),h=Q(o).collection(`indexEntities`),g=Q(o).collection(`indexColumnEntities`),_=Q(o).collection(`relationshipEntities`),v=Q(o).collection(`memoEntities`),y=new Set(p.selectAll().filter(f(s)).map(({id:e})=>e)),b=/* @__PURE__ */ new Set,x=new Set(_.selectAll().filter(f(d)).map(({id:e})=>e)),S=new Set(h.selectAll().filter(f(u)).map(({id:e})=>e)),C=/* @__PURE__ */ new Set,w=new Set(v.selectAll().filter(f(c)).map(({id:e})=>e));m.selectAll().filter(({tableId:e})=>y.has(e)).forEach(({id:e})=>b.add(e)),_.selectAll().filter(({id:e,start:t,end:n})=>!x.has(e)&&(y.has(t.tableId)||y.has(n.tableId))).forEach(({id:e})=>x.add(e)),h.selectAll().filter(({id:e,tableId:t})=>!S.has(e)&&y.has(t)).forEach(({id:e})=>S.add(e)),g.selectAll().filter(({indexId:e})=>S.has(e)).forEach(({id:e})=>C.add(e)),Se(t,{tableIds:[...y],tableColumnIds:[...b],relationshipIds:[...x],indexIds:[...S],indexColumnIds:[...C],memoIds:[...w]});let T=$(p.selectAll().map(({id:e})=>e)),E=$(h.selectAll().map(({id:e})=>e));return m.selectAll().filter(({tableId:e,id:t,meta:n})=>!T(e)&&f(()=>!1)({id:t,meta:n})).forEach(({id:e})=>b.add(e)),g.selectAll().filter(({indexId:e,id:t,meta:n})=>!E(e)&&f(()=>!1)({id:t,meta:n})).forEach(({id:e})=>C.add(e)),{tableIds:[...y],tableColumnIds:[...b],relationshipIds:[...x],indexIds:[...S],indexColumnIds:[...C],memoIds:[...w]}}const Te=e=>t=>({id:n,meta:r})=>!t(n)&&3<Math.floor(e.diff(l.fromMillis(r.updateAt),`days`).toObject().days??0),Ee=new Ce;self.onconnect=t=>{let n=t.ports[0];e.expose(Ee,n)};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dineug/erd-editor",
3
- "version": "3.9.1",
3
+ "version": "3.10.0",
4
4
  "description": "Entity-Relationship Diagram Editor",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -58,6 +58,7 @@
58
58
  "d3-force": "^3.0.0",
59
59
  "deepmerge": "^4.3.1",
60
60
  "elkjs": "^0.12.0",
61
+ "es-hangul": "^2.4.0",
61
62
  "es-toolkit": "^1.50.0",
62
63
  "fuse.js": "^7.0.0",
63
64
  "graphql": "^17.0.2",
@@ -82,20 +83,20 @@
82
83
  "@types/luxon": "^3.4.2",
83
84
  "@types/node": "^22.20.1",
84
85
  "@typescript/typescript6": "6.0.2",
85
- "@vitest/browser-playwright": "4.1.10",
86
- "@vitest/coverage-v8": "4.1.10",
86
+ "@vitest/browser-playwright": "5.0.1",
87
+ "@vitest/coverage-v8": "5.0.1",
87
88
  "happy-dom": "^20.11.2",
88
89
  "stats.js": "^0.17.0",
89
90
  "storybook": "^10.5.8",
90
91
  "typescript": "7.0.2",
91
- "vite": "npm:@voidzero-dev/vite-plus-core@0.2.9",
92
+ "vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
92
93
  "vite-plugin-dts": "^5.0.3",
93
- "vite-plus": "0.2.9",
94
- "vitest": "4.1.10",
94
+ "vite-plus": "1.0.0",
95
+ "vitest": "5.0.1",
95
96
  "@dineug/erd-editor-schema": "0.1.0",
96
- "@dineug/vite-plugin-r-html": "0.1.0",
97
97
  "@dineug/r-html": "0.1.3",
98
- "@dineug/schema-sql-parser": "0.1.0"
98
+ "@dineug/schema-sql-parser": "0.1.0",
99
+ "@dineug/vite-plugin-r-html": "0.1.0"
99
100
  },
100
101
  "scripts": {
101
102
  "dev": "vp run --filter @dineug/erd-editor... --filter !@dineug/erd-editor build && vp dev",
@@ -1,38 +0,0 @@
1
- import { Zi as e, ba as t, xa as n } from "./store-hooks-DuNN9ZKu.js";
2
- import { DateTime as r } from "luxon";
3
- //#region src/services/schema-gc/procGC.ts
4
- function i({ collections: e }, { tableIds: n, tableColumnIds: r, relationshipIds: i, indexIds: a, indexColumnIds: o, memoIds: s }) {
5
- t(e).collection("tableEntities").removeMany(n), t(e).collection("tableColumnEntities").removeMany(r), t(e).collection("relationshipEntities").removeMany(i), t(e).collection("indexEntities").removeMany(a), t(e).collection("indexColumnEntities").removeMany(o), t(e).collection("memoEntities").removeMany(s);
6
- }
7
- //#endregion
8
- //#region src/services/schema-gc/schemaGCService.ts
9
- var a = 3, o = class {
10
- async run(a) {
11
- let o = JSON.parse(a), c = n(o), { doc: { tableIds: l, memoIds: u, indexIds: d, relationshipIds: f }, collections: p } = c, m = e(l), h = e(u), g = e(d), _ = e(f), v = s(r.now()), y = t(p).collection("tableEntities"), b = t(p).collection("tableColumnEntities"), x = t(p).collection("indexEntities"), S = t(p).collection("indexColumnEntities"), C = t(p).collection("relationshipEntities"), w = t(p).collection("memoEntities"), T = new Set(y.selectAll().filter(v(m)).map(({ id: e }) => e)), E = /* @__PURE__ */ new Set(), D = new Set(C.selectAll().filter(v(_)).map(({ id: e }) => e)), O = new Set(x.selectAll().filter(v(g)).map(({ id: e }) => e)), k = /* @__PURE__ */ new Set(), A = new Set(w.selectAll().filter(v(h)).map(({ id: e }) => e));
12
- b.selectAll().filter(({ tableId: e }) => T.has(e)).forEach(({ id: e }) => E.add(e)), C.selectAll().filter(({ id: e, start: t, end: n }) => !D.has(e) && (T.has(t.tableId) || T.has(n.tableId))).forEach(({ id: e }) => D.add(e)), x.selectAll().filter(({ id: e, tableId: t }) => !O.has(e) && T.has(t)).forEach(({ id: e }) => O.add(e)), S.selectAll().filter(({ indexId: e }) => O.has(e)).forEach(({ id: e }) => k.add(e)), i(c, {
13
- tableIds: [...T],
14
- tableColumnIds: [...E],
15
- relationshipIds: [...D],
16
- indexIds: [...O],
17
- indexColumnIds: [...k],
18
- memoIds: [...A]
19
- });
20
- let j = e(y.selectAll().map(({ id: e }) => e)), M = e(x.selectAll().map(({ id: e }) => e));
21
- return b.selectAll().filter(({ tableId: e, id: t, meta: n }) => !j(e) && v(() => !1)({
22
- id: t,
23
- meta: n
24
- })).forEach(({ id: e }) => E.add(e)), S.selectAll().filter(({ indexId: e, id: t, meta: n }) => !M(e) && v(() => !1)({
25
- id: t,
26
- meta: n
27
- })).forEach(({ id: e }) => k.add(e)), {
28
- tableIds: [...T],
29
- tableColumnIds: [...E],
30
- relationshipIds: [...D],
31
- indexIds: [...O],
32
- indexColumnIds: [...k],
33
- memoIds: [...A]
34
- };
35
- }
36
- }, s = (e) => (t) => ({ id: n, meta: i }) => !t(n) && a < Math.floor(e.diff(r.fromMillis(i.updateAt), "days").toObject().days ?? 0);
37
- //#endregion
38
- export { i as n, o as t };