@develit-io/backend-sdk 5.16.1 → 5.17.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/index.cjs CHANGED
@@ -3,14 +3,17 @@
3
3
  const drizzleOrm = require('drizzle-orm');
4
4
  const pgCore = require('drizzle-orm/pg-core');
5
5
  const sqliteCore = require('drizzle-orm/sqlite-core');
6
+ const generalCodes = require('@develit-io/general-codes');
7
+ const commentJson = require('comment-json');
8
+ const node_fs = require('node:fs');
9
+ const path = require('@std/path');
6
10
  const text = require('@std/text');
7
11
  require('http-status-codes');
8
12
  const z = require('zod/v4/core');
9
13
  const h3 = require('h3');
10
14
  const fs = require('fs');
11
15
  const crypto$1 = require('node:crypto');
12
- const path = require('path');
13
- const commentJson = require('comment-json');
16
+ const path$1 = require('path');
14
17
  const superjson = require('superjson');
15
18
 
16
19
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
@@ -30,7 +33,7 @@ function _interopNamespaceCompat(e) {
30
33
  const z__namespace = /*#__PURE__*/_interopNamespaceCompat(z);
31
34
  const fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
32
35
  const crypto__default = /*#__PURE__*/_interopDefaultCompat(crypto$1);
33
- const path__default = /*#__PURE__*/_interopDefaultCompat(path);
36
+ const path__default = /*#__PURE__*/_interopDefaultCompat(path$1);
34
37
  const superjson__default = /*#__PURE__*/_interopDefaultCompat(superjson);
35
38
 
36
39
  const base = {
@@ -54,20 +57,106 @@ const basePostgres = {
54
57
  const bankAccount = {
55
58
  holderName: sqliteCore.text("holder_name").notNull(),
56
59
  number: sqliteCore.text("number").notNull(),
57
- bankCode: sqliteCore.text("bank_code").$type().notNull(),
60
+ bankCode: sqliteCore.text("bank_code", { enum: generalCodes.BANK_CODES }).notNull(),
58
61
  iban: sqliteCore.text("iban").notNull(),
59
62
  bic: sqliteCore.text("bic").notNull(),
60
- currency: sqliteCore.text("currency").$type(),
61
- countryCode: sqliteCore.text("country_code").notNull()
63
+ currency: sqliteCore.text("currency", { enum: generalCodes.CURRENCY_CODES }).notNull(),
64
+ countryCode: sqliteCore.text("country_code", { enum: generalCodes.COUNTRY_CODES_2 }).notNull()
62
65
  };
66
+ const bankAccountCurrencyEnum = pgCore.pgEnum("currency", generalCodes.CURRENCY_CODES);
67
+ const bankAccountCountryCodeEnum = pgCore.pgEnum(
68
+ "country_code",
69
+ generalCodes.COUNTRY_CODES_2
70
+ );
71
+ const bankAccountBankCodeEnum = pgCore.pgEnum("bank_code", generalCodes.BANK_CODES);
63
72
  const bankAccountPostgres = {
64
73
  holderName: pgCore.text("holder_name").notNull(),
65
74
  number: pgCore.text("number").notNull(),
66
- bankCode: pgCore.text("bank_code").$type().notNull(),
75
+ bankCode: bankAccountBankCodeEnum().notNull(),
67
76
  iban: pgCore.text("iban").notNull(),
68
77
  bic: pgCore.text("bic").notNull(),
69
- currency: pgCore.text("currency").$type(),
70
- countryCode: pgCore.text("country_code").notNull()
78
+ currency: bankAccountCurrencyEnum().notNull(),
79
+ countryCode: bankAccountCountryCodeEnum().notNull()
80
+ };
81
+
82
+ const composeD1Arguments = ({
83
+ resourceName
84
+ }) => {
85
+ return {
86
+ transform: {
87
+ database: {
88
+ name: resourceName,
89
+ primaryLocationHint: "weur"
90
+ }
91
+ }
92
+ };
93
+ };
94
+
95
+ const composeKvArguments = ({
96
+ resourceName
97
+ }) => {
98
+ return {
99
+ transform: {
100
+ namespace: {
101
+ title: resourceName
102
+ }
103
+ }
104
+ };
105
+ };
106
+
107
+ const composeQueueArguments = ({
108
+ resourceName,
109
+ deliveryDelay = 5,
110
+ messageRetentionPeriod = 259200
111
+ }) => {
112
+ return {
113
+ transform: {
114
+ queue: {
115
+ queueName: resourceName,
116
+ settings: {
117
+ deliveryDelay,
118
+ messageRetentionPeriod
119
+ }
120
+ }
121
+ }
122
+ };
123
+ };
124
+
125
+ const composeR2Arguments = ({
126
+ resourceName,
127
+ storageClass = "Standard"
128
+ }) => {
129
+ return {
130
+ transform: {
131
+ bucket: {
132
+ name: resourceName,
133
+ jurisdiction: "eu",
134
+ location: "weur",
135
+ storageClass
136
+ }
137
+ }
138
+ };
139
+ };
140
+
141
+ async function loadWorkerConfig({ path: path$1 }) {
142
+ const workerConfigFile = node_fs.readFileSync(path.join(path$1, "./wrangler.jsonc"), "utf-8");
143
+ return commentJson.parse(workerConfigFile);
144
+ }
145
+
146
+ const composeBindingName = ({
147
+ resource,
148
+ resourceName,
149
+ bindingName
150
+ }) => {
151
+ const convertedBindingName = bindingName ? text.toSnakeCase(bindingName) : `${text.toSnakeCase(resourceName)}_${resource}`;
152
+ return convertedBindingName.toUpperCase();
153
+ };
154
+ const composeResourceName = ({
155
+ project,
156
+ environment,
157
+ resourceName
158
+ }) => {
159
+ return `${project}-${resourceName}-${environment}`;
71
160
  };
72
161
 
73
162
  class Infrastructure {
@@ -83,158 +172,19 @@ class Infrastructure {
83
172
  this.environment = environment;
84
173
  this.sst = sst;
85
174
  }
86
- // TODO(Pookensivee): Make tests for this util
87
- composeBindingName({
88
- resource,
89
- resourceName,
90
- bindingName
91
- }) {
92
- const convertedBindingName = bindingName ? text.toSnakeCase(bindingName) : `${text.toSnakeCase(resourceName)}_${resource}`;
93
- return convertedBindingName.toUpperCase();
94
- }
95
- // TODO(Pookensivee): Make tests for this util
96
- composeResourceName({ resourceName }) {
97
- return `${this.project}-${resourceName}-${this.environment}`;
98
- }
99
- // TODO(Pookensivee): Make tests for this util
100
- composeKvArguments({ resourceName }) {
101
- return {
102
- transform: {
103
- namespace: {
104
- title: resourceName
105
- }
106
- }
107
- };
108
- }
109
- // TODO(Pookensivee): Make tests for this util
110
- composeD1Arguments({ resourceName }) {
111
- return {
112
- transform: {
113
- database: {
114
- name: resourceName,
115
- primaryLocationHint: "weur"
116
- }
117
- }
118
- };
119
- }
120
- // TODO(Pookensivee): Make tests for this util
121
- composeQueueArguments({
122
- resourceName,
123
- deliveryDelay = 5,
124
- messageRetentionPeriod = 259200
125
- }) {
126
- return {
127
- transform: {
128
- queue: {
129
- queueName: resourceName,
130
- settings: {
131
- deliveryDelay,
132
- messageRetentionPeriod
133
- }
134
- }
135
- }
136
- };
137
- }
138
- // TODO(Pookensivee): Make tests for this util
139
- composeR2Arguments({
140
- resourceName,
141
- storageClass = "Standard"
142
- }) {
143
- return {
144
- transform: {
145
- bucket: {
146
- name: resourceName,
147
- jurisdiction: "eu",
148
- location: "weur",
149
- storageClass
150
- }
151
- }
152
- };
153
- }
154
- // TODO: Solve the circular dependency on post infrastructure deploy script
155
- // TODO: Cannot assign a queue as a producer, work around: https://developers.cloudflare.com/workers/wrangler/commands/#queues-consumer-add-script-name
156
- // async composeWorkerArguments({
157
- // resourceName,
158
- // path,
159
- // bindings = [],
160
- // }: {
161
- // resourceName: string
162
- // path: string
163
- // bindings?: Input<Kv | D1 | Queue | Worker | Bucket>[]
164
- // }) {
165
- // const workerConfig = this.loadWorkerConfig({ path })
166
- // const environmentVariables = this.extractEnvironmentVariables({ workerConfigEnv:
167
- // workerConfig.env as WorkerConfigEnv
168
- // })
169
- // // TODO: Fix this
170
- // if (
171
- // 'SERVICE_CONFIG' in environmentVariables &&
172
- // typeof environmentVariables.SERVICE_CONFIG === 'object'
173
- // ) {
174
- // environmentVariables.SERVICE_CONFIG = JSON.stringify(environmentVariables.SERVICE_CONFIG)
175
- // }
176
- // // TODO: Fix this
177
- // if (
178
- // 'EMAIL_SENDER' in environmentVariables &&
179
- // typeof environmentVariables.EMAIL_SENDER === 'object'
180
- // ) {
181
- // environmentVariables.EMAIL_SENDER = JSON.stringify(environmentVariables.EMAIL_SENDER)
182
- // }
183
- // return {
184
- // handler: join(path, './src/index.ts'),
185
- // environment: Object.entries(environmentVariables).reduce((acc, [key, value]) => ({
186
- // ...acc,
187
- // [key]: String(value)
188
- // }), {} as Record<string, string>),
189
- // link: bindings,
190
- // transform: {
191
- // worker: {
192
- // scriptName: this.composeResourceName({ resourceName }),
193
- // compatibilityDate: '2025-06-04',
194
- // compatibilityFlags: ['nodejs_compat'],
195
- // observability: {
196
- // enabled: true,
197
- // headSamplingRate: 1,
198
- // logs: {
199
- // // Check whether this disables logs completely or just invocation ones
200
- // enabled: false,
201
- // invocationLogs: false,
202
- // },
203
- // },
204
- // },
205
- // }
206
- // } satisfies Partial<WorkerArgs>
207
- // }
208
- // loadWorkerConfig({ path }: { path: string }) {
209
- // const workerConfigFile = readFileSync(
210
- // join(path, './wrangler.jsonc'),
211
- // 'utf-8',
212
- // )
213
- // TODO: Use parse from comment-json
214
- // const jsonString = workerConfigFile
215
- // .replace(/\/\*[\s\S]*?\*\//g, '')
216
- // .replace(/\/\/.*$/gm, '')
217
- // return JSON.parse(jsonString)
218
- // }
219
- // extractEnvironmentVariables({
220
- // workerConfigEnv,
221
- // }: {
222
- // workerConfigEnv: WorkerConfigEnv
223
- // }) {
224
- // if (typeof this.environment === 'number') {
225
- // return { ...workerConfigEnv.dev.vars, ENVIRONMENT: this.environment }
226
- // }
227
- // return { ...workerConfigEnv[this.environment].vars }
228
- // }
229
175
  /**
230
176
  * Creates an instance of Cloudflare KV.
231
177
  */
232
178
  kv(options) {
233
179
  const { resourceName, bindingName } = options;
234
180
  return new this.sst.cloudflare.Kv(
235
- `${this.composeBindingName({ resource: "kv", resourceName, bindingName })}`,
236
- this.composeKvArguments({
237
- resourceName: this.composeResourceName({ resourceName })
181
+ `${composeBindingName({ resource: "kv", resourceName, bindingName })}`,
182
+ composeKvArguments({
183
+ resourceName: composeResourceName({
184
+ project: this.project,
185
+ environment: this.environment,
186
+ resourceName
187
+ })
238
188
  })
239
189
  );
240
190
  }
@@ -244,9 +194,13 @@ class Infrastructure {
244
194
  d1(options) {
245
195
  const { resourceName, bindingName } = options;
246
196
  return new this.sst.cloudflare.D1(
247
- `${this.composeBindingName({ resource: "d1", resourceName, bindingName })}`,
248
- this.composeD1Arguments({
249
- resourceName: this.composeResourceName({ resourceName })
197
+ `${composeBindingName({ resource: "d1", resourceName, bindingName })}`,
198
+ composeD1Arguments({
199
+ resourceName: composeResourceName({
200
+ project: this.project,
201
+ environment: this.environment,
202
+ resourceName
203
+ })
250
204
  })
251
205
  );
252
206
  }
@@ -256,9 +210,13 @@ class Infrastructure {
256
210
  queue(options) {
257
211
  const { resourceName, bindingName, deliveryDelay, messageRetentionPeriod } = options;
258
212
  return new this.sst.cloudflare.Queue(
259
- `${this.composeBindingName({ resource: "queue", resourceName, bindingName })}`,
260
- this.composeQueueArguments({
261
- resourceName: this.composeResourceName({ resourceName }),
213
+ `${composeBindingName({ resource: "queue", resourceName, bindingName })}`,
214
+ composeQueueArguments({
215
+ resourceName: composeResourceName({
216
+ project: this.project,
217
+ environment: this.environment,
218
+ resourceName
219
+ }),
262
220
  deliveryDelay,
263
221
  messageRetentionPeriod
264
222
  })
@@ -270,77 +228,28 @@ class Infrastructure {
270
228
  r2(options) {
271
229
  const { resourceName, bindingName, storageClass } = options;
272
230
  return new this.sst.cloudflare.Bucket(
273
- `${this.composeBindingName({ resource: "r2", resourceName, bindingName })}`,
274
- this.composeR2Arguments({
275
- resourceName: this.composeResourceName({ resourceName }),
231
+ `${composeBindingName({ resource: "r2", resourceName, bindingName })}`,
232
+ composeR2Arguments({
233
+ resourceName: composeResourceName({
234
+ project: this.project,
235
+ environment: this.environment,
236
+ resourceName
237
+ }),
276
238
  storageClass
277
239
  })
278
240
  );
279
241
  }
280
- // TODO: Solve the circular dependency on post infrastructure deploy script
281
- // async worker({
282
- // resourceName,
283
- // bindingName,
284
- // path,
285
- // bindings = [],
286
- // }: {
287
- // resourceName: string
288
- // bindingName: string
289
- // path: string
290
- // bindings?: Input<Kv | D1 | Queue | Worker | Bucket>[]
291
- // }) {
292
- // return new sst.cloudflare.Worker(
293
- // this.composeBindingName({
294
- // resource: 'worker',
295
- // bindingName,
296
- // resourceName,
297
- // }),
298
- // await this.composeWorkerArguments({
299
- // resourceName: this.composeResourceName({ resourceName }),
300
- // path,
301
- // bindings,
302
- // }),
303
- // )
304
- // }
305
- // async service({
306
- // resourceName,
307
- // bindingName,
308
- // path,
309
- // bindings = [],
310
- // }: {
311
- // resourceName: string
312
- // bindingName?: string
313
- // path?: string
314
- // bindings?: Input<Kv | D1 | Queue | Worker | Bucket>[]
315
- // }) {
316
- // return this.worker({
317
- // resourceName: `${this.project}-${resourceName}-service-${this.environment}`,
318
- // bindingName: this.composeBindingName({
319
- // resource: 'service',
320
- // bindingName,
321
- // resourceName,
322
- // }),
323
- // path: `${path ?? `./services/${resourceName}`}`,
324
- // bindings,
325
- // })
326
- // }
327
- // // TODO: Add name
328
- // async orchestrator({
329
- // path,
330
- // bindings = [],
331
- // }: {
332
- // path?: string
333
- // bindings?: Input<Kv | D1 | Queue | Worker | Bucket>[]
334
- // }) {
335
- // return this.worker({
336
- // resourceName: `${this.project}-gateway-${this.environment}`,
337
- // bindingName: 'GATEWAY',
338
- // path: `${path ?? `./apps/gateway`}`,
339
- // bindings,
340
- // })
341
- // }
342
242
  }
343
243
 
244
+ const ENVIRONMENT = ["dev", "test", "staging", "production"];
245
+
246
+ const validateEnvironment = (environment) => {
247
+ if (ENVIRONMENT.includes(environment)) {
248
+ return environment;
249
+ }
250
+ return Number(environment);
251
+ };
252
+
344
253
  const ibanZodSchema = new z__namespace.$ZodString({
345
254
  type: "string",
346
255
  checks: [
@@ -969,6 +878,7 @@ function develitWorker(Worker) {
969
878
  }
970
879
 
971
880
  exports.DatabaseTransaction = DatabaseTransaction;
881
+ exports.ENVIRONMENT = ENVIRONMENT;
972
882
  exports.Infrastructure = Infrastructure;
973
883
  exports.RPCResponse = RPCResponse;
974
884
  exports.action = action;
@@ -978,6 +888,7 @@ exports.base = base;
978
888
  exports.basePostgres = basePostgres;
979
889
  exports.calculateExponentialBackoff = calculateExponentialBackoff;
980
890
  exports.cloudflareQueue = cloudflareQueue;
891
+ exports.composeBindingName = composeBindingName;
981
892
  exports.createAuditLogWriter = createAuditLogWriter;
982
893
  exports.createInternalError = createInternalError;
983
894
  exports.defineCommand = defineCommand;
@@ -997,6 +908,7 @@ exports.handleAction = handleAction;
997
908
  exports.handleActionResponse = handleActionResponse;
998
909
  exports.ibanZodSchema = ibanZodSchema;
999
910
  exports.isInternalError = isInternalError;
911
+ exports.loadWorkerConfig = loadWorkerConfig;
1000
912
  exports.paginationQuerySchema = paginationQuerySchema;
1001
913
  exports.paginationSchema = paginationSchema;
1002
914
  exports.service = service;
@@ -1004,3 +916,4 @@ exports.swiftZodSchema = swiftZodSchema;
1004
916
  exports.useResult = useResult;
1005
917
  exports.useResultSync = useResultSync;
1006
918
  exports.uuidv4 = uuidv4;
919
+ exports.validateEnvironment = validateEnvironment;
package/dist/index.d.cts CHANGED
@@ -4,6 +4,7 @@ import * as drizzle_orm from 'drizzle-orm';
4
4
  import { ExtractTablesWithRelations, DBQueryConfig, BuildQueryResult } from 'drizzle-orm';
5
5
  import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
6
6
  import { AnySQLiteTable } from 'drizzle-orm/sqlite-core';
7
+ import * as comment_json from 'comment-json';
7
8
  import { StatusCodes, ReasonPhrases } from 'http-status-codes';
8
9
  export { ReasonPhrases as InternalResponsePhrase, StatusCodes as InternalResponseStatus } from 'http-status-codes';
9
10
  import * as z from 'zod/v4/core';
@@ -27,26 +28,24 @@ declare const basePostgres: {
27
28
  declare const bankAccount: {
28
29
  holderName: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"holder_name", [string, ...string[]], number | undefined>>;
29
30
  number: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"number", [string, ...string[]], number | undefined>>;
30
- bankCode: drizzle_orm.NotNull<drizzle_orm.$Type<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"bank_code", [string, ...string[]], number | undefined>, "0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500">>;
31
+ bankCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"bank_code", ["0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500", ...("0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500")[]], number | undefined>>;
31
32
  iban: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"iban", [string, ...string[]], number | undefined>>;
32
33
  bic: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"bic", [string, ...string[]], number | undefined>>;
33
- currency: drizzle_orm.$Type<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"currency", [string, ...string[]], number | undefined>, "CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX">;
34
- countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"country_code", [string, ...string[]], number | undefined>>;
34
+ currency: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"currency", ["CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX", ...("CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX")[]], number | undefined>>;
35
+ countryCode: drizzle_orm.NotNull<drizzle_orm_sqlite_core.SQLiteTextBuilderInitial<"country_code", ["AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW", ...("AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW")[]], number | undefined>>;
35
36
  };
36
37
  declare const bankAccountPostgres: {
37
38
  holderName: drizzle_orm.NotNull<drizzle_orm_pg_core.PgTextBuilderInitial<"holder_name", [string, ...string[]]>>;
38
39
  number: drizzle_orm.NotNull<drizzle_orm_pg_core.PgTextBuilderInitial<"number", [string, ...string[]]>>;
39
- bankCode: drizzle_orm.NotNull<drizzle_orm.$Type<drizzle_orm_pg_core.PgTextBuilderInitial<"bank_code", [string, ...string[]]>, "0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500">>;
40
+ bankCode: drizzle_orm.NotNull<drizzle_orm_pg_core.PgEnumColumnBuilderInitial<"", ["0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500", ...("0100" | "0300" | "0600" | "0710" | "0800" | "2010" | "2060" | "2070" | "2100" | "2200" | "2220" | "2250" | "2260" | "2600" | "2700" | "3030" | "3060" | "3500" | "4300" | "5500" | "5800" | "6000" | "6200" | "6210" | "6300" | "6363" | "6700" | "6800" | "7910" | "7950" | "7960" | "7970" | "7990" | "8030" | "8040" | "8060" | "8090" | "8150" | "8190" | "8198" | "8220" | "8250" | "8255" | "8265" | "8500")[]]>>;
40
41
  iban: drizzle_orm.NotNull<drizzle_orm_pg_core.PgTextBuilderInitial<"iban", [string, ...string[]]>>;
41
42
  bic: drizzle_orm.NotNull<drizzle_orm_pg_core.PgTextBuilderInitial<"bic", [string, ...string[]]>>;
42
- currency: drizzle_orm.$Type<drizzle_orm_pg_core.PgTextBuilderInitial<"currency", [string, ...string[]]>, "CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX">;
43
- countryCode: drizzle_orm.NotNull<drizzle_orm_pg_core.PgTextBuilderInitial<"country_code", [string, ...string[]]>>;
43
+ currency: drizzle_orm.NotNull<drizzle_orm_pg_core.PgEnumColumnBuilderInitial<"", ["CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX", ...("CZK" | "EUR" | "USD" | "PLN" | "RON" | "GBP" | "RUB" | "HUF" | "CHF" | "DKK" | "SEK" | "HRK" | "NOK" | "BGN" | "TRY" | "AUD" | "CAD" | "JPY" | "CNY" | "INR" | "BRL" | "MXN" | "ZAR" | "SGD" | "HKD" | "KRW" | "MYR" | "THB" | "IDR" | "PHP" | "AED" | "SAR" | "ILS" | "EGP" | "NGN" | "PKR" | "COP" | "CLP" | "PEN" | "VND" | "KZT" | "UAH" | "BTC" | "ETH" | "ADA" | "DOT" | "ATOM" | "XRP" | "LTC" | "SOL" | "DOGE" | "MATIC" | "AVAX")[]]>>;
44
+ countryCode: drizzle_orm.NotNull<drizzle_orm_pg_core.PgEnumColumnBuilderInitial<"", ["AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW", ...("AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BO" | "BQ" | "BA" | "BW" | "BR" | "IO" | "VG" | "BG" | "BF" | "BI" | "KH" | "CM" | "CA" | "CV" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CK" | "CR" | "HR" | "CW" | "CY" | "CZ" | "CD" | "DK" | "DJ" | "DM" | "DO" | "TL" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GR" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "GY" | "HT" | "HN" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IM" | "IL" | "IT" | "CI" | "JM" | "JP" | "JE" | "JO" | "KZ" | "KE" | "KI" | "XK" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LI" | "LT" | "LU" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MQ" | "MR" | "MU" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "NA" | "NP" | "NL" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "KP" | "NO" | "OM" | "PK" | "PS" | "PA" | "PG" | "PY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "CG" | "RE" | "RO" | "RU" | "RW" | "BL" | "KN" | "LC" | "MF" | "VC" | "WS" | "SM" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SX" | "SK" | "SI" | "SO" | "ZA" | "KR" | "SS" | "ES" | "LK" | "SD" | "SR" | "SJ" | "SZ" | "SE" | "CH" | "TW" | "TJ" | "TZ" | "TH" | "TG" | "TO" | "TT" | "TN" | "TR" | "TM" | "UM" | "VI" | "UG" | "UA" | "AE" | "GB" | "UZ" | "VU" | "VE" | "VN" | "WF" | "EH" | "YE" | "ZM" | "ZW")[]]>>;
44
45
  };
45
46
 
46
47
  type Project = 'creditio' | 'fp' | 'mdm' | 'moneio' | 'txs';
47
48
 
48
- type Resource = 'kv' | 'd1' | 'queue' | 'r2' | 'worker' | 'service' | 'orchestrator';
49
-
50
49
  type Environment = number | 'dev' | 'test' | 'staging' | 'production';
51
50
 
52
51
  interface SstInstance {
@@ -63,61 +62,6 @@ declare class Infrastructure {
63
62
  environment: Environment;
64
63
  sst: SstInstance;
65
64
  });
66
- composeBindingName({ resource, resourceName, bindingName, }: {
67
- resource: Resource;
68
- resourceName: string;
69
- bindingName?: string;
70
- }): string;
71
- composeResourceName({ resourceName }: {
72
- resourceName: string;
73
- }): string;
74
- composeKvArguments({ resourceName }: {
75
- resourceName: string;
76
- }): {
77
- transform: {
78
- namespace: {
79
- title: string;
80
- };
81
- };
82
- };
83
- composeD1Arguments({ resourceName }: {
84
- resourceName: string;
85
- }): {
86
- transform: {
87
- database: {
88
- name: string;
89
- primaryLocationHint: string;
90
- };
91
- };
92
- };
93
- composeQueueArguments({ resourceName, deliveryDelay, messageRetentionPeriod, }: {
94
- resourceName: string;
95
- deliveryDelay?: number;
96
- messageRetentionPeriod?: number;
97
- }): {
98
- transform: {
99
- queue: {
100
- queueName: string;
101
- settings: {
102
- deliveryDelay: number;
103
- messageRetentionPeriod: number;
104
- };
105
- };
106
- };
107
- };
108
- composeR2Arguments({ resourceName, storageClass, }: {
109
- resourceName: string;
110
- storageClass?: 'Standard' | 'InfrequentAccess';
111
- }): {
112
- transform: {
113
- bucket: {
114
- name: string;
115
- jurisdiction: string;
116
- location: string;
117
- storageClass: "Standard" | "InfrequentAccess";
118
- };
119
- };
120
- };
121
65
  /**
122
66
  * Creates an instance of Cloudflare KV.
123
67
  */
@@ -184,6 +128,12 @@ declare class Infrastructure {
184
128
  }): any;
185
129
  }
186
130
 
131
+ declare function loadWorkerConfig({ path }: {
132
+ path: string;
133
+ }): Promise<comment_json.CommentJSONValue>;
134
+
135
+ type Resource = 'kv' | 'd1' | 'queue' | 'r2' | 'worker' | 'service' | 'orchestrator';
136
+
187
137
  type InternalErrorResponseStatus = Exclude<StatusCodes, 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207>;
188
138
  interface InternalError {
189
139
  status: InternalErrorResponseStatus;
@@ -246,6 +196,16 @@ declare const paginationSchema: z.$ZodObject<Readonly<Readonly<{
246
196
  [k: string]: z.$ZodType<unknown, unknown, z.$ZodTypeInternals<unknown, unknown>>;
247
197
  }>>, z.$ZodObjectConfig>;
248
198
 
199
+ declare const composeBindingName: ({ resource, resourceName, bindingName, }: {
200
+ resource: Resource;
201
+ resourceName: string;
202
+ bindingName?: string;
203
+ }) => string;
204
+
205
+ declare const validateEnvironment: (environment: string) => Environment;
206
+
207
+ declare const ENVIRONMENT: string[];
208
+
249
209
  declare const handleActionResponse: <T>({ error, status, message, data, }: {
250
210
  error: boolean;
251
211
  status: number;
@@ -566,5 +526,5 @@ interface WithRetryCounterOptions {
566
526
  type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...args: TArgs) => Promise<TResult>;
567
527
  declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
568
528
 
569
- export { DatabaseTransaction, Infrastructure, RPCResponse, action, bankAccount, bankAccountPostgres, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getDrizzleD1Config, getDrizzlePgConfig, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, paginationQuerySchema, paginationSchema, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
529
+ export { DatabaseTransaction, ENVIRONMENT, Infrastructure, RPCResponse, action, bankAccount, bankAccountPostgres, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, composeBindingName, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getDrizzleD1Config, getDrizzlePgConfig, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, loadWorkerConfig, paginationQuerySchema, paginationSchema, service, swiftZodSchema, useResult, useResultSync, uuidv4, validateEnvironment };
570
530
  export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, Command, CommandLogPayload, DevelitWorkerMethods, Environment, GatewayResponse, IRPCResponse, IncludeRelation, InferResultType, InternalError, InternalErrorResponseStatus, Project, ValidatedInput };