@shdan/submesh 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/contracts.d.ts +191 -0
  4. package/dist/contracts.d.ts.map +1 -0
  5. package/dist/contracts.js +2 -0
  6. package/dist/contracts.js.map +1 -0
  7. package/dist/drizzle/catalog-mapping-repository.d.ts +280 -0
  8. package/dist/drizzle/catalog-mapping-repository.d.ts.map +1 -0
  9. package/dist/drizzle/catalog-mapping-repository.js +62 -0
  10. package/dist/drizzle/catalog-mapping-repository.js.map +1 -0
  11. package/dist/drizzle/ensure-schema.d.ts +3 -0
  12. package/dist/drizzle/ensure-schema.d.ts.map +1 -0
  13. package/dist/drizzle/ensure-schema.js +100 -0
  14. package/dist/drizzle/ensure-schema.js.map +1 -0
  15. package/dist/drizzle/inbound-event-repository.d.ts +960 -0
  16. package/dist/drizzle/inbound-event-repository.d.ts.map +1 -0
  17. package/dist/drizzle/inbound-event-repository.js +148 -0
  18. package/dist/drizzle/inbound-event-repository.js.map +1 -0
  19. package/dist/drizzle/index.d.ts +40 -0
  20. package/dist/drizzle/index.d.ts.map +1 -0
  21. package/dist/drizzle/index.js +57 -0
  22. package/dist/drizzle/index.js.map +1 -0
  23. package/dist/drizzle/migrate.d.ts +11 -0
  24. package/dist/drizzle/migrate.d.ts.map +1 -0
  25. package/dist/drizzle/migrate.js +22 -0
  26. package/dist/drizzle/migrate.js.map +1 -0
  27. package/dist/drizzle/plan-repository.d.ts +497 -0
  28. package/dist/drizzle/plan-repository.d.ts.map +1 -0
  29. package/dist/drizzle/plan-repository.js +70 -0
  30. package/dist/drizzle/plan-repository.js.map +1 -0
  31. package/dist/drizzle/plugin-installation-repository.d.ts +26 -0
  32. package/dist/drizzle/plugin-installation-repository.d.ts.map +1 -0
  33. package/dist/drizzle/plugin-installation-repository.js +71 -0
  34. package/dist/drizzle/plugin-installation-repository.js.map +1 -0
  35. package/dist/drizzle/repository-set.d.ts +4 -0
  36. package/dist/drizzle/repository-set.d.ts.map +1 -0
  37. package/dist/drizzle/repository-set.js +19 -0
  38. package/dist/drizzle/repository-set.js.map +1 -0
  39. package/dist/drizzle/schema.d.ts +2370 -0
  40. package/dist/drizzle/schema.d.ts.map +1 -0
  41. package/dist/drizzle/schema.js +103 -0
  42. package/dist/drizzle/schema.js.map +1 -0
  43. package/dist/drizzle/subject-repository.d.ts +295 -0
  44. package/dist/drizzle/subject-repository.d.ts.map +1 -0
  45. package/dist/drizzle/subject-repository.js +76 -0
  46. package/dist/drizzle/subject-repository.js.map +1 -0
  47. package/dist/drizzle/subscription-repository.d.ts +60 -0
  48. package/dist/drizzle/subscription-repository.d.ts.map +1 -0
  49. package/dist/drizzle/subscription-repository.js +128 -0
  50. package/dist/drizzle/subscription-repository.js.map +1 -0
  51. package/dist/drizzle/summary-repository.d.ts +9 -0
  52. package/dist/drizzle/summary-repository.d.ts.map +1 -0
  53. package/dist/drizzle/summary-repository.js +25 -0
  54. package/dist/drizzle/summary-repository.js.map +1 -0
  55. package/dist/drizzle/types.d.ts +4 -0
  56. package/dist/drizzle/types.d.ts.map +1 -0
  57. package/dist/drizzle/types.js +2 -0
  58. package/dist/drizzle/types.js.map +1 -0
  59. package/dist/errors.d.ts +10 -0
  60. package/dist/errors.d.ts.map +1 -0
  61. package/dist/errors.js +13 -0
  62. package/dist/errors.js.map +1 -0
  63. package/dist/hooks.d.ts +24 -0
  64. package/dist/hooks.d.ts.map +1 -0
  65. package/dist/hooks.js +2 -0
  66. package/dist/hooks.js.map +1 -0
  67. package/dist/index.d.ts +11 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +9 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/logger.d.ts +16 -0
  72. package/dist/logger.d.ts.map +1 -0
  73. package/dist/logger.js +8 -0
  74. package/dist/logger.js.map +1 -0
  75. package/dist/plugins/builtin-plugins.d.ts +3 -0
  76. package/dist/plugins/builtin-plugins.d.ts.map +1 -0
  77. package/dist/plugins/builtin-plugins.js +7 -0
  78. package/dist/plugins/builtin-plugins.js.map +1 -0
  79. package/dist/plugins/hash-payload.d.ts +2 -0
  80. package/dist/plugins/hash-payload.d.ts.map +1 -0
  81. package/dist/plugins/hash-payload.js +5 -0
  82. package/dist/plugins/hash-payload.js.map +1 -0
  83. package/dist/plugins/manual.d.ts +12 -0
  84. package/dist/plugins/manual.d.ts.map +1 -0
  85. package/dist/plugins/manual.js +87 -0
  86. package/dist/plugins/manual.js.map +1 -0
  87. package/dist/plugins/plan-provisioning.d.ts +18 -0
  88. package/dist/plugins/plan-provisioning.d.ts.map +1 -0
  89. package/dist/plugins/plan-provisioning.js +159 -0
  90. package/dist/plugins/plan-provisioning.js.map +1 -0
  91. package/dist/plugins/plugin-registry.d.ts +9 -0
  92. package/dist/plugins/plugin-registry.d.ts.map +1 -0
  93. package/dist/plugins/plugin-registry.js +18 -0
  94. package/dist/plugins/plugin-registry.js.map +1 -0
  95. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts +4 -0
  96. package/dist/providers/apple/plugin/app-store-plan-sync.d.ts.map +1 -0
  97. package/dist/providers/apple/plugin/app-store-plan-sync.js +85 -0
  98. package/dist/providers/apple/plugin/app-store-plan-sync.js.map +1 -0
  99. package/dist/providers/apple/plugin/app-store.d.ts +20 -0
  100. package/dist/providers/apple/plugin/app-store.d.ts.map +1 -0
  101. package/dist/providers/apple/plugin/app-store.js +397 -0
  102. package/dist/providers/apple/plugin/app-store.js.map +1 -0
  103. package/dist/providers/apple/security/app-store-verification.d.ts +4 -0
  104. package/dist/providers/apple/security/app-store-verification.d.ts.map +1 -0
  105. package/dist/providers/apple/security/app-store-verification.js +100 -0
  106. package/dist/providers/apple/security/app-store-verification.js.map +1 -0
  107. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts +3 -0
  108. package/dist/providers/apple/services/app-store-subscription-verification-service.d.ts.map +1 -0
  109. package/dist/providers/apple/services/app-store-subscription-verification-service.js +155 -0
  110. package/dist/providers/apple/services/app-store-subscription-verification-service.js.map +1 -0
  111. package/dist/providers/google/plugin/play-plan-sync.d.ts +4 -0
  112. package/dist/providers/google/plugin/play-plan-sync.d.ts.map +1 -0
  113. package/dist/providers/google/plugin/play-plan-sync.js +270 -0
  114. package/dist/providers/google/plugin/play-plan-sync.js.map +1 -0
  115. package/dist/providers/google/plugin/play.d.ts +20 -0
  116. package/dist/providers/google/plugin/play.d.ts.map +1 -0
  117. package/dist/providers/google/plugin/play.js +460 -0
  118. package/dist/providers/google/plugin/play.js.map +1 -0
  119. package/dist/providers/google/security/oauth.d.ts +10 -0
  120. package/dist/providers/google/security/oauth.d.ts.map +1 -0
  121. package/dist/providers/google/security/oauth.js +116 -0
  122. package/dist/providers/google/security/oauth.js.map +1 -0
  123. package/dist/providers/google/security/pubsub-verification.d.ts +3 -0
  124. package/dist/providers/google/security/pubsub-verification.d.ts.map +1 -0
  125. package/dist/providers/google/security/pubsub-verification.js +229 -0
  126. package/dist/providers/google/security/pubsub-verification.js.map +1 -0
  127. package/dist/providers/google/services/play-subscription-verification-service.d.ts +3 -0
  128. package/dist/providers/google/services/play-subscription-verification-service.d.ts.map +1 -0
  129. package/dist/providers/google/services/play-subscription-verification-service.js +96 -0
  130. package/dist/providers/google/services/play-subscription-verification-service.js.map +1 -0
  131. package/dist/repositories/catalog-mapping-repository.d.ts +9 -0
  132. package/dist/repositories/catalog-mapping-repository.d.ts.map +1 -0
  133. package/dist/repositories/catalog-mapping-repository.js +2 -0
  134. package/dist/repositories/catalog-mapping-repository.js.map +1 -0
  135. package/dist/repositories/inbound-event-repository.d.ts +23 -0
  136. package/dist/repositories/inbound-event-repository.d.ts.map +1 -0
  137. package/dist/repositories/inbound-event-repository.js +2 -0
  138. package/dist/repositories/inbound-event-repository.js.map +1 -0
  139. package/dist/repositories/index.d.ts +30 -0
  140. package/dist/repositories/index.d.ts.map +1 -0
  141. package/dist/repositories/index.js +2 -0
  142. package/dist/repositories/index.js.map +1 -0
  143. package/dist/repositories/plan-repository.d.ts +10 -0
  144. package/dist/repositories/plan-repository.d.ts.map +1 -0
  145. package/dist/repositories/plan-repository.js +2 -0
  146. package/dist/repositories/plan-repository.js.map +1 -0
  147. package/dist/repositories/plugin-installation-repository.d.ts +13 -0
  148. package/dist/repositories/plugin-installation-repository.d.ts.map +1 -0
  149. package/dist/repositories/plugin-installation-repository.js +2 -0
  150. package/dist/repositories/plugin-installation-repository.js.map +1 -0
  151. package/dist/repositories/subject-repository.d.ts +10 -0
  152. package/dist/repositories/subject-repository.d.ts.map +1 -0
  153. package/dist/repositories/subject-repository.js +2 -0
  154. package/dist/repositories/subject-repository.js.map +1 -0
  155. package/dist/repositories/subscription-repository.d.ts +24 -0
  156. package/dist/repositories/subscription-repository.d.ts.map +1 -0
  157. package/dist/repositories/subscription-repository.js +2 -0
  158. package/dist/repositories/subscription-repository.js.map +1 -0
  159. package/dist/security/jwt.d.ts +22 -0
  160. package/dist/security/jwt.d.ts.map +1 -0
  161. package/dist/security/jwt.js +132 -0
  162. package/dist/security/jwt.js.map +1 -0
  163. package/dist/security/plugin-webhook-verification.d.ts +3 -0
  164. package/dist/security/plugin-webhook-verification.d.ts.map +1 -0
  165. package/dist/security/plugin-webhook-verification.js +44 -0
  166. package/dist/security/plugin-webhook-verification.js.map +1 -0
  167. package/dist/security/relay-signature.d.ts +12 -0
  168. package/dist/security/relay-signature.d.ts.map +1 -0
  169. package/dist/security/relay-signature.js +39 -0
  170. package/dist/security/relay-signature.js.map +1 -0
  171. package/dist/services/canonical-subscription-service.d.ts +4 -0
  172. package/dist/services/canonical-subscription-service.d.ts.map +1 -0
  173. package/dist/services/canonical-subscription-service.js +20 -0
  174. package/dist/services/canonical-subscription-service.js.map +1 -0
  175. package/dist/services/managed-subscription-service.d.ts +5 -0
  176. package/dist/services/managed-subscription-service.d.ts.map +1 -0
  177. package/dist/services/managed-subscription-service.js +24 -0
  178. package/dist/services/managed-subscription-service.js.map +1 -0
  179. package/dist/services/plan-provisioning-service.d.ts +5 -0
  180. package/dist/services/plan-provisioning-service.d.ts.map +1 -0
  181. package/dist/services/plan-provisioning-service.js +100 -0
  182. package/dist/services/plan-provisioning-service.js.map +1 -0
  183. package/dist/services/plan-resolution.d.ts +4 -0
  184. package/dist/services/plan-resolution.d.ts.map +1 -0
  185. package/dist/services/plan-resolution.js +33 -0
  186. package/dist/services/plan-resolution.js.map +1 -0
  187. package/dist/services/plugin-installation-service.d.ts +6 -0
  188. package/dist/services/plugin-installation-service.d.ts.map +1 -0
  189. package/dist/services/plugin-installation-service.js +19 -0
  190. package/dist/services/plugin-installation-service.js.map +1 -0
  191. package/dist/services/provider-subscription-sync-service.d.ts +4 -0
  192. package/dist/services/provider-subscription-sync-service.d.ts.map +1 -0
  193. package/dist/services/provider-subscription-sync-service.js +13 -0
  194. package/dist/services/provider-subscription-sync-service.js.map +1 -0
  195. package/dist/services/subject-resolution.d.ts +4 -0
  196. package/dist/services/subject-resolution.d.ts.map +1 -0
  197. package/dist/services/subject-resolution.js +48 -0
  198. package/dist/services/subject-resolution.js.map +1 -0
  199. package/dist/services/webhook-ingestion-service.d.ts +14 -0
  200. package/dist/services/webhook-ingestion-service.d.ts.map +1 -0
  201. package/dist/services/webhook-ingestion-service.js +149 -0
  202. package/dist/services/webhook-ingestion-service.js.map +1 -0
  203. package/dist/submesh.d.ts +265 -0
  204. package/dist/submesh.d.ts.map +1 -0
  205. package/dist/submesh.js +602 -0
  206. package/dist/submesh.js.map +1 -0
  207. package/dist/utils/canonical.d.ts +7 -0
  208. package/dist/utils/canonical.d.ts.map +1 -0
  209. package/dist/utils/canonical.js +8 -0
  210. package/dist/utils/canonical.js.map +1 -0
  211. package/dist/utils/parse.d.ts +42 -0
  212. package/dist/utils/parse.d.ts.map +1 -0
  213. package/dist/utils/parse.js +74 -0
  214. package/dist/utils/parse.js.map +1 -0
  215. package/dist/utils/records.d.ts +2 -0
  216. package/dist/utils/records.d.ts.map +1 -0
  217. package/dist/utils/records.js +7 -0
  218. package/dist/utils/records.js.map +1 -0
  219. package/dist/utils/time.d.ts +2 -0
  220. package/dist/utils/time.d.ts.map +1 -0
  221. package/dist/utils/time.js +4 -0
  222. package/dist/utils/time.js.map +1 -0
  223. package/dist/utils/validation.d.ts +10 -0
  224. package/dist/utils/validation.d.ts.map +1 -0
  225. package/dist/utils/validation.js +19 -0
  226. package/dist/utils/validation.js.map +1 -0
  227. package/drizzle/0000_cute_the_order.sql +94 -0
  228. package/drizzle/meta/0000_snapshot.json +559 -0
  229. package/drizzle/meta/_journal.json +13 -0
  230. package/package.json +54 -0
