@geekmidas/db 10.0.0-alpha.4 → 10.0.0-alpha.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/errors.cjs +72 -5
  2. package/dist/errors.cjs.map +1 -0
  3. package/dist/errors.d.cts +4 -6
  4. package/dist/errors.d.cts.map +1 -1
  5. package/dist/errors.d.mts +4 -6
  6. package/dist/errors.d.mts.map +1 -1
  7. package/dist/errors.mjs +68 -2
  8. package/dist/errors.mjs.map +1 -0
  9. package/dist/kysely/pagination.cjs +7 -9
  10. package/dist/kysely/pagination.cjs.map +1 -1
  11. package/dist/kysely/pagination.d.cts +4 -14
  12. package/dist/kysely/pagination.d.cts.map +1 -1
  13. package/dist/kysely/pagination.d.mts +4 -14
  14. package/dist/kysely/pagination.d.mts.map +1 -1
  15. package/dist/kysely/pagination.mjs +6 -9
  16. package/dist/kysely/pagination.mjs.map +1 -1
  17. package/dist/kysely.cjs +11 -2
  18. package/dist/kysely.cjs.map +1 -0
  19. package/dist/kysely.d.cts +9 -2
  20. package/dist/kysely.d.cts.map +1 -0
  21. package/dist/kysely.d.mts +9 -2
  22. package/dist/kysely.d.mts.map +1 -0
  23. package/dist/kysely.mjs +10 -2
  24. package/dist/kysely.mjs.map +1 -0
  25. package/dist/objection/pagination.cjs +6 -7
  26. package/dist/objection/pagination.cjs.map +1 -1
  27. package/dist/objection/pagination.d.cts +4 -14
  28. package/dist/objection/pagination.d.cts.map +1 -1
  29. package/dist/objection/pagination.d.mts +4 -14
  30. package/dist/objection/pagination.d.mts.map +1 -1
  31. package/dist/objection/pagination.mjs +5 -7
  32. package/dist/objection/pagination.mjs.map +1 -1
  33. package/dist/pagination.cjs +39 -4
  34. package/dist/pagination.cjs.map +1 -0
  35. package/dist/pagination.d.cts +30 -2
  36. package/dist/pagination.d.cts.map +1 -0
  37. package/dist/pagination.d.mts +30 -2
  38. package/dist/pagination.d.mts.map +1 -0
  39. package/dist/pagination.mjs +36 -2
  40. package/dist/pagination.mjs.map +1 -0
  41. package/dist/pg/roles.cjs +26 -3
  42. package/dist/pg/roles.cjs.map +1 -1
  43. package/dist/pg/roles.d.cts +16 -8
  44. package/dist/pg/roles.d.cts.map +1 -1
  45. package/dist/pg/roles.d.mts +16 -8
  46. package/dist/pg/roles.d.mts.map +1 -1
  47. package/dist/pg/roles.mjs +25 -2
  48. package/dist/pg/roles.mjs.map +1 -1
  49. package/dist/pg/url.cjs +18 -3
  50. package/dist/pg/url.cjs.map +1 -1
  51. package/dist/pg/url.d.cts +2 -4
  52. package/dist/pg/url.d.cts.map +1 -1
  53. package/dist/pg/url.d.mts +2 -4
  54. package/dist/pg/url.d.mts.map +1 -1
  55. package/dist/pg/url.mjs +17 -3
  56. package/dist/pg/url.mjs.map +1 -1
  57. package/dist/rls.cjs +5 -29
  58. package/dist/rls.cjs.map +1 -1
  59. package/dist/rls.d.cts +6 -10
  60. package/dist/rls.d.cts.map +1 -1
  61. package/dist/rls.d.mts +6 -10
  62. package/dist/rls.d.mts.map +1 -1
  63. package/dist/rls.mjs +3 -5
  64. package/dist/rls.mjs.map +1 -1
  65. package/package.json +2 -2
  66. package/dist/errors-CfFCan-X.mjs +0 -69
  67. package/dist/errors-CfFCan-X.mjs.map +0 -1
  68. package/dist/errors-Cs5jlAv-.cjs +0 -93
  69. package/dist/errors-Cs5jlAv-.cjs.map +0 -1
  70. package/dist/kysely-BAedYsvn.d.mts +0 -13
  71. package/dist/kysely-BAedYsvn.d.mts.map +0 -1
  72. package/dist/kysely-Bo_Zg-D3.mjs +0 -11
  73. package/dist/kysely-Bo_Zg-D3.mjs.map +0 -1
  74. package/dist/kysely-D3eeuId4.d.cts +0 -13
  75. package/dist/kysely-D3eeuId4.d.cts.map +0 -1
  76. package/dist/kysely-LWvS2ekY.cjs +0 -17
  77. package/dist/kysely-LWvS2ekY.cjs.map +0 -1
  78. package/dist/pagination-BAFX7C1I.d.cts +0 -32
  79. package/dist/pagination-BAFX7C1I.d.cts.map +0 -1
  80. package/dist/pagination-Bu1dqOy0.cjs +0 -55
  81. package/dist/pagination-Bu1dqOy0.cjs.map +0 -1
  82. package/dist/pagination-CQ8QHXaL.mjs +0 -37
  83. package/dist/pagination-CQ8QHXaL.mjs.map +0 -1
  84. package/dist/pagination-kv-KWS-7.d.mts +0 -32
  85. package/dist/pagination-kv-KWS-7.d.mts.map +0 -1
