@graview/ship 0.1.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/LICENSE +96 -0
- package/README.md +95 -0
- package/dist/browser-adapter.d.ts +84 -0
- package/dist/browser-adapter.d.ts.map +1 -0
- package/dist/browser-adapter.js +111 -0
- package/dist/browser-adapter.js.map +1 -0
- package/dist/browser.d.ts +26 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +16 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli.d.ts +48 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +170 -0
- package/dist/cli.js.map +1 -0
- package/dist/dev.d.ts +148 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +286 -0
- package/dist/dev.js.map +1 -0
- package/dist/door.d.ts +22 -0
- package/dist/door.d.ts.map +1 -0
- package/dist/door.js +43 -0
- package/dist/door.js.map +1 -0
- package/dist/export.d.ts +25 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +30 -0
- package/dist/export.js.map +1 -0
- package/dist/file-adapter.d.ts +28 -0
- package/dist/file-adapter.d.ts.map +1 -0
- package/dist/file-adapter.js +50 -0
- package/dist/file-adapter.js.map +1 -0
- package/dist/health.d.ts +19 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +16 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations.d.ts +31 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +59 -0
- package/dist/migrations.js.map +1 -0
- package/dist/open-store.d.ts +57 -0
- package/dist/open-store.d.ts.map +1 -0
- package/dist/open-store.js +103 -0
- package/dist/open-store.js.map +1 -0
- package/dist/photos.d.ts +89 -0
- package/dist/photos.d.ts.map +1 -0
- package/dist/photos.js +102 -0
- package/dist/photos.js.map +1 -0
- package/dist/presence.d.ts +33 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +99 -0
- package/dist/presence.js.map +1 -0
- package/dist/remote.d.ts +73 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +271 -0
- package/dist/remote.js.map +1 -0
- package/dist/serve.d.ts +121 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +249 -0
- package/dist/serve.js.map +1 -0
- package/dist/snapshot.d.ts +20 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +41 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/source-edit.d.ts +52 -0
- package/dist/source-edit.d.ts.map +1 -0
- package/dist/source-edit.js +455 -0
- package/dist/source-edit.js.map +1 -0
- package/dist/steps.d.ts +98 -0
- package/dist/steps.d.ts.map +1 -0
- package/dist/steps.js +189 -0
- package/dist/steps.js.map +1 -0
- package/dist/studio-door.d.ts +36 -0
- package/dist/studio-door.d.ts.map +1 -0
- package/dist/studio-door.js +102 -0
- package/dist/studio-door.js.map +1 -0
- package/dist/sync-seed.d.ts +61 -0
- package/dist/sync-seed.d.ts.map +1 -0
- package/dist/sync-seed.js +95 -0
- package/dist/sync-seed.js.map +1 -0
- package/dist/typecheck.d.ts +15 -0
- package/dist/typecheck.d.ts.map +1 -0
- package/dist/typecheck.js +59 -0
- package/dist/typecheck.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-edit.js","sourceRoot":"","sources":["../src/source-edit.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,eAAe,CAAC,EAAM,EAAE,KAA4B,EAAE,OAAqC;IACzG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACtD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC,EAAE,CAAC;AACxG,CAAC;AAaD,MAAM,KAAK,GAAG,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEtI,MAAM,QAAQ,GAAG,CAAC,EAAM,EAAE,IAAuB,EAAE,IAAY,EAAW,EAAE,CAC1E,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;IACnE,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAEzF,SAAS,KAAK,CAAC,EAAM,EAAE,IAAa,EAAE,KAAiC;IACrE,IAAI,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,yEAAyE;AACzE,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,YAAY,CAAC;IACpB,GAAG,EAAE,CAAC,gBAAgB,CAAC;IACvB,IAAI,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;CACzC,CAAC;AAGX,MAAM,QAAQ,GAAG,CAAC,EAAM,EAAE,IAAa,EAAE,IAAU,EAA6B,EAAE,CAChF,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAExF,sGAAsG;AACtG,SAAS,QAAQ,CAAC,EAAM,EAAE,IAAuB;IAC/C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IACpC,OAAO,IAAI,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5I,CAAC;AAED,SAAS,YAAY,CAAC,EAAM,EAAE,KAAkC,EAAE,IAAY;IAC5E,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,EAAM,EAAE,KAAkC,EAAE,IAAU,EAAE,MAAc;IAC3F,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAQ,EAAE;YACvC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjH,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAU,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACnM,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,OAAO,CAAC,EAAM,EAAE,IAAY,EAAE,MAAqB,EAAE,IAAuB;IACnF,IAAI,SAAS,GAAY,IAAI,CAAC;IAC9B,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;QAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;IAC5F,MAAM,QAAQ,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3G,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAE,CAAC,MAAM;QAClC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvF,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,EAAM,EAAE,QAAqC,EAAsB,EAAE,CACzF,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAE9H,SAAS,QAAQ,CAAC,EAAM,EAAE,MAAkC,EAAE,IAAY;IACxE,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAgC,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;AACvI,CAAC;AAED,iFAAiF;AACjF,SAAS,QAAQ,CAAC,EAAM,EAAE,KAAY,EAAE,IAAY;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC;IACjE,IAAI,MAAM,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;IACjE,CAAC;IACD,OAAO,kBAAkB,IAAI,2CAA2C,KAAK,CAAC,IAAI,4CAA4C,CAAC;AACjI,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,EAAM,EACN,KAA4B;IAE5B,MAAM,IAAI,GAAmD,EAAE,CAAC;IAChE,MAAM,KAAK,GAAmD,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,IAAa,EAAQ,EAAE;YACnC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAU,EAAE,CAAC;gBACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxE,IAAI,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5H,CAAC;YACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,0EAA0E;AAE1E,yCAAyC;AACzC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAU,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5H,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAEtG,mEAAmE;AACnE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAU,EAAU,EAAE,CACnE,KAAK;KACF,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAC5E,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,SAAS,cAAc,CAAC,IAAY,EAAE,MAAkC,EAAE,MAAqB,EAAE,KAAa;IAC5G,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,mFAAmF;IACnF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,OAAO,IAAI;YACT,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC/D,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9I,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;IACrD,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAY,EAAE,OAAgB;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,IAAoC,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE7H,SAAS,WAAW,CAAC,IAAY,EAAE,IAAa,EAAE,MAAqB,EAAE,WAAmB;IAC1F,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnF,CAAC;AAED,0EAA0E;AAE1E,SAAS,WAAW,CAAC,EAAM,EAAE,KAA0B,EAAE,MAAyB;IAChF,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACtE,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,MAAM,IAAI,KAAK,IAAI,iBAAiB,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACvF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;QACpC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxK,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAClE,OAAO,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACrE,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,SAAS;YAAE,OAAO,MAAM,IAAI,KAAK,IAAI,uCAAuC,CAAC;QACzF,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACxF,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,2DAA2D;QAC3D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACjC,IAAI,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;gBAC7D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,kBAAkB,IAAI,gBAAgB,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzF,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;IAEpC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE,OAAO,eAAe,IAAI,SAAS,KAAK,CAAC,IAAI,iEAAiE,CAAC;YACrI,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,OAAO;gBAAE,IAAI,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;YACxF,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,IAAI,QAAQ;oBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrH,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAChC,IAAI,QAAQ;oBAAE,OAAO,IAAI,IAAI,0BAA0B,MAAM,CAAC,KAAK,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC;gBACzF,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,IAAI,IAAI,mBAAmB,MAAM,CAAC,KAAK,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC;YACtE,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YACxG,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,QAAQ;oBAAE,OAAO,IAAI,IAAI,uBAAuB,MAAM,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC;gBACrF,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpD,KAAK,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CACnK,CAAC;YACJ,CAAC;iBAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,IAAI,IAAI,uBAAuB,MAAM,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC;YACzE,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACzC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3J,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,WAAW;YACd,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,EAAM,EAAE,KAA0B,EAAE,KAAY,EAAE,MAAyD;IAC3H,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,MAAM,CAAC,IAAI,uBAAuB,MAAM,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC;IACpJ,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QAAE,OAAO,kBAAkB,MAAM,CAAC,EAAE,sBAAsB,MAAM,CAAC,IAAI,SAAS,CAAC;IAEtH,kFAAkF;IAClF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAClE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAEhD,sEAAsE;IACtE,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAE,CAAC;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,IAAI,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvG,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,KAAK,CAAC,GAAG,CACP,WAAW,CAAC,IAAI,EAChB,UAAU,IAAI,EAAE,CAAC,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC;QAChE,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC;QAClF,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAC/H,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,SAAS,UAAU,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,CAAkC,CAAC;IAC3I,MAAM,IAAI,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,IAAI,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY,EAAE,OAAe;IAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY,EAAE,OAAe;IACzE,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAChB,EAAE,EACF,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAChF,CAAC;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,EAAM,EAAE,IAAY,EAAE,MAAqB,EAAE,IAA+B,EAAE,OAAe;IAClH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1F,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,EAAM,EAAE,KAA0B,EAAE,MAAwD;IAC3G,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,MAAM,CAAC,IAAI,wBAAwB,CAAC;IACzF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,SAAS,GAAY,KAAK,CAAC,IAAI,CAAC;QACpC,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC5F,6EAA6E;QAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,IAAI,GAAG,MAAM;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;YAClH,CAAC,CAAC,IAAI;gBACJ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACxE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrI,yDAAyD;QACzD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,kCAAkC,MAAM,CAAC,IAAI,OAAO,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,EAAM,EAAE,KAA0B,EAAE,IAAoB,EAAE,IAAY,EAAE,OAAe,EAAE,SAAiB;IAChI,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,IAAI,KAAK,IAAI,wBAAwB,CAAC;IAC9F,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,IAAI,IAA8B,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,GAAG,GAAG,CAAC;YACX,MAAM,KAAK,GAAG,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAClG,IAAI,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,IAAI,GAAG,KAAK,CAChB,EAAE,EACF,MAAM,EACN,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAClF,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,IAAI,QAAQ,IAAI,mDAAmD,OAAO,OAAO,CAAC;QAC3G,+FAA+F;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,IAAI,GAAG,SAAS;YAClB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC1G,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,oBAAoB,IAAI,aAAa,IAAI,WAAW,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EAAM,EAAE,KAA0B,EAAE,MAA6D;IACrH,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAkC,CAAC;QACxI,MAAM,GAAG,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAAE,SAAS;QAEzD,8HAA8H;QAC9H,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,OAAO,qBAAqB,IAAI,mDAAmD,CAAC;YAC9I,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,GAAG,IAAI;gBACT,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC9G,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,GAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAuB,CAAC,SAAS,CAAC,CAAC,CAA+B,CAAC;QACzK,IAAI,CAAC,UAAU;YAAE,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAE7F,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAI,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,CAAuB,CAAC,SAAS,CAAC,CAAC,CAA+B,CAAC;QACrK,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7J,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,+DAA+D,CAAC;AACzE,CAAC;AAED,oHAAoH;AACpH,SAAS,UAAU,CAAC,EAAM,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;IAChF,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAC3B,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CACvH,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;IACpD,IAAI,KAAK,IAAI,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACxD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAChE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC;AACrG,CAAC"}
|
package/dist/steps.d.ts
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type MigrationDeclaration, type Primitive } from "@graview/core";
|
|
2
|
+
import { type GraphSnapshot } from "./snapshot.js";
|
|
3
|
+
/**
|
|
4
|
+
* A MIGRATION AS DATA: what a stored graph needs when the declaration
|
|
5
|
+
* moves, said as steps and turned into primitives against the stored graph
|
|
6
|
+
* at the moment it runs — the only moment the stored graph is known.
|
|
7
|
+
*
|
|
8
|
+
* As data, the same steps are what the studio shows before a change is
|
|
9
|
+
* applied, what it writes into the app's `migrations`, and what runs when a
|
|
10
|
+
* stored graph opens on the new declaration: one description, three uses,
|
|
11
|
+
* none of them able to disagree with the others.
|
|
12
|
+
*/
|
|
13
|
+
export type MigrationStep = {
|
|
14
|
+
readonly what: "remove-kind";
|
|
15
|
+
readonly kind: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly what: "rename-kind";
|
|
18
|
+
readonly kind: string;
|
|
19
|
+
readonly to: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly what: "remove-field";
|
|
22
|
+
readonly kind: string;
|
|
23
|
+
readonly field: string;
|
|
24
|
+
}
|
|
25
|
+
/** A required field arrived: every stored record of the kind starts with `value`. */
|
|
26
|
+
| {
|
|
27
|
+
readonly what: "start-field";
|
|
28
|
+
readonly kind: string;
|
|
29
|
+
readonly field: string;
|
|
30
|
+
readonly value: unknown;
|
|
31
|
+
} | {
|
|
32
|
+
readonly what: "remove-edge";
|
|
33
|
+
readonly kind: string;
|
|
34
|
+
readonly edge: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The same relation, now declared on another kind. Each stored edge is
|
|
38
|
+
* carried to the records of the new kind that are tied to its old end —
|
|
39
|
+
* a gardener who tended a plot tends each planting in it — and taken off
|
|
40
|
+
* the old end. Where nothing of the new kind is tied to it, it goes.
|
|
41
|
+
*/
|
|
42
|
+
| {
|
|
43
|
+
readonly what: "move-edge";
|
|
44
|
+
readonly kind: string;
|
|
45
|
+
readonly edge: string;
|
|
46
|
+
readonly to: string;
|
|
47
|
+
}
|
|
48
|
+
/** A record the graph should have. Left alone when it already does. */
|
|
49
|
+
| {
|
|
50
|
+
readonly what: "put-node";
|
|
51
|
+
readonly node: GraphSnapshot["nodes"][number];
|
|
52
|
+
}
|
|
53
|
+
/** Fields a record should carry. Only what differs is written. */
|
|
54
|
+
| {
|
|
55
|
+
readonly what: "patch-node";
|
|
56
|
+
readonly id: string;
|
|
57
|
+
readonly fields: Readonly<Record<string, unknown>>;
|
|
58
|
+
}
|
|
59
|
+
/** A record the graph should no longer have, with every tie it has. */
|
|
60
|
+
| {
|
|
61
|
+
readonly what: "drop-node";
|
|
62
|
+
readonly id: string;
|
|
63
|
+
}
|
|
64
|
+
/** A tie the graph should have. Left alone when it does, or when either end is missing. */
|
|
65
|
+
| {
|
|
66
|
+
readonly what: "put-edge";
|
|
67
|
+
readonly edge: GraphSnapshot["edges"][number];
|
|
68
|
+
}
|
|
69
|
+
/** A tie the graph should no longer have. */
|
|
70
|
+
| {
|
|
71
|
+
readonly what: "drop-edge";
|
|
72
|
+
readonly edge: GraphSnapshot["edges"][number];
|
|
73
|
+
};
|
|
74
|
+
/** One sentence for a step, for the migration's title and for the person about to apply it. */
|
|
75
|
+
export declare function sayStep(step: MigrationStep): string;
|
|
76
|
+
/** The primitives one step needs against this stored graph. */
|
|
77
|
+
export declare function primitivesFor(step: MigrationStep, stored: GraphSnapshot): Primitive[];
|
|
78
|
+
/**
|
|
79
|
+
* The migration the steps describe. Each edge and node goes once, whichever
|
|
80
|
+
* steps reach it: a kind's records take their edges with them, and the
|
|
81
|
+
* edge's own step finds nothing left.
|
|
82
|
+
*/
|
|
83
|
+
export declare function stepsMigration(declared: {
|
|
84
|
+
readonly from: number;
|
|
85
|
+
readonly to: number;
|
|
86
|
+
readonly steps: readonly MigrationStep[];
|
|
87
|
+
readonly title?: string;
|
|
88
|
+
}): MigrationDeclaration;
|
|
89
|
+
/**
|
|
90
|
+
* Every step's primitives against one stored graph, IN SEQUENCE: each step
|
|
91
|
+
* is judged against the graph as the steps before it leave it. That is
|
|
92
|
+
* what the studio already assumes — it renames a kind and then says its
|
|
93
|
+
* field steps by the new name — and what a content run needs, where the
|
|
94
|
+
* record is put and then tied in the same breath. Each edge and node still
|
|
95
|
+
* goes once whichever steps reach it.
|
|
96
|
+
*/
|
|
97
|
+
export declare function primitivesForSteps(steps: readonly MigrationStep[], stored: GraphSnapshot): Primitive[];
|
|
98
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
|
package/dist/steps.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { UNSET } from "@graview/core";
|
|
2
|
+
import { applyToSnapshot } from "./snapshot.js";
|
|
3
|
+
/** One sentence for a step, for the migration's title and for the person about to apply it. */
|
|
4
|
+
export function sayStep(step) {
|
|
5
|
+
switch (step.what) {
|
|
6
|
+
case "remove-kind":
|
|
7
|
+
return `${step.kind} records go`;
|
|
8
|
+
case "rename-kind":
|
|
9
|
+
return `${step.kind} records become ${step.to}`;
|
|
10
|
+
case "remove-field":
|
|
11
|
+
return `${step.kind}.${step.field} is dropped`;
|
|
12
|
+
case "start-field":
|
|
13
|
+
return `${step.kind}.${step.field} starts`;
|
|
14
|
+
case "remove-edge":
|
|
15
|
+
return `${step.kind} ${step.edge} edges go`;
|
|
16
|
+
case "move-edge":
|
|
17
|
+
return `${step.kind} ${step.edge} edges move to the ${step.to} records tied to each ${step.kind}`;
|
|
18
|
+
case "put-node":
|
|
19
|
+
return `${step.node.kind} ${step.node.id} is put`;
|
|
20
|
+
case "patch-node":
|
|
21
|
+
return `${step.id} is patched: ${Object.keys(step.fields).join(", ") || "nothing"}`;
|
|
22
|
+
case "drop-node":
|
|
23
|
+
return `${step.id} goes`;
|
|
24
|
+
case "put-edge":
|
|
25
|
+
return `${step.edge.from} ${step.edge.kind} ${step.edge.to} is tied`;
|
|
26
|
+
case "drop-edge":
|
|
27
|
+
return `${step.edge.from} ${step.edge.kind} ${step.edge.to} is cut`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const sameEdge = (a, b) => a.kind === b.kind && a.from === b.from && a.to === b.to;
|
|
31
|
+
/** The primitives one step needs against this stored graph. */
|
|
32
|
+
export function primitivesFor(step, stored) {
|
|
33
|
+
const out = [];
|
|
34
|
+
const ofKind = (kind) => new Set(stored.nodes.filter((node) => node.kind === kind).map((node) => node.id));
|
|
35
|
+
switch (step.what) {
|
|
36
|
+
case "remove-kind": {
|
|
37
|
+
const gone = ofKind(step.kind);
|
|
38
|
+
for (const edge of stored.edges)
|
|
39
|
+
if (gone.has(edge.from) || gone.has(edge.to))
|
|
40
|
+
out.push({ op: "remove-edge", edge });
|
|
41
|
+
for (const node of stored.nodes)
|
|
42
|
+
if (gone.has(node.id))
|
|
43
|
+
out.push({ op: "remove-node", node });
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
case "rename-kind": {
|
|
47
|
+
// A node's kind is its identity to the schema, so each record is taken
|
|
48
|
+
// out and put back under the new name, with the edges it carried —
|
|
49
|
+
// a snapshot drops a removed node's edges with it.
|
|
50
|
+
for (const node of stored.nodes) {
|
|
51
|
+
if (node.kind !== step.kind)
|
|
52
|
+
continue;
|
|
53
|
+
const carried = stored.edges.filter((edge) => edge.from === node.id || edge.to === node.id);
|
|
54
|
+
out.push({ op: "remove-node", node });
|
|
55
|
+
out.push({ op: "add-node", node: { ...node, kind: step.to } });
|
|
56
|
+
for (const edge of carried)
|
|
57
|
+
out.push({ op: "add-edge", edge });
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
case "remove-field":
|
|
62
|
+
for (const node of stored.nodes) {
|
|
63
|
+
if (node.kind !== step.kind || !(step.field in node))
|
|
64
|
+
continue;
|
|
65
|
+
out.push({ op: "patch-node", id: node.id, before: { [step.field]: node[step.field] }, after: { [step.field]: UNSET } });
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
case "start-field":
|
|
69
|
+
for (const node of stored.nodes) {
|
|
70
|
+
if (node.kind !== step.kind || node[step.field] !== undefined)
|
|
71
|
+
continue;
|
|
72
|
+
out.push({ op: "patch-node", id: node.id, before: { [step.field]: UNSET }, after: { [step.field]: step.value } });
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
case "remove-edge": {
|
|
76
|
+
const froms = ofKind(step.kind);
|
|
77
|
+
for (const edge of stored.edges)
|
|
78
|
+
if (edge.kind === step.edge && froms.has(edge.from))
|
|
79
|
+
out.push({ op: "remove-edge", edge });
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
case "put-node": {
|
|
83
|
+
if (stored.nodes.some((node) => node.id === step.node.id))
|
|
84
|
+
return out;
|
|
85
|
+
out.push({ op: "add-node", node: step.node });
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
case "patch-node": {
|
|
89
|
+
const node = stored.nodes.find((candidate) => candidate.id === step.id);
|
|
90
|
+
if (!node)
|
|
91
|
+
return out;
|
|
92
|
+
const before = {};
|
|
93
|
+
const after = {};
|
|
94
|
+
for (const [key, value] of Object.entries(step.fields)) {
|
|
95
|
+
if (key === "id" || key === "kind")
|
|
96
|
+
continue;
|
|
97
|
+
if (JSON.stringify(node[key]) === JSON.stringify(value))
|
|
98
|
+
continue;
|
|
99
|
+
before[key] = node[key] === undefined ? UNSET : node[key];
|
|
100
|
+
after[key] = value === undefined ? UNSET : value;
|
|
101
|
+
}
|
|
102
|
+
if (Object.keys(after).length > 0)
|
|
103
|
+
out.push({ op: "patch-node", id: step.id, before, after });
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
case "drop-node": {
|
|
107
|
+
const node = stored.nodes.find((candidate) => candidate.id === step.id);
|
|
108
|
+
if (!node)
|
|
109
|
+
return out;
|
|
110
|
+
for (const edge of stored.edges)
|
|
111
|
+
if (edge.from === step.id || edge.to === step.id)
|
|
112
|
+
out.push({ op: "remove-edge", edge });
|
|
113
|
+
out.push({ op: "remove-node", node });
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
case "put-edge": {
|
|
117
|
+
const has = (id) => stored.nodes.some((node) => node.id === id);
|
|
118
|
+
if (!has(step.edge.from) || !has(step.edge.to))
|
|
119
|
+
return out;
|
|
120
|
+
if (stored.edges.some((edge) => sameEdge(edge, step.edge)))
|
|
121
|
+
return out;
|
|
122
|
+
out.push({ op: "add-edge", edge: step.edge });
|
|
123
|
+
return out;
|
|
124
|
+
}
|
|
125
|
+
case "drop-edge": {
|
|
126
|
+
if (!stored.edges.some((edge) => sameEdge(edge, step.edge)))
|
|
127
|
+
return out;
|
|
128
|
+
out.push({ op: "remove-edge", edge: step.edge });
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
case "move-edge": {
|
|
132
|
+
const froms = ofKind(step.kind);
|
|
133
|
+
const heirs = ofKind(step.to);
|
|
134
|
+
for (const edge of stored.edges) {
|
|
135
|
+
if (edge.kind !== step.edge || !froms.has(edge.from))
|
|
136
|
+
continue;
|
|
137
|
+
// Whatever of the new kind is tied to the old end, in either direction, by any edge.
|
|
138
|
+
const tied = new Set(stored.edges.flatMap((other) => other.from === edge.from && heirs.has(other.to) ? [other.to] : other.to === edge.from && heirs.has(other.from) ? [other.from] : []));
|
|
139
|
+
out.push({ op: "remove-edge", edge });
|
|
140
|
+
for (const heir of tied)
|
|
141
|
+
out.push({ op: "add-edge", edge: { kind: edge.kind, from: heir, to: edge.to } });
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The migration the steps describe. Each edge and node goes once, whichever
|
|
149
|
+
* steps reach it: a kind's records take their edges with them, and the
|
|
150
|
+
* edge's own step finds nothing left.
|
|
151
|
+
*/
|
|
152
|
+
export function stepsMigration(declared) {
|
|
153
|
+
return {
|
|
154
|
+
from: declared.from,
|
|
155
|
+
to: declared.to,
|
|
156
|
+
title: declared.title ?? declared.steps.map(sayStep).join("; "),
|
|
157
|
+
apply: (snapshot) => primitivesForSteps(declared.steps, snapshot),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Every step's primitives against one stored graph, IN SEQUENCE: each step
|
|
162
|
+
* is judged against the graph as the steps before it leave it. That is
|
|
163
|
+
* what the studio already assumes — it renames a kind and then says its
|
|
164
|
+
* field steps by the new name — and what a content run needs, where the
|
|
165
|
+
* record is put and then tied in the same breath. Each edge and node still
|
|
166
|
+
* goes once whichever steps reach it.
|
|
167
|
+
*/
|
|
168
|
+
export function primitivesForSteps(steps, stored) {
|
|
169
|
+
const seen = new Set();
|
|
170
|
+
let running = stored;
|
|
171
|
+
return steps
|
|
172
|
+
.flatMap((step) => {
|
|
173
|
+
const out = primitivesFor(step, running);
|
|
174
|
+
running = applyToSnapshot(running, out);
|
|
175
|
+
return out;
|
|
176
|
+
})
|
|
177
|
+
.filter((primitive) => {
|
|
178
|
+
const key = primitive.op === "remove-edge" || primitive.op === "add-edge"
|
|
179
|
+
? `${primitive.op} ${primitive.edge.kind} ${primitive.edge.from} ${primitive.edge.to}`
|
|
180
|
+
: primitive.op === "patch-node"
|
|
181
|
+
? `${primitive.op} ${primitive.id} ${Object.keys(primitive.after).join(",")}`
|
|
182
|
+
: `${primitive.op} ${primitive.node.id}`;
|
|
183
|
+
if (seen.has(key))
|
|
184
|
+
return false;
|
|
185
|
+
seen.add(key);
|
|
186
|
+
return true;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type * as TS from "typescript";
|
|
3
|
+
import { type DevServerPlugin } from "./door.js";
|
|
4
|
+
/**
|
|
5
|
+
* THE STUDIO DOOR: the dev server writing the studio's change into the
|
|
6
|
+
* checkout, because a browser cannot.
|
|
7
|
+
*
|
|
8
|
+
* It takes CHANGES, never files and never paths. The files it edits are the
|
|
9
|
+
* `.ts` files it finds in its own `src/domain/`, read fresh on every
|
|
10
|
+
* request, so there is nothing a request could point anywhere else — and
|
|
11
|
+
* each change is made inside the checkout's own declarations by
|
|
12
|
+
* `editDeclaration`, so what somebody wrote by hand is still there after.
|
|
13
|
+
*
|
|
14
|
+
* Dev-server only, same-origin only, like every door: a build never carries
|
|
15
|
+
* it, the probe 404s on a static host, and the studio falls back to handing
|
|
16
|
+
* over the files.
|
|
17
|
+
*/
|
|
18
|
+
export interface StudioDoorOptions {
|
|
19
|
+
/** The app's root. The directory the dev server was started in, unless a test says otherwise. */
|
|
20
|
+
readonly root?: string;
|
|
21
|
+
/** Where the declaration lives, under the root. */
|
|
22
|
+
readonly domain?: string;
|
|
23
|
+
readonly path?: string;
|
|
24
|
+
/** The parser. Loaded from the app's own `typescript` unless a test hands one over. */
|
|
25
|
+
readonly typescript?: typeof TS;
|
|
26
|
+
/**
|
|
27
|
+
* Compile the app with the edit in place before writing it. On unless a
|
|
28
|
+
* test turns it off: a change that leaves the code around it wrong is
|
|
29
|
+
* refused with the compiler's own words, not written and found later.
|
|
30
|
+
*/
|
|
31
|
+
readonly typecheck?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare function studioDoorHandler(options?: StudioDoorOptions): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
34
|
+
/** The Vite plugin. One path: GET says whether the door is open and what it would edit, POST makes the change. */
|
|
35
|
+
export declare function studioDoor(options?: StudioDoorOptions): DevServerPlugin;
|
|
36
|
+
//# sourceMappingURL=studio-door.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-door.d.ts","sourceRoot":"","sources":["../src/studio-door.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AASjE,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAmC,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAIlF;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AASD,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,IAOjD,KAAK,eAAe,EAAE,KAAK,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CA0ExE;AAED,kHAAkH;AAClH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,eAAe,CAW3E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join, relative, resolve } from "node:path";
|
|
3
|
+
import { STUDIO_DOOR_PATH, } from "@graview/core";
|
|
4
|
+
import { fromThisApp, readBody, sendJson } from "./door.js";
|
|
5
|
+
import { declaredCode, editDeclaration } from "./source-edit.js";
|
|
6
|
+
import { typecheckWith } from "./typecheck.js";
|
|
7
|
+
const LIMIT = 2_000_000;
|
|
8
|
+
async function domainFiles(folder) {
|
|
9
|
+
const names = await readdir(folder).catch(() => []);
|
|
10
|
+
return names.filter((name) => name.endsWith(".ts") && !name.endsWith(".d.ts")).sort();
|
|
11
|
+
}
|
|
12
|
+
export function studioDoorHandler(options = {}) {
|
|
13
|
+
const root = resolve(options.root ?? process.cwd());
|
|
14
|
+
const domain = options.domain ?? "src/domain";
|
|
15
|
+
const folder = resolve(root, domain);
|
|
16
|
+
const parser = async () => options.typescript ?? (await import("typescript")).default;
|
|
17
|
+
return async (req, res) => {
|
|
18
|
+
const send = (status, body) => sendJson(res, status, body);
|
|
19
|
+
if (!fromThisApp(req)) {
|
|
20
|
+
send(403, { error: "The studio door answers this app only." });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// The declaration folder must be inside the app: a `domain` of "../x" is a misconfiguration, not a door.
|
|
24
|
+
if (relative(root, folder).startsWith("..")) {
|
|
25
|
+
send(500, { error: `${domain} is outside ${root}.` });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const names = await domainFiles(folder);
|
|
29
|
+
const read = () => Promise.all(names.map(async (name) => ({ path: `${domain}/${name}`, text: await readFile(join(folder, name), "utf8") })));
|
|
30
|
+
// The checkout's own acts and rules, as they are written: what a rewrite starts from.
|
|
31
|
+
if (req.method === "GET" && req.url?.startsWith("/source")) {
|
|
32
|
+
send(200, declaredCode(await parser(), await read()));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (req.method === "GET") {
|
|
36
|
+
send(200, names.length > 0
|
|
37
|
+
? { available: true, domain, files: names.map((name) => `${domain}/${name}`) }
|
|
38
|
+
: { available: false, reason: `No declaration files in ${domain}.` });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (req.method !== "POST") {
|
|
42
|
+
send(405, { error: "GET to ask whether the door is open; POST the changes." });
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const ask = JSON.parse(await readBody(req, LIMIT, "changes"));
|
|
47
|
+
if (!Array.isArray(ask.changes)) {
|
|
48
|
+
send(400, { error: "A request is { changes }." });
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const files = await read();
|
|
52
|
+
const ts = await parser();
|
|
53
|
+
const edited = editDeclaration(ts, files, ask.changes);
|
|
54
|
+
if (!edited.ok) {
|
|
55
|
+
send(200, { refused: edited.refused });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const diff = edited.files.flatMap((file) => {
|
|
59
|
+
const before = files.find((one) => one.path === file.path).text;
|
|
60
|
+
return before === file.text ? [] : [{ path: file.path, before, after: file.text }];
|
|
61
|
+
});
|
|
62
|
+
if (options.typecheck !== false && diff.length > 0) {
|
|
63
|
+
const diagnostics = typecheckWith(ts, root, new Map(diff.map((changed) => [changed.path, changed.after])));
|
|
64
|
+
if (diagnostics.length > 0) {
|
|
65
|
+
send(200, { refused: [`It would not compile: ${diagnostics.length} error${diagnostics.length === 1 ? "" : "s"}.`], diagnostics });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (!ask.dryRun) {
|
|
70
|
+
/*
|
|
71
|
+
* THE APP LAST. A dev server reloads as each file lands, so the page
|
|
72
|
+
* can open between two writes. The file that declares the app holds
|
|
73
|
+
* the migration, and a migration that runs against the schema it
|
|
74
|
+
* was not written for moves nothing; written after everything it
|
|
75
|
+
* depends on, it only ever runs against the new declaration.
|
|
76
|
+
*/
|
|
77
|
+
const last = (changed) => (changed.after.includes("defineApp(") ? 1 : 0);
|
|
78
|
+
for (const changed of [...diff].sort((a, b) => last(a) - last(b))) {
|
|
79
|
+
await writeFile(join(folder, changed.path.slice(domain.length + 1)), changed.after);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
send(200, { written: ask.dryRun ? [] : diff.map((changed) => changed.path), diff });
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
send(500, { error: error instanceof Error ? error.message : String(error) });
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** The Vite plugin. One path: GET says whether the door is open and what it would edit, POST makes the change. */
|
|
90
|
+
export function studioDoor(options = {}) {
|
|
91
|
+
const handler = studioDoorHandler(options);
|
|
92
|
+
return {
|
|
93
|
+
name: "graview:studio-door",
|
|
94
|
+
apply: "serve",
|
|
95
|
+
configureServer(server) {
|
|
96
|
+
server.middlewares.use(options.path ?? STUDIO_DOOR_PATH, (req, res) => {
|
|
97
|
+
void handler(req, res);
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=studio-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-door.js","sourceRoot":"","sources":["../src/studio-door.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type AnySchema, type Operation, type Principal, type Store } from "@graview/core";
|
|
2
|
+
import type { GraphSnapshot } from "./snapshot.js";
|
|
3
|
+
import { type MigrationStep } from "./steps.js";
|
|
4
|
+
/**
|
|
5
|
+
* THE SEED IS A BOOTSTRAP SNAPSHOT, and the live store is the truth.
|
|
6
|
+
*
|
|
7
|
+
* Every product that shipped a default graph met the same afternoon: the
|
|
8
|
+
* example changed — a list renamed, a question added to the interview — and
|
|
9
|
+
* the only way to see the change in a store that already existed was to
|
|
10
|
+
* delete the store. So `?fresh=1` became the redesign tool, and an agent
|
|
11
|
+
* asked to evolve the app learned to rewrite `example.json` and wipe,
|
|
12
|
+
* because the seed was the only thing it could reach.
|
|
13
|
+
*
|
|
14
|
+
* This is the other way. The seed and the live snapshot are diffed into
|
|
15
|
+
* content steps — put what is missing, patch what the seed says differently,
|
|
16
|
+
* tie what is untied — and the steps land as ONE logged, attributed,
|
|
17
|
+
* undoable operation, the way a schema migration does. What a person made
|
|
18
|
+
* that the seed never had is left exactly alone unless `prune` is asked for
|
|
19
|
+
* by name.
|
|
20
|
+
*/
|
|
21
|
+
export interface SeedSyncOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Also drop what the live graph has and the seed does not. Off by
|
|
24
|
+
* default, because the live graph is where people have been working, and
|
|
25
|
+
* a sync that quietly removed their records would be the wipe this exists
|
|
26
|
+
* to replace.
|
|
27
|
+
*/
|
|
28
|
+
readonly prune?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The steps that make `live` contain `seed`.
|
|
32
|
+
*
|
|
33
|
+
* Only the fields the seed SETS are compared: a record the live graph has
|
|
34
|
+
* given a field the seed never mentions keeps it. A record whose kind has
|
|
35
|
+
* changed is dropped and put again, because a kind is a record's identity
|
|
36
|
+
* to the schema and no patch can move it.
|
|
37
|
+
*/
|
|
38
|
+
export declare function seedSteps(seed: GraphSnapshot, live: GraphSnapshot, options?: SeedSyncOptions): MigrationStep[];
|
|
39
|
+
export declare const SEED_SYNC_AUTHOR: Principal;
|
|
40
|
+
/**
|
|
41
|
+
* Content steps as ONE OPERATION against a live graph: authored, stating
|
|
42
|
+
* what it did, carrying its inverse — the same shape a migration run
|
|
43
|
+
* appends, so the activity shows it, `undo` takes it back, and a host's
|
|
44
|
+
* adapter persists it like any other change. Null when the steps come to
|
|
45
|
+
* nothing against this graph, which is the honest answer to a second run.
|
|
46
|
+
*/
|
|
47
|
+
export declare function contentOperation(steps: readonly MigrationStep[], live: GraphSnapshot, options?: {
|
|
48
|
+
readonly author?: Principal;
|
|
49
|
+
readonly intent?: string;
|
|
50
|
+
readonly id?: string;
|
|
51
|
+
readonly batch?: string;
|
|
52
|
+
readonly now?: () => string;
|
|
53
|
+
}): Operation | null;
|
|
54
|
+
/**
|
|
55
|
+
* Lands content steps on an open store. Through `receive`, so the op keeps
|
|
56
|
+
* its author and intent, the subscribers — persistence among them — hear
|
|
57
|
+
* it exactly as they hear a person's change, and `store.undo(op.batch)` is
|
|
58
|
+
* the way back. Returns what landed, or null when there was nothing to do.
|
|
59
|
+
*/
|
|
60
|
+
export declare function applySteps<S extends AnySchema>(store: Store<S>, steps: readonly MigrationStep[], options?: Parameters<typeof contentOperation>[2]): Operation | null;
|
|
61
|
+
//# sourceMappingURL=sync-seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-seed.d.ts","sourceRoot":"","sources":["../src/sync-seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,eAAoB,GAAG,aAAa,EAAE,CAsClH;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAoD,CAAC;AAEpF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACxB,GACL,SAAS,GAAG,IAAI,CAmBlB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,EAC5C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,OAAO,GAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAM,GACnD,SAAS,GAAG,IAAI,CAKlB"}
|