@develit-io/backend-sdk 5.28.3 → 5.29.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.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const worker = require('../shared/backend-sdk.BNEcLkji.cjs');
3
+ const worker = require('../shared/backend-sdk.n8SfX_xu.cjs');
4
4
  const text = require('@std/text');
5
5
  const cloudflare = require('alchemy/cloudflare');
6
6
  const environment_consts = require('../shared/backend-sdk.ClVQ4AzB.cjs');
@@ -33,14 +33,16 @@ const composeKvArguments = ({
33
33
  const composeQueueArguments = ({
34
34
  resourceName,
35
35
  deliveryDelay = worker.QUEUE_DELIVERY_DELAY,
36
- messageRetentionPeriod = worker.QUEUE_MESSAGE_RETENTION_PERIOD
36
+ messageRetentionPeriod = worker.QUEUE_MESSAGE_RETENTION_PERIOD,
37
+ dlq
37
38
  }) => {
38
39
  return {
39
40
  name: resourceName,
40
41
  settings: {
41
42
  deliveryDelay,
42
43
  messageRetentionPeriod
43
- }
44
+ },
45
+ dlq
44
46
  };
45
47
  };
46
48
 
@@ -82,7 +84,8 @@ class Deployment {
82
84
  return new state.CloudflareStateStore(scope, {
83
85
  scriptName: environment_consts.ALCHEMY_STATE_STORE
84
86
  });
85
- }
87
+ },
88
+ stage: Bun.env.ENVIRONMENT || "unknown"
86
89
  });
87
90
  }
88
91
  /**
@@ -128,6 +131,17 @@ class Deployment {
128
131
  */
129
132
  async queue(options) {
130
133
  const { resourceName, deliveryDelay, messageRetentionPeriod } = options;
134
+ const dlq = await cloudflare.Queue(
135
+ composeIdentifierName({ resourceName, resource: "dlq" }),
136
+ {
137
+ name: composeResourceName({
138
+ project: this.project,
139
+ environment: this.environment,
140
+ // TODO: Convert to a util
141
+ resourceName: `${resourceName}-dlq`
142
+ })
143
+ }
144
+ );
131
145
  return await cloudflare.Queue(
132
146
  composeIdentifierName({ resourceName, resource: "queue" }),
133
147
  composeQueueArguments({
@@ -137,7 +151,8 @@ class Deployment {
137
151
  resourceName
138
152
  }),
139
153
  deliveryDelay,
140
- messageRetentionPeriod
154
+ messageRetentionPeriod,
155
+ dlq
141
156
  })
142
157
  );
143
158
  }
@@ -196,6 +211,16 @@ class Deployment {
196
211
  resource: resource || "worker"
197
212
  });
198
213
  const workerConfig = await worker.loadWorkerConfig({ path });
214
+ const consumers = eventSources?.map((queue) => {
215
+ return {
216
+ queue,
217
+ settings: {
218
+ deadLetterQueue: queue.dlq,
219
+ batchSize: worker.QUEUE_MAX_BATCH_SIZE,
220
+ maxWaitTimeMs: worker.QUEUE_MAX_BATCH_TIMEOUT
221
+ }
222
+ };
223
+ });
199
224
  return await cloudflare.Worker(
200
225
  identifierName,
201
226
  worker.composeWorkerArguments({
@@ -217,7 +242,7 @@ class Deployment {
217
242
  ...variables,
218
243
  ...secrets
219
244
  },
220
- eventSources
245
+ eventSources: consumers
221
246
  })
222
247
  );
223
248
  }
@@ -2,8 +2,8 @@ import * as alchemy_cloudflare from 'alchemy/cloudflare';
2
2
  import { KVNamespace, D1Database, Queue, R2Bucket, DurableObjectNamespace, Bindings, Worker } from 'alchemy/cloudflare';
3
3
  import { P as Project } from '../shared/backend-sdk.CP78x0gl.cjs';
4
4
  import { E as Environment } from '../shared/backend-sdk.CYcpgphg.cjs';
5
- import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.B7BfiqA5.cjs';
6
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.B7BfiqA5.cjs';
5
+ import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.D8N5si7y.cjs';
6
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.D8N5si7y.cjs';
7
7
  import alchemy from 'alchemy';
8
8
 
