@antelopejs/interface-dms-saas 0.0.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.
Files changed (165) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +51 -0
  3. package/dist/billing.d.ts +25 -0
  4. package/dist/billing.js +15 -0
  5. package/dist/billing.js.map +1 -0
  6. package/dist/data-api.d.ts +1 -0
  7. package/dist/data-api.js +6 -0
  8. package/dist/data-api.js.map +1 -0
  9. package/dist/db/index.d.ts +2 -0
  10. package/dist/db/index.js +19 -0
  11. package/dist/db/index.js.map +1 -0
  12. package/dist/db/models/billingSettings.model.d.ts +22 -0
  13. package/dist/db/models/billingSettings.model.js +9 -0
  14. package/dist/db/models/billingSettings.model.js.map +1 -0
  15. package/dist/db/models/creditNotes.model.d.ts +25 -0
  16. package/dist/db/models/creditNotes.model.js +26 -0
  17. package/dist/db/models/creditNotes.model.js.map +1 -0
  18. package/dist/db/models/features.model.d.ts +22 -0
  19. package/dist/db/models/features.model.js +9 -0
  20. package/dist/db/models/features.model.js.map +1 -0
  21. package/dist/db/models/index.d.ts +19 -0
  22. package/dist/db/models/index.js +36 -0
  23. package/dist/db/models/index.js.map +1 -0
  24. package/dist/db/models/invoices.model.d.ts +29 -0
  25. package/dist/db/models/invoices.model.js +60 -0
  26. package/dist/db/models/invoices.model.js.map +1 -0
  27. package/dist/db/models/legalDocuments.model.d.ts +22 -0
  28. package/dist/db/models/legalDocuments.model.js +9 -0
  29. package/dist/db/models/legalDocuments.model.js.map +1 -0
  30. package/dist/db/models/planMigrations.model.d.ts +29 -0
  31. package/dist/db/models/planMigrations.model.js +70 -0
  32. package/dist/db/models/planMigrations.model.js.map +1 -0
  33. package/dist/db/models/plans.model.d.ts +31 -0
  34. package/dist/db/models/plans.model.js +74 -0
  35. package/dist/db/models/plans.model.js.map +1 -0
  36. package/dist/db/models/platformNotes.model.d.ts +33 -0
  37. package/dist/db/models/platformNotes.model.js +27 -0
  38. package/dist/db/models/platformNotes.model.js.map +1 -0
  39. package/dist/db/models/refunds.model.d.ts +23 -0
  40. package/dist/db/models/refunds.model.js +17 -0
  41. package/dist/db/models/refunds.model.js.map +1 -0
  42. package/dist/db/models/revision.d.ts +1 -0
  43. package/dist/db/models/revision.js +14 -0
  44. package/dist/db/models/revision.js.map +1 -0
  45. package/dist/db/models/segments.model.d.ts +29 -0
  46. package/dist/db/models/segments.model.js +81 -0
  47. package/dist/db/models/segments.model.js.map +1 -0
  48. package/dist/db/models/stripeWebhookEvents.model.d.ts +26 -0
  49. package/dist/db/models/stripeWebhookEvents.model.js +70 -0
  50. package/dist/db/models/stripeWebhookEvents.model.js.map +1 -0
  51. package/dist/db/models/supportMessages.model.d.ts +23 -0
  52. package/dist/db/models/supportMessages.model.js +17 -0
  53. package/dist/db/models/supportMessages.model.js.map +1 -0
  54. package/dist/db/models/supportTicketEvents.model.d.ts +22 -0
  55. package/dist/db/models/supportTicketEvents.model.js +9 -0
  56. package/dist/db/models/supportTicketEvents.model.js.map +1 -0
  57. package/dist/db/models/supportTickets.model.d.ts +25 -0
  58. package/dist/db/models/supportTickets.model.js +32 -0
  59. package/dist/db/models/supportTickets.model.js.map +1 -0
  60. package/dist/db/models/tenantBillingInfo.model.d.ts +24 -0
  61. package/dist/db/models/tenantBillingInfo.model.js +20 -0
  62. package/dist/db/models/tenantBillingInfo.model.js.map +1 -0
  63. package/dist/db/models/tenantBillingState.model.d.ts +28 -0
  64. package/dist/db/models/tenantBillingState.model.js +72 -0
  65. package/dist/db/models/tenantBillingState.model.js.map +1 -0
  66. package/dist/db/models/tenantSubscriptions.model.d.ts +51 -0
  67. package/dist/db/models/tenantSubscriptions.model.js +305 -0
  68. package/dist/db/models/tenantSubscriptions.model.js.map +1 -0
  69. package/dist/db/models/trialConsumptions.model.d.ts +24 -0
  70. package/dist/db/models/trialConsumptions.model.js +30 -0
  71. package/dist/db/models/trialConsumptions.model.js.map +1 -0
  72. package/dist/db/models/update-result.d.ts +1 -0
  73. package/dist/db/models/update-result.js +13 -0
  74. package/dist/db/models/update-result.js.map +1 -0
  75. package/dist/db/models/userSegments.model.d.ts +30 -0
  76. package/dist/db/models/userSegments.model.js +97 -0
  77. package/dist/db/models/userSegments.model.js.map +1 -0
  78. package/dist/db/tables/billingSettings.table.d.ts +22 -0
  79. package/dist/db/tables/billingSettings.table.js +73 -0
  80. package/dist/db/tables/billingSettings.table.js.map +1 -0
  81. package/dist/db/tables/creditNotes.table.d.ts +26 -0
  82. package/dist/db/tables/creditNotes.table.js +110 -0
  83. package/dist/db/tables/creditNotes.table.js.map +1 -0
  84. package/dist/db/tables/features.table.d.ts +18 -0
  85. package/dist/db/tables/features.table.js +70 -0
  86. package/dist/db/tables/features.table.js.map +1 -0
  87. package/dist/db/tables/index.d.ts +19 -0
  88. package/dist/db/tables/index.js +36 -0
  89. package/dist/db/tables/index.js.map +1 -0
  90. package/dist/db/tables/invoices.table.d.ts +47 -0
  91. package/dist/db/tables/invoices.table.js +140 -0
  92. package/dist/db/tables/invoices.table.js.map +1 -0
  93. package/dist/db/tables/legalDocuments.table.d.ts +10 -0
  94. package/dist/db/tables/legalDocuments.table.js +44 -0
  95. package/dist/db/tables/legalDocuments.table.js.map +1 -0
  96. package/dist/db/tables/planMigrations.table.d.ts +61 -0
  97. package/dist/db/tables/planMigrations.table.js +114 -0
  98. package/dist/db/tables/planMigrations.table.js.map +1 -0
  99. package/dist/db/tables/plans.table.d.ts +41 -0
  100. package/dist/db/tables/plans.table.js +125 -0
  101. package/dist/db/tables/plans.table.js.map +1 -0
  102. package/dist/db/tables/platformNotes.table.d.ts +13 -0
  103. package/dist/db/tables/platformNotes.table.js +58 -0
  104. package/dist/db/tables/platformNotes.table.js.map +1 -0
  105. package/dist/db/tables/refunds.table.d.ts +15 -0
  106. package/dist/db/tables/refunds.table.js +70 -0
  107. package/dist/db/tables/refunds.table.js.map +1 -0
  108. package/dist/db/tables/segments.table.d.ts +37 -0
  109. package/dist/db/tables/segments.table.js +79 -0
  110. package/dist/db/tables/segments.table.js.map +1 -0
  111. package/dist/db/tables/stripeWebhookEvents.table.d.ts +12 -0
  112. package/dist/db/tables/stripeWebhookEvents.table.js +54 -0
  113. package/dist/db/tables/stripeWebhookEvents.table.js.map +1 -0
  114. package/dist/db/tables/supportMessages.table.d.ts +14 -0
  115. package/dist/db/tables/supportMessages.table.js +62 -0
  116. package/dist/db/tables/supportMessages.table.js.map +1 -0
  117. package/dist/db/tables/supportTicketEvents.table.d.ts +14 -0
  118. package/dist/db/tables/supportTicketEvents.table.js +61 -0
  119. package/dist/db/tables/supportTicketEvents.table.js.map +1 -0
  120. package/dist/db/tables/supportTickets.table.d.ts +25 -0
  121. package/dist/db/tables/supportTickets.table.js +109 -0
  122. package/dist/db/tables/supportTickets.table.js.map +1 -0
  123. package/dist/db/tables/tenantBillingInfo.table.d.ts +24 -0
  124. package/dist/db/tables/tenantBillingInfo.table.js +62 -0
  125. package/dist/db/tables/tenantBillingInfo.table.js.map +1 -0
  126. package/dist/db/tables/tenantBillingState.table.d.ts +12 -0
  127. package/dist/db/tables/tenantBillingState.table.js +59 -0
  128. package/dist/db/tables/tenantBillingState.table.js.map +1 -0
  129. package/dist/db/tables/tenantSubscriptions.table.d.ts +46 -0
  130. package/dist/db/tables/tenantSubscriptions.table.js +157 -0
  131. package/dist/db/tables/tenantSubscriptions.table.js.map +1 -0
  132. package/dist/db/tables/trialConsumptions.table.d.ts +10 -0
  133. package/dist/db/tables/trialConsumptions.table.js +55 -0
  134. package/dist/db/tables/trialConsumptions.table.js.map +1 -0
  135. package/dist/db/tables/userSegments.table.d.ts +11 -0
  136. package/dist/db/tables/userSegments.table.js +56 -0
  137. package/dist/db/tables/userSegments.table.js.map +1 -0
  138. package/dist/hidden-filter.d.ts +1 -0
  139. package/dist/hidden-filter.js +10 -0
  140. package/dist/hidden-filter.js.map +1 -0
  141. package/dist/index.d.ts +8 -0
  142. package/dist/index.js +48 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/invoice-line-items.d.ts +42 -0
  145. package/dist/invoice-line-items.js +83 -0
  146. package/dist/invoice-line-items.js.map +1 -0
  147. package/dist/page-definitions.d.ts +17 -0
  148. package/dist/page-definitions.js +60 -0
  149. package/dist/page-definitions.js.map +1 -0
  150. package/dist/pages.d.ts +59 -0
  151. package/dist/pages.js +88 -0
  152. package/dist/pages.js.map +1 -0
  153. package/dist/plans.d.ts +27 -0
  154. package/dist/plans.js +60 -0
  155. package/dist/plans.js.map +1 -0
  156. package/dist/provisioning.d.ts +5 -0
  157. package/dist/provisioning.js +3 -0
  158. package/dist/provisioning.js.map +1 -0
  159. package/dist/registration.d.ts +6 -0
  160. package/dist/registration.js +9 -0
  161. package/dist/registration.js.map +1 -0
  162. package/dist/workspace-lifecycle.d.ts +27 -0
  163. package/dist/workspace-lifecycle.js +30 -0
  164. package/dist/workspace-lifecycle.js.map +1 -0
  165. package/package.json +108 -0
