on-zero 0.7.4 → 0.7.5
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/cjs/orez.cjs +14 -10
- package/dist/cjs/orez.native.js +20 -10
- package/dist/cjs/orez.native.js.map +1 -1
- package/dist/cjs/orez.test.cjs +60 -3
- package/dist/cjs/orez.test.native.js +65 -3
- package/dist/cjs/orez.test.native.js.map +1 -1
- package/dist/esm/orez.mjs +14 -11
- package/dist/esm/orez.mjs.map +1 -1
- package/dist/esm/orez.native.js +20 -11
- package/dist/esm/orez.native.js.map +1 -1
- package/dist/esm/orez.test.mjs +61 -4
- package/dist/esm/orez.test.mjs.map +1 -1
- package/dist/esm/orez.test.native.js +66 -4
- package/dist/esm/orez.test.native.js.map +1 -1
- package/package.json +3 -4
- package/src/orez.test.ts +74 -3
- package/src/orez.ts +23 -10
- package/types/orez.d.ts +2 -1
- package/types/orez.d.ts.map +1 -1
package/dist/cjs/orez.cjs
CHANGED
|
@@ -22,6 +22,7 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
22
22
|
}), mod);
|
|
23
23
|
var orez_exports = {};
|
|
24
24
|
__export(orez_exports, {
|
|
25
|
+
authDataToClaims: () => authDataToClaims,
|
|
25
26
|
createOrezBindings: () => createOrezBindings
|
|
26
27
|
});
|
|
27
28
|
module.exports = __toCommonJS(orez_exports);
|
|
@@ -207,19 +208,22 @@ function resolveServerQuery({
|
|
|
207
208
|
ctx: authData
|
|
208
209
|
});
|
|
209
210
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
211
|
+
const AUTH_CLAIM = "authData";
|
|
212
|
+
function authDataToClaims(authData, anonymousUserID = "anon") {
|
|
213
|
+
const userID = typeof authData?.id === "string" ? authData.id : anonymousUserID;
|
|
214
|
+
const claims = {
|
|
215
|
+
userID
|
|
214
216
|
};
|
|
217
|
+
if (authData) claims[AUTH_CLAIM] = authData;
|
|
218
|
+
return claims;
|
|
219
|
+
}
|
|
220
|
+
function defaultMapClaims(claims) {
|
|
221
|
+
const authData = claims[AUTH_CLAIM];
|
|
222
|
+
if (!authData || typeof authData !== "object") return null;
|
|
223
|
+
return authData;
|
|
215
224
|
}
|
|
216
225
|
function authToClaims(authData) {
|
|
217
|
-
|
|
218
|
-
const userID = typeof data.id === "string" ? data.id : "server";
|
|
219
|
-
return {
|
|
220
|
-
...data,
|
|
221
|
-
userID
|
|
222
|
-
};
|
|
226
|
+
return authDataToClaims(authData, "server");
|
|
223
227
|
}
|
|
224
228
|
function mutationApplicationError(error) {
|
|
225
229
|
const message = error instanceof Error ? error.message : String(error);
|
package/dist/cjs/orez.native.js
CHANGED
|
@@ -24,6 +24,7 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
24
24
|
}), mod);
|
|
25
25
|
var orez_exports = {};
|
|
26
26
|
__export(orez_exports, {
|
|
27
|
+
authDataToClaims: () => authDataToClaims,
|
|
27
28
|
createOrezBindings: () => createOrezBindings
|
|
28
29
|
});
|
|
29
30
|
module.exports = __toCommonJS(orez_exports);
|
|
@@ -48,6 +49,11 @@ function _instanceof(left, right) {
|
|
|
48
49
|
return left instanceof right;
|
|
49
50
|
}
|
|
50
51
|
}
|
|
52
|
+
function _type_of(obj) {
|
|
53
|
+
"@swc/helpers - typeof";
|
|
54
|
+
|
|
55
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
56
|
+
}
|
|
51
57
|
function createOrezBindings(options) {
|
|
52
58
|
(0, import_state.setSchema)(options.schema, (0, import_zero.createBuilder)(options.schema));
|
|
53
59
|
(0, import_state.setEnvironment)("server");
|
|
@@ -293,19 +299,23 @@ function resolveServerQuery(param) {
|
|
|
293
299
|
ctx: authData
|
|
294
300
|
});
|
|
295
301
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
302
|
+
var AUTH_CLAIM = "authData";
|
|
303
|
+
function authDataToClaims(authData) {
|
|
304
|
+
var anonymousUserID = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "anon";
|
|
305
|
+
var userID = typeof (authData === null || authData === void 0 ? void 0 : authData.id) === "string" ? authData.id : anonymousUserID;
|
|
306
|
+
var claims = {
|
|
307
|
+
userID
|
|
300
308
|
};
|
|
309
|
+
if (authData) claims[AUTH_CLAIM] = authData;
|
|
310
|
+
return claims;
|
|
311
|
+
}
|
|
312
|
+
function defaultMapClaims(claims) {
|
|
313
|
+
var authData = claims[AUTH_CLAIM];
|
|
314
|
+
if (!authData || (typeof authData === "undefined" ? "undefined" : _type_of(authData)) !== "object") return null;
|
|
315
|
+
return authData;
|
|
301
316
|
}
|
|
302
317
|
function authToClaims(authData) {
|
|
303
|
-
|
|
304
|
-
var userID = typeof data.id === "string" ? data.id : "server";
|
|
305
|
-
return {
|
|
306
|
-
...data,
|
|
307
|
-
userID
|
|
308
|
-
};
|
|
318
|
+
return authDataToClaims(authData, "server");
|
|
309
319
|
}
|
|
310
320
|
function mutationApplicationError(error) {
|
|
311
321
|
var message = _instanceof(error, Error) ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","orez_exports","__export","createOrezBindings","module","exports","import_zero","require","import_bindings","import_server","import_helpers","import_sync_executor","import_createPermissions","import_createMutators","import_mutatorContext","import_queryContext","import_modelRegistry","import_run","import_state","import_where","import_zeroRunner","_instanceof","left","right","Symbol","hasInstance","options","setSchema","schema","createBuilder","setEnvironment","queries","setCustomQueries","_options_mapClaims","mapClaims","defaultMapClaims","_options_defaultAllowAdminRole","permissions","createPermissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","createAsyncContext","decoratedMutators","createMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","_invocation_get","_invocation_get_authData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","runWithAuthScope","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","modelName","model","_step","_model_mutate","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop2","mutatorName","_step1","param","tx","args","_decoratedMutators_modelName","claims","mutation","run","name","_iterator2","Object","keys","mutate","iterator","next","done","err","return","_iterator","entries","bindings","mutators","registerMutators","resolveQuery","query","runWithQueryContext","resolveServerQuery","validateQuery","asQueryInternals","ast","transformQueryRequest","request","handler","userID","id","handleQueryRequest","server","executor","transaction","work","setRunner","Proxy","_target","_inner","_options_models_modelName_mutate","_options_models_modelName"],"sources":["../../src/orez.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,YAAA;AAAAC,QAAA,CAAAD,YAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","orez_exports","__export","authDataToClaims","createOrezBindings","module","exports","import_zero","require","import_bindings","import_server","import_helpers","import_sync_executor","import_createPermissions","import_createMutators","import_mutatorContext","import_queryContext","import_modelRegistry","import_run","import_state","import_where","import_zeroRunner","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","options","setSchema","schema","createBuilder","setEnvironment","queries","setCustomQueries","_options_mapClaims","mapClaims","defaultMapClaims","_options_defaultAllowAdminRole","permissions","createPermissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","createAsyncContext","decoratedMutators","createMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","_invocation_get","_invocation_get_authData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","runWithAuthScope","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","modelName","model","_step","_model_mutate","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop2","mutatorName","_step1","param","tx","args","_decoratedMutators_modelName","claims","mutation","run","name","_iterator2","Object","keys","mutate","iterator","next","done","err","return","_iterator","entries","bindings","mutators","registerMutators","resolveQuery","query","runWithQueryContext","resolveServerQuery","validateQuery","asQueryInternals","ast","transformQueryRequest","request","handler","userID","id","handleQueryRequest","server","executor","transaction","work","setRunner","Proxy","_target","_inner","_options_models_modelName_mutate","_options_models_modelName"],"sources":["../../src/orez.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/orez.test.cjs
CHANGED
|
@@ -54,6 +54,63 @@ const queries = (0, import_zero.defineQueries)({
|
|
|
54
54
|
(0, import_vitest.afterEach)(() => {
|
|
55
55
|
while (databases.length) databases.pop().close();
|
|
56
56
|
});
|
|
57
|
+
(0, import_vitest.test)("an anonymous push keeps authData null so auth-required mutators reject", async () => {
|
|
58
|
+
const sqlite = new import_node_sqlite.DatabaseSync(":memory:");
|
|
59
|
+
databases.push(sqlite);
|
|
60
|
+
sqlite.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
|
|
61
|
+
let seenAuthData;
|
|
62
|
+
const bindings = (0, import_orez.createOrezBindings)({
|
|
63
|
+
schema,
|
|
64
|
+
models: {
|
|
65
|
+
project: {
|
|
66
|
+
mutate: {
|
|
67
|
+
create: async ({
|
|
68
|
+
authData,
|
|
69
|
+
tx
|
|
70
|
+
}, value) => {
|
|
71
|
+
seenAuthData = authData;
|
|
72
|
+
if (!authData) throw new Error("not authenticated");
|
|
73
|
+
await tx.mutate.project.insert(value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
createServerActions: () => ({}),
|
|
79
|
+
queries
|
|
80
|
+
});
|
|
81
|
+
const executor = (0, import_sync_executor.createSyncExecutor)({
|
|
82
|
+
database: sqliteApplicationDatabase(sqlite),
|
|
83
|
+
schema,
|
|
84
|
+
mutators: bindings.mutators,
|
|
85
|
+
effects: {
|
|
86
|
+
runBackground(promise) {
|
|
87
|
+
void promise;
|
|
88
|
+
},
|
|
89
|
+
report(error) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
await executor.push({
|
|
95
|
+
clientGroupID: "group-anon",
|
|
96
|
+
mutations: [{
|
|
97
|
+
type: "custom",
|
|
98
|
+
id: 1,
|
|
99
|
+
clientID: "client-anon",
|
|
100
|
+
name: "project|create",
|
|
101
|
+
args: [{
|
|
102
|
+
id: "project-1",
|
|
103
|
+
ownerId: "anon",
|
|
104
|
+
name: "sneaky"
|
|
105
|
+
}],
|
|
106
|
+
timestamp: 1
|
|
107
|
+
}],
|
|
108
|
+
pushVersion: 1,
|
|
109
|
+
requestID: "request-anon"
|
|
110
|
+
}, (0, import_orez.authDataToClaims)(null)).catch(() => void 0);
|
|
111
|
+
(0, import_vitest.expect)(seenAuthData).toBe(null);
|
|
112
|
+
(0, import_vitest.expect)(sqlite.prepare("SELECT * FROM project").all()).toEqual([]);
|
|
113
|
+
});
|
|
57
114
|
(0, import_vitest.test)("binds auth, queries, pipe keys, effects, and replay to one Orez executor", async () => {
|
|
58
115
|
const sqlite = new import_node_sqlite.DatabaseSync(":memory:");
|
|
59
116
|
databases.push(sqlite);
|
|
@@ -118,10 +175,10 @@ const queries = (0, import_zero.defineQueries)({
|
|
|
118
175
|
}
|
|
119
176
|
}
|
|
120
177
|
});
|
|
121
|
-
const claims = {
|
|
122
|
-
|
|
178
|
+
const claims = (0, import_orez.authDataToClaims)({
|
|
179
|
+
id: "user-1",
|
|
123
180
|
role: "member"
|
|
124
|
-
};
|
|
181
|
+
});
|
|
125
182
|
const body = {
|
|
126
183
|
clientGroupID: "group-1",
|
|
127
184
|
mutations: [{
|
|
@@ -59,6 +59,68 @@ var queries = (0, import_zero.defineQueries)({
|
|
|
59
59
|
(0, import_vitest.afterEach)(function () {
|
|
60
60
|
while (databases.length) databases.pop().close();
|
|
61
61
|
});
|
|
62
|
+
(0, import_vitest.test)("an anonymous push keeps authData null so auth-required mutators reject", async function () {
|
|
63
|
+
var sqlite = new import_node_sqlite.DatabaseSync(":memory:");
|
|
64
|
+
databases.push(sqlite);
|
|
65
|
+
sqlite.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
|
|
66
|
+
var seenAuthData;
|
|
67
|
+
var bindings = (0, import_orez.createOrezBindings)({
|
|
68
|
+
schema,
|
|
69
|
+
models: {
|
|
70
|
+
project: {
|
|
71
|
+
mutate: {
|
|
72
|
+
create: async function (param, value) {
|
|
73
|
+
var {
|
|
74
|
+
authData,
|
|
75
|
+
tx
|
|
76
|
+
} = param;
|
|
77
|
+
seenAuthData = authData;
|
|
78
|
+
if (!authData) throw new Error("not authenticated");
|
|
79
|
+
await tx.mutate.project.insert(value);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
createServerActions: function () {
|
|
85
|
+
return {};
|
|
86
|
+
},
|
|
87
|
+
queries
|
|
88
|
+
});
|
|
89
|
+
var executor = (0, import_sync_executor.createSyncExecutor)({
|
|
90
|
+
database: sqliteApplicationDatabase(sqlite),
|
|
91
|
+
schema,
|
|
92
|
+
mutators: bindings.mutators,
|
|
93
|
+
effects: {
|
|
94
|
+
runBackground(promise) {
|
|
95
|
+
void promise;
|
|
96
|
+
},
|
|
97
|
+
report(error) {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
await executor.push({
|
|
103
|
+
clientGroupID: "group-anon",
|
|
104
|
+
mutations: [{
|
|
105
|
+
type: "custom",
|
|
106
|
+
id: 1,
|
|
107
|
+
clientID: "client-anon",
|
|
108
|
+
name: "project|create",
|
|
109
|
+
args: [{
|
|
110
|
+
id: "project-1",
|
|
111
|
+
ownerId: "anon",
|
|
112
|
+
name: "sneaky"
|
|
113
|
+
}],
|
|
114
|
+
timestamp: 1
|
|
115
|
+
}],
|
|
116
|
+
pushVersion: 1,
|
|
117
|
+
requestID: "request-anon"
|
|
118
|
+
}, (0, import_orez.authDataToClaims)(null)).catch(function () {
|
|
119
|
+
return void 0;
|
|
120
|
+
});
|
|
121
|
+
(0, import_vitest.expect)(seenAuthData).toBe(null);
|
|
122
|
+
(0, import_vitest.expect)(sqlite.prepare("SELECT * FROM project").all()).toEqual([]);
|
|
123
|
+
});
|
|
62
124
|
(0, import_vitest.test)("binds auth, queries, pipe keys, effects, and replay to one Orez executor", async function () {
|
|
63
125
|
var sqlite = new import_node_sqlite.DatabaseSync(":memory:");
|
|
64
126
|
databases.push(sqlite);
|
|
@@ -129,10 +191,10 @@ var queries = (0, import_zero.defineQueries)({
|
|
|
129
191
|
}
|
|
130
192
|
}
|
|
131
193
|
});
|
|
132
|
-
var claims = {
|
|
133
|
-
|
|
194
|
+
var claims = (0, import_orez.authDataToClaims)({
|
|
195
|
+
id: "user-1",
|
|
134
196
|
role: "member"
|
|
135
|
-
};
|
|
197
|
+
});
|
|
136
198
|
var body = {
|
|
137
199
|
clientGroupID: "group-1",
|
|
138
200
|
mutations: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["import_node_sqlite","require","import_zero","import_sync_executor","v","__toESM","import_vitest","import_orez","import_mutatorContext","import_zql","project","table","columns","id","string","ownerId","name","primaryKey","schema","createSchema","tables","relationships","enableLegacyQueries","queries","defineQueries","byOwner","defineQuery","object","param","args","zql","where","describe","databases","afterEach","length","pop","close","test","sqlite","DatabaseSync","push","exec","
|
|
1
|
+
{"version":3,"names":["import_node_sqlite","require","import_zero","import_sync_executor","v","__toESM","import_vitest","import_orez","import_mutatorContext","import_zql","project","table","columns","id","string","ownerId","name","primaryKey","schema","createSchema","tables","relationships","enableLegacyQueries","queries","defineQueries","byOwner","defineQuery","object","param","args","zql","where","describe","databases","afterEach","length","pop","close","test","sqlite","DatabaseSync","push","exec","seenAuthData","bindings","createOrezBindings","models","mutate","create","value","authData","tx","Error","insert","createServerActions","executor","createSyncExecutor","database","sqliteApplicationDatabase","mutators","effects","runBackground","promise","report","error","clientGroupID","mutations","type","clientID","timestamp","pushVersion","requestID","authDataToClaims","catch","expect","toBe","prepare","all","toEqual","mutationRuns","validatedMutationAuth","validatedQueryAuth","barrierRuns","backgroundRuns","backgroundAuth","scheduledBackground","server","enqueueTask","barrier","_getScopedAuthData","getScopedAuthData","validateMutation","validateQuery","Object","keys","claims","role","body","first","pushResponse","toMatchObject","result","Promise","replay","toHaveLength","ast","resolveQuery"],"sources":["../../src/orez.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/orez.mjs
CHANGED
|
@@ -180,23 +180,26 @@ function resolveServerQuery({
|
|
|
180
180
|
ctx: authData
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
183
|
+
const AUTH_CLAIM = "authData";
|
|
184
|
+
function authDataToClaims(authData, anonymousUserID = "anon") {
|
|
185
|
+
const userID = typeof authData?.id === "string" ? authData.id : anonymousUserID;
|
|
186
|
+
const claims = {
|
|
187
|
+
userID
|
|
187
188
|
};
|
|
189
|
+
if (authData) claims[AUTH_CLAIM] = authData;
|
|
190
|
+
return claims;
|
|
191
|
+
}
|
|
192
|
+
function defaultMapClaims(claims) {
|
|
193
|
+
const authData = claims[AUTH_CLAIM];
|
|
194
|
+
if (!authData || typeof authData !== "object") return null;
|
|
195
|
+
return authData;
|
|
188
196
|
}
|
|
189
197
|
function authToClaims(authData) {
|
|
190
|
-
|
|
191
|
-
const userID = typeof data.id === "string" ? data.id : "server";
|
|
192
|
-
return {
|
|
193
|
-
...data,
|
|
194
|
-
userID
|
|
195
|
-
};
|
|
198
|
+
return authDataToClaims(authData, "server");
|
|
196
199
|
}
|
|
197
200
|
function mutationApplicationError(error) {
|
|
198
201
|
const message = error instanceof Error ? error.message : String(error);
|
|
199
202
|
return new MutationApplicationError(message, message);
|
|
200
203
|
}
|
|
201
|
-
export { createOrezBindings };
|
|
204
|
+
export { authDataToClaims, createOrezBindings };
|
|
202
205
|
//# sourceMappingURL=orez.mjs.map
|
package/dist/esm/orez.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createBuilder","mustGetQuery","asQueryInternals","handleQueryRequest","zeroHandleQueryRequest","createAsyncContext","MutationApplicationError","registerMutators","createPermissions","createMutators","getScopedAuthData","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","createOrezBindings","options","schema","queries","mapClaims","defaultMapClaims","permissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","decoratedMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","modelName","model","Object","entries","mutatorName","keys","mutate","tx","args","claims","mutation","run","name","bindings","mutators","resolveQuery","query","resolveServerQuery","validateQuery","ast","transformQueryRequest","request","handler","userID","id","server","executor","transaction","work","Proxy","_target","_inner","acceptsArgument","length","argsOrOptions","optionsForArgument","mutateOptions","scoped","authToClaims","execute","startsWith","table","slice","objOrId","permission","where","eb","buildPermissionQuery","one","queryName","params","fn","
|
|
1
|
+
{"version":3,"names":["createBuilder","mustGetQuery","asQueryInternals","handleQueryRequest","zeroHandleQueryRequest","createAsyncContext","MutationApplicationError","registerMutators","createPermissions","createMutators","getScopedAuthData","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","createOrezBindings","options","schema","queries","mapClaims","defaultMapClaims","permissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","decoratedMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","modelName","model","Object","entries","mutatorName","keys","mutate","tx","args","claims","mutation","run","name","bindings","mutators","resolveQuery","query","resolveServerQuery","validateQuery","ast","transformQueryRequest","request","handler","userID","id","server","executor","transaction","work","Proxy","_target","_inner","acceptsArgument","length","argsOrOptions","optionsForArgument","mutateOptions","scoped","authToClaims","execute","startsWith","table","slice","objOrId","permission","where","eb","buildPermissionQuery","one","queryName","params","fn","AUTH_CLAIM","authDataToClaims","anonymousUserID","message","String"],"sources":["../../src/orez.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/orez.native.js
CHANGED
|
@@ -19,6 +19,11 @@ function _instanceof(left, right) {
|
|
|
19
19
|
return left instanceof right;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
+
function _type_of(obj) {
|
|
23
|
+
"@swc/helpers - typeof";
|
|
24
|
+
|
|
25
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
26
|
+
}
|
|
22
27
|
function createOrezBindings(options) {
|
|
23
28
|
setSchema(options.schema, createBuilder(options.schema));
|
|
24
29
|
setEnvironment("server");
|
|
@@ -264,23 +269,27 @@ function resolveServerQuery(param) {
|
|
|
264
269
|
ctx: authData
|
|
265
270
|
});
|
|
266
271
|
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
272
|
+
var AUTH_CLAIM = "authData";
|
|
273
|
+
function authDataToClaims(authData) {
|
|
274
|
+
var anonymousUserID = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "anon";
|
|
275
|
+
var userID = typeof (authData === null || authData === void 0 ? void 0 : authData.id) === "string" ? authData.id : anonymousUserID;
|
|
276
|
+
var claims = {
|
|
277
|
+
userID
|
|
271
278
|
};
|
|
279
|
+
if (authData) claims[AUTH_CLAIM] = authData;
|
|
280
|
+
return claims;
|
|
281
|
+
}
|
|
282
|
+
function defaultMapClaims(claims) {
|
|
283
|
+
var authData = claims[AUTH_CLAIM];
|
|
284
|
+
if (!authData || (typeof authData === "undefined" ? "undefined" : _type_of(authData)) !== "object") return null;
|
|
285
|
+
return authData;
|
|
272
286
|
}
|
|
273
287
|
function authToClaims(authData) {
|
|
274
|
-
|
|
275
|
-
var userID = typeof data.id === "string" ? data.id : "server";
|
|
276
|
-
return {
|
|
277
|
-
...data,
|
|
278
|
-
userID
|
|
279
|
-
};
|
|
288
|
+
return authDataToClaims(authData, "server");
|
|
280
289
|
}
|
|
281
290
|
function mutationApplicationError(error) {
|
|
282
291
|
var message = _instanceof(error, Error) ? error.message : String(error);
|
|
283
292
|
return new MutationApplicationError(message, message);
|
|
284
293
|
}
|
|
285
|
-
export { createOrezBindings };
|
|
294
|
+
export { authDataToClaims, createOrezBindings };
|
|
286
295
|
//# sourceMappingURL=orez.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createBuilder","mustGetQuery","asQueryInternals","handleQueryRequest","zeroHandleQueryRequest","createAsyncContext","MutationApplicationError","registerMutators","createPermissions","createMutators","getScopedAuthData","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","_instanceof","left","right","Symbol","hasInstance","createOrezBindings","options","schema","queries","_options_mapClaims","mapClaims","defaultMapClaims","_options_defaultAllowAdminRole","permissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","decoratedMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","_invocation_get","_invocation_get_authData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","modelName","model","_step","value","_model_mutate","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop2","mutatorName","_step1","param","tx","args","_decoratedMutators_modelName","claims","mutation","run","name","_iterator2","Object","keys","mutate","iterator","next","done","err","return","_iterator","entries","bindings","mutators","resolveQuery","query","resolveServerQuery","validateQuery","ast","transformQueryRequest","request","handler","userID","id","server","executor","transaction","work","Proxy","_target","_inner","_options_models_modelName_mutate","_options_models_modelName","acceptsArgument","length","argsOrOptions","optionsForArgument","mutateOptions"],"sources":["../../src/orez.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAA,EAAeC,YAAA,QAAoB;AAC5C,SAASC,gBAAA,QAAwB;AACjC,SAASC,kBAAA,IAAsBC,sBAAA,QAA8B;AAC7D,SAASC,kBAAA,QAA0B;AACnC,SAAAC,wBAAA,EAAAC,gBAAA;AAAA,SACEC,iBAAA;AAAA,SACAC,cAAA;AAAA,SAKKC,iBAAA,EAAAC,gBAAA;AAEP,SAASC,mBAAA,QAAyB;AAClC,SAASC,uBAAsB;AAC/B,SAASC,gBAAA,QAAmB;AAC5B,SAASC,MAAA,EAAAC,cAAA,EAAAC,SAA2B;AACpC,SAASC,uBAAA,QAA+B;AACxC,SAASC,SAAA,gCAAwB;AACjC,SAASC,WAAQA,CAAAC,IAAA,EAAAC,KAAA,EAAgB;EACjC,IAAAA,KAAS,mBAAAC,MAAA,KAA+B,eAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA;IACxC,OAAS,EAAAF,KAAA,CAAAC,MAAA,CAAiBC,WAAA,EAAAH,IAAA;EA0FnB,OAAS;IAOd,OAAAA,IAAU,YAAQC,KAAQ;EAC1B;AACA;AAEA,SAAMG,
|
|
1
|
+
{"version":3,"names":["createBuilder","mustGetQuery","asQueryInternals","handleQueryRequest","zeroHandleQueryRequest","createAsyncContext","MutationApplicationError","registerMutators","createPermissions","createMutators","getScopedAuthData","runWithAuthScope","runWithQueryContext","getMutationsPermissions","setCustomQueries","getZQL","setEnvironment","setSchema","setEvaluatingPermission","setRunner","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","createOrezBindings","options","schema","queries","_options_mapClaims","mapClaims","defaultMapClaims","_options_defaultAllowAdminRole","permissions","environment","adminRoleMode","defaultAllowAdminRole","registry","invocation","decoratedMutators","authData","can","createServerActions","models","mutationValidators","mutations","validateMutation","input","error","mutationApplicationError","resolveAuthData","_invocation_get","_invocation_get_authData","get","enqueueTask","task","taskOptions","current","Error","ctx","defer","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","modelName","model","_step","value","_model_mutate","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_loop2","mutatorName","_step1","param","tx","args","_decoratedMutators_modelName","claims","mutation","run","name","_iterator2","Object","keys","mutate","iterator","next","done","err","return","_iterator","entries","bindings","mutators","resolveQuery","query","resolveServerQuery","validateQuery","ast","transformQueryRequest","request","handler","userID","id","server","executor","transaction","work","Proxy","_target","_inner","_options_models_modelName_mutate","_options_models_modelName","acceptsArgument","length","argsOrOptions","optionsForArgument","mutateOptions"],"sources":["../../src/orez.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/orez.test.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { createSchema, defineQueries, defineQuery, string, table } from "@rocico
|
|
|
3
3
|
import { createSyncExecutor } from "orez/sync-executor";
|
|
4
4
|
import * as v from "valibot";
|
|
5
5
|
import { afterEach, describe, expect, test } from "vitest";
|
|
6
|
-
import { createOrezBindings } from "./orez.mjs";
|
|
6
|
+
import { authDataToClaims, createOrezBindings } from "./orez.mjs";
|
|
7
7
|
import { getScopedAuthData } from "./helpers/mutatorContext.mjs";
|
|
8
8
|
import { zql } from "./zql.mjs";
|
|
9
9
|
const project = table("project").columns({
|
|
@@ -30,6 +30,63 @@ describe("createOrezBindings", () => {
|
|
|
30
30
|
afterEach(() => {
|
|
31
31
|
while (databases.length) databases.pop().close();
|
|
32
32
|
});
|
|
33
|
+
test("an anonymous push keeps authData null so auth-required mutators reject", async () => {
|
|
34
|
+
const sqlite = new DatabaseSync(":memory:");
|
|
35
|
+
databases.push(sqlite);
|
|
36
|
+
sqlite.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
|
|
37
|
+
let seenAuthData;
|
|
38
|
+
const bindings = createOrezBindings({
|
|
39
|
+
schema,
|
|
40
|
+
models: {
|
|
41
|
+
project: {
|
|
42
|
+
mutate: {
|
|
43
|
+
create: async ({
|
|
44
|
+
authData,
|
|
45
|
+
tx
|
|
46
|
+
}, value) => {
|
|
47
|
+
seenAuthData = authData;
|
|
48
|
+
if (!authData) throw new Error("not authenticated");
|
|
49
|
+
await tx.mutate.project.insert(value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
createServerActions: () => ({}),
|
|
55
|
+
queries
|
|
56
|
+
});
|
|
57
|
+
const executor = createSyncExecutor({
|
|
58
|
+
database: sqliteApplicationDatabase(sqlite),
|
|
59
|
+
schema,
|
|
60
|
+
mutators: bindings.mutators,
|
|
61
|
+
effects: {
|
|
62
|
+
runBackground(promise) {
|
|
63
|
+
void promise;
|
|
64
|
+
},
|
|
65
|
+
report(error) {
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
await executor.push({
|
|
71
|
+
clientGroupID: "group-anon",
|
|
72
|
+
mutations: [{
|
|
73
|
+
type: "custom",
|
|
74
|
+
id: 1,
|
|
75
|
+
clientID: "client-anon",
|
|
76
|
+
name: "project|create",
|
|
77
|
+
args: [{
|
|
78
|
+
id: "project-1",
|
|
79
|
+
ownerId: "anon",
|
|
80
|
+
name: "sneaky"
|
|
81
|
+
}],
|
|
82
|
+
timestamp: 1
|
|
83
|
+
}],
|
|
84
|
+
pushVersion: 1,
|
|
85
|
+
requestID: "request-anon"
|
|
86
|
+
}, authDataToClaims(null)).catch(() => void 0);
|
|
87
|
+
expect(seenAuthData).toBe(null);
|
|
88
|
+
expect(sqlite.prepare("SELECT * FROM project").all()).toEqual([]);
|
|
89
|
+
});
|
|
33
90
|
test("binds auth, queries, pipe keys, effects, and replay to one Orez executor", async () => {
|
|
34
91
|
const sqlite = new DatabaseSync(":memory:");
|
|
35
92
|
databases.push(sqlite);
|
|
@@ -94,10 +151,10 @@ describe("createOrezBindings", () => {
|
|
|
94
151
|
}
|
|
95
152
|
}
|
|
96
153
|
});
|
|
97
|
-
const claims = {
|
|
98
|
-
|
|
154
|
+
const claims = authDataToClaims({
|
|
155
|
+
id: "user-1",
|
|
99
156
|
role: "member"
|
|
100
|
-
};
|
|
157
|
+
});
|
|
101
158
|
const body = {
|
|
102
159
|
clientGroupID: "group-1",
|
|
103
160
|
mutations: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DatabaseSync","createSchema","defineQueries","defineQuery","string","table","createSyncExecutor","v","afterEach","describe","expect","test","createOrezBindings","getScopedAuthData","zql","project","columns","id","ownerId","name","primaryKey","schema","tables","relationships","enableLegacyQueries","queries","byOwner","object","args","where","databases","length","pop","close","sqlite","push","exec","
|
|
1
|
+
{"version":3,"names":["DatabaseSync","createSchema","defineQueries","defineQuery","string","table","createSyncExecutor","v","afterEach","describe","expect","test","authDataToClaims","createOrezBindings","getScopedAuthData","zql","project","columns","id","ownerId","name","primaryKey","schema","tables","relationships","enableLegacyQueries","queries","byOwner","object","args","where","databases","length","pop","close","sqlite","push","exec","seenAuthData","bindings","models","mutate","create","authData","tx","value","Error","insert","createServerActions","executor","database","sqliteApplicationDatabase","mutators","effects","runBackground","promise","report","error","clientGroupID","mutations","type","clientID","timestamp","pushVersion","requestID","catch","toBe","prepare","all","toEqual","mutationRuns","validatedMutationAuth","validatedQueryAuth","barrierRuns","backgroundRuns","backgroundAuth","scheduledBackground","server","enqueueTask","barrier","validateMutation","validateQuery","Object","keys","claims","role","body","first","pushResponse","toMatchObject","result","Promise","replay","toHaveLength","ast","resolveQuery","JSON","stringify","toContain","applicationTransaction","sql","params","run","changes","Number","query","queryAst","dialect","transaction","work"],"sources":["../../src/orez.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@ import { createSchema, defineQueries, defineQuery, string, table } from "@rocico
|
|
|
3
3
|
import { createSyncExecutor } from "orez/sync-executor";
|
|
4
4
|
import * as v from "valibot";
|
|
5
5
|
import { afterEach, describe, expect, test } from "vitest";
|
|
6
|
-
import { createOrezBindings } from "./orez.native.js";
|
|
6
|
+
import { authDataToClaims, createOrezBindings } from "./orez.native.js";
|
|
7
7
|
import { getScopedAuthData } from "./helpers/mutatorContext.native.js";
|
|
8
8
|
import { zql } from "./zql.native.js";
|
|
9
9
|
var project = table("project").columns({
|
|
@@ -33,6 +33,68 @@ describe("createOrezBindings", function () {
|
|
|
33
33
|
afterEach(function () {
|
|
34
34
|
while (databases.length) databases.pop().close();
|
|
35
35
|
});
|
|
36
|
+
test("an anonymous push keeps authData null so auth-required mutators reject", async function () {
|
|
37
|
+
var sqlite = new DatabaseSync(":memory:");
|
|
38
|
+
databases.push(sqlite);
|
|
39
|
+
sqlite.exec("CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)");
|
|
40
|
+
var seenAuthData;
|
|
41
|
+
var bindings = createOrezBindings({
|
|
42
|
+
schema,
|
|
43
|
+
models: {
|
|
44
|
+
project: {
|
|
45
|
+
mutate: {
|
|
46
|
+
create: async function (param, value) {
|
|
47
|
+
var {
|
|
48
|
+
authData,
|
|
49
|
+
tx
|
|
50
|
+
} = param;
|
|
51
|
+
seenAuthData = authData;
|
|
52
|
+
if (!authData) throw new Error("not authenticated");
|
|
53
|
+
await tx.mutate.project.insert(value);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
createServerActions: function () {
|
|
59
|
+
return {};
|
|
60
|
+
},
|
|
61
|
+
queries
|
|
62
|
+
});
|
|
63
|
+
var executor = createSyncExecutor({
|
|
64
|
+
database: sqliteApplicationDatabase(sqlite),
|
|
65
|
+
schema,
|
|
66
|
+
mutators: bindings.mutators,
|
|
67
|
+
effects: {
|
|
68
|
+
runBackground(promise) {
|
|
69
|
+
void promise;
|
|
70
|
+
},
|
|
71
|
+
report(error) {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
await executor.push({
|
|
77
|
+
clientGroupID: "group-anon",
|
|
78
|
+
mutations: [{
|
|
79
|
+
type: "custom",
|
|
80
|
+
id: 1,
|
|
81
|
+
clientID: "client-anon",
|
|
82
|
+
name: "project|create",
|
|
83
|
+
args: [{
|
|
84
|
+
id: "project-1",
|
|
85
|
+
ownerId: "anon",
|
|
86
|
+
name: "sneaky"
|
|
87
|
+
}],
|
|
88
|
+
timestamp: 1
|
|
89
|
+
}],
|
|
90
|
+
pushVersion: 1,
|
|
91
|
+
requestID: "request-anon"
|
|
92
|
+
}, authDataToClaims(null)).catch(function () {
|
|
93
|
+
return void 0;
|
|
94
|
+
});
|
|
95
|
+
expect(seenAuthData).toBe(null);
|
|
96
|
+
expect(sqlite.prepare("SELECT * FROM project").all()).toEqual([]);
|
|
97
|
+
});
|
|
36
98
|
test("binds auth, queries, pipe keys, effects, and replay to one Orez executor", async function () {
|
|
37
99
|
var sqlite = new DatabaseSync(":memory:");
|
|
38
100
|
databases.push(sqlite);
|
|
@@ -103,10 +165,10 @@ describe("createOrezBindings", function () {
|
|
|
103
165
|
}
|
|
104
166
|
}
|
|
105
167
|
});
|
|
106
|
-
var claims = {
|
|
107
|
-
|
|
168
|
+
var claims = authDataToClaims({
|
|
169
|
+
id: "user-1",
|
|
108
170
|
role: "member"
|
|
109
|
-
};
|
|
171
|
+
});
|
|
110
172
|
var body = {
|
|
111
173
|
clientGroupID: "group-1",
|
|
112
174
|
mutations: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DatabaseSync","createSchema","defineQueries","defineQuery","string","table","createSyncExecutor","v","afterEach","describe","expect","test","createOrezBindings","getScopedAuthData","zql","project","columns","id","ownerId","name","primaryKey","schema","tables","relationships","enableLegacyQueries","queries","byOwner","object","param","args","where","databases","length","pop","close","sqlite","push","exec","
|
|
1
|
+
{"version":3,"names":["DatabaseSync","createSchema","defineQueries","defineQuery","string","table","createSyncExecutor","v","afterEach","describe","expect","test","authDataToClaims","createOrezBindings","getScopedAuthData","zql","project","columns","id","ownerId","name","primaryKey","schema","tables","relationships","enableLegacyQueries","queries","byOwner","object","param","args","where","databases","length","pop","close","sqlite","push","exec","seenAuthData","bindings","models","mutate","create","value","authData","tx","Error","insert","createServerActions","executor","database","sqliteApplicationDatabase","mutators","effects","runBackground","promise","report","error","clientGroupID","mutations","type","clientID","timestamp","pushVersion","requestID","catch","toBe","prepare","all","toEqual","mutationRuns","validatedMutationAuth","validatedQueryAuth","barrierRuns","backgroundRuns","backgroundAuth","scheduledBackground","server","enqueueTask","barrier","_getScopedAuthData","validateMutation","validateQuery","Object","keys","claims","role","body","first","pushResponse","toMatchObject","result","Promise","replay","toHaveLength","ast","resolveQuery"],"sources":["../../src/orez.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -58,8 +58,7 @@
|
|
|
58
58
|
},
|
|
59
59
|
"./orez": {
|
|
60
60
|
"types": "./types/orez.d.ts",
|
|
61
|
-
"import": "./dist/esm/orez.mjs"
|
|
62
|
-
"require": "./dist/cjs/orez.cjs"
|
|
61
|
+
"import": "./dist/esm/orez.mjs"
|
|
63
62
|
},
|
|
64
63
|
"./http-pull": {
|
|
65
64
|
"types": "./types/httpPullTransport.d.ts",
|
|
@@ -89,7 +88,7 @@
|
|
|
89
88
|
}
|
|
90
89
|
},
|
|
91
90
|
"dependencies": {
|
|
92
|
-
"@take-out/helpers": "0.7.
|
|
91
|
+
"@take-out/helpers": "0.7.5",
|
|
93
92
|
"chokidar": "^4.0.3",
|
|
94
93
|
"citty": "^0.1.6",
|
|
95
94
|
"orez": ">=0.5.31",
|
package/src/orez.test.ts
CHANGED
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
import * as v from 'valibot'
|
|
10
10
|
import { afterEach, describe, expect, test } from 'vitest'
|
|
11
11
|
|
|
12
|
-
import { createOrezBindings } from './orez'
|
|
12
|
+
import { authDataToClaims, createOrezBindings } from './orez'
|
|
13
13
|
import { getScopedAuthData } from './helpers/mutatorContext'
|
|
14
14
|
import { zql } from './zql'
|
|
15
15
|
|
|
16
|
-
import type { MutatorContext } from './types'
|
|
16
|
+
import type { AuthData, MutatorContext } from './types'
|
|
17
17
|
|
|
18
18
|
const project = table('project')
|
|
19
19
|
.columns({
|
|
@@ -44,6 +44,77 @@ describe('createOrezBindings', () => {
|
|
|
44
44
|
while (databases.length) databases.pop()!.close()
|
|
45
45
|
})
|
|
46
46
|
|
|
47
|
+
test('an anonymous push keeps authData null so auth-required mutators reject', async () => {
|
|
48
|
+
const sqlite = new DatabaseSync(':memory:')
|
|
49
|
+
databases.push(sqlite)
|
|
50
|
+
sqlite.exec(
|
|
51
|
+
'CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL)',
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
let seenAuthData: AuthData | null | undefined
|
|
55
|
+
const bindings = createOrezBindings({
|
|
56
|
+
schema,
|
|
57
|
+
models: {
|
|
58
|
+
project: {
|
|
59
|
+
mutate: {
|
|
60
|
+
create: async (
|
|
61
|
+
{ authData, tx }: MutatorContext,
|
|
62
|
+
value: { id: string; ownerId: string; name: string },
|
|
63
|
+
) => {
|
|
64
|
+
seenAuthData = authData
|
|
65
|
+
// the guard every takeout mutation relies on
|
|
66
|
+
if (!authData) throw new Error('not authenticated')
|
|
67
|
+
await tx.mutate.project.insert(value)
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
createServerActions: () => ({}),
|
|
73
|
+
queries,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
const executor = createSyncExecutor({
|
|
77
|
+
database: sqliteApplicationDatabase(sqlite),
|
|
78
|
+
schema,
|
|
79
|
+
mutators: bindings.mutators,
|
|
80
|
+
effects: {
|
|
81
|
+
runBackground(promise) {
|
|
82
|
+
void promise
|
|
83
|
+
},
|
|
84
|
+
report(error) {
|
|
85
|
+
throw error
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
// how a rejected mutator surfaces (app result vs thrown) is the executor's
|
|
91
|
+
// contract and is covered in orez; what this pins is that an anonymous push
|
|
92
|
+
// never receives an authData, so the guard runs at all
|
|
93
|
+
await executor
|
|
94
|
+
.push(
|
|
95
|
+
{
|
|
96
|
+
clientGroupID: 'group-anon',
|
|
97
|
+
mutations: [
|
|
98
|
+
{
|
|
99
|
+
type: 'custom',
|
|
100
|
+
id: 1,
|
|
101
|
+
clientID: 'client-anon',
|
|
102
|
+
name: 'project|create',
|
|
103
|
+
args: [{ id: 'project-1', ownerId: 'anon', name: 'sneaky' }],
|
|
104
|
+
timestamp: 1,
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
pushVersion: 1,
|
|
108
|
+
requestID: 'request-anon',
|
|
109
|
+
},
|
|
110
|
+
authDataToClaims(null),
|
|
111
|
+
)
|
|
112
|
+
.catch(() => undefined)
|
|
113
|
+
|
|
114
|
+
expect(seenAuthData).toBe(null)
|
|
115
|
+
expect(sqlite.prepare('SELECT * FROM project').all()).toEqual([])
|
|
116
|
+
})
|
|
117
|
+
|
|
47
118
|
test('binds auth, queries, pipe keys, effects, and replay to one Orez executor', async () => {
|
|
48
119
|
const sqlite = new DatabaseSync(':memory:')
|
|
49
120
|
databases.push(sqlite)
|
|
@@ -110,7 +181,7 @@ describe('createOrezBindings', () => {
|
|
|
110
181
|
},
|
|
111
182
|
},
|
|
112
183
|
})
|
|
113
|
-
const claims = {
|
|
184
|
+
const claims = authDataToClaims({ id: 'user-1', role: 'member' } as AuthData)
|
|
114
185
|
const body = {
|
|
115
186
|
clientGroupID: 'group-1',
|
|
116
187
|
mutations: [
|
package/src/orez.ts
CHANGED
|
@@ -82,7 +82,7 @@ export type CreateOrezBindingsOptions<
|
|
|
82
82
|
validateQuery?: ValidateQueryFn
|
|
83
83
|
validateMutation?: ValidateMutationFn
|
|
84
84
|
defaultAllowAdminRole?: AdminRoleMode
|
|
85
|
-
mapClaims?: (claims: NormalizedClaims) => AuthData
|
|
85
|
+
mapClaims?: (claims: NormalizedClaims) => AuthData | null
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
export type OrezBindings<Schema extends ZeroSchema, Models extends GenericModels> = {
|
|
@@ -128,7 +128,7 @@ export function createOrezBindings<
|
|
|
128
128
|
})
|
|
129
129
|
const registry: Record<string, MutatorRegistry<Schema>[string]> = {}
|
|
130
130
|
const invocation = createAsyncContext<{
|
|
131
|
-
authData: AuthData
|
|
131
|
+
authData: AuthData | null
|
|
132
132
|
ctx: Parameters<MutatorRegistry<Schema>[string]>[0]['ctx']
|
|
133
133
|
}>()
|
|
134
134
|
const decoratedMutators = createMutators({
|
|
@@ -312,17 +312,30 @@ function resolveServerQuery({
|
|
|
312
312
|
return (mustGetQuery as any)(queries, name).fn({ args, ctx: authData })
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
315
|
+
// claims.userID is the sync ledger identity and is always present — logged-out
|
|
316
|
+
// clients still sync, as 'anon'. app auth is a separate, nullable payload:
|
|
317
|
+
// deriving AuthData from userID would hand every anonymous push a truthy
|
|
318
|
+
// authData and walk straight through `ensure(authData)` guards.
|
|
319
|
+
const AUTH_CLAIM = 'authData'
|
|
320
|
+
|
|
321
|
+
export function authDataToClaims(
|
|
322
|
+
authData: AuthData | null | undefined,
|
|
323
|
+
anonymousUserID = 'anon',
|
|
324
|
+
): NormalizedClaims {
|
|
325
|
+
const userID = typeof authData?.id === 'string' ? authData.id : anonymousUserID
|
|
326
|
+
const claims: Record<string, JsonValue> = { userID }
|
|
327
|
+
if (authData) claims[AUTH_CLAIM] = authData as unknown as JsonValue
|
|
328
|
+
return claims as NormalizedClaims
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
function defaultMapClaims(claims: NormalizedClaims): AuthData | null {
|
|
332
|
+
const authData = (claims as unknown as Record<string, unknown>)[AUTH_CLAIM]
|
|
333
|
+
if (!authData || typeof authData !== 'object') return null
|
|
334
|
+
return authData as AuthData
|
|
320
335
|
}
|
|
321
336
|
|
|
322
337
|
function authToClaims(authData: AuthData | null | undefined): NormalizedClaims {
|
|
323
|
-
|
|
324
|
-
const userID = typeof data.id === 'string' ? data.id : 'server'
|
|
325
|
-
return { ...data, userID }
|
|
338
|
+
return authDataToClaims(authData, 'server')
|
|
326
339
|
}
|
|
327
340
|
|
|
328
341
|
function mutationApplicationError(error: unknown): MutationApplicationError {
|
package/types/orez.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export type CreateOrezBindingsOptions<Schema extends ZeroSchema, Models extends
|
|
|
33
33
|
validateQuery?: ValidateQueryFn;
|
|
34
34
|
validateMutation?: ValidateMutationFn;
|
|
35
35
|
defaultAllowAdminRole?: AdminRoleMode;
|
|
36
|
-
mapClaims?: (claims: NormalizedClaims) => AuthData;
|
|
36
|
+
mapClaims?: (claims: NormalizedClaims) => AuthData | null;
|
|
37
37
|
};
|
|
38
38
|
export type OrezBindings<Schema extends ZeroSchema, Models extends GenericModels> = {
|
|
39
39
|
mutators: MutatorRegistry<Schema>;
|
|
@@ -49,5 +49,6 @@ export type OrezBindings<Schema extends ZeroSchema, Models extends GenericModels
|
|
|
49
49
|
};
|
|
50
50
|
};
|
|
51
51
|
export declare function createOrezBindings<Schema extends ZeroSchema, Models extends GenericModels, ServerActions extends Record<string, unknown>>(options: CreateOrezBindingsOptions<Schema, Models, ServerActions>): OrezBindings<Schema, Models>;
|
|
52
|
+
export declare function authDataToClaims(authData: AuthData | null | undefined, anonymousUserID?: string): NormalizedClaims;
|
|
52
53
|
export {};
|
|
53
54
|
//# sourceMappingURL=orez.d.ts.map
|
package/types/orez.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orez.d.ts","sourceRoot":"","sources":["../src/orez.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAEpF,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAA;AAY3B,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACZ,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAErF,KAAK,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE9D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,aAAa,IAAI;KACtD,GAAG,IAAI,MAAM,MAAM,GAAG;SACpB,CAAC,IAAI,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CACnE,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,MAAM,GAAG,KACX,GAAG,GACJ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GACpD,CAAC,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC;KAC/C;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,CACnC,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC3C;IACF,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,MAAM,aAAa,CAAA;IACxC,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACnD,aAAa,CAAC,EAAE,eAAe,CAAA;IAC/B,gBAAgB,CAAC,EAAE,kBAAkB,CAAA;IACrC,qBAAqB,CAAC,EAAE,aAAa,CAAA;IACrC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"orez.d.ts","sourceRoot":"","sources":["../src/orez.ts"],"names":[],"mappings":"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"}
|