9
9
  declare class Deployment {
@@ -217,16 +217,18 @@ declare const composeKvArguments: ({ resourceName, }: {
217
217
  title: string;
218
218
  };
219
219
 
220
- declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, }: {
220
+ declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, dlq, }: {
221
221
  resourceName: string;
222
222
  deliveryDelay?: number;
223
223
  messageRetentionPeriod?: number;
224
+ dlq: Queue;
224
225
  }) => {
225
226
  name: string;
226
227
  settings: {
227
228
  deliveryDelay: number;
228
229
  messageRetentionPeriod: number;
229
230
  };
231
+ dlq: Queue;
230
232
  };
231
233
 
232
234
  declare const composeR2Arguments: ({ resourceName, storageClass, }: {
@@ -2,8 +2,8 @@ import * as alchemy_cloudflare from 'alchemy/cloudflare';
2
2
  import { KVNamespace, D1Database, Queue, R2Bucket, DurableObjectNamespace, Bindings, Worker } from 'alchemy/cloudflare';
3
3
  import { P as Project } from '../shared/backend-sdk.CP78x0gl.mjs';
4
4
  import { E as Environment } from '../shared/backend-sdk.CYcpgphg.mjs';
5
- import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.BEt22BOM.mjs';
6
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.BEt22BOM.mjs';
5
+ import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.OvCBQJUw.mjs';
6
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.OvCBQJUw.mjs';
7
7
  import alchemy from 'alchemy';
8
8
 
9
9
  declare class Deployment {
@@ -217,16 +217,18 @@ declare const composeKvArguments: ({ resourceName, }: {
217
217
  title: string;
218
218
  };
219
219
 
220
- declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, }: {
220
+ declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, dlq, }: {
221
221
  resourceName: string;
222
222
  deliveryDelay?: number;
223
223
  messageRetentionPeriod?: number;
224
+ dlq: Queue;
224
225
  }) => {
225
226
  name: string;
226
227
  settings: {
227
228
  deliveryDelay: number;
228
229
  messageRetentionPeriod: number;
229
230
  };
231
+ dlq: Queue;
230
232
  };
231
233
 
232
234
  declare const composeR2Arguments: ({ resourceName, storageClass, }: {
@@ -2,8 +2,8 @@ import * as alchemy_cloudflare from 'alchemy/cloudflare';
2
2
  import { KVNamespace, D1Database, Queue, R2Bucket, DurableObjectNamespace, Bindings, Worker } from 'alchemy/cloudflare';
3
3
  import { P as Project } from '../shared/backend-sdk.CP78x0gl.js';
4
4
  import { E as Environment } from '../shared/backend-sdk.CYcpgphg.js';
5
- import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.CCDScozq.js';
6
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.CCDScozq.js';
5
+ import { W as WorkerType$1, R as Resource } from '../shared/backend-sdk.DSK5flKM.js';
6
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.DSK5flKM.js';
7
7
  import alchemy from 'alchemy';
8
8
 
9
9
  declare class Deployment {
@@ -217,16 +217,18 @@ declare const composeKvArguments: ({ resourceName, }: {
217
217
  title: string;
218
218
  };
219
219
 
220
- declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, }: {
220
+ declare const composeQueueArguments: ({ resourceName, deliveryDelay, messageRetentionPeriod, dlq, }: {
221
221
  resourceName: string;
222
222
  deliveryDelay?: number;
223
223
  messageRetentionPeriod?: number;
224
+ dlq: Queue;
224
225
  }) => {
225
226
  name: string;
226
227
  settings: {
227
228
  deliveryDelay: number;
228
229
  messageRetentionPeriod: number;
229
230
  };
231
+ dlq: Queue;
230
232
  };
231
233
 
232
234
  declare const composeR2Arguments: ({ resourceName, storageClass, }: {
@@ -1,4 +1,4 @@
1
- import { D as D1_LOCATION_HINT, Q as QUEUE_MESSAGE_RETENTION_PERIOD, a as QUEUE_DELIVERY_DELAY, R as R2_STORAGE_CLASS, b as R2_LOCATION_HINT, d as R2_JURISDICTION, l as loadWorkerConfig, c as composeWorkerArguments, e as extractWorkerCrons, C as COMPATIBILITY_FLAGS, f as COMPATIBILITY_DATE } from '../shared/backend-sdk.CLtx2lZQ.mjs';
1
+ import { D as D1_LOCATION_HINT, Q as QUEUE_MESSAGE_RETENTION_PERIOD, a as QUEUE_DELIVERY_DELAY, R as R2_STORAGE_CLASS, b as R2_LOCATION_HINT, d as R2_JURISDICTION, l as loadWorkerConfig, f as QUEUE_MAX_BATCH_TIMEOUT, g as QUEUE_MAX_BATCH_SIZE, c as composeWorkerArguments, e as extractWorkerCrons, C as COMPATIBILITY_FLAGS, h as COMPATIBILITY_DATE } from '../shared/backend-sdk.Cyo7INro.mjs';
2
2
  import { toKebabCase } from '@std/text';
3
3
  import { KVNamespace, D1Database, Queue, R2Bucket, DurableObjectNamespace, Worker, Nuxt } from 'alchemy/cloudflare';
4
4
  import { A as ALCHEMY_STATE_STORE } from '../shared/backend-sdk.BIVnu5aA.mjs';
@@ -27,14 +27,16 @@ const composeKvArguments = ({
27
27
  const composeQueueArguments = ({
28
28
  resourceName,
29
29
  deliveryDelay = QUEUE_DELIVERY_DELAY,
30
- messageRetentionPeriod = QUEUE_MESSAGE_RETENTION_PERIOD
30
+ messageRetentionPeriod = QUEUE_MESSAGE_RETENTION_PERIOD,
31
+ dlq
31
32
  }) => {
32
33
  return {
33
34
  name: resourceName,
34
35
  settings: {
35
36
  deliveryDelay,
36
37
  messageRetentionPeriod
37
- }
38
+ },
39
+ dlq
38
40
  };
39
41
  };
40
42
 
@@ -76,7 +78,8 @@ class Deployment {
76
78
  return new CloudflareStateStore(scope, {
77
79
  scriptName: ALCHEMY_STATE_STORE
78
80
  });
79
- }
81
+ },
82
+ stage: Bun.env.ENVIRONMENT || "unknown"
80
83
  });
81
84
  }
82
85
  /**
@@ -122,6 +125,17 @@ class Deployment {
122
125
  */
123
126
  async queue(options) {
124
127
  const { resourceName, deliveryDelay, messageRetentionPeriod } = options;
128
+ const dlq = await Queue(
129
+ composeIdentifierName({ resourceName, resource: "dlq" }),
130
+ {
131
+ name: composeResourceName({
132
+ project: this.project,
133
+ environment: this.environment,
134
+ // TODO: Convert to a util
135
+ resourceName: `${resourceName}-dlq`
136
+ })
137
+ }
138
+ );
125
139
  return await Queue(
126
140
  composeIdentifierName({ resourceName, resource: "queue" }),
127
141
  composeQueueArguments({
@@ -131,7 +145,8 @@ class Deployment {
131
145
  resourceName
132
146
  }),
133
147
  deliveryDelay,
134
- messageRetentionPeriod
148
+ messageRetentionPeriod,
149
+ dlq
135
150
  })
136
151
  );
137
152
  }
@@ -190,6 +205,16 @@ class Deployment {
190
205
  resource: resource || "worker"
191
206
  });
192
207
  const workerConfig = await loadWorkerConfig({ path });
208
+ const consumers = eventSources?.map((queue) => {
209
+ return {
210
+ queue,
211
+ settings: {
212
+ deadLetterQueue: queue.dlq,
213
+ batchSize: QUEUE_MAX_BATCH_SIZE,
214
+ maxWaitTimeMs: QUEUE_MAX_BATCH_TIMEOUT
215
+ }
216
+ };
217
+ });
193
218
  return await Worker(
194
219
  identifierName,
195
220
  composeWorkerArguments({
@@ -211,7 +236,7 @@ class Deployment {
211
236
  ...variables,
212
237
  ...secrets
213
238
  },
214
- eventSources
239
+ eventSources: consumers
215
240
  })
216
241
  );
217
242
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const worker = require('../shared/backend-sdk.BNEcLkji.cjs');
3
+ const worker = require('../shared/backend-sdk.n8SfX_xu.cjs');
4
4
  require('../shared/backend-sdk.ClVQ4AzB.cjs');
5
5
  require('@std/path');
6
6
  require('comment-json');
@@ -1,3 +1,3 @@
1
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.B7BfiqA5.cjs';
1
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.D8N5si7y.cjs';
2
2
  import 'alchemy/cloudflare';
3
3
  import '../shared/backend-sdk.CYcpgphg.cjs';
@@ -1,3 +1,3 @@
1
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.BEt22BOM.mjs';
1
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.OvCBQJUw.mjs';
2
2
  import 'alchemy/cloudflare';
3
3
  import '../shared/backend-sdk.CYcpgphg.mjs';
@@ -1,3 +1,3 @@
1
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.CCDScozq.js';
1
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.DSK5flKM.js';
2
2
  import 'alchemy/cloudflare';
3
3
  import '../shared/backend-sdk.CYcpgphg.js';
@@ -1,4 +1,4 @@
1
- export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.CLtx2lZQ.mjs';
1
+ export { c as composeWorkerArguments, e as extractWorkerCrons, l as loadWorkerConfig } from '../shared/backend-sdk.Cyo7INro.mjs';
2
2
  import '../shared/backend-sdk.BIVnu5aA.mjs';
3
3
  import '@std/path';
4
4
  import 'comment-json';
@@ -6,6 +6,8 @@ const COMPATIBILITY_DATE = "2025-06-04";
6
6
  const COMPATIBILITY_FLAGS = ["nodejs_compat"];
7
7
  const QUEUE_DELIVERY_DELAY = 5;
8
8
  const QUEUE_MESSAGE_RETENTION_PERIOD = 259200;
9
+ const QUEUE_MAX_BATCH_SIZE = 1;
10
+ const QUEUE_MAX_BATCH_TIMEOUT = 5;
9
11
  const D1_LOCATION_HINT = "weur";
10
12
  const R2_STORAGE_CLASS = "Standard";
11
13
  const R2_JURISDICTION = "eu";
@@ -55,4 +57,4 @@ const composeWorkerArguments = ({
55
57
  };
56
58
  };
57
59
 
58
- export { COMPATIBILITY_FLAGS as C, D1_LOCATION_HINT as D, QUEUE_MESSAGE_RETENTION_PERIOD as Q, R2_STORAGE_CLASS as R, QUEUE_DELIVERY_DELAY as a, R2_LOCATION_HINT as b, composeWorkerArguments as c, R2_JURISDICTION as d, extractWorkerCrons as e, COMPATIBILITY_DATE as f, loadWorkerConfig as l };
60
+ export { COMPATIBILITY_FLAGS as C, D1_LOCATION_HINT as D, QUEUE_MESSAGE_RETENTION_PERIOD as Q, R2_STORAGE_CLASS as R, QUEUE_DELIVERY_DELAY as a, R2_LOCATION_HINT as b, composeWorkerArguments as c, R2_JURISDICTION as d, extractWorkerCrons as e, QUEUE_MAX_BATCH_TIMEOUT as f, QUEUE_MAX_BATCH_SIZE as g, COMPATIBILITY_DATE as h, loadWorkerConfig as l };
@@ -1,7 +1,7 @@
1
- import { Bindings, Queue } from 'alchemy/cloudflare';
1
+ import { Bindings, Queue, QueueConsumerSettings } from 'alchemy/cloudflare';
2
2
  import { E as Environment } from './backend-sdk.CYcpgphg.cjs';
3
3
 
4
- type Resource = 'kv' | 'd1' | 'queue' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
4
+ type Resource = 'kv' | 'd1' | 'queue' | 'dlq' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
5
5
  type WorkerType = 'service' | 'orchestrator' | 'client';
6
6
  interface WorkerConfig {
7
7
  triggers: {
@@ -30,7 +30,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
30
30
  domains?: string[];
31
31
  crons?: string[];
32
32
  bindings?: Bindings;
33
- eventSources?: Queue[];
33
+ eventSources?: {
34
+ queue: Queue;
35
+ settings: QueueConsumerSettings;
36
+ }[];
34
37
  }) => {
35
38
  name: string;
36
39
  entrypoint: string;
@@ -42,7 +45,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
42
45
  url: false;
43
46
  assets: Bindings | undefined;
44
47
  domains: string[];
45
- eventSources: Queue[];
48
+ eventSources: {
49
+ queue: Queue;
50
+ settings: QueueConsumerSettings;
51
+ }[];
46
52
  crons: string[];
47
53
  bindings: Bindings | undefined;
48
54
  };
@@ -1,7 +1,7 @@
1
- import { Bindings, Queue } from 'alchemy/cloudflare';
1
+ import { Bindings, Queue, QueueConsumerSettings } from 'alchemy/cloudflare';
2
2
  import { E as Environment } from './backend-sdk.CYcpgphg.js';
3
3
 
4
- type Resource = 'kv' | 'd1' | 'queue' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
4
+ type Resource = 'kv' | 'd1' | 'queue' | 'dlq' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
5
5
  type WorkerType = 'service' | 'orchestrator' | 'client';
6
6
  interface WorkerConfig {
7
7
  triggers: {
@@ -30,7 +30,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
30
30
  domains?: string[];
31
31
  crons?: string[];
32
32
  bindings?: Bindings;
33
- eventSources?: Queue[];
33
+ eventSources?: {
34
+ queue: Queue;
35
+ settings: QueueConsumerSettings;
36
+ }[];
34
37
  }) => {
35
38
  name: string;
36
39
  entrypoint: string;
@@ -42,7 +45,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
42
45
  url: false;
43
46
  assets: Bindings | undefined;
44
47
  domains: string[];
45
- eventSources: Queue[];
48
+ eventSources: {
49
+ queue: Queue;
50
+ settings: QueueConsumerSettings;
51
+ }[];
46
52
  crons: string[];
47
53
  bindings: Bindings | undefined;
48
54
  };
@@ -1,7 +1,7 @@
1
- import { Bindings, Queue } from 'alchemy/cloudflare';
1
+ import { Bindings, Queue, QueueConsumerSettings } from 'alchemy/cloudflare';
2
2
  import { E as Environment } from './backend-sdk.CYcpgphg.mjs';
3
3
 
4
- type Resource = 'kv' | 'd1' | 'queue' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
4
+ type Resource = 'kv' | 'd1' | 'queue' | 'dlq' | 'r2' | 'durable-object' | 'worker' | 'service' | 'orchestrator' | 'client';
5
5
  type WorkerType = 'service' | 'orchestrator' | 'client';
6
6
  interface WorkerConfig {
7
7
  triggers: {
@@ -30,7 +30,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
30
30
  domains?: string[];
31
31
  crons?: string[];
32
32
  bindings?: Bindings;
33
- eventSources?: Queue[];
33
+ eventSources?: {
34
+ queue: Queue;
35
+ settings: QueueConsumerSettings;
36
+ }[];
34
37
  }) => {
35
38
  name: string;
36
39
  entrypoint: string;
@@ -42,7 +45,10 @@ declare const composeWorkerArguments: ({ resourceName, entrypoint, assets, domai
42
45
  url: false;
43
46
  assets: Bindings | undefined;
44
47
  domains: string[];
45
- eventSources: Queue[];
48
+ eventSources: {
49
+ queue: Queue;
50
+ settings: QueueConsumerSettings;
51
+ }[];
46
52
  crons: string[];
47
53
  bindings: Bindings | undefined;
48
54
  };
@@ -8,6 +8,8 @@ const COMPATIBILITY_DATE = "2025-06-04";
8
8
  const COMPATIBILITY_FLAGS = ["nodejs_compat"];
9
9
  const QUEUE_DELIVERY_DELAY = 5;
10
10
  const QUEUE_MESSAGE_RETENTION_PERIOD = 259200;
11
+ const QUEUE_MAX_BATCH_SIZE = 1;
12
+ const QUEUE_MAX_BATCH_TIMEOUT = 5;
11
13
  const D1_LOCATION_HINT = "weur";
12
14
  const R2_STORAGE_CLASS = "Standard";
13
15
  const R2_JURISDICTION = "eu";
@@ -61,6 +63,8 @@ exports.COMPATIBILITY_DATE = COMPATIBILITY_DATE;
61
63
  exports.COMPATIBILITY_FLAGS = COMPATIBILITY_FLAGS;
62
64
  exports.D1_LOCATION_HINT = D1_LOCATION_HINT;
63
65
  exports.QUEUE_DELIVERY_DELAY = QUEUE_DELIVERY_DELAY;
66
+ exports.QUEUE_MAX_BATCH_SIZE = QUEUE_MAX_BATCH_SIZE;
67
+ exports.QUEUE_MAX_BATCH_TIMEOUT = QUEUE_MAX_BATCH_TIMEOUT;
64
68
  exports.QUEUE_MESSAGE_RETENTION_PERIOD = QUEUE_MESSAGE_RETENTION_PERIOD;
65
69
  exports.R2_JURISDICTION = R2_JURISDICTION;
66
70
  exports.R2_LOCATION_HINT = R2_LOCATION_HINT;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develit-io/backend-sdk",
3
- "version": "5.28.3",
3
+ "version": "5.29.0",
4
4
  "description": "Develit Backend SDK",
5
5
  "author": "Develit.io",
6
6
  "license": "ISC",