@@ -0,0 +1,23 @@
1
+ import { SupportMessage } from "../tables/supportMessages.table";
2
+ declare const SupportMessageModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<SupportMessage>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<SupportMessage | undefined>;
7
+ getBy(index: keyof SupportMessage, ...keys: any[]): PromiseLike<SupportMessage[]>;
8
+ getAll(): PromiseLike<SupportMessage[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportMessage> | import("@antelopejs/interface-database-decorators").DeepPartial<SupportMessage>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportMessage>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportMessage>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ fromPlainData(obj: any): SupportMessage;
16
+ fromDatabase(obj: any): SupportMessage | undefined;
17
+ toDatabase(obj: any): Record<string, any>;
18
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
+ };
20
+ export declare class SupportMessageModel extends SupportMessageModel_base {
21
+ hasAttachment(ticketId: string, resourceKey: string): Promise<boolean>;
22
+ }
23
+ export {};
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SupportMessageModel = void 0;
4
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
+ const supportMessages_table_1 = require("../tables/supportMessages.table");
6
+ class SupportMessageModel extends (0, interface_database_decorators_1.BasicDataModel)(supportMessages_table_1.SupportMessage, supportMessages_table_1.supportMessagesTableName) {
7
+ async hasAttachment(ticketId, resourceKey) {
8
+ const count = await this.table
9
+ .getAll(ticketId, "ticketId")
10
+ .filter((row) => row.key("attachments").includes(resourceKey))
11
+ .count()
12
+ .run();
13
+ return count > 0;
14
+ }
15
+ }
16
+ exports.SupportMessageModel = SupportMessageModel;
17
+ //# sourceMappingURL=supportMessages.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supportMessages.model.js","sourceRoot":"","sources":["../../../src/db/models/supportMessages.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,2EAGyC;AAGzC,MAAa,mBAAoB,SAAQ,IAAA,8CAAc,EACrD,sCAAc,EACd,gDAAwB,CACzB;IAEC,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,WAAmB;QACvD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK;aAC3B,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;aAC5B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aAC7D,KAAK,EAAE;aACP,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,GAAG,CAAC,CAAC;IACnB,CAAC;CACF;AAbD,kDAaC"}
@@ -0,0 +1,22 @@
1
+ import { SupportTicketEvent } from "../tables/supportTicketEvents.table";
2
+ declare const SupportTicketEventModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<SupportTicketEvent>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<SupportTicketEvent | undefined>;
7
+ getBy(index: keyof SupportTicketEvent, ...keys: any[]): PromiseLike<SupportTicketEvent[]>;
8
+ getAll(): PromiseLike<SupportTicketEvent[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicketEvent> | import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicketEvent>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicketEvent>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicketEvent>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ fromPlainData(obj: any): SupportTicketEvent;
16
+ fromDatabase(obj: any): SupportTicketEvent | undefined;
17
+ toDatabase(obj: any): Record<string, any>;
18
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
+ };
20
+ export declare class SupportTicketEventModel extends SupportTicketEventModel_base {
21
+ }
22
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SupportTicketEventModel = void 0;
4
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
+ const supportTicketEvents_table_1 = require("../tables/supportTicketEvents.table");
6
+ class SupportTicketEventModel extends (0, interface_database_decorators_1.BasicDataModel)(supportTicketEvents_table_1.SupportTicketEvent, supportTicketEvents_table_1.supportTicketEventsTableName) {
7
+ }
8
+ exports.SupportTicketEventModel = SupportTicketEventModel;
9
+ //# sourceMappingURL=supportTicketEvents.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supportTicketEvents.model.js","sourceRoot":"","sources":["../../../src/db/models/supportTicketEvents.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,mFAG6C;AAG7C,MAAa,uBAAwB,SAAQ,IAAA,8CAAc,EACzD,8CAAkB,EAClB,wDAA4B,CAC7B;CAAG;AAHJ,0DAGI"}
@@ -0,0 +1,25 @@
1
+ import type { AtomicMutationOutcome } from "@antelopejs/interface-database";
2
+ import { SupportTicket } from "../tables/supportTickets.table";
3
+ declare const SupportTicketModel_base: {
4
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
5
+ readonly table: import("@antelopejs/interface-database").Table<SupportTicket>;
6
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
7
+ get(id: string): PromiseLike<SupportTicket | undefined>;
8
+ getBy(index: keyof SupportTicket, ...keys: any[]): PromiseLike<SupportTicket[]>;
9
+ getAll(): PromiseLike<SupportTicket[]>;
10
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicket> | import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicket>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
11
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicket>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SupportTicket>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
13
+ delete(id: string): Promise<number>;
14
+ };
15
+ readonly schemaName: string;
16
+ fromPlainData(obj: any): SupportTicket;
17
+ fromDatabase(obj: any): SupportTicket | undefined;
18
+ toDatabase(obj: any): Record<string, any>;
19
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
20
+ };
21
+ export declare class SupportTicketModel extends SupportTicketModel_base {
22
+ publish(ticket: SupportTicket, expectedMutationId: string): Promise<AtomicMutationOutcome>;
23
+ settlePublication(id: string, operationId: string): Promise<AtomicMutationOutcome>;
24
+ }
25
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SupportTicketModel = void 0;
4
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
+ const supportTickets_table_1 = require("../tables/supportTickets.table");
6
+ class SupportTicketModel extends (0, interface_database_decorators_1.BasicDataModel)(supportTickets_table_1.SupportTicket, supportTickets_table_1.supportTicketsTableName) {
7
+ publish(ticket, expectedMutationId) {
8
+ const { _id, mutationId, ...patch } = ticket;
9
+ return this.table
10
+ .atomicMutation(_id, {
11
+ type: "update",
12
+ revisionField: "mutationId",
13
+ expectedRevision: expectedMutationId,
14
+ nextRevision: mutationId,
15
+ patch,
16
+ })
17
+ .run();
18
+ }
19
+ settlePublication(id, operationId) {
20
+ return this.table
21
+ .atomicMutation(id, {
22
+ type: "update",
23
+ revisionField: "mutationId",
24
+ expectedRevision: operationId,
25
+ nextRevision: `${operationId}:settled`,
26
+ patch: { publicationId: null },
27
+ })
28
+ .run();
29
+ }
30
+ }
31
+ exports.SupportTicketModel = SupportTicketModel;
32
+ //# sourceMappingURL=supportTickets.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supportTickets.model.js","sourceRoot":"","sources":["../../../src/db/models/supportTickets.model.ts"],"names":[],"mappings":";;;AACA,6FAA2E;AAC3E,yEAGwC;AAMxC,MAAa,kBAAmB,SAAQ,IAAA,8CAAc,EACpD,oCAAa,EACb,8CAAuB,CACxB;IAEC,OAAO,CACL,MAAqB,EACrB,kBAA0B;QAE1B,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK;aACd,cAAc,CAAC,GAAG,EAAE;YACnB,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,kBAAkB;YACpC,YAAY,EAAE,UAAU;YACxB,KAAK;SACN,CAAC;aACD,GAAG,EAAE,CAAC;IACX,CAAC;IAGD,iBAAiB,CACf,EAAU,EACV,WAAmB;QAEnB,OAAO,IAAI,CAAC,KAAK;aACd,cAAc,CAAC,EAAE,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,WAAW;YAC7B,YAAY,EAAE,GAAG,WAAW,UAAU;YACtC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;SAC/B,CAAC;aACD,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AApCD,gDAoCC"}
@@ -0,0 +1,24 @@
1
+ import { TenantBillingInfo } from "../tables/tenantBillingInfo.table";
2
+ declare const TenantBillingInfoModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<TenantBillingInfo>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<TenantBillingInfo | undefined>;
7
+ getBy(index: keyof TenantBillingInfo, ...keys: any[]): PromiseLike<TenantBillingInfo[]>;
8
+ getAll(): PromiseLike<TenantBillingInfo[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingInfo> | import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingInfo>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingInfo>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingInfo>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ fromPlainData(obj: any): TenantBillingInfo;
16
+ fromDatabase(obj: any): TenantBillingInfo | undefined;
17
+ toDatabase(obj: any): Record<string, any>;
18
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
+ };
20
+ export declare class TenantBillingInfoModel extends TenantBillingInfoModel_base {
21
+ findOne(): Promise<TenantBillingInfo | undefined>;
22
+ deleteAll(): Promise<void>;
23
+ }
24
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantBillingInfoModel = void 0;
4
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
5
+ const tenantBillingInfo_table_1 = require("../tables/tenantBillingInfo.table");
6
+ class TenantBillingInfoModel extends (0, interface_database_decorators_1.BasicDataModel)(tenantBillingInfo_table_1.TenantBillingInfo, tenantBillingInfo_table_1.tenantBillingInfoTableName) {
7
+ async findOne() {
8
+ const row = await this.table
9
+ .orderBy("updatedAt", "desc")
10
+ .nth(0)
11
+ .default(undefined)
12
+ .run();
13
+ return row ? TenantBillingInfoModel.fromDatabase(row) : undefined;
14
+ }
15
+ async deleteAll() {
16
+ await this.table.delete().run();
17
+ }
18
+ }
19
+ exports.TenantBillingInfoModel = TenantBillingInfoModel;
20
+ //# sourceMappingURL=tenantBillingInfo.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenantBillingInfo.model.js","sourceRoot":"","sources":["../../../src/db/models/tenantBillingInfo.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,+EAG2C;AAG3C,MAAa,sBAAuB,SAAQ,IAAA,8CAAc,EACxD,2CAAiB,EACjB,oDAA0B,CAC3B;IACC,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK;aACzB,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,SAAS,CAAC;aAClB,GAAG,EAAE,CAAC;QACT,OAAO,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;CACF;AAhBD,wDAgBC"}
@@ -0,0 +1,28 @@
1
+ import { type BillingState, TenantBillingState } from "../tables/tenantBillingState.table";
2
+ declare const TenantBillingStateModel_base: {
3
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
4
+ readonly table: import("@antelopejs/interface-database").Table<TenantBillingState>;
5
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
6
+ get(id: string): PromiseLike<TenantBillingState | undefined>;
7
+ getBy(index: keyof TenantBillingState, ...keys: any[]): PromiseLike<TenantBillingState[]>;
8
+ getAll(): PromiseLike<TenantBillingState[]>;
9
+ insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingState> | import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingState>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
10
+ update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingState>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
11
+ update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<TenantBillingState>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
12
+ delete(id: string): Promise<number>;
13
+ };
14
+ readonly schemaName: string;
15
+ fromPlainData(obj: any): TenantBillingState;
16
+ fromDatabase(obj: any): TenantBillingState | undefined;
17
+ toDatabase(obj: any): Record<string, any>;
18
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
19
+ };
20
+ export declare class TenantBillingStateModel extends TenantBillingStateModel_base {
21
+ findByTenant(tenantId: string): Promise<TenantBillingState | undefined>;
22
+ upsertForTenant(tenantId: string, billingState: BillingState, existing: TenantBillingState | undefined): Promise<boolean>;
23
+ private publish;
24
+ private insertPublication;
25
+ countByState(billingState: BillingState): Promise<number>;
26
+ deleteForTenant(tenantId: string): Promise<void>;
27
+ }
28
+ export {};
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantBillingStateModel = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
6
+ const tenantBillingState_table_1 = require("../tables/tenantBillingState.table");
7
+ const DELETE_ATTEMPTS = 3;
8
+ class TenantBillingStateModel extends (0, interface_database_decorators_1.BasicDataModel)(tenantBillingState_table_1.TenantBillingState, tenantBillingState_table_1.tenantBillingStateTableName) {
9
+ async findByTenant(tenantId) {
10
+ return this.get(tenantId);
11
+ }
12
+ async upsertForTenant(tenantId, billingState, existing) {
13
+ if (existing?.deletedAt)
14
+ return true;
15
+ return this.publish(tenantId, existing, billingState, null);
16
+ }
17
+ async publish(tenantId, existing, billingState, deletedAt) {
18
+ const revision = (0, node_crypto_1.randomUUID)();
19
+ const patch = { tenantId, billingState, updatedAt: new Date(), deletedAt };
20
+ if (!existing)
21
+ return this.insertPublication({ _id: tenantId, ...patch, revision });
22
+ const outcome = await this.table
23
+ .atomicMutation(tenantId, {
24
+ type: "update",
25
+ revisionField: "revision",
26
+ expectedRevision: existing.revision,
27
+ nextRevision: revision,
28
+ patch,
29
+ })
30
+ .run();
31
+ if (outcome === "unknown")
32
+ throw new Error("Billing publication outcome is unknown");
33
+ return outcome === "applied";
34
+ }
35
+ async insertPublication(row) {
36
+ try {
37
+ await this.insert(row);
38
+ }
39
+ catch (error) {
40
+ const current = await this.get(row._id);
41
+ if (!current)
42
+ throw error;
43
+ return current.revision === row.revision;
44
+ }
45
+ const current = await this.get(row._id);
46
+ if (!current)
47
+ throw new Error("Billing publication was not persisted");
48
+ return current.revision === row.revision;
49
+ }
50
+ async countByState(billingState) {
51
+ return this.table
52
+ .getAll(billingState, "billingState")
53
+ .filter((row) => row
54
+ .key("deletedAt")
55
+ .eq(null)
56
+ .and(row.key("_id").eq(row.key("tenantId"))))
57
+ .count()
58
+ .run();
59
+ }
60
+ async deleteForTenant(tenantId) {
61
+ for (let attempt = 0; attempt < DELETE_ATTEMPTS; attempt++) {
62
+ const existing = await this.get(tenantId);
63
+ if (existing?.deletedAt)
64
+ return;
65
+ if (await this.publish(tenantId, existing, "cancelled", new Date()))
66
+ return;
67
+ }
68
+ throw new Error("Billing deletion conflicted with a concurrent publication");
69
+ }
70
+ }
71
+ exports.TenantBillingStateModel = TenantBillingStateModel;
72
+ //# sourceMappingURL=tenantBillingState.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenantBillingState.model.js","sourceRoot":"","sources":["../../../src/db/models/tenantBillingState.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { AtomicMutationOutcome } from "@antelopejs/interface-database";
2
+ import { type DeepPartial, type ValidateOptions } from "@antelopejs/interface-database-decorators";
3
+ import { TenantSubscription, type SubscriptionCronNotification, type SubscriptionTransition, type TenantSubscriptionStatus } from "../tables/tenantSubscriptions.table";
4
+ declare const TenantSubscriptionModel_base: {
5
+ new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
6
+ readonly table: import("@antelopejs/interface-database").Table<TenantSubscription>;
7
+ readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
8
+ get(id: string): PromiseLike<TenantSubscription | undefined>;
9
+ getBy(index: keyof TenantSubscription, ...keys: any[]): PromiseLike<TenantSubscription[]>;
10
+ getAll(): PromiseLike<TenantSubscription[]>;
11
+ insert(obj: DeepPartial<TenantSubscription> | DeepPartial<TenantSubscription>[], options?: ValidateOptions): Promise<string[]>;
12
+ update(id: string, obj: DeepPartial<TenantSubscription>, options?: ValidateOptions): Promise<number>;
13
+ update(obj: DeepPartial<TenantSubscription>, options?: ValidateOptions): Promise<number>;
14
+ delete(id: string): Promise<number>;
15
+ };
16
+ readonly schemaName: string;
17
+ fromPlainData(obj: any): TenantSubscription;
18
+ fromDatabase(obj: any): TenantSubscription | undefined;
19
+ toDatabase(obj: any): Record<string, any>;
20
+ validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
21
+ };
22
+ export declare class TenantSubscriptionModel extends TenantSubscriptionModel_base {
23
+ insert(rows: DeepPartial<TenantSubscription> | DeepPartial<TenantSubscription>[], options?: ValidateOptions): Promise<string[]>;
24
+ mutateRevision(current: TenantSubscription, patch: DeepPartial<TenantSubscription>): Promise<AtomicMutationOutcome>;
25
+ update(id: string, patch: DeepPartial<TenantSubscription>, options?: ValidateOptions): Promise<number>;
26
+ update(patch: DeepPartial<TenantSubscription>, options?: ValidateOptions): Promise<number>;
27
+ beginTransition(current: TenantSubscription, intent: SubscriptionTransition): Promise<void>;
28
+ updateDuringTransition(id: string, operationId: string, patch: DeepPartial<TenantSubscription>): Promise<void>;
29
+ completeTransition(id: string, operationId: string, patch: DeepPartial<TenantSubscription>): Promise<void>;
30
+ findOne(): Promise<TenantSubscription | undefined>;
31
+ findOneByStripeCustomer(stripeCustomerId: string): Promise<TenantSubscription | undefined>;
32
+ findByCardFingerprint(cardFingerprint: string): Promise<TenantSubscription[]>;
33
+ findByPlan(planId: string): Promise<TenantSubscription[]>;
34
+ countByPlan(planId: string): Promise<number>;
35
+ claimSelfRefund(subscriptionId: string): Promise<boolean>;
36
+ releaseSelfRefund(subscriptionId: string): Promise<void>;
37
+ findByStatus(status: TenantSubscriptionStatus): Promise<TenantSubscription[]>;
38
+ findCancelledOrPastDue(): Promise<TenantSubscription[]>;
39
+ findCancelledUpdatedBefore(cutoff: Date): Promise<TenantSubscription[]>;
40
+ findPastDueSinceBefore(cutoff: Date): Promise<TenantSubscription[]>;
41
+ suspendPastDue(subscriptionId: string, cutoff: Date): Promise<void>;
42
+ findExpiredFreeBefore(cutoff: Date): Promise<TenantSubscription[]>;
43
+ findFreeEndingBetween(start: Date, end: Date): Promise<TenantSubscription[]>;
44
+ expireFree(subscriptionId: string, cutoff: Date): Promise<void>;
45
+ findCronNotifications(kind: SubscriptionCronNotification["kind"]): Promise<TenantSubscription[]>;
46
+ completeCronNotification(subscription: TenantSubscription): Promise<void>;
47
+ beginCancelledDeletion(subscriptionId: string, cutoff: Date): Promise<TenantSubscription | undefined>;
48
+ finishDeletion(subscription: TenantSubscription): Promise<void>;
49
+ deleteAll(): Promise<void>;
50
+ }
51
+ export {};