@reventlessdev/reventless-aws 3.0.0-alpha.306 → 3.0.0-alpha.307

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.
@@ -121,12 +121,13 @@ let capability = {
121
121
  sortFields: capability_sortFields
122
122
  };
123
123
 
124
- function makeBinding(authorizationOpt, subIdFieldOpt, ownerFieldOpt, retiredFieldOpt, retiredValuesOpt, param) {
124
+ function makeBinding(authorizationOpt, subIdFieldOpt, ownerFieldOpt, retiredFieldOpt, retiredValuesOpt, namedWhenRetiredOpt, param) {
125
125
  let authorization = authorizationOpt !== undefined ? authorizationOpt : "AllowAnonymous";
126
126
  let subIdField = subIdFieldOpt !== undefined ? Primitive_option.valFromOption(subIdFieldOpt) : undefined;
127
127
  let ownerField = ownerFieldOpt !== undefined ? Primitive_option.valFromOption(ownerFieldOpt) : undefined;
128
128
  let retiredField = retiredFieldOpt !== undefined ? Primitive_option.valFromOption(retiredFieldOpt) : undefined;
129
129
  let retiredValues = retiredValuesOpt !== undefined ? Primitive_option.valFromOption(retiredValuesOpt) : undefined;
130
+ let namedWhenRetired = namedWhenRetiredOpt !== undefined ? namedWhenRetiredOpt : false;
130
131
  return {
131
132
  ops: ops,
132
133
  pushdowns: pushdowns,
@@ -143,7 +144,8 @@ function makeBinding(authorizationOpt, subIdFieldOpt, ownerFieldOpt, retiredFiel
143
144
  authorization: authorization,
144
145
  ownerField: ownerField,
145
146
  retiredField: retiredField,
146
- retiredValues: retiredValues
147
+ retiredValues: retiredValues,
148
+ namedWhenRetired: namedWhenRetired
147
149
  };
148
150
  }
149
151
 
@@ -186,7 +188,7 @@ function ids(arr) {
186
188
 
187
189
  globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
188
190
  globalThis.test("getById returns the item (id-carrying)", async () => {
189
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
191
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
190
192
  "id",
191
193
  "p-2"
192
194
  ]]), undefined, undefined));
@@ -194,14 +196,14 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
194
196
  globalThis.expect(str(r, "name")).toEqual("Bravo");
195
197
  });
196
198
  globalThis.test("getById miss → null", async () => {
197
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
199
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
198
200
  "id",
199
201
  "absent"
200
202
  ]]), undefined, undefined));
201
203
  globalThis.expect(r).toBe(null);
202
204
  });
203
205
  globalThis.test("byIds returns matches, drops missing", async () => {
204
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
206
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
205
207
  "ids",
206
208
  [
207
209
  "p-1",
@@ -215,7 +217,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
215
217
  ]);
216
218
  });
217
219
  globalThis.test("index routes to indexLookup on the idField", async () => {
218
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("index", "byStatus", Object.fromEntries([[
220
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("index", "byStatus", Object.fromEntries([[
219
221
  "byStatus",
220
222
  "active"
221
223
  ]]), undefined, undefined));
@@ -226,13 +228,13 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
226
228
  });
227
229
  globalThis.test("list with push-down → returns the connection listPage gives", async () => {
228
230
  listPageReturn.contents = "PUSHED";
229
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("list", undefined, undefined, undefined, undefined));
231
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("list", undefined, undefined, undefined, undefined));
230
232
  listPageReturn.contents = undefined;
231
233
  globalThis.expect(r).toEqual("PUSHED");
232
234
  });
233
235
  globalThis.test("list without push-down → falls back to the shared spec", async () => {
234
236
  listPageReturn.contents = undefined;
235
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("list", undefined, undefined, undefined, undefined));
237
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("list", undefined, undefined, undefined, undefined));
236
238
  let edgeIds = Stdlib_Array.filterMap(Stdlib_Option.getOr(Stdlib_Option.flatMap(field(r, "edges"), Stdlib_JSON.Decode.array), []), e => Stdlib_Option.flatMap(field(e, "node"), n => str(n, "id")));
237
239
  globalThis.expect(edgeIds).toEqual([
238
240
  "p-1",
@@ -241,21 +243,21 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
241
243
  ]);
242
244
  });
