@zudojs/database 0.0.1 → 0.1.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.
Files changed (29) hide show
  1. package/dist/database/database.core.js +133 -0
  2. package/dist/database/database.core.js.map +1 -0
  3. package/dist/databaseType/databaseType.type.d.ts.map +1 -0
  4. package/dist/databaseType/databaseType.type.js +45 -0
  5. package/dist/databaseType/databaseType.type.js.map +1 -0
  6. package/dist/migration/migration.helpers.js +99 -0
  7. package/dist/migration/migration.helpers.js.map +1 -0
  8. package/dist/migration/migration.types.js +2 -0
  9. package/dist/migration/migration.types.js.map +1 -0
  10. package/dist/pagination/pagination.core.d.ts.map +1 -0
  11. package/dist/pagination/pagination.core.js +210 -0
  12. package/dist/pagination/pagination.core.js.map +1 -0
  13. package/dist/queryBuilder/queryBuilder.core.d.ts.map +1 -0
  14. package/dist/queryBuilder/queryBuilder.core.js +342 -0
  15. package/dist/queryBuilder/queryBuilder.core.js.map +1 -0
  16. package/dist/queryBuilder/queryBuilder.factory.d.ts.map +1 -0
  17. package/dist/queryBuilder/queryBuilder.factory.js +33 -0
  18. package/dist/queryBuilder/queryBuilder.factory.js.map +1 -0
  19. package/dist/queryBuilder/queryBuilder.filter.d.ts.map +1 -0
  20. package/dist/queryBuilder/queryBuilder.filter.js +336 -0
  21. package/dist/queryBuilder/queryBuilder.filter.js.map +1 -0
  22. package/dist/queryBuilder/queryBuilder.type.d.ts.map +1 -0
  23. package/dist/queryBuilder/queryBuilder.type.js +2 -0
  24. package/dist/queryBuilder/queryBuilder.type.js.map +1 -0
  25. package/dist/relations/relations.definition.d.ts.map +1 -0
  26. package/dist/relations/relations.definition.js +195 -0
  27. package/dist/relations/relations.definition.js.map +1 -0
  28. package/package.json +9 -9
  29. package/LICENSE +0 -21