@@ -0,0 +1,497 @@
1
+ import type { PlanRepository } from "../repositories/plan-repository.js";
2
+ import type { CreatePlanInput, UpdatePlanInput } from "../contracts.js";
3
+ import type { SubmeshDrizzleDatabase } from "./types.js";
4
+ export declare class DrizzlePlanRepository implements PlanRepository {
5
+ private readonly db;
6
+ constructor(db: SubmeshDrizzleDatabase);
7
+ list(): Omit<import("drizzle-orm/pg-core").PgSelectBase<"plans", {
8
+ id: import("drizzle-orm/pg-core").PgColumn<{
9
+ name: "id";
10
+ tableName: "plans";
11
+ dataType: "string";
12
+ columnType: "PgText";
13
+ data: string;
14
+ driverParam: string;
15
+ notNull: true;
16
+ hasDefault: false;
17
+ isPrimaryKey: true;
18
+ isAutoincrement: false;
19
+ hasRuntimeDefault: false;
20
+ enumValues: [string, ...string[]];
21
+ baseColumn: never;
22
+ identity: undefined;
23
+ generated: undefined;
24
+ }, {}, {}>;
25
+ code: import("drizzle-orm/pg-core").PgColumn<{
26
+ name: "code";
27
+ tableName: "plans";
28
+ dataType: "string";
29
+ columnType: "PgText";
30
+ data: string;
31
+ driverParam: string;
32
+ notNull: true;
33
+ hasDefault: false;
34
+ isPrimaryKey: false;
35
+ isAutoincrement: false;
36
+ hasRuntimeDefault: false;
37
+ enumValues: [string, ...string[]];
38
+ baseColumn: never;
39
+ identity: undefined;
40
+ generated: undefined;
41
+ }, {}, {}>;
42
+ name: import("drizzle-orm/pg-core").PgColumn<{
43
+ name: "name";
44
+ tableName: "plans";
45
+ dataType: "string";
46
+ columnType: "PgText";
47
+ data: string;
48
+ driverParam: string;
49
+ notNull: true;
50
+ hasDefault: false;
51
+ isPrimaryKey: false;
52
+ isAutoincrement: false;
53
+ hasRuntimeDefault: false;
54
+ enumValues: [string, ...string[]];
55
+ baseColumn: never;
56
+ identity: undefined;
57
+ generated: undefined;
58
+ }, {}, {}>;
59
+ description: import("drizzle-orm/pg-core").PgColumn<{
60
+ name: "description";
61
+ tableName: "plans";
62
+ dataType: "string";
63
+ columnType: "PgText";
64
+ data: string;
65
+ driverParam: string;
66
+ notNull: false;
67
+ hasDefault: false;
68
+ isPrimaryKey: false;
69
+ isAutoincrement: false;
70
+ hasRuntimeDefault: false;
71
+ enumValues: [string, ...string[]];
72
+ baseColumn: never;
73
+ identity: undefined;
74
+ generated: undefined;
75
+ }, {}, {}>;
76
+ interval: import("drizzle-orm/pg-core").PgColumn<{
77
+ name: "interval_unit";
78
+ tableName: "plans";
79
+ dataType: "string";
80
+ columnType: "PgText";
81
+ data: import("packages/core/dist/index.js").PlanInterval;
82
+ driverParam: string;
83
+ notNull: true;
84
+ hasDefault: false;
85
+ isPrimaryKey: false;
86
+ isAutoincrement: false;
87
+ hasRuntimeDefault: false;
88
+ enumValues: [string, ...string[]];
89
+ baseColumn: never;
90
+ identity: undefined;
91
+ generated: undefined;
92
+ }, {}, {
93
+ $type: import("packages/core/dist/index.js").PlanInterval;
94
+ }>;
95
+ priceAmount: import("drizzle-orm/pg-core").PgColumn<{
96
+ name: "price_amount";
97
+ tableName: "plans";
98
+ dataType: "number";
99
+ columnType: "PgInteger";
100
+ data: number;
101
+ driverParam: string | number;
102
+ notNull: true;
103
+ hasDefault: false;
104
+ isPrimaryKey: false;
105
+ isAutoincrement: false;
106
+ hasRuntimeDefault: false;
107
+ enumValues: undefined;
108
+ baseColumn: never;
109
+ identity: undefined;
110
+ generated: undefined;
111
+ }, {}, {}>;
112
+ currency: import("drizzle-orm/pg-core").PgColumn<{
113
+ name: "currency";
114
+ tableName: "plans";
115
+ dataType: "string";
116
+ columnType: "PgText";
117
+ data: string;
118
+ driverParam: string;
119
+ notNull: true;
120
+ hasDefault: false;
121
+ isPrimaryKey: false;
122
+ isAutoincrement: false;
123
+ hasRuntimeDefault: false;
124
+ enumValues: [string, ...string[]];
125
+ baseColumn: never;
126
+ identity: undefined;
127
+ generated: undefined;
128
+ }, {}, {}>;
129
+ entitlements: import("drizzle-orm/pg-core").PgColumn<{
130
+ name: "entitlements";
131
+ tableName: "plans";
132
+ dataType: "array";
133
+ columnType: "PgArray";
134
+ data: string[];
135
+ driverParam: string | string[];
136
+ notNull: true;
137
+ hasDefault: false;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: false;
141
+ enumValues: [string, ...string[]];
142
+ baseColumn: import("drizzle-orm").Column<{
143
+ name: "entitlements";
144
+ tableName: "plans";
145
+ dataType: "string";
146
+ columnType: "PgText";
147
+ data: string;
148
+ driverParam: string;
149
+ notNull: false;
150
+ hasDefault: false;
151
+ isPrimaryKey: false;
152
+ isAutoincrement: false;
153
+ hasRuntimeDefault: false;
154
+ enumValues: [string, ...string[]];
155
+ baseColumn: never;
156
+ identity: undefined;
157
+ generated: undefined;
158
+ }, {}, {}>;
159
+ identity: undefined;
160
+ generated: undefined;
161
+ }, {}, {
162
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
163
+ name: "entitlements";
164
+ dataType: "string";
165
+ columnType: "PgText";
166
+ data: string;
167
+ enumValues: [string, ...string[]];
168
+ driverParam: string;
169
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
170
+ size: undefined;
171
+ }>;
172
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
173
+ name: "metadata";
174
+ tableName: "plans";
175
+ dataType: "json";
176
+ columnType: "PgJsonb";
177
+ data: Record<string, unknown>;
178
+ driverParam: unknown;
179
+ notNull: true;
180
+ hasDefault: false;
181
+ isPrimaryKey: false;
182
+ isAutoincrement: false;
183
+ hasRuntimeDefault: false;
184
+ enumValues: undefined;
185
+ baseColumn: never;
186
+ identity: undefined;
187
+ generated: undefined;
188
+ }, {}, {
189
+ $type: Record<string, unknown>;
190
+ }>;
191
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
192
+ name: "created_at";
193
+ tableName: "plans";
194
+ dataType: "string";
195
+ columnType: "PgText";
196
+ data: string;
197
+ driverParam: string;
198
+ notNull: true;
199
+ hasDefault: false;
200
+ isPrimaryKey: false;
201
+ isAutoincrement: false;
202
+ hasRuntimeDefault: false;
203
+ enumValues: [string, ...string[]];
204
+ baseColumn: never;
205
+ identity: undefined;
206
+ generated: undefined;
207
+ }, {}, {}>;
208
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
209
+ name: "updated_at";
210
+ tableName: "plans";
211
+ dataType: "string";
212
+ columnType: "PgText";
213
+ data: string;
214
+ driverParam: string;
215
+ notNull: true;
216
+ hasDefault: false;
217
+ isPrimaryKey: false;
218
+ isAutoincrement: false;
219
+ hasRuntimeDefault: false;
220
+ enumValues: [string, ...string[]];
221
+ baseColumn: never;
222
+ identity: undefined;
223
+ generated: undefined;
224
+ }, {}, {}>;
225
+ }, "single", Record<"plans", "not-null">, false, "orderBy", {
226
+ id: string;
227
+ code: string;
228
+ name: string;
229
+ description: string | null;
230
+ interval: import("packages/core/dist/index.js").PlanInterval;
231
+ priceAmount: number;
232
+ currency: string;
233
+ entitlements: string[];
234
+ metadata: Record<string, unknown>;
235
+ createdAt: string;
236
+ updatedAt: string;
237
+ }[], {
238
+ id: import("drizzle-orm/pg-core").PgColumn<{
239
+ name: "id";
240
+ tableName: "plans";
241
+ dataType: "string";
242
+ columnType: "PgText";
243
+ data: string;
244
+ driverParam: string;
245
+ notNull: true;
246
+ hasDefault: false;
247
+ isPrimaryKey: true;
248
+ isAutoincrement: false;
249
+ hasRuntimeDefault: false;
250
+ enumValues: [string, ...string[]];
251
+ baseColumn: never;
252
+ identity: undefined;
253
+ generated: undefined;
254
+ }, {}, {}>;
255
+ code: import("drizzle-orm/pg-core").PgColumn<{
256
+ name: "code";
257
+ tableName: "plans";
258
+ dataType: "string";
259
+ columnType: "PgText";
260
+ data: string;
261
+ driverParam: string;
262
+ notNull: true;
263
+ hasDefault: false;
264
+ isPrimaryKey: false;
265
+ isAutoincrement: false;
266
+ hasRuntimeDefault: false;
267
+ enumValues: [string, ...string[]];
268
+ baseColumn: never;
269
+ identity: undefined;
270
+ generated: undefined;
271
+ }, {}, {}>;
272
+ name: import("drizzle-orm/pg-core").PgColumn<{
273
+ name: "name";
274
+ tableName: "plans";
275
+ dataType: "string";
276
+ columnType: "PgText";
277
+ data: string;
278
+ driverParam: string;
279
+ notNull: true;
280
+ hasDefault: false;
281
+ isPrimaryKey: false;
282
+ isAutoincrement: false;
283
+ hasRuntimeDefault: false;
284
+ enumValues: [string, ...string[]];
285
+ baseColumn: never;
286
+ identity: undefined;
287
+ generated: undefined;
288
+ }, {}, {}>;
289
+ description: import("drizzle-orm/pg-core").PgColumn<{
290
+ name: "description";
291
+ tableName: "plans";
292
+ dataType: "string";
293
+ columnType: "PgText";
294
+ data: string;
295
+ driverParam: string;
296
+ notNull: false;
297
+ hasDefault: false;
298
+ isPrimaryKey: false;
299
+ isAutoincrement: false;
300
+ hasRuntimeDefault: false;
301
+ enumValues: [string, ...string[]];
302
+ baseColumn: never;
303
+ identity: undefined;
304
+ generated: undefined;
305
+ }, {}, {}>;
306
+ interval: import("drizzle-orm/pg-core").PgColumn<{
307
+ name: "interval_unit";
308
+ tableName: "plans";
309
+ dataType: "string";
310
+ columnType: "PgText";
311
+ data: import("packages/core/dist/index.js").PlanInterval;
312
+ driverParam: string;
313
+ notNull: true;
314
+ hasDefault: false;
315
+ isPrimaryKey: false;
316
+ isAutoincrement: false;
317
+ hasRuntimeDefault: false;
318
+ enumValues: [string, ...string[]];
319
+ baseColumn: never;
320
+ identity: undefined;
321
+ generated: undefined;
322
+ }, {}, {
323
+ $type: import("packages/core/dist/index.js").PlanInterval;
324
+ }>;
325
+ priceAmount: import("drizzle-orm/pg-core").PgColumn<{
326
+ name: "price_amount";
327
+ tableName: "plans";
328
+ dataType: "number";
329
+ columnType: "PgInteger";
330
+ data: number;
331
+ driverParam: string | number;
332
+ notNull: true;
333
+ hasDefault: false;
334
+ isPrimaryKey: false;
335
+ isAutoincrement: false;
336
+ hasRuntimeDefault: false;
337
+ enumValues: undefined;
338
+ baseColumn: never;
339
+ identity: undefined;
340
+ generated: undefined;
341
+ }, {}, {}>;
342
+ currency: import("drizzle-orm/pg-core").PgColumn<{
343
+ name: "currency";
344
+ tableName: "plans";
345
+ dataType: "string";
346
+ columnType: "PgText";
347
+ data: string;
348
+ driverParam: string;
349
+ notNull: true;
350
+ hasDefault: false;
351
+ isPrimaryKey: false;
352
+ isAutoincrement: false;
353
+ hasRuntimeDefault: false;
354
+ enumValues: [string, ...string[]];
355
+ baseColumn: never;
356
+ identity: undefined;
357
+ generated: undefined;
358
+ }, {}, {}>;
359
+ entitlements: import("drizzle-orm/pg-core").PgColumn<{
360
+ name: "entitlements";
361
+ tableName: "plans";
362
+ dataType: "array";
363
+ columnType: "PgArray";
364
+ data: string[];
365
+ driverParam: string | string[];
366
+ notNull: true;
367
+ hasDefault: false;
368
+ isPrimaryKey: false;
369
+ isAutoincrement: false;
370
+ hasRuntimeDefault: false;
371
+ enumValues: [string, ...string[]];
372
+ baseColumn: import("drizzle-orm").Column<{
373
+ name: "entitlements";
374
+ tableName: "plans";
375
+ dataType: "string";
376
+ columnType: "PgText";
377
+ data: string;
378
+ driverParam: string;
379
+ notNull: false;
380
+ hasDefault: false;
381
+ isPrimaryKey: false;
382
+ isAutoincrement: false;
383
+ hasRuntimeDefault: false;
384
+ enumValues: [string, ...string[]];
385
+ baseColumn: never;
386
+ identity: undefined;
387
+ generated: undefined;
388
+ }, {}, {}>;
389
+ identity: undefined;
390
+ generated: undefined;
391
+ }, {}, {
392
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
393
+ name: "entitlements";
394
+ dataType: "string";
395
+ columnType: "PgText";
396
+ data: string;
397
+ enumValues: [string, ...string[]];
398
+ driverParam: string;
399
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
400
+ size: undefined;
401
+ }>;
402
+ metadata: import("drizzle-orm/pg-core").PgColumn<{
403
+ name: "metadata";
404
+ tableName: "plans";
405
+ dataType: "json";
406
+ columnType: "PgJsonb";
407
+ data: Record<string, unknown>;
408
+ driverParam: unknown;
409
+ notNull: true;
410
+ hasDefault: false;
411
+ isPrimaryKey: false;
412
+ isAutoincrement: false;
413
+ hasRuntimeDefault: false;
414
+ enumValues: undefined;
415
+ baseColumn: never;
416
+ identity: undefined;
417
+ generated: undefined;
418
+ }, {}, {
419
+ $type: Record<string, unknown>;
420
+ }>;
421
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
422
+ name: "created_at";
423
+ tableName: "plans";
424
+ dataType: "string";
425
+ columnType: "PgText";
426
+ data: string;
427
+ driverParam: string;
428
+ notNull: true;
429
+ hasDefault: false;
430
+ isPrimaryKey: false;
431
+ isAutoincrement: false;
432
+ hasRuntimeDefault: false;
433
+ enumValues: [string, ...string[]];
434
+ baseColumn: never;
435
+ identity: undefined;
436
+ generated: undefined;
437
+ }, {}, {}>;
438
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
439
+ name: "updated_at";
440
+ tableName: "plans";
441
+ dataType: "string";
442
+ columnType: "PgText";
443
+ data: string;
444
+ driverParam: string;
445
+ notNull: true;
446
+ hasDefault: false;
447
+ isPrimaryKey: false;
448
+ isAutoincrement: false;
449
+ hasRuntimeDefault: false;
450
+ enumValues: [string, ...string[]];
451
+ baseColumn: never;
452
+ identity: undefined;
453
+ generated: undefined;
454
+ }, {}, {}>;
455
+ }>, "orderBy">;
456
+ getByCode(code: string): Promise<{
457
+ id: string;
458
+ name: string;
459
+ metadata: Record<string, unknown>;
460
+ createdAt: string;
461
+ updatedAt: string;
462
+ code: string;
463
+ description: string | null;
464
+ interval: import("packages/core/dist/index.js").PlanInterval;
465
+ priceAmount: number;
466
+ currency: string;
467
+ entitlements: string[];
468
+ } | undefined>;
469
+ create(input: CreatePlanInput): Promise<{
470
+ id: string;
471
+ name: string;
472
+ metadata: Record<string, unknown>;
473
+ createdAt: string;
474
+ updatedAt: string;
475
+ code: string;
476
+ description: string | null;
477
+ interval: import("packages/core/dist/index.js").PlanInterval;
478
+ priceAmount: number;
479
+ currency: string;
480
+ entitlements: string[];
481
+ }>;
482
+ update(code: string, input: UpdatePlanInput): Promise<{
483
+ id: string;
484
+ code: string;
485
+ name: string;
486
+ description: string | null;
487
+ interval: import("packages/core/dist/index.js").PlanInterval;
488
+ priceAmount: number;
489
+ currency: string;
490
+ entitlements: string[];
491
+ metadata: Record<string, unknown>;
492
+ createdAt: string;
493
+ updatedAt: string;
494
+ } | undefined>;
495
+ delete(code: string): Promise<boolean>;
496
+ }
497
+ //# sourceMappingURL=plan-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repository.d.ts","sourceRoot":"","sources":["../../src/drizzle/plan-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,qBAAsB,YAAW,cAAc;IAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,sBAAsB;IAEvD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIE,SAAS,CAAC,IAAI,EAAE,MAAM;;;;;;;;;;;;;IAMtB,MAAM,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;;;IAsB7B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe;;;;;;;;;;;;;IA0B3C,MAAM,CAAC,IAAI,EAAE,MAAM;CAS1B"}
@@ -0,0 +1,70 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { desc, eq } from "drizzle-orm";
3
+ import { now } from "../utils/time.js";
4
+ import { plans } from "./schema.js";
5
+ export class DrizzlePlanRepository {
6
+ db;
7
+ constructor(db) {
8
+ this.db = db;
9
+ }
10
+ list() {
11
+ return this.db.select().from(plans).orderBy(desc(plans.createdAt));
12
+ }
13
+ async getByCode(code) {
14
+ return this.db.query.plans.findFirst({
15
+ where: eq(plans.code, code),
16
+ });
17
+ }
18
+ async create(input) {
19
+ const timestamp = now();
20
+ const [created] = await this.db
21
+ .insert(plans)
22
+ .values({
23
+ id: randomUUID(),
24
+ code: input.code,
25
+ name: input.name,
26
+ description: input.description ?? null,
27
+ interval: input.interval ?? "month",
28
+ priceAmount: input.priceAmount ?? 0,
29
+ currency: input.currency ?? "USD",
30
+ entitlements: input.entitlements ?? [],
31
+ metadata: input.metadata ?? {},
32
+ createdAt: timestamp,
33
+ updatedAt: timestamp,
34
+ })
35
+ .returning();
36
+ return created;
37
+ }
38
+ async update(code, input) {
39
+ const existing = await this.getByCode(code);
40
+ if (!existing) {
41
+ return undefined;
42
+ }
43
+ const [updated] = await this.db
44
+ .update(plans)
45
+ .set({
46
+ ...(input.name !== undefined && { name: input.name }),
47
+ ...(input.description !== undefined && { description: input.description }),
48
+ ...(input.interval !== undefined && { interval: input.interval }),
49
+ ...(input.priceAmount !== undefined && { priceAmount: input.priceAmount }),
50
+ ...(input.currency !== undefined && { currency: input.currency }),
51
+ ...(input.entitlements !== undefined && { entitlements: input.entitlements }),
52
+ ...(input.metadata !== undefined && {
53
+ metadata: { ...existing.metadata, ...input.metadata },
54
+ }),
55
+ updatedAt: now(),
56
+ })
57
+ .where(eq(plans.id, existing.id))
58
+ .returning();
59
+ return updated;
60
+ }
61
+ async delete(code) {
62
+ const existing = await this.getByCode(code);
63
+ if (!existing) {
64
+ return false;
65
+ }
66
+ await this.db.delete(plans).where(eq(plans.id, existing.id));
67
+ return true;
68
+ }
69
+ }
70
+ //# sourceMappingURL=plan-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-repository.js","sourceRoot":"","sources":["../../src/drizzle/plan-repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAA0B;QAA1B,OAAE,GAAF,EAAE,CAAwB;IAAG,CAAC;IAE3D,IAAI;QACF,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YACnC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAsB;QACjC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE;aAC5B,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC;YACN,EAAE,EAAE,UAAU,EAAE;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,OAAO;YACnC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;YACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;YACjC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;YAC9B,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;SACrB,CAAC;aACD,SAAS,EAAE,CAAC;QAEf,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAAsB;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE;aAC5B,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC;YACH,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACrD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1E,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;YAC7E,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI;gBAClC,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;aACtD,CAAC;YACF,SAAS,EAAE,GAAG,EAAE;SACjB,CAAC;aACD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;aAChC,SAAS,EAAE,CAAC;QAEf,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import type { PluginInstallationRepository, UpsertPluginInstallationInput } from "../repositories/index.js";
2
+ import type { SubmeshDrizzleDatabase } from "./types.js";
3
+ export declare class DrizzlePluginInstallationRepository implements PluginInstallationRepository {
4
+ private readonly db;
5
+ constructor(db: SubmeshDrizzleDatabase);
6
+ list(): Promise<{
7
+ enabled: boolean;
8
+ id: string;
9
+ pluginKey: string;
10
+ displayName: string;
11
+ config: Record<string, unknown>;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ }[]>;
15
+ upsert(input: UpsertPluginInstallationInput): Promise<{
16
+ enabled: boolean;
17
+ id: string;
18
+ createdAt: string;
19
+ updatedAt: string;
20
+ pluginKey: string;
21
+ displayName: string;
22
+ config: Record<string, unknown>;
23
+ }>;
24
+ delete(pluginKey: string): Promise<boolean>;
25
+ }
26
+ //# sourceMappingURL=plugin-installation-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installation-repository.d.ts","sourceRoot":"","sources":["../../src/drizzle/plugin-installation-repository.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,mCAAoC,YAAW,4BAA4B;IAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,sBAAsB;IAEjD,IAAI;;;;;;;;;IAWJ,MAAM,CAAC,KAAK,EAAE,6BAA6B;;;;;;;;;IA0C3C,MAAM,CAAC,SAAS,EAAE,MAAM;CAa/B"}
@@ -0,0 +1,71 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { desc, eq } from "drizzle-orm";
3
+ import { now } from "../utils/time.js";
4
+ import { pluginInstallations } from "./schema.js";
5
+ export class DrizzlePluginInstallationRepository {
6
+ db;
7
+ constructor(db) {
8
+ this.db = db;
9
+ }
10
+ async list() {
11
+ const rows = await this.db
12
+ .select()
13
+ .from(pluginInstallations)
14
+ .orderBy(desc(pluginInstallations.pluginKey));
15
+ return rows.map((row) => ({
16
+ ...row,
17
+ enabled: Boolean(row.enabled),
18
+ }));
19
+ }
20
+ async upsert(input) {
21
+ const existing = await this.db.query.pluginInstallations.findFirst({
22
+ where: eq(pluginInstallations.pluginKey, input.pluginKey),
23
+ });
24
+ const timestamp = now();
25
+ if (!existing) {
26
+ const [created] = await this.db
27
+ .insert(pluginInstallations)
28
+ .values({
29
+ id: randomUUID(),
30
+ pluginKey: input.pluginKey,
31
+ displayName: input.displayName,
32
+ enabled: input.enabled ? 1 : 0,
33
+ config: input.config ?? {},
34
+ createdAt: timestamp,
35
+ updatedAt: timestamp,
36
+ })
37
+ .returning();
38
+ return {
39
+ ...created,
40
+ enabled: Boolean(created.enabled),
41
+ };
42
+ }
43
+ const [updated] = await this.db
44
+ .update(pluginInstallations)
45
+ .set({
46
+ displayName: input.displayName,
47
+ enabled: input.enabled ? 1 : 0,
48
+ config: input.config ?? existing.config,
49
+ updatedAt: timestamp,
50
+ })
51
+ .where(eq(pluginInstallations.id, existing.id))
52
+ .returning();
53
+ return {
54
+ ...updated,
55
+ enabled: Boolean(updated.enabled),
56
+ };
57
+ }
58
+ async delete(pluginKey) {
59
+ const existing = await this.db.query.pluginInstallations.findFirst({
60
+ where: eq(pluginInstallations.pluginKey, pluginKey),
61
+ });
62
+ if (!existing) {
63
+ return false;
64
+ }
65
+ await this.db
66
+ .delete(pluginInstallations)
67
+ .where(eq(pluginInstallations.id, existing.id));
68
+ return true;
69
+ }
70
+ }
71
+ //# sourceMappingURL=plugin-installation-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-installation-repository.js","sourceRoot":"","sources":["../../src/drizzle/plugin-installation-repository.ts"],"names":[],"mappings":"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"}