243
245
  globalThis.test("items with subId routes to itemsPage (id echoed)", async () => {
244
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, "seq", undefined, undefined, undefined, undefined), undefined, mkPayload("items", undefined, Object.fromEntries([[
246
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, "seq", undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("items", undefined, Object.fromEntries([[
245
247
  "id",
246
248
  "p-2"
247
249
  ]]), undefined, undefined));
248
250
  globalThis.expect(str(r, "itemsFor")).toEqual("p-2");
249
251
  });
250
252
  globalThis.test("items without subId → empty connection", async () => {
251
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("items", undefined, Object.fromEntries([[
253
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("items", undefined, Object.fromEntries([[
252
254
  "id",
253
255
  "p-2"
254
256
  ]]), undefined, undefined));
255
257
  globalThis.expect(Stdlib_Option.getOr(Stdlib_Option.flatMap(field(r, "edges"), Stdlib_JSON.Decode.array), []).length).toBe(0);
256
258
  });
257
259
  globalThis.test("authorization DenyAll → empty shape per kind", async () => {
258
- let b = makeBinding("DenyAll", undefined, undefined, undefined, undefined, undefined);
260
+ let b = makeBinding("DenyAll", undefined, undefined, undefined, undefined, undefined, undefined);
259
261
  let single = await PgQueryResolver_Lambda$ReventlessAws.dispatch(b, undefined, mkPayload("getById", undefined, Object.fromEntries([[
260
262
  "id",
261
263
  "p-1"
@@ -274,7 +276,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
274
276
  TAG: "Deny",
275
277
  _0: "nope"
276
278
  }));
277
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
279
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
278
280
  "id",
279
281
  "p-1"
280
282
  ]]), undefined, undefined));
@@ -300,7 +302,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
300
302
  arguments: payload_arguments,
301
303
  identity: Identity$Reventless.anonymous
302
304
  };
303
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
305
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
304
306
  globalThis.expect(str(r, "id")).toEqual("p-2");
305
307
  });
306
308
  globalThis.test("resolveOne multi via target index → array", async () => {
@@ -326,7 +328,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
326
328
  arguments: payload_arguments,
327
329
  identity: Identity$Reventless.anonymous
328
330
  };
329
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
331
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
330
332
  globalThis.expect(ids(r)).toEqual([
331
333
  "p-1",
332
334
  "p-3"
@@ -353,14 +355,14 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
353
355
  arguments: payload_arguments,
354
356
  identity: Identity$Reventless.anonymous
355
357
  };
356
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
358
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, payload);
357
359
  globalThis.expect(ids(r)).toEqual([
358
360
  "p-1",
359
361
  "p-3"
360
362
  ]);
361
363
  });
362
364
  globalThis.test("node decodes global id → __typename + item", async () => {
363
- PgQueryResolver_Lambda$ReventlessAws.register("Things", makeBinding(undefined, undefined, undefined, undefined, undefined, undefined));
365
+ PgQueryResolver_Lambda$ReventlessAws.register("Things", makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined));
364
366
  PgQueryResolver_Lambda$ReventlessAws.registerNodeType("Thing", "Things");
365
367
  let payload_arguments = Object.fromEntries([[
366
368
  "id",
@@ -410,7 +412,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
410
412
  delete: 0,
411
413
  deleteBatch: 0
412
414
  };
413
- let init = makeBinding(undefined, undefined, undefined, undefined, undefined, undefined);
415
+ let init = makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined);
414
416
  let authBinding_pushdowns = init.pushdowns;
415
417
  let authBinding_indexes = init.indexes;
416
418
  let authBinding_subIdField = init.subIdField;
@@ -421,6 +423,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
421
423
  let authBinding_ownerField = init.ownerField;
422
424
  let authBinding_retiredField = init.retiredField;
423
425
  let authBinding_retiredValues = init.retiredValues;
426
+ let authBinding_namedWhenRetired = init.namedWhenRetired;
424
427
  let authBinding = {
425
428
  ops: authOps,
426
429
  pushdowns: authBinding_pushdowns,
@@ -432,7 +435,8 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
432
435
  authorization: authBinding_authorization,
433
436
  ownerField: authBinding_ownerField,
434
437
  retiredField: authBinding_retiredField,
435
- retiredValues: authBinding_retiredValues
438
+ retiredValues: authBinding_retiredValues,
439
+ namedWhenRetired: authBinding_namedWhenRetired
436
440
  };
437
441
  let lookupAuth = name => {
438
442
  if (name === "AuthTable") {
@@ -458,18 +462,18 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
458
462
  identity: ident(username, groups)
459
463
  });
460
464
  globalThis.test("auth index: group member who owns → results", async () => {
461
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("alice", ["Owner"]));
465
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("alice", ["Owner"]));
462
466
  globalThis.expect(ids(r)).toEqual([
463
467
  "p-1",
464
468
  "p-3"
465
469
  ]);
466
470
  });
