mdmaid-desk 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 +21 -0
- package/README.md +215 -0
- package/dist/api-client.d.ts +20 -0
- package/dist/api-client.js +264 -0
- package/dist/api-client.js.map +1 -0
- package/dist/api-types.d.ts +51 -0
- package/dist/api-types.js +2 -0
- package/dist/api-types.js.map +1 -0
- package/dist/auth-state.d.ts +2 -0
- package/dist/auth-state.js +113 -0
- package/dist/auth-state.js.map +1 -0
- package/dist/catalog.d.ts +46 -0
- package/dist/catalog.js +659 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.js +370 -0
- package/dist/cli.js.map +1 -0
- package/dist/daemon-state.d.ts +17 -0
- package/dist/daemon-state.js +204 -0
- package/dist/daemon-state.js.map +1 -0
- package/dist/domain.d.ts +49 -0
- package/dist/domain.js +44 -0
- package/dist/domain.js.map +1 -0
- package/dist/fs-durability.d.ts +2 -0
- package/dist/fs-durability.js +35 -0
- package/dist/fs-durability.js.map +1 -0
- package/dist/package-info.d.ts +1 -0
- package/dist/package-info.js +17 -0
- package/dist/package-info.js.map +1 -0
- package/dist/server.d.ts +18 -0
- package/dist/server.js +702 -0
- package/dist/server.js.map +1 -0
- package/dist/sqlite-storage.d.ts +17 -0
- package/dist/sqlite-storage.js +342 -0
- package/dist/sqlite-storage.js.map +1 -0
- package/dist/storage.d.ts +12 -0
- package/dist/storage.js +2 -0
- package/dist/storage.js.map +1 -0
- package/dist/terminal-text.d.ts +9 -0
- package/dist/terminal-text.js +156 -0
- package/dist/terminal-text.js.map +1 -0
- package/dist/tui.d.ts +63 -0
- package/dist/tui.js +912 -0
- package/dist/tui.js.map +1 -0
- package/dist/web-client.d.ts +21 -0
- package/dist/web-client.js +337 -0
- package/dist/web-client.js.map +1 -0
- package/dist/web-styles.d.ts +1 -0
- package/dist/web-styles.js +249 -0
- package/dist/web-styles.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,YAAY,GAIb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,YAAY,MAAM,eAAe,CAAC;AAQzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AACnD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAC3E,MAAM,SAAS,GAAG,OAAO,CACvB,WAAW,EACX,0CAA0C,CAC3C,CAAC;AACF,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,0BAA0B,CAAC,CAAC;AA8BtE,MAAM,SAAU,SAAQ,KAAK;IAEhB;IACA;IAFX,YACW,MAAc,EACd,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAJN,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;IAIvB,CAAC;CACF;AAED,MAAM,QAAQ;IACH,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,SAAS,CAAC,OAAwB,EAAE,QAAwB;QAC1D,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,kCAAkC,CAAC,CAAC;QACvE,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAY;QAChC,MAAM,OAAO,GAAG,UAAU,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK;QACH,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA0B;IAE1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/B,MAAM,YAAY,GAChB,OAAO,CAAC,SAAS,KAAK,SAAS;QAC7B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,kBAAkB,GAAG,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;IACzE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAChD,KAAK,aAAa,CAChB,OAAO,EACP,QAAQ,EACR,OAAO,CAAC,OAAO,EACf,KAAK,EACL,MAAM,EACN,YAAY,EACZ,kBAAkB,CACnB,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACzB,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,MAAM,UAAU,GACd,KAAK,YAAY,SAAS;gBACxB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;YACpE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG;QACxB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACpB,MAAM,GAAG,GAAG,UAAU,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,GAAG;QACH,MAAM,EAAE,GAAG,YAAY,IAAI,GAAG,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE;QACpE,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAwB,EACxB,QAAwB,EACxB,OAAgB,EAChB,KAAa,EACb,MAAgB,EAChB,YAAgC,EAChC,kBAA2B;IAE3B,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACnD,MAAM,OAAO,GACX,YAAY,IAAI,UAAU,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;IAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;IAEjD,IACE,OAAO,CAAC,MAAM,KAAK,KAAK;QACxB,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EACjC,CAAC;QACD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;SACrE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IACE,OAAO,CAAC,MAAM,KAAK,KAAK;QACxB,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG;YACnB,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC5C,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAC7B,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,yBAAyB,CAAC,CAAC;QACtE,CAAC;QACD,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,QAAQ,CAAC,SAAS,CAChB,YAAY,EACZ,GAAG,cAAc,IAAI,kBAAkB,CAAC,KAAK,CAAC,cAAc,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,yCAAyC,CAC1I,CAAC;QACF,QAAQ,CAAC,GAAG,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;IACD,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAExC,IACE,OAAO,CAAC,MAAM,KAAK,KAAK;QACxB,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG;YACnB,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC5C,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EACtD,CAAC;QACD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpE,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBACjD,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,aAAa,EAAE,SAAS,CAAC,MAAM,CAC7B,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAClD,CAAC,MAAM;gBACR,KAAK,EAAE,MAAM,SAAS,CAAC,EAAE,EAAE;aAC5B,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;SACzD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,mBAAmB,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CACjB,GAAG,EACH,kBAAkB,EAClB,+BAA+B,CAChC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACtD,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,qBAAqB,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACnE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CACjB,GAAG,EACH,kBAAkB,EAClB,+BAA+B,CAChC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CACtC,4CAA4C,CAC7C,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,aAAa,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CACpC,oDAAoD,CACrD,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,oBAAoB,CACnC,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CACnD,CAAC;YACF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACtB,IAAI,EAAE;oBACJ,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;oBAClC,MAAM;oBACN,OAAO,EAAE,QAAQ;iBAClB;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,kBAAkB,CAChC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAC/B,SAAS,EACT,IAAI,CACL,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,OAAO,EAAE;YAClD,OAAO,EAAE,mBAAmB;YAC5B,KAAK;YACL,OAAO;YACP,KAAK;SACN,CAAC,CAAC;QACH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,IAAI,EAAE;gBACJ,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;gBAClC,MAAM;gBACN,OAAO,EAAE,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBACrE,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC5E;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CACpC,kGAAkG,CACnG,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,EAAE,CAAC;QAC7C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,OAAO,GAA4C;YACvD,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;SAC/C,CAAC;QACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC;YACnC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;gBACxB,MAAM;gBACN,UAAU,EAAE,QAAQ,CAAC,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAClC,kDAAkD,CACnD,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IACE,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,EAClD,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,CAC5C,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAClB,IAAI,CAAC,IAAI,CACV,CAAC;YACF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;gBACxB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,QAAQ,CAAC,EAAE;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,IACE,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3C,CAAC,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtE,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,QAAQ,KAAK,EAAE;QACnB,GAAG,CAAC,QAAQ,KAAK,GAAG;QACpB,GAAG,CAAC,MAAM,KAAK,EAAE;QACjB,GAAG,CAAC,IAAI,KAAK,EAAE,EACf,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CACnB,OAAwB,EACxB,aAAqB;IAErB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IACpD,IACE,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC;QACpC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,EAC/D,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,OAAwB,EACxB,IAAgB,EAChB,OAAe;IAEf,IACE,IAAI,CAAC,MAAM,KAAK,QAAQ;QACxB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAClC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,kBAAkB,EAAE,+BAA+B,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,SAAiB,EAAE,QAAgB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAuB;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,WAAW;QACX,MAAM;QACN,KAAK;QACL,QAAQ;QACR,MAAM;QACN,WAAW;QACX,UAAU;QACV,SAAS;KACV,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAuB,EAAE;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IACtE,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,GAAW,EAAsB,EAAE,CAChD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAC/B,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS;YAC/B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAA8B,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAA4B,EAAE,CAAC;QACvD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,WAAW,CAAiC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;KAC1D,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB;IACtC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,KAAK,EAAE,CAAC;QAChE,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,mCAAmC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAoB,EACpB,IAAY,EACZ,QAAiB;IAEjB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,SAAS,CACjB,GAAG,EACH,uBAAuB,EACvB,GAAG,IAAI,wBAAwB,CAChC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAgB,EAChB,EAAU;IAEV,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,cAAc,CAAC,QAAkB;IACxC,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC3E,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,YAAY,CAAC,OAAO,EAAE;QAC3B,WAAW,EAAE;YACX,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW;YACpC,KAAK;YACL,KAAK;SACN;QACD,iBAAiB,EAAE;YACjB,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC;YACrD,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,GAAG,EAAE,CAAC,OAAO,CAAC;YACd,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC/C,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;SAC/B;QACD,cAAc,EAAE;YACd,IAAI,EAAE,CAAC,wBAAwB,CAAC;YAChC,GAAG,EAAE,CAAC,SAAS,CAAC;YAChB,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;SAC5B;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC3C,mBAAmB,EAAE;YACnB,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;SAC/B;QACD,qBAAqB,EAAE,KAAK;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAwB;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,iCAAiC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,aAAa;QACb,MAAM;QACN,OAAO;QACP,MAAM;QACN,WAAW;KACZ,CAAC;IACF,OAAO,CACL,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC/D,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;QACvD,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;QAChE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACpE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;YACvB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAClB,KAA8B,EAC9B,OAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAwB,EACxB,kBAA2B;IAE3B,QAAQ,CAAC,SAAS,CAChB,yBAAyB,EACzB,gMAAgM,CACjM,CAAC;IACF,QAAQ,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,kBAAkB,EAAE,CAAC;QACvB,QAAQ,CAAC,SAAS,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,QAAwB,EACxB,MAAc,EACd,IAA2B;IAE3B,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IACtE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,QAAQ,CAAC,QAAwB,EAAE,MAAc,EAAE,IAAY;IACtE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;IAC/D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,QAAwB,EACxB,QAAgB;IAEhB,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QACnC,SAAS,CAAC,QAAQ,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,SAAS,CACP,QAAQ,EACR,gCAAgC,EAChC,MAAM,QAAQ,CAAC,eAAe,CAAC,CAChC,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;QAC1C,SAAS,CACP,QAAQ,EACR,gCAAgC,EAChC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAC7B,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,8BAA8B,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAChB,QAAwB,EACxB,WAAmB,EACnB,IAAqB;IAErB,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,OAAO;;;;;;;;;;;;4BAYmB,UAAU,wBAAwB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiEjE,CAAC;AACT,CAAC;AAED,SAAS,MAAM,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,CAAC,KAAY,EAAQ,EAAE;YACrC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,GAAS,EAAE;YAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,cAAc,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type DocumentFilters, type StoredDocument, type Workspace } from "./domain.js";
|
|
2
|
+
import type { CatalogStorage } from "./storage.js";
|
|
3
|
+
export declare const SQLITE_SCHEMA_VERSION = 1;
|
|
4
|
+
export declare class SqliteCatalogStorage implements CatalogStorage {
|
|
5
|
+
#private;
|
|
6
|
+
private constructor();
|
|
7
|
+
static open(databasePath: string): SqliteCatalogStorage;
|
|
8
|
+
close(): void;
|
|
9
|
+
isEmpty(): boolean;
|
|
10
|
+
transaction<T>(operation: () => T): T;
|
|
11
|
+
listWorkspaces(): Workspace[];
|
|
12
|
+
getWorkspace(id: string): Workspace | undefined;
|
|
13
|
+
saveWorkspace(workspace: Workspace): void;
|
|
14
|
+
listDocuments(filters?: DocumentFilters): StoredDocument[];
|
|
15
|
+
getDocument(id: string): StoredDocument | undefined;
|
|
16
|
+
saveDocument(document: StoredDocument): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { chmodSync, lstatSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { dirname, extname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
3
|
+
import Database from "better-sqlite3";
|
|
4
|
+
import { isAttention, isDocumentKind, } from "./domain.js";
|
|
5
|
+
export const SQLITE_SCHEMA_VERSION = 1;
|
|
6
|
+
const INITIAL_SCHEMA = `
|
|
7
|
+
CREATE TABLE workspaces (
|
|
8
|
+
id TEXT PRIMARY KEY,
|
|
9
|
+
name TEXT NOT NULL,
|
|
10
|
+
root TEXT NOT NULL
|
|
11
|
+
) STRICT;
|
|
12
|
+
|
|
13
|
+
CREATE TABLE workspace_artifact_roots (
|
|
14
|
+
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
15
|
+
path TEXT NOT NULL,
|
|
16
|
+
PRIMARY KEY (workspace_id, path)
|
|
17
|
+
) STRICT;
|
|
18
|
+
|
|
19
|
+
CREATE TABLE documents (
|
|
20
|
+
id TEXT PRIMARY KEY,
|
|
21
|
+
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE RESTRICT,
|
|
22
|
+
task_id TEXT,
|
|
23
|
+
producer TEXT,
|
|
24
|
+
kind TEXT NOT NULL,
|
|
25
|
+
title TEXT NOT NULL,
|
|
26
|
+
path TEXT NOT NULL,
|
|
27
|
+
attention TEXT NOT NULL,
|
|
28
|
+
content_hash TEXT NOT NULL,
|
|
29
|
+
revision INTEGER NOT NULL CHECK (revision > 0),
|
|
30
|
+
opened_revision INTEGER CHECK (opened_revision IS NULL OR opened_revision > 0),
|
|
31
|
+
completed_revision INTEGER CHECK (completed_revision IS NULL OR completed_revision > 0),
|
|
32
|
+
archived_at TEXT,
|
|
33
|
+
missing_at TEXT,
|
|
34
|
+
created_at TEXT NOT NULL,
|
|
35
|
+
updated_at TEXT NOT NULL,
|
|
36
|
+
UNIQUE (workspace_id, path)
|
|
37
|
+
) STRICT;
|
|
38
|
+
|
|
39
|
+
CREATE TABLE tags (
|
|
40
|
+
name TEXT PRIMARY KEY
|
|
41
|
+
) STRICT;
|
|
42
|
+
|
|
43
|
+
CREATE TABLE document_tags (
|
|
44
|
+
document_id TEXT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
|
|
45
|
+
tag_name TEXT NOT NULL REFERENCES tags(name) ON DELETE CASCADE,
|
|
46
|
+
PRIMARY KEY (document_id, tag_name)
|
|
47
|
+
) STRICT;
|
|
48
|
+
|
|
49
|
+
CREATE INDEX documents_workspace_idx ON documents(workspace_id);
|
|
50
|
+
CREATE INDEX documents_task_idx ON documents(task_id);
|
|
51
|
+
CREATE INDEX documents_kind_idx ON documents(kind);
|
|
52
|
+
CREATE INDEX documents_attention_idx ON documents(attention);
|
|
53
|
+
CREATE INDEX documents_updated_idx ON documents(updated_at DESC);
|
|
54
|
+
CREATE INDEX document_tags_tag_idx ON document_tags(tag_name);
|
|
55
|
+
`;
|
|
56
|
+
export class SqliteCatalogStorage {
|
|
57
|
+
#database;
|
|
58
|
+
constructor(database) {
|
|
59
|
+
this.#database = database;
|
|
60
|
+
}
|
|
61
|
+
static open(databasePath) {
|
|
62
|
+
const canonicalPath = resolve(databasePath);
|
|
63
|
+
mkdirSync(dirname(canonicalPath), { recursive: true, mode: 0o700 });
|
|
64
|
+
try {
|
|
65
|
+
const info = lstatSync(canonicalPath);
|
|
66
|
+
if (info.isSymbolicLink() || !info.isFile()) {
|
|
67
|
+
throw new Error("SQLite catalog must be a regular, non-symlink file");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (!isNodeError(error) || error.code !== "ENOENT") {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const database = new Database(canonicalPath);
|
|
76
|
+
try {
|
|
77
|
+
chmodSync(canonicalPath, 0o600);
|
|
78
|
+
database.pragma("foreign_keys = ON");
|
|
79
|
+
database.pragma("journal_mode = DELETE");
|
|
80
|
+
database.pragma("busy_timeout = 5000");
|
|
81
|
+
migrate(database);
|
|
82
|
+
return new SqliteCatalogStorage(database);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
database.close();
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
close() {
|
|
90
|
+
if (this.#database.open) {
|
|
91
|
+
this.#database.close();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
isEmpty() {
|
|
95
|
+
const row = this.#database
|
|
96
|
+
.prepare("SELECT (SELECT count(*) FROM workspaces) + (SELECT count(*) FROM documents) AS count")
|
|
97
|
+
.get();
|
|
98
|
+
return row?.count === 0;
|
|
99
|
+
}
|
|
100
|
+
transaction(operation) {
|
|
101
|
+
return this.#database.transaction(operation)();
|
|
102
|
+
}
|
|
103
|
+
listWorkspaces() {
|
|
104
|
+
const rows = this.#database
|
|
105
|
+
.prepare("SELECT id, name, root FROM workspaces ORDER BY id")
|
|
106
|
+
.all();
|
|
107
|
+
const roots = this.#database.prepare("SELECT path FROM workspace_artifact_roots WHERE workspace_id = ? ORDER BY path");
|
|
108
|
+
return rows.map((row) => validateWorkspaceRow(row, roots.all(row.id).map(({ path }) => path)));
|
|
109
|
+
}
|
|
110
|
+
getWorkspace(id) {
|
|
111
|
+
const row = this.#database
|
|
112
|
+
.prepare("SELECT id, name, root FROM workspaces WHERE id = ?")
|
|
113
|
+
.get(id);
|
|
114
|
+
if (!row) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
const artifactRoots = this.#database
|
|
118
|
+
.prepare("SELECT path FROM workspace_artifact_roots WHERE workspace_id = ? ORDER BY path")
|
|
119
|
+
.all(id)
|
|
120
|
+
.map(({ path }) => path);
|
|
121
|
+
return validateWorkspaceRow(row, artifactRoots);
|
|
122
|
+
}
|
|
123
|
+
saveWorkspace(workspace) {
|
|
124
|
+
this.transaction(() => {
|
|
125
|
+
this.#database
|
|
126
|
+
.prepare(`INSERT INTO workspaces (id, name, root)
|
|
127
|
+
VALUES (@id, @name, @root)
|
|
128
|
+
ON CONFLICT(id) DO UPDATE SET name = excluded.name, root = excluded.root`)
|
|
129
|
+
.run(workspace);
|
|
130
|
+
this.#database
|
|
131
|
+
.prepare("DELETE FROM workspace_artifact_roots WHERE workspace_id = ?")
|
|
132
|
+
.run(workspace.id);
|
|
133
|
+
const insertRoot = this.#database.prepare("INSERT INTO workspace_artifact_roots (workspace_id, path) VALUES (?, ?)");
|
|
134
|
+
for (const artifactRoot of workspace.artifactRoots) {
|
|
135
|
+
insertRoot.run(workspace.id, artifactRoot);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
listDocuments(filters = {}) {
|
|
140
|
+
const clauses = [];
|
|
141
|
+
const parameters = [];
|
|
142
|
+
if (filters.workspaceId !== undefined) {
|
|
143
|
+
clauses.push("d.workspace_id = ?");
|
|
144
|
+
parameters.push(filters.workspaceId);
|
|
145
|
+
}
|
|
146
|
+
if (filters.taskId !== undefined) {
|
|
147
|
+
clauses.push("d.task_id = ?");
|
|
148
|
+
parameters.push(filters.taskId);
|
|
149
|
+
}
|
|
150
|
+
if (filters.kind !== undefined) {
|
|
151
|
+
clauses.push("d.kind = ?");
|
|
152
|
+
parameters.push(filters.kind);
|
|
153
|
+
}
|
|
154
|
+
if (filters.attention !== undefined) {
|
|
155
|
+
clauses.push("d.attention = ?");
|
|
156
|
+
parameters.push(filters.attention);
|
|
157
|
+
}
|
|
158
|
+
if (filters.tag !== undefined) {
|
|
159
|
+
clauses.push("EXISTS (SELECT 1 FROM document_tags dt WHERE dt.document_id = d.id AND dt.tag_name = ?)");
|
|
160
|
+
parameters.push(filters.tag);
|
|
161
|
+
}
|
|
162
|
+
if (filters.status === "done") {
|
|
163
|
+
clauses.push("d.completed_revision = d.revision");
|
|
164
|
+
}
|
|
165
|
+
else if (filters.status === "reading") {
|
|
166
|
+
clauses.push("d.completed_revision IS NOT d.revision AND d.opened_revision = d.revision");
|
|
167
|
+
}
|
|
168
|
+
else if (filters.status === "unread") {
|
|
169
|
+
clauses.push("d.completed_revision IS NOT d.revision AND d.opened_revision IS NOT d.revision");
|
|
170
|
+
}
|
|
171
|
+
clauses.push(filters.archived === true ? "d.archived_at IS NOT NULL" : "d.archived_at IS NULL");
|
|
172
|
+
if (filters.missing !== undefined) {
|
|
173
|
+
clauses.push(filters.missing ? "d.missing_at IS NOT NULL" : "d.missing_at IS NULL");
|
|
174
|
+
}
|
|
175
|
+
const where = clauses.length > 0 ? ` WHERE ${clauses.join(" AND ")}` : "";
|
|
176
|
+
const rows = this.#database
|
|
177
|
+
.prepare(`SELECT d.* FROM documents d${where} ORDER BY d.updated_at DESC, d.id`)
|
|
178
|
+
.all(...parameters);
|
|
179
|
+
return rows.map((row) => this.#mapDocument(row));
|
|
180
|
+
}
|
|
181
|
+
getDocument(id) {
|
|
182
|
+
const row = this.#database
|
|
183
|
+
.prepare("SELECT * FROM documents WHERE id = ?")
|
|
184
|
+
.get(id);
|
|
185
|
+
return row ? this.#mapDocument(row) : undefined;
|
|
186
|
+
}
|
|
187
|
+
saveDocument(document) {
|
|
188
|
+
this.transaction(() => {
|
|
189
|
+
this.#database
|
|
190
|
+
.prepare(`INSERT INTO documents (
|
|
191
|
+
id, workspace_id, task_id, producer, kind, title, path, attention,
|
|
192
|
+
content_hash, revision, opened_revision, completed_revision,
|
|
193
|
+
archived_at, missing_at, created_at, updated_at
|
|
194
|
+
) VALUES (
|
|
195
|
+
@id, @workspaceId, @taskId, @producer, @kind, @title, @path, @attention,
|
|
196
|
+
@contentHash, @revision, @openedRevision, @completedRevision,
|
|
197
|
+
@archivedAt, @missingAt, @createdAt, @updatedAt
|
|
198
|
+
)
|
|
199
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
200
|
+
workspace_id = excluded.workspace_id,
|
|
201
|
+
task_id = excluded.task_id,
|
|
202
|
+
producer = excluded.producer,
|
|
203
|
+
kind = excluded.kind,
|
|
204
|
+
title = excluded.title,
|
|
205
|
+
path = excluded.path,
|
|
206
|
+
attention = excluded.attention,
|
|
207
|
+
content_hash = excluded.content_hash,
|
|
208
|
+
revision = excluded.revision,
|
|
209
|
+
opened_revision = excluded.opened_revision,
|
|
210
|
+
completed_revision = excluded.completed_revision,
|
|
211
|
+
archived_at = excluded.archived_at,
|
|
212
|
+
missing_at = excluded.missing_at,
|
|
213
|
+
updated_at = excluded.updated_at`)
|
|
214
|
+
.run({
|
|
215
|
+
id: document.id,
|
|
216
|
+
workspaceId: document.workspaceId,
|
|
217
|
+
taskId: document.taskId ?? null,
|
|
218
|
+
producer: document.producer ?? null,
|
|
219
|
+
kind: document.kind,
|
|
220
|
+
title: document.title,
|
|
221
|
+
path: document.path,
|
|
222
|
+
attention: document.attention,
|
|
223
|
+
contentHash: document.contentHash,
|
|
224
|
+
revision: document.revision,
|
|
225
|
+
openedRevision: document.openedRevision,
|
|
226
|
+
completedRevision: document.completedRevision,
|
|
227
|
+
archivedAt: document.archivedAt,
|
|
228
|
+
missingAt: document.missingAt,
|
|
229
|
+
createdAt: document.createdAt,
|
|
230
|
+
updatedAt: document.updatedAt,
|
|
231
|
+
});
|
|
232
|
+
this.#database
|
|
233
|
+
.prepare("DELETE FROM document_tags WHERE document_id = ?")
|
|
234
|
+
.run(document.id);
|
|
235
|
+
const saveTag = this.#database.prepare("INSERT INTO tags (name) VALUES (?) ON CONFLICT(name) DO NOTHING");
|
|
236
|
+
const assignTag = this.#database.prepare("INSERT INTO document_tags (document_id, tag_name) VALUES (?, ?)");
|
|
237
|
+
for (const tag of document.tags) {
|
|
238
|
+
saveTag.run(tag);
|
|
239
|
+
assignTag.run(document.id, tag);
|
|
240
|
+
}
|
|
241
|
+
this.#database.exec("DELETE FROM tags WHERE NOT EXISTS (SELECT 1 FROM document_tags WHERE document_tags.tag_name = tags.name)");
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
#mapDocument(row) {
|
|
245
|
+
const tags = this.#database
|
|
246
|
+
.prepare(`SELECT t.name
|
|
247
|
+
FROM tags t
|
|
248
|
+
JOIN document_tags dt ON dt.tag_name = t.name
|
|
249
|
+
WHERE dt.document_id = ?
|
|
250
|
+
ORDER BY t.name`)
|
|
251
|
+
.all(row.id)
|
|
252
|
+
.map(({ name }) => name);
|
|
253
|
+
validateDocumentRow(row, tags);
|
|
254
|
+
return {
|
|
255
|
+
id: row.id,
|
|
256
|
+
workspaceId: row.workspace_id,
|
|
257
|
+
...(row.task_id === null ? {} : { taskId: row.task_id }),
|
|
258
|
+
...(row.producer === null ? {} : { producer: row.producer }),
|
|
259
|
+
kind: row.kind,
|
|
260
|
+
title: row.title,
|
|
261
|
+
path: row.path,
|
|
262
|
+
attention: row.attention,
|
|
263
|
+
tags,
|
|
264
|
+
contentHash: row.content_hash,
|
|
265
|
+
revision: row.revision,
|
|
266
|
+
openedRevision: row.opened_revision,
|
|
267
|
+
completedRevision: row.completed_revision,
|
|
268
|
+
archivedAt: row.archived_at,
|
|
269
|
+
missingAt: row.missing_at,
|
|
270
|
+
createdAt: row.created_at,
|
|
271
|
+
updatedAt: row.updated_at,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function migrate(database) {
|
|
276
|
+
const rawVersion = database.pragma("user_version", { simple: true });
|
|
277
|
+
if (typeof rawVersion !== "number" || !Number.isSafeInteger(rawVersion)) {
|
|
278
|
+
throw new Error("could not determine SQLite catalog schema version");
|
|
279
|
+
}
|
|
280
|
+
if (rawVersion > SQLITE_SCHEMA_VERSION) {
|
|
281
|
+
throw new Error(`unsupported SQLite catalog schema ${rawVersion}`);
|
|
282
|
+
}
|
|
283
|
+
if (rawVersion < 1) {
|
|
284
|
+
database.transaction(() => {
|
|
285
|
+
database.exec(INITIAL_SCHEMA);
|
|
286
|
+
database.pragma("user_version = 1");
|
|
287
|
+
})();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function validateWorkspaceRow(row, artifactRoots) {
|
|
291
|
+
if (!/^[a-z0-9][a-z0-9-]{0,63}$/.test(row.id) ||
|
|
292
|
+
row.name.trim() === "" ||
|
|
293
|
+
!isAbsolute(row.root) ||
|
|
294
|
+
artifactRoots.length === 0 ||
|
|
295
|
+
artifactRoots.some((artifactRoot) => !isAbsolute(artifactRoot) || !isWithin(row.root, artifactRoot))) {
|
|
296
|
+
throw new Error(`invalid workspace row ${row.id}`);
|
|
297
|
+
}
|
|
298
|
+
return { ...row, artifactRoots };
|
|
299
|
+
}
|
|
300
|
+
function validateDocumentRow(row, tags) {
|
|
301
|
+
if (!/^doc-[a-f0-9]{20}$/.test(row.id) ||
|
|
302
|
+
!/^[a-z0-9][a-z0-9-]{0,63}$/.test(row.workspace_id) ||
|
|
303
|
+
(row.task_id !== null && row.task_id.trim() === "") ||
|
|
304
|
+
(row.producer !== null && row.producer.trim() === "") ||
|
|
305
|
+
!isDocumentKind(row.kind) ||
|
|
306
|
+
row.title.trim() === "" ||
|
|
307
|
+
!isAbsolute(row.path) ||
|
|
308
|
+
extname(row.path).toLowerCase() !== ".md" ||
|
|
309
|
+
!isAttention(row.attention) ||
|
|
310
|
+
!/^[a-f0-9]{64}$/.test(row.content_hash) ||
|
|
311
|
+
!isPositiveInteger(row.revision) ||
|
|
312
|
+
!isProgressRevision(row.opened_revision, row.revision) ||
|
|
313
|
+
!isProgressRevision(row.completed_revision, row.revision) ||
|
|
314
|
+
!isNullableDate(row.archived_at) ||
|
|
315
|
+
!isNullableDate(row.missing_at) ||
|
|
316
|
+
!isDate(row.created_at) ||
|
|
317
|
+
!isDate(row.updated_at) ||
|
|
318
|
+
tags.some((tag) => !/^[a-z0-9][a-z0-9._/-]{0,63}$/.test(tag))) {
|
|
319
|
+
throw new Error(`invalid document row ${row.id}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function isPositiveInteger(value) {
|
|
323
|
+
return Number.isSafeInteger(value) && value > 0;
|
|
324
|
+
}
|
|
325
|
+
function isProgressRevision(value, revision) {
|
|
326
|
+
return value === null || (isPositiveInteger(value) && value <= revision);
|
|
327
|
+
}
|
|
328
|
+
function isNullableDate(value) {
|
|
329
|
+
return value === null || isDate(value);
|
|
330
|
+
}
|
|
331
|
+
function isDate(value) {
|
|
332
|
+
return !Number.isNaN(Date.parse(value));
|
|
333
|
+
}
|
|
334
|
+
function isWithin(root, candidate) {
|
|
335
|
+
const rel = relative(root, candidate);
|
|
336
|
+
return (rel === "" ||
|
|
337
|
+
(!rel.startsWith(`..${sep}`) && rel !== ".." && !isAbsolute(rel)));
|
|
338
|
+
}
|
|
339
|
+
function isNodeError(error) {
|
|
340
|
+
return error instanceof Error && "code" in error;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=sqlite-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-storage.js","sourceRoot":"","sources":["../src/sqlite-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DocumentFilters, StoredDocument, Workspace } from "./domain.js";
|
|
2
|
+
export interface CatalogStorage {
|
|
3
|
+
close(): void;
|
|
4
|
+
isEmpty(): boolean;
|
|
5
|
+
transaction<T>(operation: () => T): T;
|
|
6
|
+
listWorkspaces(): Workspace[];
|
|
7
|
+
getWorkspace(id: string): Workspace | undefined;
|
|
8
|
+
saveWorkspace(workspace: Workspace): void;
|
|
9
|
+
listDocuments(filters?: DocumentFilters): StoredDocument[];
|
|
10
|
+
getDocument(id: string): StoredDocument | undefined;
|
|
11
|
+
saveDocument(document: StoredDocument): void;
|
|
12
|
+
}
|
package/dist/storage.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface TerminalSanitizeOptions {
|
|
2
|
+
preserveSgr?: boolean;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Removes terminal operations from boundary text. Trusted renderer-owned SGR
|
|
6
|
+
* styling can be retained, while cursor movement, OSC, clipboard, hyperlinks,
|
|
7
|
+
* C0/C1 controls, and bidi overrides are always discarded.
|
|
8
|
+
*/
|
|
9
|
+
export declare function sanitizeTerminalText(value: string, options?: TerminalSanitizeOptions): string;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const ESC = 0x1b;
|
|
2
|
+
const BEL = 0x07;
|
|
3
|
+
const CSI = 0x9b;
|
|
4
|
+
const ST = 0x9c;
|
|
5
|
+
const OSC = 0x9d;
|
|
6
|
+
const STRING_CONTROLS = new Set([0x90, 0x98, 0x9e, 0x9f]);
|
|
7
|
+
/**
|
|
8
|
+
* Removes terminal operations from boundary text. Trusted renderer-owned SGR
|
|
9
|
+
* styling can be retained, while cursor movement, OSC, clipboard, hyperlinks,
|
|
10
|
+
* C0/C1 controls, and bidi overrides are always discarded.
|
|
11
|
+
*/
|
|
12
|
+
export function sanitizeTerminalText(value, options = {}) {
|
|
13
|
+
const input = value.replace(/\r\n?/g, "\n");
|
|
14
|
+
let output = "";
|
|
15
|
+
let index = 0;
|
|
16
|
+
while (index < input.length) {
|
|
17
|
+
const code = input.charCodeAt(index);
|
|
18
|
+
if (code === ESC) {
|
|
19
|
+
const scanned = scanEscape(input, index + 1);
|
|
20
|
+
if (options.preserveSgr && scanned.sgr !== undefined) {
|
|
21
|
+
output += scanned.sgr;
|
|
22
|
+
}
|
|
23
|
+
index = scanned.end;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (code === CSI) {
|
|
27
|
+
index = scanCsi(input, index + 1).end;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (code === OSC) {
|
|
31
|
+
index = skipString(input, index + 1, true);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (STRING_CONTROLS.has(code)) {
|
|
35
|
+
index = skipString(input, index + 1, false);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (code === 0x09) {
|
|
39
|
+
output += " ";
|
|
40
|
+
index += 1;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (code === 0x0a) {
|
|
44
|
+
output += "\n";
|
|
45
|
+
index += 1;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (code < 0x20 ||
|
|
49
|
+
(code >= 0x7f && code <= 0x9f) ||
|
|
50
|
+
(code >= 0x202a && code <= 0x202e) ||
|
|
51
|
+
(code >= 0x2066 && code <= 0x2069)) {
|
|
52
|
+
index += 1;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
output += input[index];
|
|
56
|
+
index += 1;
|
|
57
|
+
}
|
|
58
|
+
return output;
|
|
59
|
+
}
|
|
60
|
+
function scanEscape(value, index) {
|
|
61
|
+
if (index >= value.length) {
|
|
62
|
+
return { end: index };
|
|
63
|
+
}
|
|
64
|
+
const introducer = value.charCodeAt(index);
|
|
65
|
+
if (introducer === 0x5b) {
|
|
66
|
+
return scanCsi(value, index + 1);
|
|
67
|
+
}
|
|
68
|
+
if (introducer === 0x5d) {
|
|
69
|
+
return { end: skipString(value, index + 1, true) };
|
|
70
|
+
}
|
|
71
|
+
if ([0x50, 0x58, 0x5e, 0x5f].includes(introducer)) {
|
|
72
|
+
return { end: skipString(value, index + 1, false) };
|
|
73
|
+
}
|
|
74
|
+
let cursor = index;
|
|
75
|
+
while (cursor < value.length) {
|
|
76
|
+
const code = value.charCodeAt(cursor);
|
|
77
|
+
cursor += 1;
|
|
78
|
+
if (code >= 0x30 && code <= 0x7e) {
|
|
79
|
+
return { end: cursor };
|
|
80
|
+
}
|
|
81
|
+
if (code < 0x20 || code > 0x2f) {
|
|
82
|
+
return { end: cursor };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return { end: cursor };
|
|
86
|
+
}
|
|
87
|
+
function scanCsi(value, index) {
|
|
88
|
+
let cursor = index;
|
|
89
|
+
while (cursor < value.length) {
|
|
90
|
+
const code = value.charCodeAt(cursor);
|
|
91
|
+
cursor += 1;
|
|
92
|
+
if (code < 0x40 || code > 0x7e) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const parameters = value.slice(index, cursor - 1);
|
|
96
|
+
if (code === 0x6d && isSafeSgr(parameters)) {
|
|
97
|
+
return { end: cursor, sgr: `\u001b[${parameters}m` };
|
|
98
|
+
}
|
|
99
|
+
return { end: cursor };
|
|
100
|
+
}
|
|
101
|
+
return { end: cursor };
|
|
102
|
+
}
|
|
103
|
+
function isSafeSgr(parameters) {
|
|
104
|
+
if (parameters === "") {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (!/^\d+(?:;\d+)*$/.test(parameters)) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const values = parameters.split(";").map(Number);
|
|
111
|
+
for (let index = 0; index < values.length; index += 1) {
|
|
112
|
+
const value = values[index] ?? -1;
|
|
113
|
+
if (value === 38) {
|
|
114
|
+
const mode = values[index + 1];
|
|
115
|
+
if (mode === 5 && isByte(values[index + 2])) {
|
|
116
|
+
index += 2;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (mode === 2 &&
|
|
120
|
+
isByte(values[index + 2]) &&
|
|
121
|
+
isByte(values[index + 3]) &&
|
|
122
|
+
isByte(values[index + 4])) {
|
|
123
|
+
index += 4;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if ([0, 1, 2, 3, 4, 7, 9, 22, 23, 24, 27, 29, 39].includes(value) ||
|
|
129
|
+
(value >= 30 && value <= 37) ||
|
|
130
|
+
(value >= 90 && value <= 97)) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
function isByte(value) {
|
|
138
|
+
return value !== undefined && Number.isInteger(value) && value >= 0 && value <= 255;
|
|
139
|
+
}
|
|
140
|
+
function skipString(value, index, bellTerminates) {
|
|
141
|
+
let cursor = index;
|
|
142
|
+
while (cursor < value.length) {
|
|
143
|
+
const code = value.charCodeAt(cursor);
|
|
144
|
+
if ((bellTerminates && code === BEL) || code === ST) {
|
|
145
|
+
return cursor + 1;
|
|
146
|
+
}
|
|
147
|
+
if (code === ESC &&
|
|
148
|
+
cursor + 1 < value.length &&
|
|
149
|
+
value.charCodeAt(cursor + 1) === 0x5c) {
|
|
150
|
+
return cursor + 2;
|
|
151
|
+
}
|
|
152
|
+
cursor += 1;
|
|
153
|
+
}
|
|
154
|
+
return cursor;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=terminal-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-text.js","sourceRoot":"","sources":["../src/terminal-text.ts"],"names":[],"mappings":"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"}
|