@@ -0,0 +1,133 @@
1
+ import { createDatabaseClient, } from "../databaseClient/databaseClient.core.js";
2
+ /**
3
+ * Database facade used by the application layer.
4
+ *
5
+ * This module provides a single database lifecycle entry point while
6
+ * keeping the underlying Prisma client implementation inside the
7
+ * database package.
8
+ */
9
+ export class Database {
10
+ client;
11
+ constructor(options = {}) {
12
+ this.client = createDatabaseClient(options);
13
+ }
14
+ /**
15
+ * Initializes the database connection.
16
+ */
17
+ async connect() {
18
+ await this.client.connect();
19
+ }
20
+ /**
21
+ * Closes the database connection.
22
+ */
23
+ async disconnect() {
24
+ await this.client.disconnect();
25
+ }
26
+ /**
27
+ * Ensures the database is connected.
28
+ */
29
+ async ensureConnected() {
30
+ await this.client.ensureConnected();
31
+ }
32
+ /**
33
+ * Checks database connectivity.
34
+ */
35
+ async ping() {
36
+ await this.client.ping();
37
+ }
38
+ /**
39
+ * Returns the current database status.
40
+ */
41
+ getStatus() {
42
+ return this.client.getStatus();
43
+ }
44
+ /**
45
+ * Returns database health information.
46
+ */
47
+ async healthCheck() {
48
+ return this.client.healthCheck();
49
+ }
50
+ /**
51
+ * Executes work inside a database transaction.
52
+ */
53
+ async transaction(callback, options) {
54
+ return this.client.transaction(callback, options);
55
+ }
56
+ /**
57
+ * Returns the underlying database client.
58
+ *
59
+ * This should primarily be used by repository and infrastructure
60
+ * implementations that require direct Prisma access.
61
+ */
62
+ getClient() {
63
+ return this.client;
64
+ }
65
+ /**
66
+ * Returns the underlying Prisma client.
67
+ */
68
+ getPrisma() {
69
+ return this.client.getPrisma();
70
+ }
71
+ /**
72
+ * Releases all database resources.
73
+ */
74
+ async destroy() {
75
+ await this.client.destroy();
76
+ }
77
+ }
78
+ /**
79
+ * Creates a database facade.
80
+ */
81
+ export function createDatabase(options = {}) {
82
+ return new Database(options);
83
+ }
84
+ /**
85
+ * Default database instance.
86
+ *
87
+ * The instance is created lazily by consumers through the exported
88
+ * factory rather than connecting during module import.
89
+ */
90
+ let defaultDatabase;
91
+ /**
92
+ * Returns the shared application database instance.
93
+ *
94
+ * The connection is not established automatically. Call
95
+ * `connect()` during application bootstrap.
96
+ */
97
+ export function getDatabase(options = {}) {
98
+ if (!defaultDatabase) {
99
+ defaultDatabase = createDatabase(options);
100
+ }
101
+ return defaultDatabase;
102
+ }
103
+ /**
104
+ * Connects the shared application database.
105
+ */
106
+ export async function connectDatabase(options = {}) {
107
+ const database = getDatabase(options);
108
+ await database.connect();
109
+ return database;
110
+ }
111
+ /**
112
+ * Disconnects the shared application database.
113
+ */
114
+ export async function disconnectDatabase() {
115
+ if (!defaultDatabase) {
116
+ return;
117
+ }
118
+ await defaultDatabase.disconnect();
119
+ }
120
+ /**
121
+ * Resets the shared database instance.
122
+ *
123
+ * Primarily useful for application shutdown, tests, and isolated
124
+ * runtime environments.
125
+ */
126
+ export async function resetDatabase() {
127
+ if (!defaultDatabase) {
128
+ return;
129
+ }
130
+ await defaultDatabase.destroy();
131
+ defaultDatabase = undefined;
132
+ }
133
+ //# sourceMappingURL=database.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.core.js","sourceRoot":"","sources":["../../src/database/database.core.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAIrB,MAAM,0CAA0C,CAAC;AASlD;;;;;;GAMG;AACH,MAAM,OAAO,QAAQ;IACF,MAAM,CAAiB;IAExC,YAAY,OAAO,GAA0B,EAAE;QAC7C,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe;QAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,QAAkE,EAClE,OAA4B;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAA0B,EAAE;IAChE,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,IAAI,eAAqC,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAO,GAA0B,EAAE;IAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAO,GAA0B,EAAE;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAEzB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,eAAe,CAAC,OAAO,EAAE,CAAC;IAEhC,eAAe,GAAG,SAAS,CAAC;AAC9B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseType.type.d.ts","sourceRoot":"","sources":["../../src/databaseType/databaseType.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Default no-op database logger.
3
+ */
4
+ export const noopDatabaseLogger = Object.freeze({
5
+ debug: () => undefined,
6
+ info: () => undefined,
7
+ warn: () => undefined,
8
+ error: () => undefined,
9
+ });
10
+ /**
11
+ * Normalizes pagination input.
12
+ */
13
+ export function normalizePagination(input) {
14
+ const page = Math.max(1, Math.floor(input?.page ?? 1));
15
+ const limit = Math.min(100, Math.max(1, Math.floor(input?.limit ?? 20)));
16
+ return {
17
+ page,
18
+ limit,
19
+ };
20
+ }
21
+ /**
22
+ * Creates pagination metadata.
23
+ */
24
+ export function createPaginationMeta(page, limit, total) {
25
+ const normalizedPage = Math.max(1, Math.floor(page));
26
+ const normalizedLimit = Math.max(1, Math.floor(limit));
27
+ const normalizedTotal = Math.max(0, Math.floor(total));
28
+ const totalPages = normalizedTotal === 0 ? 0 : Math.ceil(normalizedTotal / normalizedLimit);
29
+ return {
30
+ page: normalizedPage,
31
+ limit: normalizedLimit,
32
+ total: normalizedTotal,
33
+ totalPages,
34
+ hasNextPage: totalPages > 0 && normalizedPage < totalPages,
35
+ hasPreviousPage: normalizedPage > 1 && totalPages > 0,
36
+ };
37
+ }
38
+ /**
39
+ * Calculates the offset for a paginated query.
40
+ */
41
+ export function getPaginationOffset(input) {
42
+ const { page, limit } = normalizePagination(input);
43
+ return (page - 1) * limit;
44
+ }
45
+ //# sourceMappingURL=databaseType.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databaseType.type.js","sourceRoot":"","sources":["../../src/databaseType/databaseType.type.ts"],"names":[],"mappings":"AAmQA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmB,MAAM,CAAC,MAAM,CAAC;IAC9D,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;CACvB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAuB;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,KAAa,EACb,KAAa;IAEb,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,MAAM,UAAU,GACd,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,eAAe;QACtB,UAAU;QACV,WAAW,EAAE,UAAU,GAAG,CAAC,IAAI,cAAc,GAAG,UAAU;QAC1D,eAAe,EAAE,cAAc,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Default migration table.
3
+ */
4
+ export const DEFAULT_MIGRATION_TABLE = "_migrations";
5
+ /**
6
+ * Default migration advisory lock.
7
+ */
8
+ export const DEFAULT_MIGRATION_LOCK = "database:migrations";
9
+ /**
10
+ * Normalizes and validates migrations.
11
+ */
12
+ export function normalizeMigrations(migrations) {
13
+ if (!Array.isArray(migrations)) {
14
+ throw new TypeError("Migrations must be an array.");
15
+ }
16
+ const normalized = migrations
17
+ .map((migration) => {
18
+ validateMigration(migration);
19
+ return Object.freeze({ ...migration });
20
+ })
21
+ .sort((first, second) => first.version - second.version);
22
+ for (let index = 1; index < normalized.length; index += 1) {
23
+ const previous = normalized[index - 1];
24
+ const current = normalized[index];
25
+ if (previous && current && previous.version === current.version) {
26
+ throw new TypeError(`Duplicate migration version: ${current.version}.`);
27
+ }
28
+ }
29
+ return Object.freeze(normalized);
30
+ }
31
+ /**
32
+ * Validates one migration.
33
+ */
34
+ export function validateMigration(migration) {
35
+ if (!migration || typeof migration !== "object") {
36
+ throw new TypeError("A migration definition is required.");
37
+ }
38
+ if (!Number.isInteger(migration.version) || migration.version <= 0) {
39
+ throw new TypeError("Migration version must be a positive integer.");
40
+ }
41
+ if (typeof migration.name !== "string" ||
42
+ migration.name.trim().length === 0) {
43
+ throw new TypeError("Migration name is required.");
44
+ }
45
+ if (migration.name.length > 255) {
46
+ throw new TypeError("Migration name cannot exceed 255 characters.");
47
+ }
48
+ if (typeof migration.up !== "function") {
49
+ throw new TypeError(`Migration "${migration.name}" requires an up function.`);
50
+ }
51
+ if (migration.down !== undefined && typeof migration.down !== "function") {
52
+ throw new TypeError(`Migration "${migration.name}" has an invalid down function.`);
53
+ }
54
+ }
55
+ /**
56
+ * Returns the latest registered migration version.
57
+ */
58
+ export function getLatestVersion(migrations) {
59
+ if (migrations.length === 0)
60
+ return 0;
61
+ return migrations[migrations.length - 1].version;
62
+ }
63
+ /**
64
+ * Returns the current applied migration version.
65
+ */
66
+ export function getCurrentVersion(migrations) {
67
+ if (migrations.length === 0)
68
+ return 0;
69
+ return migrations[migrations.length - 1].version;
70
+ }
71
+ /**
72
+ * Quotes a validated SQL identifier.
73
+ */
74
+ export function quoteIdentifier(identifier) {
75
+ validateIdentifier(identifier, "identifier");
76
+ return `"${identifier}"`;
77
+ }
78
+ /**
79
+ * Validates an SQL identifier.
80
+ */
81
+ export function validateIdentifier(identifier, name) {
82
+ if (typeof identifier !== "string" ||
83
+ !/^[A-Za-z_][A-Za-z0-9_]*$/.test(identifier)) {
84
+ throw new TypeError(`Invalid ${name}: "${identifier}".`);
85
+ }
86
+ }
87
+ /**
88
+ * Creates a deterministic signed 64-bit advisory lock key.
89
+ */
90
+ export function hashLockKey(value) {
91
+ let hash = 1469598103934665603n;
92
+ const bytes = new TextEncoder().encode(value);
93
+ for (const byte of bytes) {
94
+ hash ^= BigInt(byte);
95
+ hash = BigInt.asIntN(64, hash * 1099511628211n);
96
+ }
97
+ return BigInt.asIntN(64, hash);
98
+ }
99
+ //# sourceMappingURL=migration.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.helpers.js","sourceRoot":"","sources":["../../src/migration/migration.helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migration.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.types.js","sourceRoot":"","sources":["../../src/migration/migration.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.core.d.ts","sourceRoot":"","sources":["../../src/pagination/pagination.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Default pagination values.
3
+ */
4
+ export const DEFAULT_PAGE = 1;
5
+ export const DEFAULT_LIMIT = 20;
6
+ export const MAX_LIMIT = 100;
7
+ /**
8
+ * Normalizes page and limit values.
9
+ */
10
+ export function normalizePagination(input) {
11
+ const page = normalizePage(input?.page);
12
+ const limit = normalizeLimit(input?.limit);
13
+ return {
14
+ page,
15
+ limit,
16
+ offset: calculateOffset(page, limit),
17
+ };
18
+ }
19
+ /**
20
+ * Normalizes a page number.
21
+ */
22
+ export function normalizePage(page) {
23
+ if (page === undefined || !Number.isFinite(page)) {
24
+ return DEFAULT_PAGE;
25
+ }
26
+ return Math.max(1, Math.floor(page));
27
+ }
28
+ /**
29
+ * Normalizes a page size.
30
+ */
31
+ export function normalizeLimit(limit) {
32
+ if (limit === undefined || !Number.isFinite(limit)) {
33
+ return DEFAULT_LIMIT;
34
+ }
35
+ return Math.min(MAX_LIMIT, Math.max(1, Math.floor(limit)));
36
+ }
37
+ /**
38
+ * Calculates the database offset for a page.
39
+ */
40
+ export function calculateOffset(page, limit) {
41
+ return (normalizePage(page) - 1) * normalizeLimit(limit);
42
+ }
43
+ /**
44
+ * Calculates the total number of pages.
45
+ */
46
+ export function calculateTotalPages(total, limit) {
47
+ const normalizedTotal = Math.max(0, Math.floor(total));
48
+ const normalizedLimit = normalizeLimit(limit);
49
+ if (normalizedTotal === 0) {
50
+ return 0;
51
+ }
52
+ return Math.ceil(normalizedTotal / normalizedLimit);
53
+ }
54
+ /**
55
+ * Creates pagination metadata.
56
+ */
57
+ export function createPaginationMeta(page, limit, total) {
58
+ const normalizedPage = normalizePage(page);
59
+ const normalizedLimit = normalizeLimit(limit);
60
+ const normalizedTotal = Math.max(0, Math.floor(total));
61
+ const totalPages = calculateTotalPages(normalizedTotal, normalizedLimit);
62
+ return {
63
+ page: normalizedPage,
64
+ limit: normalizedLimit,
65
+ total: normalizedTotal,
66
+ totalPages,
67
+ hasNextPage: totalPages > 0 && normalizedPage < totalPages,
68
+ hasPreviousPage: normalizedPage > 1 && totalPages > 0,
69
+ };
70
+ }
71
+ /**
72
+ * Creates a paginated result.
73
+ */
74
+ export function createPaginatedResult(data, page, limit, total) {
75
+ return {
76
+ data: [...data],
77
+ meta: createPaginationMeta(page, limit, total),
78
+ };
79
+ }
80
+ /**
81
+ * Gets the next page number.
82
+ */
83
+ export function getNextPage(meta) {
84
+ if (!meta.hasNextPage) {
85
+ return null;
86
+ }
87
+ return meta.page + 1;
88
+ }
89
+ /**
90
+ * Gets the previous page number.
91
+ */
92
+ export function getPreviousPage(meta) {
93
+ if (!meta.hasPreviousPage) {
94
+ return null;
95
+ }
96
+ return Math.max(1, meta.page - 1);
97
+ }
98
+ /**
99
+ * Checks whether a page number is valid for the result set.
100
+ */
101
+ export function isValidPage(page, totalPages) {
102
+ if (!Number.isFinite(page) || !Number.isFinite(totalPages)) {
103
+ return false;
104
+ }
105
+ const normalizedPage = Math.floor(page);
106
+ const normalizedTotalPages = Math.max(0, Math.floor(totalPages));
107
+ if (normalizedTotalPages === 0) {
108
+ return normalizedPage === 1;
109
+ }
110
+ return normalizedPage >= 1 && normalizedPage <= normalizedTotalPages;
111
+ }
112
+ /**
113
+ * Calculates the item range represented by a page.
114
+ *
115
+ * For example, page 2 with a limit of 20 and total of 55 returns
116
+ * `{ start: 21, end: 40 }`.
117
+ */
118
+ export function getItemRange(page, limit, total) {
119
+ const normalizedPage = normalizePage(page);
120
+ const normalizedLimit = normalizeLimit(limit);
121
+ const normalizedTotal = Math.max(0, Math.floor(total));
122
+ if (normalizedTotal === 0) {
123
+ return {
124
+ start: 0,
125
+ end: 0,
126
+ };
127
+ }
128
+ const start = calculateOffset(normalizedPage, normalizedLimit) + 1;
129
+ const end = Math.min(start + normalizedLimit - 1, normalizedTotal);
130
+ if (start > normalizedTotal) {
131
+ return {
132
+ start: normalizedTotal,
133
+ end: normalizedTotal,
134
+ };
135
+ }
136
+ return {
137
+ start,
138
+ end,
139
+ };
140
+ }
141
+ /**
142
+ * Applies offset pagination to an in-memory collection.
143
+ *
144
+ * This is useful for adapters and tests that need the same pagination
145
+ * semantics without querying the database directly.
146
+ */
147
+ export function paginateCollection(items, input) {
148
+ const pagination = normalizePagination(input);
149
+ const total = items.length;
150
+ const data = items.slice(pagination.offset, pagination.offset + pagination.limit);
151
+ return createPaginatedResult(data, pagination.page, pagination.limit, total);
152
+ }
153
+ /**
154
+ * Normalizes cursor pagination input.
155
+ */
156
+ export function normalizeCursorPagination(input) {
157
+ return {
158
+ cursor: input?.cursor ?? null,
159
+ limit: normalizeLimit(input?.limit),
160
+ };
161
+ }
162
+ /**
163
+ * Creates cursor pagination metadata.
164
+ */
165
+ export function createCursorPaginationMeta(limit, options) {
166
+ return {
167
+ limit: normalizeLimit(limit),
168
+ hasNextPage: options.hasNextPage,
169
+ hasPreviousPage: options.hasPreviousPage ?? false,
170
+ nextCursor: options.nextCursor ?? undefined,
171
+ previousCursor: options.previousCursor ?? undefined,
172
+ };
173
+ }
174
+ /**
175
+ * Creates a cursor paginated result.
176
+ */
177
+ export function createCursorPaginatedResult(data, limit, options) {
178
+ return {
179
+ data: [...data],
180
+ meta: createCursorPaginationMeta(limit, options),
181
+ };
182
+ }
183
+ /**
184
+ * Encodes a cursor value.
185
+ */
186
+ export function encodeCursor(value) {
187
+ const serialized = JSON.stringify(value);
188
+ if (typeof serialized !== "string") {
189
+ throw new TypeError("Cursor value could not be serialized.");
190
+ }
191
+ return Buffer.from(serialized, "utf8").toString("base64url");
192
+ }
193
+ /**
194
+ * Decodes a cursor value.
195
+ */
196
+ export function decodeCursor(cursor) {
197
+ if (typeof cursor !== "string" || cursor.trim().length === 0) {
198
+ throw new TypeError("A cursor value is required.");
199
+ }
200
+ try {
201
+ const decoded = Buffer.from(cursor, "base64url").toString("utf8");
202
+ return JSON.parse(decoded);
203
+ }
204
+ catch (error) {
205
+ throw new TypeError("Invalid pagination cursor.", {
206
+ cause: error,
207
+ });
208
+ }
209
+ }
210
+ //# sourceMappingURL=pagination.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.core.js","sourceRoot":"","sources":["../../src/pagination/pagination.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilder.core.d.ts","sourceRoot":"","sources":["../../src/queryBuilder/queryBuilder.core.ts"],"names":[],"mappings":"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"}