@develit-io/backend-sdk 5.9.1 → 5.11.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
@@ -246,7 +246,14 @@ const isRemoteEnvironment = () => {
246
246
  const environment = process.env.ENVIRONMENT;
247
247
  return environment && environment !== "localhost";
248
248
  };
249
- const getPostgresLocalConnectionString = () => `postgres://db_user:db_password@127.0.0.1:${process.env.DB_LOCAL_PORT}/db`;
249
+ function derivePortFromId(id, base = 4e3, range = 1e4) {
250
+ let hash = 0;
251
+ for (let i = 0; i < id.length; i++) {
252
+ hash = hash * 31 + id.charCodeAt(i) >>> 0;
253
+ }
254
+ return base + hash % range;
255
+ }
256
+ const getPgLocalConnectionString = (id) => `postgres://db_user:db_password@127.0.0.1:${derivePortFromId(id)}/db`;
250
257
 
251
258
  function durableObjectNamespaceIdFromName(uniqueKey, name) {
252
259
  const key = crypto__default.createHash("sha256").update(uniqueKey).digest();
@@ -254,7 +261,7 @@ function durableObjectNamespaceIdFromName(uniqueKey, name) {
254
261
  const hmac = crypto__default.createHmac("sha256", key).update(nameHmac).digest().subarray(0, 16);
255
262
  return Buffer.concat([nameHmac, hmac]).toString("hex");
256
263
  }
257
- const getDatabaseIdFromWrangler = () => {
264
+ const getD1DatabaseIdFromWrangler = () => {
258
265
  try {
259
266
  const wranglerPath = path__default.resolve("./wrangler.jsonc");
260
267
  const wranglerContent = fs__default.readFileSync(wranglerPath, "utf-8");
@@ -315,7 +322,7 @@ const getD1Credentials = () => {
315
322
  if (environment === "localhost") {
316
323
  return {};
317
324
  }
318
- const databaseId = getDatabaseIdFromWrangler() ?? "";
325
+ const databaseId = getD1DatabaseIdFromWrangler() ?? "";
319
326
  if (isRemoteEnvironment()) {
320
327
  return {
321
328
  driver: "d1-http",
@@ -397,12 +404,30 @@ class DatabaseTransaction {
397
404
  }
398
405
 
399
406
  const defineCommand = (handler) => {
400
- return (params) => ({
407
+ return ((params) => ({
401
408
  handler: (db) => handler(db, params)
402
- });
409
+ }));
403
410
  };
404
411
 
412
+ const getPgDatabaseIdFromWrangler = () => {
413
+ try {
414
+ const wranglerPath = path__default.resolve("./wrangler.jsonc");
415
+ const wranglerContent = fs__default.readFileSync(wranglerPath, "utf-8");
416
+ const config = commentJson.parse(wranglerContent);
417
+ if (!config.name) {
418
+ throw new Error('Missing "name" in wrangler.jsonc');
419
+ }
420
+ const databaseId = `${config.name}-db`;
421
+ console.log(`Using databaseId derived from wrangler name: ${databaseId}`);
422
+ return databaseId;
423
+ } catch (err) {
424
+ console.warn(
425
+ `Warning: Could not derive databaseId from wrangler.jsonc: ${err}`
426
+ );
427
+ }
428
+ };
405
429
  const getPgCredentials = () => {
430
+ const databaseId = getPgDatabaseIdFromWrangler() ?? "";
406
431
  if (isRemoteEnvironment()) {
407
432
  return {
408
433
  dbCredentials: {
@@ -412,7 +437,7 @@ const getPgCredentials = () => {
412
437
  } else {
413
438
  return {
414
439
  dbCredentials: {
415
- url: getPostgresLocalConnectionString()
440
+ url: getPgLocalConnectionString(databaseId)
416
441
  }
417
442
  };
418
443
  }
@@ -578,6 +603,7 @@ exports.cloudflareQueue = cloudflareQueue;
578
603
  exports.createAuditLogWriter = createAuditLogWriter;
579
604
  exports.createInternalError = createInternalError;
580
605
  exports.defineCommand = defineCommand;
606
+ exports.derivePortFromId = derivePortFromId;
581
607
  exports.develitWorker = develitWorker;
582
608
  exports.drizzleD1Config = drizzleD1Config;
583
609
  exports.drizzlePgConfig = drizzlePgConfig;
@@ -585,8 +611,10 @@ exports.durableObjectNamespaceIdFromName = durableObjectNamespaceIdFromName;
585
611
  exports.first = first;
586
612
  exports.firstOrError = firstOrError;
587
613
  exports.getD1Credentials = getD1Credentials;
614
+ exports.getD1DatabaseIdFromWrangler = getD1DatabaseIdFromWrangler;
588
615
  exports.getPgCredentials = getPgCredentials;
589
- exports.getPostgresLocalConnectionString = getPostgresLocalConnectionString;
616
+ exports.getPgDatabaseIdFromWrangler = getPgDatabaseIdFromWrangler;
617
+ exports.getPgLocalConnectionString = getPgLocalConnectionString;
590
618
  exports.handleAction = handleAction;
591
619
  exports.handleActionResponse = handleActionResponse;
592
620
  exports.ibanZodSchema = ibanZodSchema;
package/dist/index.d.cts CHANGED
@@ -191,6 +191,7 @@ type AuditLogWriter<TAuditAction = string> = (logs: AuditLogPayload<TAuditAction
191
191
  declare function createAuditLogWriter<TAuditAction = string>(table: AuditLogTable): AuditLogWriter<TAuditAction>;
192
192
 
193
193
  declare function durableObjectNamespaceIdFromName(uniqueKey: string, name: string): string;
194
+ declare const getD1DatabaseIdFromWrangler: () => string | undefined;
194
195
  declare const getD1Credentials: () => {
195
196
  driver?: undefined;
196
197
  dbCredentials?: undefined;
@@ -270,7 +271,8 @@ declare class DatabaseTransaction<TAuditAction = string> {
270
271
  declare function first<T>(rows: T[]): T | undefined;
271
272
  declare function firstOrError<T>(rows: T[]): T;
272
273
  declare const uuidv4: () => `${string}-${string}-${string}-${string}-${string}`;
273
- declare const getPostgresLocalConnectionString: () => string;
274
+ declare function derivePortFromId(id: string, base?: number, range?: number): number;
275
+ declare const getPgLocalConnectionString: (id: string) => string;
274
276
 
275
277
  declare const createInternalError: (error: unknown, details?: {
276
278
  status?: InternalErrorResponseStatus;
@@ -279,6 +281,7 @@ declare const createInternalError: (error: unknown, details?: {
279
281
  }) => InternalError;
280
282
  declare const isInternalError: (error: unknown) => error is InternalError;
281
283
 
284
+ declare const getPgDatabaseIdFromWrangler: () => string | undefined;
282
285
  declare const getPgCredentials: () => {
283
286
  dbCredentials: {
284
287
  url: string;
@@ -396,4 +399,5 @@ interface WithRetryCounterOptions {
396
399
  type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...args: TArgs) => Promise<TResult>;
397
400
  declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
398
401
 
399
- export { type ActionExecution, type ActionHandlerOptions, type AuditLogWriter, type Command, type CommandLogPayload, DatabaseTransaction, type DevelitWorkerMethods, type GatewayResponse, type IRPCResponse, type IncludeRelation, type InferResultType, type InternalError, type InternalErrorResponseStatus, RPCResponse, type ValidatedInput, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getPgCredentials, getPostgresLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
402
+ export { DatabaseTransaction, RPCResponse, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
403
+ export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, Command, CommandLogPayload, DevelitWorkerMethods, GatewayResponse, IRPCResponse, IncludeRelation, InferResultType, InternalError, InternalErrorResponseStatus, ValidatedInput };
package/dist/index.d.mts CHANGED
@@ -191,6 +191,7 @@ type AuditLogWriter<TAuditAction = string> = (logs: AuditLogPayload<TAuditAction
191
191
  declare function createAuditLogWriter<TAuditAction = string>(table: AuditLogTable): AuditLogWriter<TAuditAction>;
192
192
 
193
193
  declare function durableObjectNamespaceIdFromName(uniqueKey: string, name: string): string;
194
+ declare const getD1DatabaseIdFromWrangler: () => string | undefined;
194
195
  declare const getD1Credentials: () => {
195
196
  driver?: undefined;
196
197
  dbCredentials?: undefined;
@@ -270,7 +271,8 @@ declare class DatabaseTransaction<TAuditAction = string> {
270
271
  declare function first<T>(rows: T[]): T | undefined;
271
272
  declare function firstOrError<T>(rows: T[]): T;
272
273
  declare const uuidv4: () => `${string}-${string}-${string}-${string}-${string}`;
273
- declare const getPostgresLocalConnectionString: () => string;
274
+ declare function derivePortFromId(id: string, base?: number, range?: number): number;
275
+ declare const getPgLocalConnectionString: (id: string) => string;
274
276
 
275
277
  declare const createInternalError: (error: unknown, details?: {
276
278
  status?: InternalErrorResponseStatus;
@@ -279,6 +281,7 @@ declare const createInternalError: (error: unknown, details?: {
279
281
  }) => InternalError;
280
282
  declare const isInternalError: (error: unknown) => error is InternalError;
281
283
 
284
+ declare const getPgDatabaseIdFromWrangler: () => string | undefined;
282
285
  declare const getPgCredentials: () => {
283
286
  dbCredentials: {
284
287
  url: string;
@@ -396,4 +399,5 @@ interface WithRetryCounterOptions {
396
399
  type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...args: TArgs) => Promise<TResult>;
397
400
  declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
398
401
 
399
- export { type ActionExecution, type ActionHandlerOptions, type AuditLogWriter, type Command, type CommandLogPayload, DatabaseTransaction, type DevelitWorkerMethods, type GatewayResponse, type IRPCResponse, type IncludeRelation, type InferResultType, type InternalError, type InternalErrorResponseStatus, RPCResponse, type ValidatedInput, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getPgCredentials, getPostgresLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
402
+ export { DatabaseTransaction, RPCResponse, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
403
+ export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, Command, CommandLogPayload, DevelitWorkerMethods, GatewayResponse, IRPCResponse, IncludeRelation, InferResultType, InternalError, InternalErrorResponseStatus, ValidatedInput };
package/dist/index.d.ts CHANGED
@@ -191,6 +191,7 @@ type AuditLogWriter<TAuditAction = string> = (logs: AuditLogPayload<TAuditAction
191
191
  declare function createAuditLogWriter<TAuditAction = string>(table: AuditLogTable): AuditLogWriter<TAuditAction>;
192
192
 
193
193
  declare function durableObjectNamespaceIdFromName(uniqueKey: string, name: string): string;
194
+ declare const getD1DatabaseIdFromWrangler: () => string | undefined;
194
195
  declare const getD1Credentials: () => {
195
196
  driver?: undefined;
196
197
  dbCredentials?: undefined;
@@ -270,7 +271,8 @@ declare class DatabaseTransaction<TAuditAction = string> {
270
271
  declare function first<T>(rows: T[]): T | undefined;
271
272
  declare function firstOrError<T>(rows: T[]): T;
272
273
  declare const uuidv4: () => `${string}-${string}-${string}-${string}-${string}`;
273
- declare const getPostgresLocalConnectionString: () => string;
274
+ declare function derivePortFromId(id: string, base?: number, range?: number): number;
275
+ declare const getPgLocalConnectionString: (id: string) => string;
274
276
 
275
277
  declare const createInternalError: (error: unknown, details?: {
276
278
  status?: InternalErrorResponseStatus;
@@ -279,6 +281,7 @@ declare const createInternalError: (error: unknown, details?: {
279
281
  }) => InternalError;
280
282
  declare const isInternalError: (error: unknown) => error is InternalError;
281
283
 
284
+ declare const getPgDatabaseIdFromWrangler: () => string | undefined;
282
285
  declare const getPgCredentials: () => {
283
286
  dbCredentials: {
284
287
  url: string;
@@ -396,4 +399,5 @@ interface WithRetryCounterOptions {
396
399
  type AsyncMethod<TArgs extends unknown[] = unknown[], TResult = unknown> = (...args: TArgs) => Promise<TResult>;
397
400
  declare function cloudflareQueue<TArgs extends unknown[] = unknown[], TResult = unknown>(options: WithRetryCounterOptions): (target: unknown, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<AsyncMethod<TArgs, TResult>>) => void;
398
401
 
399
- export { type ActionExecution, type ActionHandlerOptions, type AuditLogWriter, type Command, type CommandLogPayload, DatabaseTransaction, type DevelitWorkerMethods, type GatewayResponse, type IRPCResponse, type IncludeRelation, type InferResultType, type InternalError, type InternalErrorResponseStatus, RPCResponse, type ValidatedInput, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getPgCredentials, getPostgresLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
402
+ export { DatabaseTransaction, RPCResponse, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
403
+ export type { ActionExecution, ActionHandlerOptions, AuditLogWriter, Command, CommandLogPayload, DevelitWorkerMethods, GatewayResponse, IRPCResponse, IncludeRelation, InferResultType, InternalError, InternalErrorResponseStatus, ValidatedInput };
package/dist/index.mjs CHANGED
@@ -224,7 +224,14 @@ const isRemoteEnvironment = () => {
224
224
  const environment = process.env.ENVIRONMENT;
225
225
  return environment && environment !== "localhost";
226
226
  };
227
- const getPostgresLocalConnectionString = () => `postgres://db_user:db_password@127.0.0.1:${process.env.DB_LOCAL_PORT}/db`;
227
+ function derivePortFromId(id, base = 4e3, range = 1e4) {
228
+ let hash = 0;
229
+ for (let i = 0; i < id.length; i++) {
230
+ hash = hash * 31 + id.charCodeAt(i) >>> 0;
231
+ }
232
+ return base + hash % range;
233
+ }
234
+ const getPgLocalConnectionString = (id) => `postgres://db_user:db_password@127.0.0.1:${derivePortFromId(id)}/db`;
228
235
 
229
236
  function durableObjectNamespaceIdFromName(uniqueKey, name) {
230
237
  const key = crypto$1.createHash("sha256").update(uniqueKey).digest();
@@ -232,7 +239,7 @@ function durableObjectNamespaceIdFromName(uniqueKey, name) {
232
239
  const hmac = crypto$1.createHmac("sha256", key).update(nameHmac).digest().subarray(0, 16);
233
240
  return Buffer.concat([nameHmac, hmac]).toString("hex");
234
241
  }
235
- const getDatabaseIdFromWrangler = () => {
242
+ const getD1DatabaseIdFromWrangler = () => {
236
243
  try {
237
244
  const wranglerPath = path.resolve("./wrangler.jsonc");
238
245
  const wranglerContent = fs.readFileSync(wranglerPath, "utf-8");
@@ -293,7 +300,7 @@ const getD1Credentials = () => {
293
300
  if (environment === "localhost") {
294
301
  return {};
295
302
  }
296
- const databaseId = getDatabaseIdFromWrangler() ?? "";
303
+ const databaseId = getD1DatabaseIdFromWrangler() ?? "";
297
304
  if (isRemoteEnvironment()) {
298
305
  return {
299
306
  driver: "d1-http",
@@ -375,12 +382,30 @@ class DatabaseTransaction {
375
382
  }
376
383
 
377
384
  const defineCommand = (handler) => {
378
- return (params) => ({
385
+ return ((params) => ({
379
386
  handler: (db) => handler(db, params)
380
- });
387
+ }));
381
388
  };
382
389
 
390
+ const getPgDatabaseIdFromWrangler = () => {
391
+ try {
392
+ const wranglerPath = path.resolve("./wrangler.jsonc");
393
+ const wranglerContent = fs.readFileSync(wranglerPath, "utf-8");
394
+ const config = parse(wranglerContent);
395
+ if (!config.name) {
396
+ throw new Error('Missing "name" in wrangler.jsonc');
397
+ }
398
+ const databaseId = `${config.name}-db`;
399
+ console.log(`Using databaseId derived from wrangler name: ${databaseId}`);
400
+ return databaseId;
401
+ } catch (err) {
402
+ console.warn(
403
+ `Warning: Could not derive databaseId from wrangler.jsonc: ${err}`
404
+ );
405
+ }
406
+ };
383
407
  const getPgCredentials = () => {
408
+ const databaseId = getPgDatabaseIdFromWrangler() ?? "";
384
409
  if (isRemoteEnvironment()) {
385
410
  return {
386
411
  dbCredentials: {
@@ -390,7 +415,7 @@ const getPgCredentials = () => {
390
415
  } else {
391
416
  return {
392
417
  dbCredentials: {
393
- url: getPostgresLocalConnectionString()
418
+ url: getPgLocalConnectionString(databaseId)
394
419
  }
395
420
  };
396
421
  }
@@ -546,4 +571,4 @@ function develitWorker(Worker) {
546
571
  return DevelitWorker;
547
572
  }
548
573
 
549
- export { DatabaseTransaction, RPCResponse, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getPgCredentials, getPostgresLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
574
+ export { DatabaseTransaction, RPCResponse, action, base, basePostgres, calculateExponentialBackoff, cloudflareQueue, createAuditLogWriter, createInternalError, defineCommand, derivePortFromId, develitWorker, drizzleD1Config, drizzlePgConfig, durableObjectNamespaceIdFromName, first, firstOrError, getD1Credentials, getD1DatabaseIdFromWrangler, getPgCredentials, getPgDatabaseIdFromWrangler, getPgLocalConnectionString, handleAction, handleActionResponse, ibanZodSchema, isInternalError, service, swiftZodSchema, useResult, useResultSync, uuidv4 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@develit-io/backend-sdk",
3
- "version": "5.9.1",
3
+ "version": "5.11.0",
4
4
  "description": "Develit Backend SDK",
5
5
  "author": "Develit.io",
6
6
  "license": "ISC",
@@ -28,19 +28,16 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "files": ["dist"],
30
30
  "dependencies": {
31
- "@cloudflare/workers-types": "^4.20250722.0",
31
+ "@cloudflare/workers-types": "^4.20250816.0",
32
32
  "comment-json": "^4.2.5",
33
33
  "consola": "^3.4.2",
34
34
  "drizzle-kit": "^0.31.4",
35
- "drizzle-orm": "^0.44.3",
36
- "h3": "^1.15.3",
35
+ "drizzle-orm": "^0.44.4",
36
+ "h3": "^1.15.4",
37
37
  "http-status-codes": "2.3.0",
38
38
  "superjson": "^2.2.2"
39
39
  },
40
40
  "peerDependencies": {
41
- "zod": "^4.0.11"
42
- },
43
- "devDependencies": {
44
- "vitest": "^1.6.0"
41
+ "zod": "^4.0.17"
45
42
  }
46
43
  }