@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.
Files changed (87) hide show
  1. package/LICENSE +96 -0
  2. package/README.md +95 -0
  3. package/dist/browser-adapter.d.ts +84 -0
  4. package/dist/browser-adapter.d.ts.map +1 -0
  5. package/dist/browser-adapter.js +111 -0
  6. package/dist/browser-adapter.js.map +1 -0
  7. package/dist/browser.d.ts +26 -0
  8. package/dist/browser.d.ts.map +1 -0
  9. package/dist/browser.js +16 -0
  10. package/dist/browser.js.map +1 -0
  11. package/dist/cli.d.ts +48 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +170 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/dev.d.ts +148 -0
  16. package/dist/dev.d.ts.map +1 -0
  17. package/dist/dev.js +286 -0
  18. package/dist/dev.js.map +1 -0
  19. package/dist/door.d.ts +22 -0
  20. package/dist/door.d.ts.map +1 -0
  21. package/dist/door.js +43 -0
  22. package/dist/door.js.map +1 -0
  23. package/dist/export.d.ts +25 -0
  24. package/dist/export.d.ts.map +1 -0
  25. package/dist/export.js +30 -0
  26. package/dist/export.js.map +1 -0
  27. package/dist/file-adapter.d.ts +28 -0
  28. package/dist/file-adapter.d.ts.map +1 -0
  29. package/dist/file-adapter.js +50 -0
  30. package/dist/file-adapter.js.map +1 -0
  31. package/dist/health.d.ts +19 -0
  32. package/dist/health.d.ts.map +1 -0
  33. package/dist/health.js +16 -0
  34. package/dist/health.js.map +1 -0
  35. package/dist/index.d.ts +29 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +15 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/migrations.d.ts +31 -0
  40. package/dist/migrations.d.ts.map +1 -0
  41. package/dist/migrations.js +59 -0
  42. package/dist/migrations.js.map +1 -0
  43. package/dist/open-store.d.ts +57 -0
  44. package/dist/open-store.d.ts.map +1 -0
  45. package/dist/open-store.js +103 -0
  46. package/dist/open-store.js.map +1 -0
  47. package/dist/photos.d.ts +89 -0
  48. package/dist/photos.d.ts.map +1 -0
  49. package/dist/photos.js +102 -0
  50. package/dist/photos.js.map +1 -0
  51. package/dist/presence.d.ts +33 -0
  52. package/dist/presence.d.ts.map +1 -0
  53. package/dist/presence.js +99 -0
  54. package/dist/presence.js.map +1 -0
  55. package/dist/remote.d.ts +73 -0
  56. package/dist/remote.d.ts.map +1 -0
  57. package/dist/remote.js +271 -0
  58. package/dist/remote.js.map +1 -0
  59. package/dist/serve.d.ts +121 -0
  60. package/dist/serve.d.ts.map +1 -0
  61. package/dist/serve.js +249 -0
  62. package/dist/serve.js.map +1 -0
  63. package/dist/snapshot.d.ts +20 -0
  64. package/dist/snapshot.d.ts.map +1 -0
  65. package/dist/snapshot.js +41 -0
  66. package/dist/snapshot.js.map +1 -0
  67. package/dist/source-edit.d.ts +52 -0
  68. package/dist/source-edit.d.ts.map +1 -0
  69. package/dist/source-edit.js +455 -0
  70. package/dist/source-edit.js.map +1 -0
  71. package/dist/steps.d.ts +98 -0
  72. package/dist/steps.d.ts.map +1 -0
  73. package/dist/steps.js +189 -0
  74. package/dist/steps.js.map +1 -0
  75. package/dist/studio-door.d.ts +36 -0
  76. package/dist/studio-door.d.ts.map +1 -0
  77. package/dist/studio-door.js +102 -0
  78. package/dist/studio-door.js.map +1 -0
  79. package/dist/sync-seed.d.ts +61 -0
  80. package/dist/sync-seed.d.ts.map +1 -0
  81. package/dist/sync-seed.js +95 -0
  82. package/dist/sync-seed.js.map +1 -0
  83. package/dist/typecheck.d.ts +15 -0
  84. package/dist/typecheck.d.ts.map +1 -0
  85. package/dist/typecheck.js +59 -0
  86. package/dist/typecheck.js.map +1 -0
  87. 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"}
@@ -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"}