467
471
  globalThis.test("auth index: group member who does NOT own → empty", async () => {
468
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("bob", ["Owner"]));
472
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("bob", ["Owner"]));
469
473
  globalThis.expect(Stdlib_Option.getOr(Stdlib_JSON.Decode.array(r), []).length).toBe(0);
470
474
  });
471
475
  globalThis.test("auth index: non-member passes through → results", async () => {
472
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("bob", []));
476
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), lookupAuth, authIndexPayload("bob", []));
473
477
  globalThis.expect(ids(r)).toEqual([
474
478
  "p-1",
475
479
  "p-3"
@@ -478,7 +482,7 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
478
482
  globalThis.test("unmapped kind throws", async () => {
479
483
  let threw;
480
484
  try {
481
- await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("frobnicate", undefined, undefined, undefined, undefined));
485
+ await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("frobnicate", undefined, undefined, undefined, undefined));
482
486
  threw = false;
483
487
  } catch (exn) {
484
488
  threw = true;
@@ -489,35 +493,35 @@ globalThis.describe("PgQueryResolver_Lambda.dispatch", () => {
489
493
 
490
494
  globalThis.describe("id form — the typed doors take either", () => {
491
495
  globalThis.test("getById resolves a Relay global id", async () => {
492
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
496
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
493
497
  "id",
494
498
  Api_Ids$ReventlessCore.encode("Thing", "p-2")
495
499
  ]]), undefined, undefined));
496
500
  globalThis.expect(str(r, "name")).toEqual("Bravo");
497
501
  });
498
502
  globalThis.test("getById reports the storage key it resolved to", async () => {
499
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
503
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
500
504
  "id",
501
505
  Api_Ids$ReventlessCore.encode("Thing", "p-2")
502
506
  ]]), undefined, undefined));
503
507
  globalThis.expect(str(r, "id")).toEqual("p-2");
504
508
  });
505
509
  globalThis.test("getById still resolves a plain storage key", async () => {
506
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
510
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
507
511
  "id",
508
512
  "p-2"
509
513
  ]]), undefined, undefined));
510
514
  globalThis.expect(str(r, "name")).toEqual("Bravo");
511
515
  });
512
516
  globalThis.test("getById on a global id for a row that does not exist is still null", async () => {
513
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
517
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("getById", undefined, Object.fromEntries([[
514
518
  "id",
515
519
  Api_Ids$ReventlessCore.encode("Thing", "absent")
516
520
  ]]), undefined, undefined));
517
521
  globalThis.expect(r).toBe(null);
518
522
  });
519
523
  globalThis.test("byIds accepts the two forms mixed in one call", async () => {
520
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
524
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
521
525
  "ids",
522
526
  [
523
527
  "p-1",
@@ -530,7 +534,7 @@ globalThis.describe("id form — the typed doors take either", () => {
530
534
  ]);
531
535
  });
532
536
  globalThis.test("byIds with every id found does not double-count", async () => {
533
- let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
537
+ let r = await PgQueryResolver_Lambda$ReventlessAws.dispatch(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), undefined, mkPayload("byIds", undefined, Object.fromEntries([[
534
538
  "ids",
535
539
  [
536
540
  "p-1",
@@ -545,7 +549,7 @@ globalThis.describe("id form — the typed doors take either", () => {
545
549
  });
546
550
 
547
551
  globalThis.describe("owner scoping", () => {
548
- let ownedBinding = () => makeBinding(undefined, undefined, "owner", undefined, undefined, undefined);
552
+ let ownedBinding = () => makeBinding(undefined, undefined, "owner", undefined, undefined, undefined, undefined);
549
553
  let shopper = cognito("u-a", ["User"]);
550
554
  let listWith = async (binding, identity) => {
551
555
  lastOwnerScope.contents = undefined;
@@ -570,7 +574,7 @@ globalThis.describe("owner scoping", () => {
570
574
  globalThis.expect(match[1]).toBe(undefined);
571
575
  });
572
576
  globalThis.test("a view with no owner field is never scoped", async () => {
573
- let match = await listWith(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined), shopper);
577
+ let match = await listWith(makeBinding(undefined, undefined, undefined, undefined, undefined, undefined, undefined), shopper);
574
578
  globalThis.expect(match[1]).toBe(undefined);
575
579
  });
576
580
  globalThis.test("an unidentified caller is refused before the push-down runs", async () => {