@@ -1,93 +0,0 @@
1
-
2
- //#region src/errors.ts
3
- /**
4
- * Database URL errors and redaction — engine-neutral.
5
- *
6
- * Nothing here is Postgres-specific: every engine addresses itself as a URL
7
- * carrying a password, and "must name a host" holds for all of them. The parts
8
- * that differ — libpq's `options=-c search_path=…`, which no other engine
9
- * accepts — live under the driver they belong to.
10
- *
11
- * Messages state the rule, which is constant; the offending value is a field.
12
- * An interpolated message cannot be matched on and carries user input into
13
- * every log line that touches it.
14
- */
15
- /**
16
- * Replace the password in a connection string with `***`.
17
- *
18
- * A connection string is a secret, and the places it is most likely to be
19
- * written down — a log line, an error, a crash report shipped to a third party
20
- * — are the places nobody is reading carefully. This exists so that redacting
21
- * is the easy thing to do at each of them.
22
- *
23
- * Safe on input that is not a URL: it returns a constant rather than throwing,
24
- * because this runs on paths that must not fail. Anything unparseable is
25
- * treated as potentially secret and withheld entirely rather than echoed.
26
- */
27
- function redactDatabaseUrl(url) {
28
- try {
29
- const parsed = new URL(url);
30
- if (!parsed.password) return url;
31
- parsed.password = "***";
32
- return parsed.toString();
33
- } catch {
34
- return "<unparseable url>";
35
- }
36
- }
37
- /**
38
- * Base for an address that cannot become a connection string.
39
- *
40
- * Deliberately carries no URL field: these are thrown while *composing* one, so
41
- * there is no URL yet — only the parts, which include the password.
42
- */
43
- var DatabaseAddressError = class extends Error {
44
- constructor(message) {
45
- super(message);
46
- this.name = new.target.name;
47
- }
48
- };
49
- /** An address with no host to connect to. */
50
- var MissingDatabaseHost = class extends DatabaseAddressError {
51
- constructor() {
52
- super("A database address must name a host");
53
- }
54
- };
55
- /**
56
- * An address with no database name.
57
- *
58
- * Postgres silently falls back to the connecting role's name, so the app
59
- * connects successfully to the wrong database and fails later with confusing
60
- * "relation does not exist" errors. Rejecting it here is much cheaper.
61
- */
62
- var MissingDatabaseName = class extends DatabaseAddressError {
63
- constructor() {
64
- super("A database address must name a database");
65
- }
66
- };
67
-
68
- //#endregion
69
- Object.defineProperty(exports, 'DatabaseAddressError', {
70
- enumerable: true,
71
- get: function () {
72
- return DatabaseAddressError;
73
- }
74
- });
75
- Object.defineProperty(exports, 'MissingDatabaseHost', {
76
- enumerable: true,
77
- get: function () {
78
- return MissingDatabaseHost;
79
- }
80
- });
81
- Object.defineProperty(exports, 'MissingDatabaseName', {
82
- enumerable: true,
83
- get: function () {
84
- return MissingDatabaseName;
85
- }
86
- });
87
- Object.defineProperty(exports, 'redactDatabaseUrl', {
88
- enumerable: true,
89
- get: function () {
90
- return redactDatabaseUrl;
91
- }
92
- });
93
- //# sourceMappingURL=errors-Cs5jlAv-.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors-Cs5jlAv-.cjs","names":["url: string","message: string"],"sources":["../src/errors.ts"],"sourcesContent":["/**\n * Database URL errors and redaction — engine-neutral.\n *\n * Nothing here is Postgres-specific: every engine addresses itself as a URL\n * carrying a password, and \"must name a host\" holds for all of them. The parts\n * that differ — libpq's `options=-c search_path=…`, which no other engine\n * accepts — live under the driver they belong to.\n *\n * Messages state the rule, which is constant; the offending value is a field.\n * An interpolated message cannot be matched on and carries user input into\n * every log line that touches it.\n */\n\n/**\n * Replace the password in a connection string with `***`.\n *\n * A connection string is a secret, and the places it is most likely to be\n * written down — a log line, an error, a crash report shipped to a third party\n * — are the places nobody is reading carefully. This exists so that redacting\n * is the easy thing to do at each of them.\n *\n * Safe on input that is not a URL: it returns a constant rather than throwing,\n * because this runs on paths that must not fail. Anything unparseable is\n * treated as potentially secret and withheld entirely rather than echoed.\n */\nexport function redactDatabaseUrl(url: string): string {\n\ttry {\n\t\tconst parsed = new URL(url);\n\t\tif (!parsed.password) return url;\n\t\tparsed.password = '***';\n\t\treturn parsed.toString();\n\t} catch {\n\t\treturn '<unparseable url>';\n\t}\n}\n\n/**\n * Base for an address that cannot become a connection string.\n *\n * Deliberately carries no URL field: these are thrown while *composing* one, so\n * there is no URL yet — only the parts, which include the password.\n */\nexport abstract class DatabaseAddressError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = new.target.name;\n\t}\n}\n\n/** An address with no host to connect to. */\nexport class MissingDatabaseHost extends DatabaseAddressError {\n\tconstructor() {\n\t\tsuper('A database address must name a host');\n\t}\n}\n\n/**\n * An address with no database name.\n *\n * Postgres silently falls back to the connecting role's name, so the app\n * connects successfully to the wrong database and fails later with confusing\n * \"relation does not exist\" errors. Rejecting it here is much cheaper.\n */\nexport class MissingDatabaseName extends DatabaseAddressError {\n\tconstructor() {\n\t\tsuper('A database address must name a database');\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,kBAAkBA,KAAqB;AACtD,KAAI;EACH,MAAM,SAAS,IAAI,IAAI;AACvB,OAAK,OAAO,SAAU,QAAO;AAC7B,SAAO,WAAW;AAClB,SAAO,OAAO,UAAU;CACxB,QAAO;AACP,SAAO;CACP;AACD;;;;;;;AAQD,IAAsB,uBAAtB,cAAmD,MAAM;CACxD,YAAYC,SAAiB;AAC5B,QAAM,QAAQ;AACd,OAAK,OAAO,IAAI,OAAO;CACvB;AACD;;AAGD,IAAa,sBAAb,cAAyC,qBAAqB;CAC7D,cAAc;AACb,QAAM,sCAAsC;CAC5C;AACD;;;;;;;;AASD,IAAa,sBAAb,cAAyC,qBAAqB;CAC7D,cAAc;AACb,QAAM,0CAA0C;CAChD;AACD"}
@@ -1,13 +0,0 @@
1
- import { ControlledTransaction, IsolationLevel, Kysely, Transaction } from "kysely";
2
-
3
- //#region src/kysely.d.ts
4
- interface TransactionSettings {
5
- isolationLevel?: IsolationLevel;
6
- }
7
- declare function withTransaction<DB, T>(db: DatabaseConnection<DB>, cb: (trx: Transaction<DB>) => Promise<T>, settings?: TransactionSettings): Promise<T>;
8
- type DatabaseConnection<T> = ControlledTransaction<T> | Kysely<T> | Transaction<T>;
9
- //# sourceMappingURL=kysely.d.ts.map
10
-
11
- //#endregion
12
- export { DatabaseConnection, TransactionSettings, withTransaction };
13
- //# sourceMappingURL=kysely-BAedYsvn.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-BAedYsvn.d.mts","names":[],"sources":["../src/kysely.ts"],"sourcesContent":[],"mappings":";;;UAOiB,mBAAA;mBACC;AADlB;AAIgB,iBAAA,eAAe,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAC1B,kBAD0B,CACP,EADO,CAAA,EAAA,EAAA,EAAA,CAAA,GAAA,EAEpB,WAFoB,CAER,EAFQ,CAAA,EAAA,GAEA,OAFA,CAEQ,CAFR,CAAA,EAAA,QAAA,CAAA,EAGnB,mBAHmB,CAAA,EAI5B,OAJ4B,CAIpB,CAJoB,CAAA;AAAA,KAkBnB,kBAlBmB,CAAA,CAAA,CAAA,GAmB5B,qBAnB4B,CAmBN,CAnBM,CAAA,GAoB5B,MApB4B,CAoBrB,CApBqB,CAAA,GAqB5B,WArB4B,CAqBhB,CArBgB,CAAA"}
@@ -1,11 +0,0 @@
1
- //#region src/kysely.ts
2
- function withTransaction(db, cb, settings) {
3
- if (db.isTransaction) return cb(db);
4
- const builder = db.transaction();
5
- if (settings?.isolationLevel) return builder.setIsolationLevel(settings.isolationLevel).execute(cb);
6
- return builder.execute(cb);
7
- }
8
-
9
- //#endregion
10
- export { withTransaction };
11
- //# sourceMappingURL=kysely-Bo_Zg-D3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-Bo_Zg-D3.mjs","names":["db: DatabaseConnection<DB>","cb: (trx: Transaction<DB>) => Promise<T>","settings?: TransactionSettings"],"sources":["../src/kysely.ts"],"sourcesContent":["import type {\n\tControlledTransaction,\n\tIsolationLevel,\n\tKysely,\n\tTransaction,\n} from 'kysely';\n\nexport interface TransactionSettings {\n\tisolationLevel?: IsolationLevel;\n}\n\nexport function withTransaction<DB, T>(\n\tdb: DatabaseConnection<DB>,\n\tcb: (trx: Transaction<DB>) => Promise<T>,\n\tsettings?: TransactionSettings,\n): Promise<T> {\n\tif (db.isTransaction) {\n\t\treturn cb(db as Transaction<DB>);\n\t}\n\n\tconst builder = db.transaction();\n\n\tif (settings?.isolationLevel) {\n\t\treturn builder.setIsolationLevel(settings.isolationLevel).execute(cb);\n\t}\n\n\treturn builder.execute(cb);\n}\n\nexport type DatabaseConnection<T> =\n\t| ControlledTransaction<T>\n\t| Kysely<T>\n\t| Transaction<T>;\n"],"mappings":";AAWA,SAAgB,gBACfA,IACAC,IACAC,UACa;AACb,KAAI,GAAG,cACN,QAAO,GAAG,GAAsB;CAGjC,MAAM,UAAU,GAAG,aAAa;AAEhC,KAAI,UAAU,eACb,QAAO,QAAQ,kBAAkB,SAAS,eAAe,CAAC,QAAQ,GAAG;AAGtE,QAAO,QAAQ,QAAQ,GAAG;AAC1B"}
@@ -1,13 +0,0 @@
1
- import { ControlledTransaction, IsolationLevel, Kysely, Transaction } from "kysely";
2
-
3
- //#region src/kysely.d.ts
4
- interface TransactionSettings {
5
- isolationLevel?: IsolationLevel;
6
- }
7
- declare function withTransaction<DB, T>(db: DatabaseConnection<DB>, cb: (trx: Transaction<DB>) => Promise<T>, settings?: TransactionSettings): Promise<T>;
8
- type DatabaseConnection<T> = ControlledTransaction<T> | Kysely<T> | Transaction<T>;
9
- //# sourceMappingURL=kysely.d.ts.map
10
-
11
- //#endregion
12
- export { DatabaseConnection, TransactionSettings, withTransaction };
13
- //# sourceMappingURL=kysely-D3eeuId4.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-D3eeuId4.d.cts","names":[],"sources":["../src/kysely.ts"],"sourcesContent":[],"mappings":";;;UAOiB,mBAAA;mBACC;AADlB;AAIgB,iBAAA,eAAe,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAC1B,kBAD0B,CACP,EADO,CAAA,EAAA,EAAA,EAAA,CAAA,GAAA,EAEpB,WAFoB,CAER,EAFQ,CAAA,EAAA,GAEA,OAFA,CAEQ,CAFR,CAAA,EAAA,QAAA,CAAA,EAGnB,mBAHmB,CAAA,EAI5B,OAJ4B,CAIpB,CAJoB,CAAA;AAAA,KAkBnB,kBAlBmB,CAAA,CAAA,CAAA,GAmB5B,qBAnB4B,CAmBN,CAnBM,CAAA,GAoB5B,MApB4B,CAoBrB,CApBqB,CAAA,GAqB5B,WArB4B,CAqBhB,CArBgB,CAAA"}
@@ -1,17 +0,0 @@
1
-
2
- //#region src/kysely.ts
3
- function withTransaction(db, cb, settings) {
4
- if (db.isTransaction) return cb(db);
5
- const builder = db.transaction();
6
- if (settings?.isolationLevel) return builder.setIsolationLevel(settings.isolationLevel).execute(cb);
7
- return builder.execute(cb);
8
- }
9
-
10
- //#endregion
11
- Object.defineProperty(exports, 'withTransaction', {
12
- enumerable: true,
13
- get: function () {
14
- return withTransaction;
15
- }
16
- });
17
- //# sourceMappingURL=kysely-LWvS2ekY.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-LWvS2ekY.cjs","names":["db: DatabaseConnection<DB>","cb: (trx: Transaction<DB>) => Promise<T>","settings?: TransactionSettings"],"sources":["../src/kysely.ts"],"sourcesContent":["import type {\n\tControlledTransaction,\n\tIsolationLevel,\n\tKysely,\n\tTransaction,\n} from 'kysely';\n\nexport interface TransactionSettings {\n\tisolationLevel?: IsolationLevel;\n}\n\nexport function withTransaction<DB, T>(\n\tdb: DatabaseConnection<DB>,\n\tcb: (trx: Transaction<DB>) => Promise<T>,\n\tsettings?: TransactionSettings,\n): Promise<T> {\n\tif (db.isTransaction) {\n\t\treturn cb(db as Transaction<DB>);\n\t}\n\n\tconst builder = db.transaction();\n\n\tif (settings?.isolationLevel) {\n\t\treturn builder.setIsolationLevel(settings.isolationLevel).execute(cb);\n\t}\n\n\treturn builder.execute(cb);\n}\n\nexport type DatabaseConnection<T> =\n\t| ControlledTransaction<T>\n\t| Kysely<T>\n\t| Transaction<T>;\n"],"mappings":";;AAWA,SAAgB,gBACfA,IACAC,IACAC,UACa;AACb,KAAI,GAAG,cACN,QAAO,GAAG,GAAsB;CAGjC,MAAM,UAAU,GAAG,aAAa;AAEhC,KAAI,UAAU,eACb,QAAO,QAAQ,kBAAkB,SAAS,eAAe,CAAC,QAAQ,GAAG;AAGtE,QAAO,QAAQ,QAAQ,GAAG;AAC1B"}
@@ -1,32 +0,0 @@
1
- //#region src/pagination.d.ts
2
- /**
3
- * Sort direction for cursor-based pagination.
4
- */
5
- declare enum Direction {
6
- Asc = "asc",
7
- Desc = "desc",
8
- }
9
- /**
10
- * Result of a paginated query.
11
- */
12
- interface PaginationResult<TItem> {
13
- items: TItem[];
14
- pagination: {
15
- total: number;
16
- hasMore: boolean;
17
- cursor?: string;
18
- };
19
- }
20
- /**
21
- * Encode a cursor value for safe URL transmission.
22
- * Supports various types: string, number, Date, etc.
23
- */
24
- declare function encodeCursor(value: unknown): string;
25
- /**
26
- * Decode a cursor string back to its original value.
27
- */
28
- declare function decodeCursor(cursor: string): unknown;
29
- //# sourceMappingURL=pagination.d.ts.map
30
- //#endregion
31
- export { Direction, PaginationResult, decodeCursor, encodeCursor };
32
- //# sourceMappingURL=pagination-BAFX7C1I.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-BAFX7C1I.d.cts","names":[],"sources":["../src/pagination.ts"],"sourcesContent":[],"mappings":";;AAGA;AAQA;AAagB,aArBJ,SAAA;EAgCI,GAAA,GAAA,KAAA;;;;;;UAxBC;SACT;;;;;;;;;;;iBAYQ,YAAA;;;;iBAWA,YAAA"}
@@ -1,55 +0,0 @@
1
-
2
- //#region src/pagination.ts
3
- /**
4
- * Sort direction for cursor-based pagination.
5
- */
6
- let Direction = /* @__PURE__ */ function(Direction$1) {
7
- Direction$1["Asc"] = "asc";
8
- Direction$1["Desc"] = "desc";
9
- return Direction$1;
10
- }({});
11
- /**
12
- * Encode a cursor value for safe URL transmission.
13
- * Supports various types: string, number, Date, etc.
14
- */
15
- function encodeCursor(value) {
16
- const payload = {
17
- v: value instanceof Date ? value.toISOString() : value,
18
- t: value instanceof Date ? "date" : typeof value
19
- };
20
- return Buffer.from(JSON.stringify(payload)).toString("base64url");
21
- }
22
- /**
23
- * Decode a cursor string back to its original value.
24
- */
25
- function decodeCursor(cursor) {
26
- try {
27
- const json = Buffer.from(cursor, "base64url").toString("utf-8");
28
- const payload = JSON.parse(json);
29
- if (payload.t === "date") return new Date(payload.v);
30
- return payload.v;
31
- } catch {
32
- throw new Error("Invalid cursor format");
33
- }
34
- }
35
-
36
- //#endregion
37
- Object.defineProperty(exports, 'Direction', {
38
- enumerable: true,
39
- get: function () {
40
- return Direction;
41
- }
42
- });
43
- Object.defineProperty(exports, 'decodeCursor', {
44
- enumerable: true,
45
- get: function () {
46
- return decodeCursor;
47
- }
48
- });
49
- Object.defineProperty(exports, 'encodeCursor', {
50
- enumerable: true,
51
- get: function () {
52
- return encodeCursor;
53
- }
54
- });
55
- //# sourceMappingURL=pagination-Bu1dqOy0.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-Bu1dqOy0.cjs","names":["value: unknown","cursor: string"],"sources":["../src/pagination.ts"],"sourcesContent":["/**\n * Sort direction for cursor-based pagination.\n */\nexport enum Direction {\n\tAsc = 'asc',\n\tDesc = 'desc',\n}\n\n/**\n * Result of a paginated query.\n */\nexport interface PaginationResult<TItem> {\n\titems: TItem[];\n\tpagination: {\n\t\ttotal: number;\n\t\thasMore: boolean;\n\t\tcursor?: string;\n\t};\n}\n\n/**\n * Encode a cursor value for safe URL transmission.\n * Supports various types: string, number, Date, etc.\n */\nexport function encodeCursor(value: unknown): string {\n\tconst payload = {\n\t\tv: value instanceof Date ? value.toISOString() : value,\n\t\tt: value instanceof Date ? 'date' : typeof value,\n\t};\n\treturn Buffer.from(JSON.stringify(payload)).toString('base64url');\n}\n\n/**\n * Decode a cursor string back to its original value.\n */\nexport function decodeCursor(cursor: string): unknown {\n\ttry {\n\t\tconst json = Buffer.from(cursor, 'base64url').toString('utf-8');\n\t\tconst payload = JSON.parse(json);\n\n\t\tif (payload.t === 'date') {\n\t\t\treturn new Date(payload.v);\n\t\t}\n\n\t\treturn payload.v;\n\t} catch {\n\t\tthrow new Error('Invalid cursor format');\n\t}\n}\n"],"mappings":";;;;;AAGA,IAAY,kDAAL;AACN;AACA;;AACA;;;;;AAkBD,SAAgB,aAAaA,OAAwB;CACpD,MAAM,UAAU;EACf,GAAG,iBAAiB,OAAO,MAAM,aAAa,GAAG;EACjD,GAAG,iBAAiB,OAAO,gBAAgB;CAC3C;AACD,QAAO,OAAO,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,SAAS,YAAY;AACjE;;;;AAKD,SAAgB,aAAaC,QAAyB;AACrD,KAAI;EACH,MAAM,OAAO,OAAO,KAAK,QAAQ,YAAY,CAAC,SAAS,QAAQ;EAC/D,MAAM,UAAU,KAAK,MAAM,KAAK;AAEhC,MAAI,QAAQ,MAAM,OACjB,QAAO,IAAI,KAAK,QAAQ;AAGzB,SAAO,QAAQ;CACf,QAAO;AACP,QAAM,IAAI,MAAM;CAChB;AACD"}
@@ -1,37 +0,0 @@
1
- //#region src/pagination.ts
2
- /**
3
- * Sort direction for cursor-based pagination.
4
- */
5
- let Direction = /* @__PURE__ */ function(Direction$1) {
6
- Direction$1["Asc"] = "asc";
7
- Direction$1["Desc"] = "desc";
8
- return Direction$1;
9
- }({});
10
- /**
11
- * Encode a cursor value for safe URL transmission.
12
- * Supports various types: string, number, Date, etc.
13
- */
14
- function encodeCursor(value) {
15
- const payload = {
16
- v: value instanceof Date ? value.toISOString() : value,
17
- t: value instanceof Date ? "date" : typeof value
18
- };
19
- return Buffer.from(JSON.stringify(payload)).toString("base64url");
20
- }
21
- /**
22
- * Decode a cursor string back to its original value.
23
- */
24
- function decodeCursor(cursor) {
25
- try {
26
- const json = Buffer.from(cursor, "base64url").toString("utf-8");
27
- const payload = JSON.parse(json);
28
- if (payload.t === "date") return new Date(payload.v);
29
- return payload.v;
30
- } catch {
31
- throw new Error("Invalid cursor format");
32
- }
33
- }
34
-
35
- //#endregion
36
- export { Direction, decodeCursor, encodeCursor };
37
- //# sourceMappingURL=pagination-CQ8QHXaL.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-CQ8QHXaL.mjs","names":["value: unknown","cursor: string"],"sources":["../src/pagination.ts"],"sourcesContent":["/**\n * Sort direction for cursor-based pagination.\n */\nexport enum Direction {\n\tAsc = 'asc',\n\tDesc = 'desc',\n}\n\n/**\n * Result of a paginated query.\n */\nexport interface PaginationResult<TItem> {\n\titems: TItem[];\n\tpagination: {\n\t\ttotal: number;\n\t\thasMore: boolean;\n\t\tcursor?: string;\n\t};\n}\n\n/**\n * Encode a cursor value for safe URL transmission.\n * Supports various types: string, number, Date, etc.\n */\nexport function encodeCursor(value: unknown): string {\n\tconst payload = {\n\t\tv: value instanceof Date ? value.toISOString() : value,\n\t\tt: value instanceof Date ? 'date' : typeof value,\n\t};\n\treturn Buffer.from(JSON.stringify(payload)).toString('base64url');\n}\n\n/**\n * Decode a cursor string back to its original value.\n */\nexport function decodeCursor(cursor: string): unknown {\n\ttry {\n\t\tconst json = Buffer.from(cursor, 'base64url').toString('utf-8');\n\t\tconst payload = JSON.parse(json);\n\n\t\tif (payload.t === 'date') {\n\t\t\treturn new Date(payload.v);\n\t\t}\n\n\t\treturn payload.v;\n\t} catch {\n\t\tthrow new Error('Invalid cursor format');\n\t}\n}\n"],"mappings":";;;;AAGA,IAAY,kDAAL;AACN;AACA;;AACA;;;;;AAkBD,SAAgB,aAAaA,OAAwB;CACpD,MAAM,UAAU;EACf,GAAG,iBAAiB,OAAO,MAAM,aAAa,GAAG;EACjD,GAAG,iBAAiB,OAAO,gBAAgB;CAC3C;AACD,QAAO,OAAO,KAAK,KAAK,UAAU,QAAQ,CAAC,CAAC,SAAS,YAAY;AACjE;;;;AAKD,SAAgB,aAAaC,QAAyB;AACrD,KAAI;EACH,MAAM,OAAO,OAAO,KAAK,QAAQ,YAAY,CAAC,SAAS,QAAQ;EAC/D,MAAM,UAAU,KAAK,MAAM,KAAK;AAEhC,MAAI,QAAQ,MAAM,OACjB,QAAO,IAAI,KAAK,QAAQ;AAGzB,SAAO,QAAQ;CACf,QAAO;AACP,QAAM,IAAI,MAAM;CAChB;AACD"}
@@ -1,32 +0,0 @@
1
- //#region src/pagination.d.ts
2
- /**
3
- * Sort direction for cursor-based pagination.
4
- */
5
- declare enum Direction {
6
- Asc = "asc",
7
- Desc = "desc",
8
- }
9
- /**
10
- * Result of a paginated query.
11
- */
12
- interface PaginationResult<TItem> {
13
- items: TItem[];
14
- pagination: {
15
- total: number;
16
- hasMore: boolean;
17
- cursor?: string;
18
- };
19
- }
20
- /**
21
- * Encode a cursor value for safe URL transmission.
22
- * Supports various types: string, number, Date, etc.
23
- */
24
- declare function encodeCursor(value: unknown): string;
25
- /**
26
- * Decode a cursor string back to its original value.
27
- */
28
- declare function decodeCursor(cursor: string): unknown;
29
- //# sourceMappingURL=pagination.d.ts.map
30
- //#endregion
31
- export { Direction, PaginationResult, decodeCursor, encodeCursor };
32
- //# sourceMappingURL=pagination-kv-KWS-7.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pagination-kv-KWS-7.d.mts","names":[],"sources":["../src/pagination.ts"],"sourcesContent":[],"mappings":";;AAGA;AAQA;AAagB,aArBJ,SAAA;EAgCI,GAAA,GAAA,KAAA;;;;;;UAxBC;SACT;;;;;;;;;;;iBAYQ,YAAA;;;;iBAWA,YAAA"}