@happyvertical/smrt-messages 0.32.2 → 0.33.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/dist/collections/AccountCollection.d.ts.map +1 -1
- package/dist/collections/AttachmentCollection.d.ts.map +1 -1
- package/dist/collections/EmailAccountCollection.d.ts.map +1 -1
- package/dist/collections/EmailAttachmentCollection.d.ts.map +1 -1
- package/dist/collections/EmailCollection.d.ts.map +1 -1
- package/dist/collections/EmailFolderCollection.d.ts +6 -2
- package/dist/collections/EmailFolderCollection.d.ts.map +1 -1
- package/dist/collections/MessageCollection.d.ts.map +1 -1
- package/dist/collections/tenant-global-queries.d.ts +31 -0
- package/dist/collections/tenant-global-queries.d.ts.map +1 -0
- package/dist/index.js +87 -33
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +2 -2
- package/dist/smrt-knowledge.json +4 -4
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountCollection.d.ts","sourceRoot":"","sources":["../../src/collections/AccountCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AccountCollection.d.ts","sourceRoot":"","sources":["../../src/collections/AccountCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,iBAAW;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIrC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvC;;OAEG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIjE;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWxD;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BrB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IAsBI,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAMlD,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/AttachmentCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"AttachmentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/AttachmentCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,qBAAa,oBAAqB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAClE,MAAM,CAAC,QAAQ,CAAC,UAAU,oBAAc;IAExC;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI5D;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIlE;;OAEG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ1D;;OAEG;IACG,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQxD;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKzD;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK1D;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKnD;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtD;;OAEG;IACG,UAAU,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAKnD;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS5D;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAO9D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAkBF;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOrD,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAInC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAO/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailAccountCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailAccountCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"EmailAccountCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailAccountCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,gBAAyB,UAAU,sBAAgB;IAEnD;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK7D;;OAEG;IACG,sBAAsB,CAC1B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;OAEG;IACY,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAInD;;OAEG;IACY,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrD;;OAEG;IACG,cAAc,CAAC,aAAa,SAAK,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IASjE;;;OAGG;IACY,MAAM,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;;OAGG;IACY,iBAAiB,CAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1B;;;OAGG;IACY,QAAQ,IAAI,OAAO,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IAUF;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,YAAY,EAAE,CAAC;IAkC1B;;OAEG;IACG,OAAO,CACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC;IAqB5D;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAW5C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC;IA6Ba,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOvD,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAQ1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailAttachmentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailAttachmentCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"EmailAttachmentCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailAttachmentCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,oBAAoB;IACjE,gBAAyB,UAAU,yBAAmB;IAEtD;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI7D;;OAEG;IACY,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAItE;;OAEG;IACY,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIpE;;OAEG;IACY,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIrE;;OAEG;IACY,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAItE;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAO1D,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIxC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAO7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailCollection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"EmailCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailCollection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAWxD,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD,gBAAyB,UAAU,eAAS;IAE5C;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAQxB;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIvD;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIrD;;OAEG;IACY,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9D;;OAEG;IACY,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQ9D;;OAEG;IACY,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQ/D;;OAEG;IACG,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQ9D;;OAEG;IACY,SAAS,CAAC,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAc1E;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtD;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5D;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D;;;OAGG;IACY,MAAM,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;IAInB;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,KAAK,EAAE,CAAC;IAwEnB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYvD;;OAEG;IACY,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACzD,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IAgBa,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQhD,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAQnE"}
|
|
@@ -74,11 +74,15 @@ export declare class EmailFolderCollection extends SmrtCollection<EmailFolder> {
|
|
|
74
74
|
*/
|
|
75
75
|
findByTenant(tenantId: string): Promise<EmailFolder[]>;
|
|
76
76
|
/**
|
|
77
|
-
* Find all global email folders (no tenant)
|
|
77
|
+
* Find all global email folders (no tenant).
|
|
78
|
+
*
|
|
79
|
+
* EmailFolder is @TenantScoped (CTI, own `email_folders` table). Under an
|
|
80
|
+
* active tenant context list({ tenantId: null }) throws and unflagged raw SQL
|
|
81
|
+
* is blocked (#1596); route through the raw helpers.
|
|
78
82
|
*/
|
|
79
83
|
findGlobal(): Promise<EmailFolder[]>;
|
|
80
84
|
/**
|
|
81
|
-
* Find email folders for a tenant including global folders
|
|
85
|
+
* Find email folders for a tenant including global folders.
|
|
82
86
|
*/
|
|
83
87
|
findWithGlobals(tenantId: string): Promise<EmailFolder[]>;
|
|
84
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailFolderCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailFolderCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"EmailFolderCollection.d.ts","sourceRoot":"","sources":["../../src/collections/EmailFolderCollection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGzD,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,MAAM,CAAC,QAAQ,CAAC,UAAU,qBAAe;IAEzC;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9B;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI7D;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9D;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK7D;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK/D;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9D;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK7D;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKjE;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAK/D;;OAEG;IACG,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQ/D;;OAEG;IACG,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQ/D;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,WAAW,EAAE,CAAC;IA6BzB;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAYF;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAI5D;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAI1C;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAOhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageCollection.d.ts","sourceRoot":"","sources":["../../src/collections/MessageCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageCollection.d.ts","sourceRoot":"","sources":["../../src/collections/MessageCollection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,OAAO,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,iBAAW;IAErC;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;IAuErB;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAK7D;;;;;OAKG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAWxD;;OAEG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQvD;;OAEG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQxD;;OAEG;IACG,SAAS,CAAC,KAAK,SAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAcnE;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvD;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAChD,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IAsBF;;OAEG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAMvD;;OAEG;IACG,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAMrD;;OAEG;IACG,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAM1D;;OAEG;IACG,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAM5D;;OAEG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAgBjD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQlD,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG5D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SmrtCollection } from '@happyvertical/smrt-core';
|
|
2
|
+
/**
|
|
3
|
+
* Fail closed when an active tenant context requests a different tenant's rows.
|
|
4
|
+
*
|
|
5
|
+
* @param tenantId - The tenant id the caller asked for.
|
|
6
|
+
* @param label - `Class.method` identifier for the error message.
|
|
7
|
+
* @throws {TenantIsolationError} when a non-bypass tenant context is active and
|
|
8
|
+
* does not match `tenantId`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function assertTenantReadAllowed(tenantId: string, label: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Return all global (tenant-less) rows for a tenant-scoped collection.
|
|
13
|
+
*
|
|
14
|
+
* @param collection - The tenant-scoped collection to query.
|
|
15
|
+
* @param metaType - Qualified STI `_meta_type` to scope to (STI child
|
|
16
|
+
* collections); omit for STI base / CTI collections.
|
|
17
|
+
*/
|
|
18
|
+
export declare function queryGlobal<T>(collection: SmrtCollection<any>, metaType?: string): Promise<T[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Return a tenant's rows plus all global rows for a tenant-scoped collection.
|
|
21
|
+
*
|
|
22
|
+
* Fails closed (`assertTenantReadAllowed`) before issuing the bypassed query.
|
|
23
|
+
*
|
|
24
|
+
* @param collection - The tenant-scoped collection to query.
|
|
25
|
+
* @param tenantId - The tenant id to include alongside globals.
|
|
26
|
+
* @param label - `Class.method` identifier for the isolation error message.
|
|
27
|
+
* @param metaType - Qualified STI `_meta_type` to scope to (STI child
|
|
28
|
+
* collections); omit for STI base / CTI collections.
|
|
29
|
+
*/
|
|
30
|
+
export declare function queryWithGlobals<T>(collection: SmrtCollection<any>, tenantId: string, label: string, metaType?: string): Promise<T[]>;
|
|
31
|
+
//# sourceMappingURL=tenant-global-queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-global-queries.d.ts","sourceRoot":"","sources":["../../src/collections/tenant-global-queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO/D;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAa7E;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAUd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,UAAU,EAAE,cAAc,CAAC,GAAG,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAWd"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ObjectRegistry, field, smrt, SmrtObject, SmrtCollection, foreignKey } from "@happyvertical/smrt-core";
|
|
2
|
-
import { tenantId, TenantScoped } from "@happyvertical/smrt-tenancy";
|
|
2
|
+
import { tenantId, TenantScoped, getCurrentTenant, isSuperAdminBypass, TenantIsolationError } from "@happyvertical/smrt-tenancy";
|
|
3
3
|
ObjectRegistry.registerPackageManifest(
|
|
4
4
|
new URL("./manifest.json", import.meta.url)
|
|
5
5
|
);
|
|
@@ -141,6 +141,34 @@ Account = __decorateClass$b([
|
|
|
141
141
|
cli: true
|
|
142
142
|
})
|
|
143
143
|
], Account);
|
|
144
|
+
function assertTenantReadAllowed(tenantId2, label) {
|
|
145
|
+
const tenantContext = getCurrentTenant();
|
|
146
|
+
if (tenantContext && !isSuperAdminBypass() && tenantContext.tenantId !== tenantId2) {
|
|
147
|
+
throw new TenantIsolationError(
|
|
148
|
+
`Tenant isolation violation in ${label}: context tenant is '${tenantContext.tenantId}' but query requested '${tenantId2}'`,
|
|
149
|
+
{ tenantId: tenantContext.tenantId, attemptedTenantId: tenantId2 }
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async function queryGlobal(collection, metaType) {
|
|
154
|
+
const where = metaType ? "WHERE _meta_type = ? AND tenant_id IS NULL" : "WHERE tenant_id IS NULL";
|
|
155
|
+
const params = metaType ? [metaType] : [];
|
|
156
|
+
return await collection.query(
|
|
157
|
+
`SELECT * FROM ${collection.tableName} ${where}`,
|
|
158
|
+
params,
|
|
159
|
+
{ allowRawOnTenantScoped: true }
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
async function queryWithGlobals(collection, tenantId2, label, metaType) {
|
|
163
|
+
assertTenantReadAllowed(tenantId2, label);
|
|
164
|
+
const where = metaType ? "WHERE _meta_type = ? AND (tenant_id = ? OR tenant_id IS NULL)" : "WHERE tenant_id = ? OR tenant_id IS NULL";
|
|
165
|
+
const params = metaType ? [metaType, tenantId2] : [tenantId2];
|
|
166
|
+
return await collection.query(
|
|
167
|
+
`SELECT * FROM ${collection.tableName} ${where}`,
|
|
168
|
+
params,
|
|
169
|
+
{ allowRawOnTenantScoped: true }
|
|
170
|
+
);
|
|
171
|
+
}
|
|
144
172
|
class AccountCollection extends SmrtCollection {
|
|
145
173
|
static _itemClass = Account;
|
|
146
174
|
/**
|
|
@@ -230,14 +258,13 @@ class AccountCollection extends SmrtCollection {
|
|
|
230
258
|
async findByTenant(tenantId2) {
|
|
231
259
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
232
260
|
}
|
|
261
|
+
// Account is the @TenantScoped STI base — see MessageCollection. Route through
|
|
262
|
+
// the raw helpers; no `_meta_type` so the base returns ALL account subtypes.
|
|
233
263
|
async findGlobal() {
|
|
234
|
-
return this
|
|
264
|
+
return queryGlobal(this);
|
|
235
265
|
}
|
|
236
266
|
async findWithGlobals(tenantId2) {
|
|
237
|
-
return this.
|
|
238
|
-
`SELECT * FROM ${this.tableName} WHERE tenant_id = ? OR tenant_id IS NULL`,
|
|
239
|
-
[tenantId2]
|
|
240
|
-
);
|
|
267
|
+
return queryWithGlobals(this, tenantId2, "Account.findWithGlobals");
|
|
241
268
|
}
|
|
242
269
|
}
|
|
243
270
|
const AccountCollection$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -484,13 +511,17 @@ class AttachmentCollection extends SmrtCollection {
|
|
|
484
511
|
async findByTenant(tenantId2) {
|
|
485
512
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
486
513
|
}
|
|
514
|
+
// Attachment is @TenantScoped (CTI, own `attachments` table). Under an active
|
|
515
|
+
// tenant context list({ tenantId: null }) throws and unflagged raw SQL is
|
|
516
|
+
// blocked (#1596); route through the raw helpers.
|
|
487
517
|
async findGlobal() {
|
|
488
|
-
return this
|
|
518
|
+
return queryGlobal(this);
|
|
489
519
|
}
|
|
490
520
|
async findWithGlobals(tenantId2) {
|
|
491
|
-
return
|
|
492
|
-
|
|
493
|
-
|
|
521
|
+
return queryWithGlobals(
|
|
522
|
+
this,
|
|
523
|
+
tenantId2,
|
|
524
|
+
"Attachment.findWithGlobals"
|
|
494
525
|
);
|
|
495
526
|
}
|
|
496
527
|
}
|
|
@@ -1066,14 +1097,15 @@ class MessageCollection extends SmrtCollection {
|
|
|
1066
1097
|
async findByTenant(tenantId2) {
|
|
1067
1098
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
1068
1099
|
}
|
|
1100
|
+
// Message is the @TenantScoped STI base, so an explicit `tenant_id IS NULL`
|
|
1101
|
+
// filter via list() throws and unflagged raw SQL is blocked under an active
|
|
1102
|
+
// tenant context (#1596). Route through the raw helpers — no `_meta_type`
|
|
1103
|
+
// scope so the base collection still returns ALL message subtypes.
|
|
1069
1104
|
async findGlobal() {
|
|
1070
|
-
return this
|
|
1105
|
+
return queryGlobal(this);
|
|
1071
1106
|
}
|
|
1072
1107
|
async findWithGlobals(tenantId2) {
|
|
1073
|
-
return this.
|
|
1074
|
-
`SELECT * FROM ${this.tableName} WHERE tenant_id = ? OR tenant_id IS NULL`,
|
|
1075
|
-
[tenantId2]
|
|
1076
|
-
);
|
|
1108
|
+
return queryWithGlobals(this, tenantId2, "Message.findWithGlobals");
|
|
1077
1109
|
}
|
|
1078
1110
|
}
|
|
1079
1111
|
const MessageCollection$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
@@ -1377,6 +1409,7 @@ EmailAccount = __decorateClass$8([
|
|
|
1377
1409
|
cli: true
|
|
1378
1410
|
})
|
|
1379
1411
|
], EmailAccount);
|
|
1412
|
+
const EMAIL_ACCOUNT_META_TYPE = "@happyvertical/smrt-messages:EmailAccount";
|
|
1380
1413
|
class EmailAccountCollection extends AccountCollection {
|
|
1381
1414
|
static _itemClass = EmailAccount;
|
|
1382
1415
|
/**
|
|
@@ -1532,13 +1565,18 @@ class EmailAccountCollection extends AccountCollection {
|
|
|
1532
1565
|
async findByTenant(tenantId2) {
|
|
1533
1566
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
1534
1567
|
}
|
|
1568
|
+
// EmailAccount inherits Account's @TenantScoped recognition (#1596); see
|
|
1569
|
+
// EmailCollection for why these route through the raw helpers scoped to the
|
|
1570
|
+
// EmailAccount `_meta_type`.
|
|
1535
1571
|
async findGlobal() {
|
|
1536
|
-
return this
|
|
1572
|
+
return queryGlobal(this, EMAIL_ACCOUNT_META_TYPE);
|
|
1537
1573
|
}
|
|
1538
1574
|
async findWithGlobals(tenantId2) {
|
|
1539
|
-
return
|
|
1540
|
-
|
|
1541
|
-
|
|
1575
|
+
return queryWithGlobals(
|
|
1576
|
+
this,
|
|
1577
|
+
tenantId2,
|
|
1578
|
+
"EmailAccount.findWithGlobals",
|
|
1579
|
+
EMAIL_ACCOUNT_META_TYPE
|
|
1542
1580
|
);
|
|
1543
1581
|
}
|
|
1544
1582
|
}
|
|
@@ -1620,13 +1658,17 @@ class EmailAttachmentCollection extends AttachmentCollection {
|
|
|
1620
1658
|
async findByTenant(tenantId2) {
|
|
1621
1659
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
1622
1660
|
}
|
|
1661
|
+
// EmailAttachment is a CTI subclass of the @TenantScoped Attachment (own
|
|
1662
|
+
// `email_attachments` table, no `_meta_type`) and inherits its recognition
|
|
1663
|
+
// (#1596); route global / cross-global lookups through the raw helpers.
|
|
1623
1664
|
async findGlobal() {
|
|
1624
|
-
return this
|
|
1665
|
+
return queryGlobal(this);
|
|
1625
1666
|
}
|
|
1626
1667
|
async findWithGlobals(tenantId2) {
|
|
1627
|
-
return
|
|
1628
|
-
|
|
1629
|
-
|
|
1668
|
+
return queryWithGlobals(
|
|
1669
|
+
this,
|
|
1670
|
+
tenantId2,
|
|
1671
|
+
"EmailAttachment.findWithGlobals"
|
|
1630
1672
|
);
|
|
1631
1673
|
}
|
|
1632
1674
|
}
|
|
@@ -1940,6 +1982,7 @@ const Email$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
1940
1982
|
return Email;
|
|
1941
1983
|
}
|
|
1942
1984
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
1985
|
+
const EMAIL_META_TYPE = "@happyvertical/smrt-messages:Email";
|
|
1943
1986
|
class EmailCollection extends MessageCollection {
|
|
1944
1987
|
static _itemClass = Email;
|
|
1945
1988
|
/**
|
|
@@ -2145,13 +2188,19 @@ class EmailCollection extends MessageCollection {
|
|
|
2145
2188
|
async findByTenant(tenantId2) {
|
|
2146
2189
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
2147
2190
|
}
|
|
2191
|
+
// Now that Email inherits Message's @TenantScoped recognition (#1596), an
|
|
2192
|
+
// explicit `tenant_id IS NULL` filter via list() throws and unflagged raw SQL
|
|
2193
|
+
// is blocked under an active tenant context — so route global / cross-global
|
|
2194
|
+
// lookups through the shared raw helpers, scoped to the Email `_meta_type`.
|
|
2148
2195
|
async findGlobal() {
|
|
2149
|
-
return this
|
|
2196
|
+
return queryGlobal(this, EMAIL_META_TYPE);
|
|
2150
2197
|
}
|
|
2151
2198
|
async findWithGlobals(tenantId2) {
|
|
2152
|
-
return
|
|
2153
|
-
|
|
2154
|
-
|
|
2199
|
+
return queryWithGlobals(
|
|
2200
|
+
this,
|
|
2201
|
+
tenantId2,
|
|
2202
|
+
"Email.findWithGlobals",
|
|
2203
|
+
EMAIL_META_TYPE
|
|
2155
2204
|
);
|
|
2156
2205
|
}
|
|
2157
2206
|
}
|
|
@@ -2479,18 +2528,23 @@ class EmailFolderCollection extends SmrtCollection {
|
|
|
2479
2528
|
return this.list({ where: { tenantId: tenantId2 } });
|
|
2480
2529
|
}
|
|
2481
2530
|
/**
|
|
2482
|
-
* Find all global email folders (no tenant)
|
|
2531
|
+
* Find all global email folders (no tenant).
|
|
2532
|
+
*
|
|
2533
|
+
* EmailFolder is @TenantScoped (CTI, own `email_folders` table). Under an
|
|
2534
|
+
* active tenant context list({ tenantId: null }) throws and unflagged raw SQL
|
|
2535
|
+
* is blocked (#1596); route through the raw helpers.
|
|
2483
2536
|
*/
|
|
2484
2537
|
async findGlobal() {
|
|
2485
|
-
return this
|
|
2538
|
+
return queryGlobal(this);
|
|
2486
2539
|
}
|
|
2487
2540
|
/**
|
|
2488
|
-
* Find email folders for a tenant including global folders
|
|
2541
|
+
* Find email folders for a tenant including global folders.
|
|
2489
2542
|
*/
|
|
2490
2543
|
async findWithGlobals(tenantId2) {
|
|
2491
|
-
return
|
|
2492
|
-
|
|
2493
|
-
|
|
2544
|
+
return queryWithGlobals(
|
|
2545
|
+
this,
|
|
2546
|
+
tenantId2,
|
|
2547
|
+
"EmailFolder.findWithGlobals"
|
|
2494
2548
|
);
|
|
2495
2549
|
}
|
|
2496
2550
|
}
|