jazz-tools 0.18.14 → 0.18.16
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/.turbo/turbo-build.log +45 -33
- package/CHANGELOG.md +23 -0
- package/dist/better-auth/database-adapter/index.d.ts +50 -0
- package/dist/better-auth/database-adapter/index.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/index.js +920 -0
- package/dist/better-auth/database-adapter/index.js.map +1 -0
- package/dist/better-auth/database-adapter/repository/account.d.ts +24 -0
- package/dist/better-auth/database-adapter/repository/account.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/repository/generic.d.ts +45 -0
- package/dist/better-auth/database-adapter/repository/generic.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/repository/index.d.ts +6 -0
- package/dist/better-auth/database-adapter/repository/index.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/repository/session.d.ts +29 -0
- package/dist/better-auth/database-adapter/repository/session.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/repository/user.d.ts +30 -0
- package/dist/better-auth/database-adapter/repository/user.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/repository/verification.d.ts +18 -0
- package/dist/better-auth/database-adapter/repository/verification.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/schema.d.ts +27 -0
- package/dist/better-auth/database-adapter/schema.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/index.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/index.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/repository/account.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/repository/account.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/repository/generic.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/repository/generic.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/repository/session.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/repository/session.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/repository/user.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/repository/user.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/repository/verification.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/repository/verification.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/sync-utils.d.ts +16 -0
- package/dist/better-auth/database-adapter/tests/sync-utils.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/tests/utils.test.d.ts +2 -0
- package/dist/better-auth/database-adapter/tests/utils.test.d.ts.map +1 -0
- package/dist/better-auth/database-adapter/utils.d.ts +16 -0
- package/dist/better-auth/database-adapter/utils.d.ts.map +1 -0
- package/dist/worker/edge-wasm.d.ts +2 -0
- package/dist/worker/edge-wasm.d.ts.map +1 -0
- package/dist/worker/edge-wasm.js +5 -0
- package/dist/worker/edge-wasm.js.map +1 -0
- package/jazz-tools-0.18.6.tgz +0 -0
- package/package.json +15 -5
- package/src/better-auth/database-adapter/index.ts +228 -0
- package/src/better-auth/database-adapter/repository/account.ts +131 -0
- package/src/better-auth/database-adapter/repository/generic.ts +297 -0
- package/src/better-auth/database-adapter/repository/index.ts +5 -0
- package/src/better-auth/database-adapter/repository/session.ts +190 -0
- package/src/better-auth/database-adapter/repository/user.ts +158 -0
- package/src/better-auth/database-adapter/repository/verification.ts +37 -0
- package/src/better-auth/database-adapter/schema.ts +222 -0
- package/src/better-auth/database-adapter/tests/index.test.ts +690 -0
- package/src/better-auth/database-adapter/tests/repository/account.test.ts +149 -0
- package/src/better-auth/database-adapter/tests/repository/generic.test.ts +183 -0
- package/src/better-auth/database-adapter/tests/repository/session.test.ts +419 -0
- package/src/better-auth/database-adapter/tests/repository/user.test.ts +673 -0
- package/src/better-auth/database-adapter/tests/repository/verification.test.ts +101 -0
- package/src/better-auth/database-adapter/tests/sync-utils.ts +127 -0
- package/src/better-auth/database-adapter/tests/utils.test.ts +787 -0
- package/src/better-auth/database-adapter/utils.ts +178 -0
- package/src/worker/edge-wasm.ts +5 -0
- package/tsup.config.ts +8 -0
@@ -0,0 +1,178 @@
|
|
1
|
+
import { CleanedWhere } from "better-auth/adapters";
|
2
|
+
|
3
|
+
export function filterListByWhere<T>(
|
4
|
+
data: T[],
|
5
|
+
where: CleanedWhere[] | undefined,
|
6
|
+
): T[] {
|
7
|
+
if (!Array.isArray(data)) {
|
8
|
+
throw new Error("Expected data to be an array");
|
9
|
+
}
|
10
|
+
|
11
|
+
if (where === undefined) {
|
12
|
+
return data;
|
13
|
+
}
|
14
|
+
|
15
|
+
if (!Array.isArray(where)) {
|
16
|
+
throw new Error("Expected where to be an array");
|
17
|
+
}
|
18
|
+
|
19
|
+
// Helper to evaluate a single condition
|
20
|
+
function evaluateCondition(item: any, condition: CleanedWhere): boolean {
|
21
|
+
const { field, operator, value } = condition;
|
22
|
+
const itemValue = field === "id" ? item.$jazz.id : item[field];
|
23
|
+
|
24
|
+
switch (operator) {
|
25
|
+
case "eq":
|
26
|
+
return itemValue === value;
|
27
|
+
case "ne":
|
28
|
+
return itemValue !== value;
|
29
|
+
case "lt":
|
30
|
+
return value !== null && itemValue < value;
|
31
|
+
case "lte":
|
32
|
+
return value !== null && itemValue <= value;
|
33
|
+
case "gt":
|
34
|
+
return value !== null && itemValue > value;
|
35
|
+
case "gte":
|
36
|
+
return value !== null && itemValue >= value;
|
37
|
+
case "in":
|
38
|
+
return Array.isArray(value)
|
39
|
+
? (value as (string | number | boolean | Date)[]).includes(itemValue)
|
40
|
+
: false;
|
41
|
+
case "contains":
|
42
|
+
return typeof itemValue === "string" && typeof value === "string"
|
43
|
+
? itemValue.includes(value)
|
44
|
+
: false;
|
45
|
+
case "starts_with":
|
46
|
+
return typeof itemValue === "string" && typeof value === "string"
|
47
|
+
? itemValue.startsWith(value)
|
48
|
+
: false;
|
49
|
+
case "ends_with":
|
50
|
+
return typeof itemValue === "string" && typeof value === "string"
|
51
|
+
? itemValue.endsWith(value)
|
52
|
+
: false;
|
53
|
+
default:
|
54
|
+
throw new Error(`Unsupported operator: ${operator}`);
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
// Group conditions by connector (AND/OR)
|
59
|
+
// If no connector, default to AND between all
|
60
|
+
return data.filter((item) => {
|
61
|
+
let result: boolean = true;
|
62
|
+
for (let i = 0; i < where.length; i++) {
|
63
|
+
const condition = where[i]!;
|
64
|
+
const matches = evaluateCondition(item, condition);
|
65
|
+
if (i === 0) {
|
66
|
+
result = matches;
|
67
|
+
} else {
|
68
|
+
const connector = condition.connector || "AND";
|
69
|
+
if (connector === "AND") {
|
70
|
+
result = result && matches;
|
71
|
+
} else if (connector === "OR") {
|
72
|
+
result = result || matches;
|
73
|
+
} else {
|
74
|
+
throw new Error(`Unsupported connector: ${connector}`);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
78
|
+
return result;
|
79
|
+
});
|
80
|
+
}
|
81
|
+
|
82
|
+
export function sortListByField<T extends Record<string, any> | null>(
|
83
|
+
data: T[],
|
84
|
+
sort?: { field: string; direction: "asc" | "desc" },
|
85
|
+
): T[] {
|
86
|
+
if (!sort) {
|
87
|
+
return data;
|
88
|
+
}
|
89
|
+
|
90
|
+
const { field, direction } = sort;
|
91
|
+
|
92
|
+
data.sort((a, b) => {
|
93
|
+
if (a === null || b === null) {
|
94
|
+
return 0;
|
95
|
+
}
|
96
|
+
|
97
|
+
if (typeof a[field] === "string" && typeof b[field] === "string") {
|
98
|
+
return direction === "asc"
|
99
|
+
? a[field].localeCompare(b[field])
|
100
|
+
: b[field].localeCompare(a[field]);
|
101
|
+
}
|
102
|
+
|
103
|
+
return direction === "asc" ? a[field] - b[field] : b[field] - a[field];
|
104
|
+
});
|
105
|
+
|
106
|
+
return data;
|
107
|
+
}
|
108
|
+
|
109
|
+
export function paginateList<T>(
|
110
|
+
data: T[],
|
111
|
+
limit: number | undefined,
|
112
|
+
offset: number | undefined,
|
113
|
+
): T[] {
|
114
|
+
if (offset === undefined && limit === undefined) {
|
115
|
+
return data;
|
116
|
+
}
|
117
|
+
|
118
|
+
if (limit === 0) {
|
119
|
+
return [];
|
120
|
+
}
|
121
|
+
|
122
|
+
let start = offset ?? 0;
|
123
|
+
if (start < 0) {
|
124
|
+
start = 0;
|
125
|
+
}
|
126
|
+
|
127
|
+
const end = limit ? start + limit : undefined;
|
128
|
+
return data.slice(start, end);
|
129
|
+
}
|
130
|
+
|
131
|
+
function isWhereByField(field: string, where: CleanedWhere): boolean {
|
132
|
+
return (
|
133
|
+
where.field === field &&
|
134
|
+
where.operator === "eq" &&
|
135
|
+
where.connector === "AND"
|
136
|
+
);
|
137
|
+
}
|
138
|
+
|
139
|
+
export function isWhereBySingleField<T extends string>(
|
140
|
+
field: T,
|
141
|
+
where: CleanedWhere[] | undefined,
|
142
|
+
): where is [{ field: T; operator: "eq"; value: string; connector: "AND" }] {
|
143
|
+
if (where === undefined || where.length !== 1) {
|
144
|
+
return false;
|
145
|
+
}
|
146
|
+
|
147
|
+
const [cond] = where;
|
148
|
+
if (!cond) {
|
149
|
+
return false;
|
150
|
+
}
|
151
|
+
|
152
|
+
return isWhereByField(field, cond);
|
153
|
+
}
|
154
|
+
|
155
|
+
export function containWhereByField<T extends string>(
|
156
|
+
field: T,
|
157
|
+
where: CleanedWhere[] | undefined,
|
158
|
+
): boolean {
|
159
|
+
if (where === undefined) {
|
160
|
+
return false;
|
161
|
+
}
|
162
|
+
|
163
|
+
return where.some((cond) => isWhereByField(field, cond));
|
164
|
+
}
|
165
|
+
|
166
|
+
export function extractWhereByField<T extends string>(
|
167
|
+
field: T,
|
168
|
+
where: CleanedWhere[] | undefined,
|
169
|
+
): [CleanedWhere | undefined, CleanedWhere[]] {
|
170
|
+
if (where === undefined) {
|
171
|
+
return [undefined, []];
|
172
|
+
}
|
173
|
+
|
174
|
+
return [
|
175
|
+
where.find((cond) => isWhereByField(field, cond)),
|
176
|
+
where.filter((cond) => !isWhereByField(field, cond)),
|
177
|
+
];
|
178
|
+
}
|
package/tsup.config.ts
CHANGED
@@ -135,6 +135,7 @@ export default defineConfig([
|
|
135
135
|
...cfg,
|
136
136
|
entry: {
|
137
137
|
index: "src/worker/index.ts",
|
138
|
+
"edge-wasm": "src/worker/edge-wasm.ts",
|
138
139
|
},
|
139
140
|
outDir: "dist/worker",
|
140
141
|
},
|
@@ -147,4 +148,11 @@ export default defineConfig([
|
|
147
148
|
},
|
148
149
|
outDir: "dist/better-auth/auth",
|
149
150
|
},
|
151
|
+
{
|
152
|
+
...cfg,
|
153
|
+
entry: {
|
154
|
+
index: "src/better-auth/database-adapter/index.ts",
|
155
|
+
},
|
156
|
+
outDir: "dist/better-auth/database-adapter",
|
157
|
+
},
|
150
158
|
]);
|