@vex-chat/spire 1.10.4 → 1.11.1
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/dist/ClientManager.d.ts +1 -1
- package/dist/ClientManager.js +12 -2
- package/dist/ClientManager.js.map +1 -1
- package/dist/Database.d.ts +31 -0
- package/dist/Database.js +83 -0
- package/dist/Database.js.map +1 -1
- package/dist/NotificationService.d.ts +35 -0
- package/dist/NotificationService.js +386 -0
- package/dist/NotificationService.js.map +1 -0
- package/dist/Spire.d.ts +1 -0
- package/dist/Spire.js +61 -39
- package/dist/Spire.js.map +1 -1
- package/dist/db/schema.d.ts +16 -0
- package/dist/migrations/2026-05-10_notification-subscriptions.d.ts +8 -0
- package/dist/migrations/2026-05-10_notification-subscriptions.js +46 -0
- package/dist/migrations/2026-05-10_notification-subscriptions.js.map +1 -0
- package/dist/migrations/2026-05-15_notification-subscription-unique-key.d.ts +8 -0
- package/dist/migrations/2026-05-15_notification-subscription-unique-key.js +28 -0
- package/dist/migrations/2026-05-15_notification-subscription-unique-key.js.map +1 -0
- package/package.json +5 -5
- package/src/ClientManager.ts +20 -2
- package/src/Database.ts +145 -0
- package/src/NotificationService.ts +535 -0
- package/src/Spire.ts +83 -40
- package/src/__tests__/Database.spec.ts +124 -0
- package/src/__tests__/clientManagerReceipt.spec.ts +106 -0
- package/src/__tests__/notifyFanout.spec.ts +397 -32
- package/src/db/schema.ts +21 -1
- package/src/migrations/2026-05-10_notification-subscriptions.ts +52 -0
- package/src/migrations/2026-05-15_notification-subscription-unique-key.ts +33 -0
package/dist/Spire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spire.js","sourceRoot":"","sources":["../src/Spire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Spire.js","sourceRoot":"","sources":["../src/Spire.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAEH,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,YAAY,EACZ,yBAAyB,EACzB,WAAW,EACX,UAAU,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACH,0BAA0B,EAC1B,mBAAmB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,oCAAoC,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,2BAA2B;AAC3B,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAC/B,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,aAAa;AAExD,kBAAkB;AAClB,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,0EAA0E;AAC1E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,UAAU;CACnB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAa,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,YAAY,UAAU,CAAC;IAChE,IAAI,EAAE,YAAY;CACrB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,GAAW,EAAE;IAC/B,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CACvB,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3C;YACI,QAAQ,EAAE,MAAM;SACnB,CACJ,CAAC;QACF,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IACI,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,KAAK,IAAI;YACZ,SAAS,IAAI,GAAG;YAChB,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EACjC,CAAC;YACC,OAAO,GAAG,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAW,EAAE;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,wCAAwC,EAAE;YAC3D,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,IAAI,SAAS,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAaF;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACnC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CACf,gEAAgE,EAChE,QAAQ,CACX,CAAC;IACF,8EAA8E;IAC9E,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,4CAA4C,EAAE,YAAY,CAAC,CAAC;IAC1E,OAAO,CAAC,CAAC;AACb,CAAC;AAED,oFAAoF;AACpF,IAAI,kBAAkB,GAAmB,IAAI,CAAC;AAE9C,MAAM,OAAO,KAAM,SAAQ,YAAY;IAC3B,YAAY,GAAkB,EAAE,CAAC;IACjC,GAAG,GAAG,OAAO,EAAE,CAAC;IAChB,OAAO,GAAoB,EAAE,CAAC;IACrB,SAAS,GAAG,YAAY,EAAE,CAAC;IAC3B,aAAa,CAAuB;IAC7C,EAAE,CAAW;IACb,OAAO,GAAG,KAAK,CAAC;IAChB,gBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAC;IACI,iBAAiB,GAA0C,IAAI,CAAC;IAChE,aAAa,CAAsB;IACnC,uBAAuB,GAAG,CAAC,CAAC;IAE5B,aAAa,GAAG,CAAC,CAAC;IAElB,mBAAmB,GAAG,KAAK,CAAC;IAC5B,MAAM,GAAkB,IAAI,CAAC;IAE7B,QAAQ,CAAU;IACT,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO,GAAG,aAAa,EAAE,CAAC;IACnC,GAAG,GAAoB,IAAI,eAAe,CAAC;QAC/C,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,YAAY,EAAU,EAAE,OAAsB;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,WAAW,CAAC;QAC3D,IAAI,kBAAkB,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC;YACnC,kBAAkB,GAAG,IAAI,CAAC;QAC9B,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACX,oHAAoH,CACvH,CAAC;YACN,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,iEAAiE;QACjE,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,+DAA+D;QAC/D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAE/B,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CACxC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,KAAK,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACvC,yDAAyD;YAC7D,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAChC,GAAG,EAAE;gBACD,KAAK,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACvC,mCAAmC;gBACvC,CAAC,CAAC,CAAC;YACP,CAAC,EACD,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CACtB,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAa,EAAE,EAAE;gBACnD,6CAA6C;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAC3B,YAAoB,EACpB,OAAsB;QAEtB,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC;YACrD,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACX,yFAAyF,CAC5F,CAAC;QACN,CAAC;QACD,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC;YACD,kBAAkB,GAAG,MAAM,2BAA2B,CAClD,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CACjC,CAAC;YACF,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACP,kBAAkB,GAAG,IAAI,CAAC;QAC9B,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAC5B,EAAE,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAExD,mEAAmE;QACnE,uEAAuE;QACvE,+DAA+D;QAC/D,iEAAiE;QACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACvD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,+DAA+D;QAC/D,wDAAwD;QACxD,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC;QAErC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,KAAkB;QACxC,MAAM,KAAK,GAAgB;YACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE;YACxB,KAAK;YACL,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACjC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,iBAAiB,CAAC,GAAgB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,OAAe;QACxB,qEAAqE;QACrE,kEAAkE;QAClE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,OAAO;YACtB,UAAU,KAAK,KAAK,CAAC;QACzB,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAoB,EAAE,EAAE;gBACzC,MAAM,CAAC,GAAG,GAAiD,CAAC;gBAC5D,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAC9B,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC5B,IAAI,CAAC,uBAAuB,IAAI,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAa,EAAE,EAAE;oBACtD,8CAA8C;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,OAAO,CACH,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACzB,CAAC;QAEF,iEAAiE;QACjE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7B,MAAM,YAAY,GAAG,MAAM,CAAC;YAE5B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,EAAE,YAAY,CAAC,CAAC;YAEjB,MAAM,cAAc,GAAG,CAAC,IAAqC,EAAE,EAAE;gBAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACjB,CAAC,CAAC,IAAI,YAAY,WAAW;wBAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;wBAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACvC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAElC,IAAI,CAAC;oBACD,MAAM,SAAS,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBAClD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBACtB,MAAM,IAAI,KAAK,CACX,yCAAyC;4BACrC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAC9C,CAAC;oBACN,CAAC;oBACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CACrB,UAAU,CAAC,IAAI,CAAC,KAAK,EACrB,YAAY,EAAE,CACjB,CAAC;oBACF,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;wBACrB,MAAM,IAAI,KAAK,CACX,uBAAuB;4BACnB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAC7C,CAAC;oBACN,CAAC;oBACD,MAAM,WAAW,GAAS,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;oBAE9C,MAAM,MAAM,GAAG,IAAI,aAAa,CAC5B,EAAE,EACF,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,WAAW,CACd,CAAC;oBAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;wBACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;wBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACP,CAAC;gBAAC,OAAO,IAAa,EAAE,CAAC;oBACrB,2BAA2B;oBAC3B,MAAM,MAAM,GAAY;wBACpB,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE;wBACnC,IAAI,EAAE,cAAc;qBACvB,CAAC;oBACF,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;YACL,CAAC,CAAC;YAEF,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACjC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CACR,mBAAmB,EACnB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACf,IAAI,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,UAAU,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACJ,IAAI,EAAE,CAAC;YACX,CAAC;QACL,CAAC,EACD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACT,MAAM,aAAa,GAAG;gBAClB,MAAM;gBACN,UAAU;gBACV,QAAQ;gBACR,QAAQ;gBACR,QAAQ;gBACR,OAAO;gBACP,SAAS;aACZ,CAAC;YAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAE7C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,IAAI,KAAK,CAAC;YAEV,QAAQ,SAAS,EAAE,CAAC;gBAChB,KAAK,QAAQ;oBACT,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC3B,MAAM;gBACV,KAAK,SAAS;oBACV,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC;oBAC5B,MAAM;gBACV,KAAK,QAAQ;oBACT,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC3B,MAAM;gBACV,KAAK,OAAO;oBACR,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;oBAC1B,MAAM;gBACV,KAAK,MAAM;oBACP,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC;oBACzB,MAAM;gBACV,KAAK,QAAQ;oBACT,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;oBAC3B,MAAM;gBACV,KAAK,UAAU;oBACX,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC;oBAC7B,MAAM;gBACV;oBACI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO;YACf,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAE5C,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAEjB,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBAC5D,MAAM,SAAS,GACX,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBACzC,CAAC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBAC7C,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAElC,IAAI,SAAS,EAAE,CAAC;oBACZ,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBAED,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;gBAC/C,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,IAAa,EAAE,CAAC;gBACrB,kCAAkC;gBAClC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACZ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,GAAG,CAAC,IAAI,CACJ,OAAO,CAAC,MAAM,CAAC;gBACX,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;aACjB,CAAC,CACL,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YAE7C,MAAM,EAAE,GAAG,SAAS,CAAC;YACrB,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC;gBACL,MAAM,EACF,SAAS,KAAK,GAAG;oBACjB,SAAS,KAAK,MAAM;oBACpB,SAAS,KAAK,KAAK;gBACvB,eAAe;gBACf,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,GAAG,EAAE,IAAI,IAAI,EAAE;gBACf,EAAE;gBACF,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH;;;;;WAKG;QACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACzC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC;gBACL,oBAAoB,EAAE,IAAI,CAAC,aAAa;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE;oBACJ,OAAO,EAAE,OAAO,EAAE;oBAClB,OAAO,EAAE,OAAO,EAAE;oBAClB,QAAQ,EAAE,QAAQ,EAAE;iBACvB;gBACD,MAAM,EAAE;oBACJ,YAAY,EAAE,EAAE,CAAC,YAAY;oBAC7B,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,SAAS,EAAE,EAAE,CAAC,SAAS;oBACvB,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,GAAG,EAAE,EAAE,CAAC,GAAG;iBACd;gBACD,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,aAAa,EAAE;oBACX,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,YAAY,EAAE,EAAE,CAAC,aAAa;oBAC9B,UAAU,EAAE,EAAE,CAAC,WAAW;iBAC7B;gBACD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3C,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;aAC1C,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YACD,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAEhE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1D,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,GAAG;yBACL,MAAM,CAAC,GAAG,CAAC;yBACX,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;gBAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,sCAAsC;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;oBACnC,QAAQ;oBACR,KAAK;oBACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;iBACnB,CAAC,CAAC;gBAEH,8BAA8B;gBAC9B,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC9C,CAAC,EAAE,uBAAuB,CAAC,CAAC;gBAE5B,OAAO,GAAG,CAAC,IAAI,CACX,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CACpD,CAAC;YACN,CAAC;YAAC,OAAO,IAAa,EAAE,CAAC;gBACrB,mCAAmC;gBACnC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACjE,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxB,KAAK,EAAE,kCAAkC;qBAC5C,CAAC,CAAC;gBACP,CAAC;gBACD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;gBAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxB,KAAK,EAAE,iCAAiC;qBAC3C,CAAC,CAAC;gBACP,CAAC;gBAED,qCAAqC;gBACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAE1C,eAAe;gBACf,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;oBACxD,OAAO,GAAG;yBACL,MAAM,CAAC,GAAG,CAAC;yBACX,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBAED,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAChE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACpC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EACxB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CACnC,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,GAAG;yBACL,MAAM,CAAC,GAAG,CAAC;yBACX,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBAED,wDAAwD;gBACxD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,WAAW,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,GAAG;yBACL,MAAM,CAAC,GAAG,CAAC;yBACX,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAChD,CAAC;gBAED,uBAAuB;gBACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,OAAO,GAAG;yBACL,MAAM,CAAC,GAAG,CAAC;yBACX,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;gBACpD,CAAC;gBAED,6CAA6C;gBAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,EAC1B,YAAY,EAAE,EACd,EAAE,SAAS,EAAE,sBAAsB,EAAE,CACxC,CAAC;gBACF,OAAO,GAAG,CAAC,IAAI,CACX,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CACpD,CAAC;YACN,CAAC;YAAC,OAAO,IAAa,EAAE,CAAC;gBACrB,gCAAgC;gBAChC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACvB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,sBAAsB;oBAC7B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC9B,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAErC,IAAI,sBAAsB,CAAC;YAC3B,IAAI,CAAC;gBACD,CAAC,EAAE,eAAe,EAAE,sBAAsB,EAAE;oBACxC,MAAM,mBAAmB,CACrB,IAAI,CAAC,EAAE,EACP,IAAI,EACJ,mBAAmB,CAAC,QAAQ,EAC5B,iBAAiB,CAAC,MAAM,CAC3B,CAAC,CAAC;YACX,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,IAAI,GAAG,YAAY,0BAA0B,EAAE,CAAC;oBAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpD,OAAO;gBACX,CAAC;gBACD,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAClB,IAAI,EACJ,MAAM,EACN,mBAAmB,CAAC,QAAQ,EAC5B,iBAAiB,CAAC,MAAM,CAC3B,CAAC;YAEF,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CACP,sBAAsB,CAAC,KAAK,EAC5B,MAAM,EACN,MAAM,CAAC,UAAU,EAAE,EACnB,IAAI,EACJ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,CAChB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,yCAAyC,EACzC,OAAO,EACP,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,2CAA2C;oBAClD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC9B,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAC3D;gBACI,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;gBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC1B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI;gBACtC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;gBACxB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM;aAC9B,CACJ,CAAC;YAEF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CACX,yDAAyD,EACzD,OAAO,EACP,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,8BAA8B,CAAC;gBACzD,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;gBAC/C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM;aAC9B,CAAC,CAAC;YACH,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CACJ,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,4BAA4B;iBACtC,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;YAE3C,IAAI,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO;gBACX,CAAC;gBAED,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAC/C,QAAQ,EACR,SAAS,CACZ,CAAC;gBAEF,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO;gBACX,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBACd,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACnD,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5D,CAAC;gBAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAClB,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,EAC/B,YAAY,EAAE,EACd,EAAE,SAAS,EAAE,UAAU,EAAE,CAC5B,CAAC;gBAEF,oBAAoB;gBACpB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;gBAElC,GAAG,CAAC,IAAI,CACJ,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CACzD,CAAC;YACN,CAAC;YAAC,OAAO,IAAa,EAAE,CAAC;gBACrB,uBAAuB;gBACvB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACvD,IAAI,CAAC;gBACD,MAAM,SAAS,GAAG,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,8BAA8B;wBACrC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM;qBACjC,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC;gBAClC,IACI,UAAU,CAAC,QAAQ,KAAK,SAAS;oBACjC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC1C,CAAC;oBACC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,8EAA8E;qBACxF,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,MAAM,iBAAiB,GAAG;oBACtB,GAAG,UAAU;oBACb,QAAQ,EAAE,6BAA6B,CACnC,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,OAAO,CACrB;iBACJ,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CACpC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAC1C,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC9C,CAAC;gBAEF,IACI,MAAM;oBACN,MAAM,CAAC,MAAM,KAAK,EAAE;oBACpB,IAAI,CAAC,aAAa,CACd,aAAa,CAAC,MAAM,CAAC,EACrB,WAAW,CAAC,QAAQ,CACvB,EACH,CAAC;oBACC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CACxC,MAAM,EACN,iBAAiB,CACpB,CAAC;oBACF,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACf,MAAM,OAAO,GACT,MAAM,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;4BACzC,CAAC,CAAC,GAAG,CAAC,IAAI;4BACV,CAAC,CAAC,SAAS,CAAC;wBACpB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC5B,MAAM,gBAAgB,GAClB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;4BACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;wBACvC,MAAM,eAAe,GACjB,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC;4BAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;wBACxC,MAAM,kBAAkB,GACpB,OAAO,KAAK,cAAc;4BAC1B,OAAO,KAAK,0BAA0B;4BACtC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;wBACjD,IAAI,kBAAkB,IAAI,gBAAgB,EAAE,CAAC;4BACzC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAC3C,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;4BACF,IAAI,CAAC,YAAY,EAAE,CAAC;gCAChB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oCACjB,KAAK,EAAE,iCAAiC;iCAC3C,CAAC,CAAC;gCACH,OAAO;4BACX,CAAC;4BACD,MAAM,iBAAiB,GACnB,MAAM,IAAI,CAAC,EAAE,CAAC,cAAc,CACxB,iBAAiB,CAAC,OAAO,CAC5B,CAAC;4BACN,IAAI,iBAAiB,EAAE,CAAC;gCACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oCACjB,KAAK,EAAE,mCAAmC;iCAC7C,CAAC,CAAC;gCACH,OAAO;4BACX,CAAC;4BACD,MAAM,eAAe,GACjB,oCAAoC,CAChC,YAAY,CAAC,MAAM,EACnB,iBAAiB,EACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EACtB,EAAE,sBAAsB,EAAE,IAAI,EAAE,CACnC,CAAC;4BACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAChB,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAClC,CAAC;4BACF,OAAO;wBACX,CAAC;wBACD,IAAI,kBAAkB,IAAI,eAAe,EAAE,CAAC;4BACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACjB,KAAK,EAAE,mCAAmC;6BAC7C,CAAC,CAAC;4BACH,OAAO;wBACX,CAAC;wBACD,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,IAAI,EAAE,CAAC;4BACR,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;4BACpB,OAAO;wBACX,CAAC;wBACD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/C,CAAC;gBACL,CAAC;qBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;oBACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,qCAAqC;qBAC/C,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACjB,KAAK,EAAE,+BAA+B;qBACzC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACpB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtC,MAAM,OAAO,GACT,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrD,OAAO,CAAC,KAAK,CACT,sCAAsC,SAAS,YAAY,IAAI,CAAC,aAAa,YAAY,OAAO,EAAE,CACrG,CAAC;gBACF,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACpC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,kCAAkC,SAAS,EAAE;iBACvD,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvC,yDAAyD;QACzD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CACV,MAAc,EACd,KAAa,EACb,cAAsB,EACtB,IAAc,EACd,QAAiB,EACjB,kBAA2B;QAE3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YACtB,IAAI;YACJ,KAAK;YACL,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,cAAc;YACd,MAAM;YACN,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpC,CAAC,CAAC;IACP,CAAC;IAEO,YAAY,CAAC,MAAqB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,GAAW,EAAE,KAAkB;QACjD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;oBACvB,SAAS;gBACb,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBACvD,IAAI,GAAG,GAAG,YAAY,EAAE,CAAC;oBACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAED,oEAAoE;AACpE,8DAA8D;AAC9D,mEAAmE;AACnE,kEAAkE;AAClE,oEAAoE;AACpE,2DAA2D;AAC3D,SAAS,6BAA6B,CAClC,QAA4B,EAC5B,UAAkB;IAElB,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,UAAU;SAClB,WAAW,EAAE;SACb,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClB,OAAO,OAAO,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
package/dist/db/schema.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export type NewEmoji = Insertable<EmojisTable>;
|
|
|
66
66
|
export type NewFile = Insertable<FilesTable>;
|
|
67
67
|
export type NewInvite = Insertable<InvitesTable>;
|
|
68
68
|
export type NewMail = Insertable<MailTable>;
|
|
69
|
+
export type NewNotificationSubscription = Insertable<NotificationSubscriptionsTable>;
|
|
69
70
|
export type NewOneTimeKey = Insertable<OneTimeKeysTable>;
|
|
70
71
|
export type NewPasskey = Insertable<PasskeysTable>;
|
|
71
72
|
export type NewPermission = Insertable<PermissionsTable>;
|
|
@@ -73,6 +74,20 @@ export type NewPreKey = Insertable<PreKeysTable>;
|
|
|
73
74
|
export type NewServer = Insertable<ServersTable>;
|
|
74
75
|
export type NewServiceMetric = Insertable<ServiceMetricsTable>;
|
|
75
76
|
export type NewUser = Insertable<UsersTable>;
|
|
77
|
+
export type NotificationSubscriptionRow = Selectable<NotificationSubscriptionsTable>;
|
|
78
|
+
export interface NotificationSubscriptionsTable {
|
|
79
|
+
channel: string;
|
|
80
|
+
createdAt: string;
|
|
81
|
+
deviceID: string;
|
|
82
|
+
enabled: number;
|
|
83
|
+
events: string;
|
|
84
|
+
platform: null | string;
|
|
85
|
+
subscriptionID: string;
|
|
86
|
+
token: string;
|
|
87
|
+
updatedAt: string;
|
|
88
|
+
userID: string;
|
|
89
|
+
}
|
|
90
|
+
export type NotificationSubscriptionUpdate = Updateable<NotificationSubscriptionsTable>;
|
|
76
91
|
export type OneTimeKeyRow = Selectable<OneTimeKeysTable>;
|
|
77
92
|
export interface OneTimeKeysTable {
|
|
78
93
|
deviceID: string;
|
|
@@ -123,6 +138,7 @@ export interface ServerDatabase {
|
|
|
123
138
|
files: FilesTable;
|
|
124
139
|
invites: InvitesTable;
|
|
125
140
|
mail: MailTable;
|
|
141
|
+
notification_subscriptions: NotificationSubscriptionsTable;
|
|
126
142
|
oneTimeKeys: OneTimeKeysTable;
|
|
127
143
|
passkeys: PasskeysTable;
|
|
128
144
|
permissions: PermissionsTable;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-2026 Vex Heavy Industries LLC
|
|
3
|
+
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
|
+
* Commercial licenses available at vex.wtf
|
|
5
|
+
*/
|
|
6
|
+
import type { Kysely } from "kysely";
|
|
7
|
+
export declare function down(db: Kysely<unknown>): Promise<void>;
|
|
8
|
+
export declare function up(db: Kysely<unknown>): Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-2026 Vex Heavy Industries LLC
|
|
3
|
+
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
|
+
* Commercial licenses available at vex.wtf
|
|
5
|
+
*/
|
|
6
|
+
export async function down(db) {
|
|
7
|
+
await db.schema
|
|
8
|
+
.dropTable("notification_subscriptions")
|
|
9
|
+
.ifExists()
|
|
10
|
+
.execute();
|
|
11
|
+
}
|
|
12
|
+
export async function up(db) {
|
|
13
|
+
await db.schema
|
|
14
|
+
.createTable("notification_subscriptions")
|
|
15
|
+
.ifNotExists()
|
|
16
|
+
.addColumn("subscriptionID", "varchar(255)", (cb) => cb.primaryKey())
|
|
17
|
+
.addColumn("userID", "varchar(255)", (cb) => cb.notNull())
|
|
18
|
+
.addColumn("deviceID", "varchar(255)", (cb) => cb.notNull())
|
|
19
|
+
.addColumn("channel", "varchar(32)", (cb) => cb.notNull())
|
|
20
|
+
.addColumn("token", "text", (cb) => cb.notNull())
|
|
21
|
+
.addColumn("platform", "varchar(32)")
|
|
22
|
+
.addColumn("events", "text", (cb) => cb.notNull())
|
|
23
|
+
.addColumn("enabled", "integer", (cb) => cb.notNull().defaultTo(1))
|
|
24
|
+
.addColumn("createdAt", "text", (cb) => cb.notNull())
|
|
25
|
+
.addColumn("updatedAt", "text", (cb) => cb.notNull())
|
|
26
|
+
.execute();
|
|
27
|
+
await db.schema
|
|
28
|
+
.createIndex("notification_subscriptions_device_idx")
|
|
29
|
+
.ifNotExists()
|
|
30
|
+
.on("notification_subscriptions")
|
|
31
|
+
.columns(["deviceID", "channel"])
|
|
32
|
+
.execute();
|
|
33
|
+
await db.schema
|
|
34
|
+
.createIndex("notification_subscriptions_user_idx")
|
|
35
|
+
.ifNotExists()
|
|
36
|
+
.on("notification_subscriptions")
|
|
37
|
+
.columns(["userID", "channel"])
|
|
38
|
+
.execute();
|
|
39
|
+
await db.schema
|
|
40
|
+
.createIndex("notification_subscriptions_token_idx")
|
|
41
|
+
.ifNotExists()
|
|
42
|
+
.on("notification_subscriptions")
|
|
43
|
+
.columns(["channel", "token"])
|
|
44
|
+
.execute();
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=2026-05-10_notification-subscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2026-05-10_notification-subscriptions.js","sourceRoot":"","sources":["../../src/migrations/2026-05-10_notification-subscriptions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM;SACV,SAAS,CAAC,4BAA4B,CAAC;SACvC,QAAQ,EAAE;SACV,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IACxC,MAAM,EAAE,CAAC,MAAM;SACV,WAAW,CAAC,4BAA4B,CAAC;SACzC,WAAW,EAAE;SACb,SAAS,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;SACpE,SAAS,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SAC3D,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SACzD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SAChD,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;SACpC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SACjD,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAClE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SACpD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;SACpD,OAAO,EAAE,CAAC;IAEf,MAAM,EAAE,CAAC,MAAM;SACV,WAAW,CAAC,uCAAuC,CAAC;SACpD,WAAW,EAAE;SACb,EAAE,CAAC,4BAA4B,CAAC;SAChC,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;SAChC,OAAO,EAAE,CAAC;IAEf,MAAM,EAAE,CAAC,MAAM;SACV,WAAW,CAAC,qCAAqC,CAAC;SAClD,WAAW,EAAE;SACb,EAAE,CAAC,4BAA4B,CAAC;SAChC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;SAC9B,OAAO,EAAE,CAAC;IAEf,MAAM,EAAE,CAAC,MAAM;SACV,WAAW,CAAC,sCAAsC,CAAC;SACnD,WAAW,EAAE;SACb,EAAE,CAAC,4BAA4B,CAAC;SAChC,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SAC7B,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-2026 Vex Heavy Industries LLC
|
|
3
|
+
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
|
+
* Commercial licenses available at vex.wtf
|
|
5
|
+
*/
|
|
6
|
+
import { type Kysely } from "kysely";
|
|
7
|
+
export declare function down(db: Kysely<unknown>): Promise<void>;
|
|
8
|
+
export declare function up(db: Kysely<unknown>): Promise<void>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-2026 Vex Heavy Industries LLC
|
|
3
|
+
* Licensed under AGPL-3.0. See LICENSE for details.
|
|
4
|
+
* Commercial licenses available at vex.wtf
|
|
5
|
+
*/
|
|
6
|
+
import { sql } from "kysely";
|
|
7
|
+
const UNIQUE_INDEX_NAME = "notification_subscriptions_channel_device_token_unique_idx";
|
|
8
|
+
export async function down(db) {
|
|
9
|
+
await db.schema.dropIndex(UNIQUE_INDEX_NAME).ifExists().execute();
|
|
10
|
+
}
|
|
11
|
+
export async function up(db) {
|
|
12
|
+
await sql `
|
|
13
|
+
DELETE FROM notification_subscriptions
|
|
14
|
+
WHERE rowid NOT IN (
|
|
15
|
+
SELECT MAX(rowid)
|
|
16
|
+
FROM notification_subscriptions
|
|
17
|
+
GROUP BY channel, deviceID, token
|
|
18
|
+
)
|
|
19
|
+
`.execute(db);
|
|
20
|
+
await db.schema
|
|
21
|
+
.createIndex(UNIQUE_INDEX_NAME)
|
|
22
|
+
.ifNotExists()
|
|
23
|
+
.on("notification_subscriptions")
|
|
24
|
+
.columns(["channel", "deviceID", "token"])
|
|
25
|
+
.unique()
|
|
26
|
+
.execute();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=2026-05-15_notification-subscription-unique-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2026-05-15_notification-subscription-unique-key.js","sourceRoot":"","sources":["../../src/migrations/2026-05-15_notification-subscription-unique-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,iBAAiB,GACnB,4DAA4D,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAmB;IAC1C,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,EAAmB;IACxC,MAAM,GAAG,CAAA;;;;;;;KAOR,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEd,MAAM,EAAE,CAAC,MAAM;SACV,WAAW,CAAC,iBAAiB,CAAC;SAC9B,WAAW,EAAE;SACb,EAAE,CAAC,4BAA4B,CAAC;SAChC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SACzC,MAAM,EAAE;SACR,OAAO,EAAE,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vex-chat/spire",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.1",
|
|
4
4
|
"description": "Vex server implementation in NodeJS.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@types/node": "^25.6.0",
|
|
43
43
|
"@types/ws": "8.18.1",
|
|
44
44
|
"@vitest/eslint-plugin": "1.6.15",
|
|
45
|
-
"axios": "1.15.
|
|
45
|
+
"axios": "1.15.2",
|
|
46
46
|
"eslint": "10.2.0",
|
|
47
47
|
"eslint-config-prettier": "10.1.8",
|
|
48
48
|
"eslint-plugin-n": "17.24.0",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"typescript": "6.0.2",
|
|
56
56
|
"typescript-eslint": "8.58.1",
|
|
57
57
|
"vitest": "4.1.4",
|
|
58
|
-
"@vex-chat/
|
|
59
|
-
"@vex-chat/
|
|
58
|
+
"@vex-chat/eslint-config": "0.0.1",
|
|
59
|
+
"@vex-chat/libvex": "^6.6.1"
|
|
60
60
|
},
|
|
61
61
|
"typeCoverage": {
|
|
62
62
|
"atLeast": 95,
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"file-type": "22.0.1",
|
|
76
76
|
"helmet": "8.1.0",
|
|
77
77
|
"jsonwebtoken": "9.0.3",
|
|
78
|
-
"kysely": "^0.28.
|
|
78
|
+
"kysely": "^0.28.17",
|
|
79
79
|
"morgan": "1.10.1",
|
|
80
80
|
"msgpackr": "^1.11.9",
|
|
81
81
|
"multer": "2.1.1",
|
package/src/ClientManager.ts
CHANGED
|
@@ -80,6 +80,7 @@ export class ClientManager extends EventEmitter {
|
|
|
80
80
|
transmissionID: string,
|
|
81
81
|
data?: unknown,
|
|
82
82
|
deviceID?: string,
|
|
83
|
+
headlessPushUserID?: string,
|
|
83
84
|
) => void;
|
|
84
85
|
private user: null | UserRecord;
|
|
85
86
|
private userDetails: User;
|
|
@@ -87,7 +88,14 @@ export class ClientManager extends EventEmitter {
|
|
|
87
88
|
constructor(
|
|
88
89
|
ws: WebSocket,
|
|
89
90
|
db: Database,
|
|
90
|
-
notify: (
|
|
91
|
+
notify: (
|
|
92
|
+
userID: string,
|
|
93
|
+
event: string,
|
|
94
|
+
transmissionID: string,
|
|
95
|
+
data?: unknown,
|
|
96
|
+
deviceID?: string,
|
|
97
|
+
headlessPushUserID?: string,
|
|
98
|
+
) => void,
|
|
91
99
|
userDetails: User,
|
|
92
100
|
) {
|
|
93
101
|
super();
|
|
@@ -178,7 +186,16 @@ export class ClientManager extends EventEmitter {
|
|
|
178
186
|
}
|
|
179
187
|
|
|
180
188
|
private async handleReceipt(msg: ReceiptMsg) {
|
|
181
|
-
|
|
189
|
+
const deviceID = this.getDeviceID();
|
|
190
|
+
if (!this.authed || deviceID === null) {
|
|
191
|
+
this.sendErr(msg.transmissionID, "You are not authenticated.");
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
await this.db.deleteMail(msg.nonce, deviceID);
|
|
196
|
+
} catch (err: unknown) {
|
|
197
|
+
this.sendErr(msg.transmissionID, String(err));
|
|
198
|
+
}
|
|
182
199
|
}
|
|
183
200
|
|
|
184
201
|
private initListeners() {
|
|
@@ -291,6 +308,7 @@ export class ClientManager extends EventEmitter {
|
|
|
291
308
|
msg.transmissionID,
|
|
292
309
|
null,
|
|
293
310
|
mail.recipient,
|
|
311
|
+
mail.authorID,
|
|
294
312
|
);
|
|
295
313
|
} catch (err: unknown) {
|
|
296
314
|
this.sendErr(msg.transmissionID, String(err));
|
package/src/Database.ts
CHANGED
|
@@ -130,6 +130,28 @@ export interface InternalUserRecord extends UserRecord {
|
|
|
130
130
|
hashAlgo: string;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
export interface NotificationSubscription {
|
|
134
|
+
channel: "expo";
|
|
135
|
+
createdAt: string;
|
|
136
|
+
deviceID: string;
|
|
137
|
+
enabled: boolean;
|
|
138
|
+
events: string[];
|
|
139
|
+
platform: null | string;
|
|
140
|
+
subscriptionID: string;
|
|
141
|
+
token: string;
|
|
142
|
+
updatedAt: string;
|
|
143
|
+
userID: string;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface SaveNotificationSubscriptionInput {
|
|
147
|
+
channel: "expo";
|
|
148
|
+
deviceID: string;
|
|
149
|
+
events: string[];
|
|
150
|
+
platform?: null | string;
|
|
151
|
+
token: string;
|
|
152
|
+
userID: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
133
155
|
export class Database extends EventEmitter {
|
|
134
156
|
private static readonly EMOJI_LIST_CACHE_TTL_MS = 10_000;
|
|
135
157
|
|
|
@@ -726,6 +748,21 @@ export class Database extends EventEmitter {
|
|
|
726
748
|
.execute();
|
|
727
749
|
}
|
|
728
750
|
|
|
751
|
+
public async removeNotificationSubscription(args: {
|
|
752
|
+
deviceID: string;
|
|
753
|
+
subscriptionID: string;
|
|
754
|
+
userID: string;
|
|
755
|
+
}): Promise<boolean> {
|
|
756
|
+
const result = await this.db
|
|
757
|
+
.deleteFrom("notification_subscriptions")
|
|
758
|
+
.where("subscriptionID", "=", args.subscriptionID)
|
|
759
|
+
.where("deviceID", "=", args.deviceID)
|
|
760
|
+
.where("userID", "=", args.userID)
|
|
761
|
+
.executeTakeFirst();
|
|
762
|
+
|
|
763
|
+
return Number(result.numDeletedRows) > 0;
|
|
764
|
+
}
|
|
765
|
+
|
|
729
766
|
/**
|
|
730
767
|
* Retrives a list of users that should be notified when a specific resourceID
|
|
731
768
|
* experiences changes.
|
|
@@ -907,6 +944,30 @@ export class Database extends EventEmitter {
|
|
|
907
944
|
return allMail;
|
|
908
945
|
}
|
|
909
946
|
|
|
947
|
+
public async retrieveNotificationSubscriptions(args: {
|
|
948
|
+
deviceID?: string;
|
|
949
|
+
event: string;
|
|
950
|
+
userID: string;
|
|
951
|
+
}): Promise<NotificationSubscription[]> {
|
|
952
|
+
let query = this.db
|
|
953
|
+
.selectFrom("notification_subscriptions")
|
|
954
|
+
.selectAll()
|
|
955
|
+
.where("userID", "=", args.userID)
|
|
956
|
+
.where("enabled", "=", 1);
|
|
957
|
+
|
|
958
|
+
if (args.deviceID) {
|
|
959
|
+
query = query.where("deviceID", "=", args.deviceID);
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
const rows = await query.execute();
|
|
963
|
+
return rows
|
|
964
|
+
.map(toNotificationSubscription)
|
|
965
|
+
.filter(
|
|
966
|
+
(sub) =>
|
|
967
|
+
sub.events.includes("*") || sub.events.includes(args.event),
|
|
968
|
+
);
|
|
969
|
+
}
|
|
970
|
+
|
|
910
971
|
/**
|
|
911
972
|
* Look up a passkey row by its WebAuthn credentialID. Used during
|
|
912
973
|
* the assertion verification step of `/auth/passkey/finish`.
|
|
@@ -1180,6 +1241,48 @@ export class Database extends EventEmitter {
|
|
|
1180
1241
|
.execute();
|
|
1181
1242
|
}
|
|
1182
1243
|
|
|
1244
|
+
public async saveNotificationSubscription(
|
|
1245
|
+
input: SaveNotificationSubscriptionInput,
|
|
1246
|
+
): Promise<NotificationSubscription> {
|
|
1247
|
+
const now = new Date().toISOString();
|
|
1248
|
+
const events = encodeNotificationEvents(input.events);
|
|
1249
|
+
const row = {
|
|
1250
|
+
channel: input.channel,
|
|
1251
|
+
createdAt: now,
|
|
1252
|
+
deviceID: input.deviceID,
|
|
1253
|
+
enabled: 1,
|
|
1254
|
+
events,
|
|
1255
|
+
platform: input.platform ?? null,
|
|
1256
|
+
subscriptionID: crypto.randomUUID(),
|
|
1257
|
+
token: input.token,
|
|
1258
|
+
updatedAt: now,
|
|
1259
|
+
userID: input.userID,
|
|
1260
|
+
};
|
|
1261
|
+
|
|
1262
|
+
await this.db
|
|
1263
|
+
.insertInto("notification_subscriptions")
|
|
1264
|
+
.values(row)
|
|
1265
|
+
.onConflict((oc) =>
|
|
1266
|
+
oc.columns(["channel", "deviceID", "token"]).doUpdateSet({
|
|
1267
|
+
enabled: 1,
|
|
1268
|
+
events,
|
|
1269
|
+
platform: input.platform ?? null,
|
|
1270
|
+
updatedAt: now,
|
|
1271
|
+
userID: input.userID,
|
|
1272
|
+
}),
|
|
1273
|
+
)
|
|
1274
|
+
.execute();
|
|
1275
|
+
|
|
1276
|
+
const saved = await this.db
|
|
1277
|
+
.selectFrom("notification_subscriptions")
|
|
1278
|
+
.selectAll()
|
|
1279
|
+
.where("channel", "=", input.channel)
|
|
1280
|
+
.where("deviceID", "=", input.deviceID)
|
|
1281
|
+
.where("token", "=", input.token)
|
|
1282
|
+
.executeTakeFirstOrThrow();
|
|
1283
|
+
return toNotificationSubscription(saved);
|
|
1284
|
+
}
|
|
1285
|
+
|
|
1183
1286
|
public async saveOTK(
|
|
1184
1287
|
userID: string,
|
|
1185
1288
|
deviceID: string,
|
|
@@ -1262,6 +1365,28 @@ export async function verifyPassword(
|
|
|
1262
1365
|
return { needsRehash: valid, valid };
|
|
1263
1366
|
}
|
|
1264
1367
|
|
|
1368
|
+
function decodeNotificationEvents(events: string): string[] {
|
|
1369
|
+
try {
|
|
1370
|
+
const parsed: unknown = JSON.parse(events);
|
|
1371
|
+
if (
|
|
1372
|
+
Array.isArray(parsed) &&
|
|
1373
|
+
parsed.every((event) => typeof event === "string")
|
|
1374
|
+
) {
|
|
1375
|
+
return parsed.length > 0 ? [...new Set(parsed)] : ["mail"];
|
|
1376
|
+
}
|
|
1377
|
+
} catch {
|
|
1378
|
+
// Fall through to the safe default.
|
|
1379
|
+
}
|
|
1380
|
+
return ["mail"];
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
function encodeNotificationEvents(events: string[]): string {
|
|
1384
|
+
const unique = [...new Set(events.map((event) => event.trim()))].filter(
|
|
1385
|
+
(event) => event.length > 0,
|
|
1386
|
+
);
|
|
1387
|
+
return JSON.stringify(unique.length > 0 ? unique : ["mail"]);
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1265
1390
|
// Mirrors `Spire.normalizeRegistrationUsername` — kept in sync so a
|
|
1266
1391
|
// caller invoking `createUser` directly (e.g. tests, future internal
|
|
1267
1392
|
// flows) gets the same lowercase canonicalization the public
|
|
@@ -1314,6 +1439,26 @@ function toMailSQL(row: {
|
|
|
1314
1439
|
};
|
|
1315
1440
|
}
|
|
1316
1441
|
|
|
1442
|
+
function toNotificationSubscription(row: {
|
|
1443
|
+
channel: string;
|
|
1444
|
+
createdAt: string;
|
|
1445
|
+
deviceID: string;
|
|
1446
|
+
enabled: number;
|
|
1447
|
+
events: string;
|
|
1448
|
+
platform: null | string;
|
|
1449
|
+
subscriptionID: string;
|
|
1450
|
+
token: string;
|
|
1451
|
+
updatedAt: string;
|
|
1452
|
+
userID: string;
|
|
1453
|
+
}): NotificationSubscription {
|
|
1454
|
+
return {
|
|
1455
|
+
...row,
|
|
1456
|
+
channel: "expo",
|
|
1457
|
+
enabled: Boolean(row.enabled),
|
|
1458
|
+
events: decodeNotificationEvents(row.events),
|
|
1459
|
+
};
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1317
1462
|
function toPasskey(row: PasskeyRow): Passkey {
|
|
1318
1463
|
return {
|
|
1319
1464
|
createdAt: row.createdAt,
|