@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 +35 -7
- package/dist/index.d.cts +6 -2
- package/dist/index.d.mts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.mjs +32 -7
- package/package.json +5 -8
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
|
-
|
|
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
|
|
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 =
|
|
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:
|
|
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.
|
|
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
|
|
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 {
|
|
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
|
|
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 {
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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:
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
36
|
-
"h3": "^1.15.
|
|
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.
|
|
42
|
-
},
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"vitest": "^1.6.0"
|
|
41
|
+
"zod": "^4.0.17"
|
|
45
42
|
}
|
|
46
43
|
}
|