@snowtop/ent 0.2.0-alpha.10 → 0.2.0-alpha.11-test1

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 (72) hide show
  1. package/action/action.js +5 -5
  2. package/action/executor.d.ts +1 -1
  3. package/action/executor.js +4 -4
  4. package/action/experimental_action.js +5 -5
  5. package/action/orchestrator.d.ts +2 -2
  6. package/action/privacy.d.ts +2 -2
  7. package/action/relative_value.js +3 -3
  8. package/auth/auth.d.ts +0 -1
  9. package/auth/auth.js +4 -5
  10. package/core/base.js +5 -5
  11. package/core/clause.js +59 -60
  12. package/core/config.d.ts +0 -1
  13. package/core/config.js +1 -2
  14. package/core/context.d.ts +0 -1
  15. package/core/convert.d.ts +0 -1
  16. package/core/convert.js +16 -17
  17. package/core/date.js +1 -2
  18. package/core/ent.js +50 -51
  19. package/core/global_schema.js +6 -7
  20. package/core/loaders/assoc_count_loader.d.ts +2 -2
  21. package/core/loaders/assoc_edge_loader.d.ts +2 -2
  22. package/core/loaders/loader.js +3 -3
  23. package/core/loaders/object_loader.d.ts +4 -4
  24. package/core/loaders/query_loader.d.ts +2 -2
  25. package/core/loaders/raw_count_loader.d.ts +2 -2
  26. package/core/loaders/raw_count_loader.js +2 -2
  27. package/core/logger.js +6 -7
  28. package/core/privacy.d.ts +2 -2
  29. package/core/privacy.js +4 -4
  30. package/core/query/shared_assoc_test.js +1 -2
  31. package/core/query_impl.js +4 -5
  32. package/core/viewer.d.ts +2 -2
  33. package/graphql/graphql_field_helpers.js +22 -22
  34. package/graphql/mutations/union.js +1 -2
  35. package/graphql/node_resolver.js +7 -7
  36. package/graphql/query/shared_assoc_test.js +1 -2
  37. package/graphql/scalars/time.d.ts +1 -1
  38. package/imports/dataz/example1/_auth.js +14 -10
  39. package/imports/index.js +1 -2
  40. package/names/names.js +5 -6
  41. package/package.json +13 -13
  42. package/parse_schema/parse.js +2 -3
  43. package/schema/binary_field.d.ts +2 -2
  44. package/schema/binary_field.js +3 -3
  45. package/schema/field.js +28 -28
  46. package/schema/json_field.js +7 -7
  47. package/schema/schema.js +12 -12
  48. package/schema/struct_field.js +4 -4
  49. package/schema/union_field.js +3 -3
  50. package/testutils/action/complex_schemas.js +11 -11
  51. package/testutils/builder.d.ts +1 -1
  52. package/testutils/builder.js +7 -7
  53. package/testutils/db/fixture.js +1 -2
  54. package/testutils/db/temp_db.js +37 -37
  55. package/testutils/db/value.js +3 -4
  56. package/testutils/db_mock.js +38 -6
  57. package/testutils/ent-graphql-tests/index.d.ts +3 -3
  58. package/testutils/ent-graphql-tests/index.js +10 -11
  59. package/testutils/fake_data/const.js +2 -2
  60. package/testutils/fake_data/fake_contact.js +3 -3
  61. package/testutils/fake_data/fake_event.js +3 -3
  62. package/testutils/fake_data/fake_tag.js +4 -4
  63. package/testutils/fake_data/fake_user.js +4 -4
  64. package/testutils/fake_data/test_helpers.js +17 -17
  65. package/testutils/fake_data/user_query.js +2 -2
  66. package/testutils/parse_sql.js +3 -3
  67. package/testutils/query.js +2 -3
  68. package/testutils/write.js +3 -4
  69. package/tsc/ast.js +10 -11
  70. package/tsc/compilerOptions.js +4 -5
  71. package/tsc/move_generated.js +1 -2
  72. package/tsc/transform.js +1 -2
package/core/ent.js CHANGED
@@ -26,8 +26,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.applyPrivacyPolicyForRow = exports.loadNodesByEdge = exports.loadTwoWayEdges = exports.loadEdgeForID2 = exports.loadRawEdgeCountX = exports.loadUniqueNode = exports.loadUniqueEdge = exports.loadCustomEdges = exports.getEdgeClauseAndFields = exports.loadEdges = exports.getDefaultLimit = exports.setDefaultLimit = exports.loadEdgeDatas = exports.loadEdgeData = exports.assocEdgeLoader = exports.AssocEdgeData = exports.getCursor = exports.AssocEdge = exports.deleteRowsSync = exports.deleteRows = exports.editRowSync = exports.editRow = exports.buildUpdateQuery = exports.createRowSync = exports.createRow = exports.buildInsertQuery = exports.buildGroupQuery = exports.loadRows = exports.performRawQuery = exports.___setLogQueryErrorWithError = exports.loadRow = exports.loadRowX = exports.logQuery = exports.loadDerivedEntX = exports.loadDerivedEnt = exports.loadCustomCount = exports.loadCustomData = exports.loadCustomEnts = exports.loadEntsFromClause = exports.loadEntsList = exports.loadEnts = exports.loadEntXFromClause = exports.loadEntFromClause = exports.loadEntXViaKey = exports.loadEntX = exports.loadEntViaKey = exports.loadEnt = exports.getEntKey = exports.getEntLoader = exports.rowIsError = void 0;
30
- exports.getEdgeTypeInGroup = exports.applyPrivacyPolicyForRows = void 0;
29
+ exports.assocEdgeLoader = exports.AssocEdgeData = exports.AssocEdge = void 0;
30
+ exports.rowIsError = rowIsError;
31
+ exports.getEntLoader = getEntLoader;
32
+ exports.getEntKey = getEntKey;
33
+ exports.loadEnt = loadEnt;
34
+ exports.loadEntViaKey = loadEntViaKey;
35
+ exports.loadEntX = loadEntX;
36
+ exports.loadEntXViaKey = loadEntXViaKey;
37
+ exports.loadEntFromClause = loadEntFromClause;
38
+ exports.loadEntXFromClause = loadEntXFromClause;
39
+ exports.loadEnts = loadEnts;
40
+ exports.loadEntsList = loadEntsList;
41
+ exports.loadEntsFromClause = loadEntsFromClause;
42
+ exports.loadCustomEnts = loadCustomEnts;
43
+ exports.loadCustomData = loadCustomData;
44
+ exports.loadCustomCount = loadCustomCount;
45
+ exports.loadDerivedEnt = loadDerivedEnt;
46
+ exports.loadDerivedEntX = loadDerivedEntX;
47
+ exports.logQuery = logQuery;
48
+ exports.loadRowX = loadRowX;
49
+ exports.loadRow = loadRow;
50
+ exports.___setLogQueryErrorWithError = ___setLogQueryErrorWithError;
51
+ exports.performRawQuery = performRawQuery;
52
+ exports.loadRows = loadRows;
53
+ exports.buildGroupQuery = buildGroupQuery;
54
+ exports.buildInsertQuery = buildInsertQuery;
55
+ exports.createRow = createRow;
56
+ exports.createRowSync = createRowSync;
57
+ exports.buildUpdateQuery = buildUpdateQuery;
58
+ exports.editRow = editRow;
59
+ exports.editRowSync = editRowSync;
60
+ exports.deleteRows = deleteRows;
61
+ exports.deleteRowsSync = deleteRowsSync;
62
+ exports.getCursor = getCursor;
63
+ exports.loadEdgeData = loadEdgeData;
64
+ exports.loadEdgeDatas = loadEdgeDatas;
65
+ exports.setDefaultLimit = setDefaultLimit;
66
+ exports.getDefaultLimit = getDefaultLimit;
67
+ exports.loadEdges = loadEdges;
68
+ exports.getEdgeClauseAndFields = getEdgeClauseAndFields;
69
+ exports.loadCustomEdges = loadCustomEdges;
70
+ exports.loadUniqueEdge = loadUniqueEdge;
71
+ exports.loadUniqueNode = loadUniqueNode;
72
+ exports.loadRawEdgeCountX = loadRawEdgeCountX;
73
+ exports.loadEdgeForID2 = loadEdgeForID2;
74
+ exports.loadTwoWayEdges = loadTwoWayEdges;
75
+ exports.loadNodesByEdge = loadNodesByEdge;
76
+ exports.applyPrivacyPolicyForRow = applyPrivacyPolicyForRow;
77
+ exports.applyPrivacyPolicyForRows = applyPrivacyPolicyForRows;
78
+ exports.getEdgeTypeInGroup = getEdgeTypeInGroup;
31
79
  const db_1 = __importStar(require("./db"));
32
80
  const privacy_1 = require("./privacy");
33
81
  const dataloader_1 = __importDefault(require("dataloader"));
@@ -109,7 +157,6 @@ function rowIsError(row) {
109
157
  // so we need to check the name as well for native error SqliteError
110
158
  return row instanceof Error || row?.constructor?.name === "SqliteError";
111
159
  }
112
- exports.rowIsError = rowIsError;
113
160
  function createEntLoader(viewer, options, map) {
114
161
  // share the cache across loaders even if we create a new instance
115
162
  const loaderOptions = {};
@@ -191,11 +238,9 @@ function getEntLoader(viewer, options) {
191
238
  const name = `ent-loader:${viewer.instanceKey()}:${options.loaderFactory.name}`;
192
239
  return viewer.context.cache.getLoaderWithLoadMany(name, () => new EntLoader(viewer, options));
193
240
  }
194
- exports.getEntLoader = getEntLoader;
195
241
  function getEntKey(viewer, id, options) {
196
242
  return `${viewer.instanceKey()}:${options.loaderFactory.name}:${id}`;
197
243
  }
198
- exports.getEntKey = getEntKey;
199
244
  async function loadEnt(viewer, id, options) {
200
245
  if (typeof id !== "string" &&
201
246
  typeof id !== "number" &&
@@ -205,7 +250,6 @@ async function loadEnt(viewer, id, options) {
205
250
  const r = await getEntLoader(viewer, options).load(id);
206
251
  return r instanceof ErrorWrapper ? null : r;
207
252
  }
208
- exports.loadEnt = loadEnt;
209
253
  async function applyPrivacyPolicyForRowAndStoreInEntLoader(viewer, row, options,
210
254
  // can pass in loader when calling this for multi-id cases...
211
255
  loader) {
@@ -243,7 +287,6 @@ async function loadEntViaKey(viewer, key, options) {
243
287
  const r = await applyPrivacyPolicyForRowAndStoreInEntLoader(viewer, row, options);
244
288
  return r instanceof ErrorWrapper ? null : r;
245
289
  }
246
- exports.loadEntViaKey = loadEntViaKey;
247
290
  async function loadEntX(viewer, id, options) {
248
291
  if (typeof id !== "string" &&
249
292
  typeof id !== "number" &&
@@ -256,7 +299,6 @@ async function loadEntX(viewer, id, options) {
256
299
  }
257
300
  return r;
258
301
  }
259
- exports.loadEntX = loadEntX;
260
302
  async function loadEntXViaKey(viewer, key, options) {
261
303
  const row = await options.loaderFactory
262
304
  .createLoader(viewer.context)
@@ -271,7 +313,6 @@ async function loadEntXViaKey(viewer, key, options) {
271
313
  }
272
314
  return r;
273
315
  }
274
- exports.loadEntXViaKey = loadEntXViaKey;
275
316
  /**
276
317
  * @deprecated use loadCustomEnts
277
318
  */
@@ -287,7 +328,6 @@ async function loadEntFromClause(viewer, options, clause) {
287
328
  }
288
329
  return applyPrivacyPolicyForRow(viewer, options, row);
289
330
  }
290
- exports.loadEntFromClause = loadEntFromClause;
291
331
  // same as loadEntFromClause
292
332
  // only works for ents where primary key is "id"
293
333
  // use loadEnt with a loaderFactory if different
@@ -303,7 +343,6 @@ async function loadEntXFromClause(viewer, options, clause) {
303
343
  const row = await loadRowX(rowOptions);
304
344
  return applyPrivacyPolicyForRowX(viewer, options, row);
305
345
  }
306
- exports.loadEntXFromClause = loadEntXFromClause;
307
346
  async function loadEnts(viewer, options, ...ids) {
308
347
  if (!ids.length) {
309
348
  return new Map();
@@ -322,7 +361,6 @@ async function loadEnts(viewer, options, ...ids) {
322
361
  }
323
362
  return m;
324
363
  }
325
- exports.loadEnts = loadEnts;
326
364
  // calls loadEnts and returns the results sorted in the order they were passed in
327
365
  // useful for EntQuery and other paths where the order matters
328
366
  async function loadEntsList(viewer, options, ...ids) {
@@ -336,7 +374,6 @@ async function loadEntsList(viewer, options, ...ids) {
336
374
  });
337
375
  return result;
338
376
  }
339
- exports.loadEntsList = loadEntsList;
340
377
  // we return a map here so that any sorting for queries that exist
341
378
  // can be done in O(N) time
342
379
  /**
@@ -351,12 +388,10 @@ async function loadEntsFromClause(viewer, clause, options) {
351
388
  const rows = await loadRows(rowOptions);
352
389
  return applyPrivacyPolicyForRowsDeprecated(viewer, rows, options);
353
390
  }
354
- exports.loadEntsFromClause = loadEntsFromClause;
355
391
  async function loadCustomEnts(viewer, options, query) {
356
392
  const rows = await loadCustomData(options, query, viewer.context);
357
393
  return applyPrivacyPolicyForRows(viewer, rows, options);
358
394
  }
359
- exports.loadCustomEnts = loadCustomEnts;
360
395
  function isClause(opts) {
361
396
  const cls = opts;
362
397
  return cls.clause !== undefined && cls.values !== undefined;
@@ -407,7 +442,6 @@ async function loadCustomData(options, query, context) {
407
442
  }
408
443
  return rows;
409
444
  }
410
- exports.loadCustomData = loadCustomData;
411
445
  // NOTE: if you use a raw query or paramterized query with this,
412
446
  // you should use `SELECT count(*) as count...`
413
447
  async function loadCustomCount(options, query, context) {
@@ -424,7 +458,6 @@ async function loadCustomCount(options, query, context) {
424
458
  }
425
459
  return 0;
426
460
  }
427
- exports.loadCustomCount = loadCustomCount;
428
461
  function isPrimableLoader(loader) {
429
462
  return loader != undefined;
430
463
  }
@@ -480,13 +513,11 @@ async function loadDerivedEnt(viewer, data, loader) {
480
513
  }
481
514
  return r;
482
515
  }
483
- exports.loadDerivedEnt = loadDerivedEnt;
484
516
  // won't have caching yet either
485
517
  async function loadDerivedEntX(viewer, data, loader) {
486
518
  const ent = new loader(viewer, data);
487
519
  return applyPrivacyPolicyForEntX(viewer, ent, data, { ent: loader });
488
520
  }
489
- exports.loadDerivedEntX = loadDerivedEntX;
490
521
  // everything calls into this two so should be fine
491
522
  // TODO is there a smarter way to not instantiate two objects here?
492
523
  async function applyPrivacyPolicyForEnt(viewer, ent, data, fieldPrivacyOptions) {
@@ -547,7 +578,6 @@ function logQuery(query, logValues) {
547
578
  });
548
579
  (0, logger_1.logTrace)();
549
580
  }
550
- exports.logQuery = logQuery;
551
581
  // TODO long term figure out if this API should be exposed
552
582
  async function loadRowX(options) {
553
583
  const result = await loadRow(options);
@@ -558,7 +588,6 @@ async function loadRowX(options) {
558
588
  }
559
589
  return result;
560
590
  }
561
- exports.loadRowX = loadRowX;
562
591
  // primitive data fetching. called by loaders
563
592
  async function loadRow(options) {
564
593
  let cache = options.context?.cache;
@@ -584,12 +613,10 @@ async function loadRow(options) {
584
613
  }
585
614
  return res.rows[0];
586
615
  }
587
- exports.loadRow = loadRow;
588
616
  var _logQueryWithError = false;
589
617
  function ___setLogQueryErrorWithError(val) {
590
618
  _logQueryWithError = val || false;
591
619
  }
592
- exports.___setLogQueryErrorWithError = ___setLogQueryErrorWithError;
593
620
  // this always goes to the db, no cache, nothing
594
621
  async function performRawQuery(query, values, logValues) {
595
622
  const pool = db_1.default.getInstance().getPool();
@@ -606,7 +633,6 @@ async function performRawQuery(query, values, logValues) {
606
633
  throw e;
607
634
  }
608
635
  }
609
- exports.performRawQuery = performRawQuery;
610
636
  // TODO this should throw, we can't be hiding errors here
611
637
  async function loadRows(options) {
612
638
  let cache = options.context?.cache;
@@ -624,7 +650,6 @@ async function loadRows(options) {
624
650
  }
625
651
  return r;
626
652
  }
627
- exports.loadRows = loadRows;
628
653
  // this is used for queries when we select multiple ids at once
629
654
  function buildGroupQuery(options) {
630
655
  const fields = [...options.fields, "row_number()"];
@@ -654,7 +679,6 @@ function buildGroupQuery(options) {
654
679
  cls,
655
680
  ];
656
681
  }
657
- exports.buildGroupQuery = buildGroupQuery;
658
682
  function isSyncQueryer(queryer) {
659
683
  return queryer.execSync !== undefined;
660
684
  }
@@ -747,7 +771,6 @@ function buildInsertQuery(options, suffix) {
747
771
  }
748
772
  return [query, values, logValues];
749
773
  }
750
- exports.buildInsertQuery = buildInsertQuery;
751
774
  // TODO: these three are not to be exported out of this package
752
775
  // only from this file
753
776
  async function createRow(queryer, options, suffix) {
@@ -758,7 +781,6 @@ async function createRow(queryer, options, suffix) {
758
781
  }
759
782
  return null;
760
783
  }
761
- exports.createRow = createRow;
762
784
  function createRowSync(queryer, options, suffix) {
763
785
  const [query, values, logValues] = buildInsertQuery(options, suffix);
764
786
  const res = mutateRowSync(queryer, query, values, logValues, options);
@@ -767,7 +789,6 @@ function createRowSync(queryer, options, suffix) {
767
789
  }
768
790
  return null;
769
791
  }
770
- exports.createRowSync = createRowSync;
771
792
  function buildUpdateQuery(options, suffix) {
772
793
  let valsString = [];
773
794
  let values = [];
@@ -815,7 +836,6 @@ function buildUpdateQuery(options, suffix) {
815
836
  }
816
837
  return [query, values, logValues];
817
838
  }
818
- exports.buildUpdateQuery = buildUpdateQuery;
819
839
  async function editRow(queryer, options, suffix) {
820
840
  const [query, values, logValues] = buildUpdateQuery(options, suffix);
821
841
  const res = await mutateRow(queryer, query, values, logValues, options);
@@ -827,7 +847,6 @@ async function editRow(queryer, options, suffix) {
827
847
  }
828
848
  return null;
829
849
  }
830
- exports.editRow = editRow;
831
850
  function editRowSync(queryer, options, suffix) {
832
851
  const [query, values, logValues] = buildUpdateQuery(options, suffix);
833
852
  const res = mutateRowSync(queryer, query, values, logValues, options);
@@ -839,17 +858,14 @@ function editRowSync(queryer, options, suffix) {
839
858
  }
840
859
  return null;
841
860
  }
842
- exports.editRowSync = editRowSync;
843
861
  async function deleteRows(queryer, options, cls) {
844
862
  const query = `DELETE FROM ${options.tableName} WHERE ${cls.clause(1)}`;
845
863
  await mutateRow(queryer, query, cls.values(), cls.logValues(), options);
846
864
  }
847
- exports.deleteRows = deleteRows;
848
865
  function deleteRowsSync(queryer, options, cls) {
849
866
  const query = `DELETE FROM ${options.tableName} WHERE ${cls.clause(1)}`;
850
867
  mutateRowSync(queryer, query, cls.values(), cls.logValues(), options);
851
868
  }
852
- exports.deleteRowsSync = deleteRowsSync;
853
869
  class AssocEdge {
854
870
  constructor(data) {
855
871
  this.id1 = data.id1;
@@ -893,7 +909,6 @@ function getCursor(opts) {
893
909
  }
894
910
  return btoa(JSON.stringify(parts));
895
911
  }
896
- exports.getCursor = getCursor;
897
912
  class AssocEdgeData {
898
913
  constructor(data) {
899
914
  this.edgeType = data.edge_type;
@@ -926,7 +941,6 @@ async function loadEdgeData(edgeType) {
926
941
  }
927
942
  return new AssocEdgeData(row);
928
943
  }
929
- exports.loadEdgeData = loadEdgeData;
930
944
  async function loadEdgeDatas(...edgeTypes) {
931
945
  if (!edgeTypes.length) {
932
946
  return new Map();
@@ -944,7 +958,6 @@ async function loadEdgeDatas(...edgeTypes) {
944
958
  });
945
959
  return m;
946
960
  }
947
- exports.loadEdgeDatas = loadEdgeDatas;
948
961
  const edgeFields = [
949
962
  "id1",
950
963
  "id1_type",
@@ -958,11 +971,9 @@ let defaultLimit = 1000;
958
971
  function setDefaultLimit(limit) {
959
972
  defaultLimit = limit;
960
973
  }
961
- exports.setDefaultLimit = setDefaultLimit;
962
974
  function getDefaultLimit() {
963
975
  return defaultLimit;
964
976
  }
965
- exports.getDefaultLimit = getDefaultLimit;
966
977
  function defaultEdgeQueryOptions(id1, edgeType, id2) {
967
978
  let cls = clause.And(clause.Eq("id1", id1), clause.Eq("edge_type", edgeType));
968
979
  if (id2) {
@@ -982,7 +993,6 @@ function defaultEdgeQueryOptions(id1, edgeType, id2) {
982
993
  async function loadEdges(options) {
983
994
  return loadCustomEdges({ ...options, ctr: AssocEdge });
984
995
  }
985
- exports.loadEdges = loadEdges;
986
996
  function getEdgeClauseAndFields(cls, options) {
987
997
  let fields = edgeFields;
988
998
  const transformEdgeRead = (0, global_schema_1.__getGlobalSchema)()?.transformEdgeRead;
@@ -998,7 +1008,6 @@ function getEdgeClauseAndFields(cls, options) {
998
1008
  fields,
999
1009
  };
1000
1010
  }
1001
- exports.getEdgeClauseAndFields = getEdgeClauseAndFields;
1002
1011
  async function loadCustomEdges(options) {
1003
1012
  const { cls: actualClause, fields, defaultOptions, tableName, } = await loadEdgesInfo(options);
1004
1013
  const rows = await loadRows({
@@ -1013,7 +1022,6 @@ async function loadCustomEdges(options) {
1013
1022
  return new options.ctr(row);
1014
1023
  });
1015
1024
  }
1016
- exports.loadCustomEdges = loadCustomEdges;
1017
1025
  async function loadEdgesInfo(options, id2) {
1018
1026
  const { id1, edgeType } = options;
1019
1027
  const edgeData = await loadEdgeData(edgeType);
@@ -1049,7 +1057,6 @@ async function loadUniqueEdge(options) {
1049
1057
  }
1050
1058
  return new AssocEdge(row);
1051
1059
  }
1052
- exports.loadUniqueEdge = loadUniqueEdge;
1053
1060
  async function loadUniqueNode(viewer, id1, edgeType, options) {
1054
1061
  const edge = await loadUniqueEdge({
1055
1062
  id1,
@@ -1061,7 +1068,6 @@ async function loadUniqueNode(viewer, id1, edgeType, options) {
1061
1068
  }
1062
1069
  return loadEnt(viewer, edge.id2, options);
1063
1070
  }
1064
- exports.loadUniqueNode = loadUniqueNode;
1065
1071
  async function loadRawEdgeCountX(options) {
1066
1072
  const { id1, edgeType, context } = options;
1067
1073
  const edgeData = await loadEdgeData(edgeType);
@@ -1078,7 +1084,6 @@ async function loadRawEdgeCountX(options) {
1078
1084
  });
1079
1085
  return parseInt(row["count"], 10) || 0;
1080
1086
  }
1081
- exports.loadRawEdgeCountX = loadRawEdgeCountX;
1082
1087
  async function loadEdgeForID2(options) {
1083
1088
  const { cls: actualClause, fields, tableName, } = await loadEdgesInfo(options, options.id2);
1084
1089
  const row = await loadRow({
@@ -1091,7 +1096,6 @@ async function loadEdgeForID2(options) {
1091
1096
  return new options.ctr(row);
1092
1097
  }
1093
1098
  }
1094
- exports.loadEdgeForID2 = loadEdgeForID2;
1095
1099
  async function loadTwoWayEdges(opts) {
1096
1100
  const { cls: actualClause, fields, tableName } = await loadEdgesInfo(opts);
1097
1101
  const rows = await loadRows({
@@ -1112,7 +1116,6 @@ async function loadTwoWayEdges(opts) {
1112
1116
  });
1113
1117
  return rows;
1114
1118
  }
1115
- exports.loadTwoWayEdges = loadTwoWayEdges;
1116
1119
  async function loadNodesByEdge(viewer, id1, edgeType, options) {
1117
1120
  // load edges
1118
1121
  const rows = await loadEdges({
@@ -1124,12 +1127,10 @@ async function loadNodesByEdge(viewer, id1, edgeType, options) {
1124
1127
  const ids = rows.map((row) => row.id2);
1125
1128
  return loadEntsList(viewer, options, ...ids);
1126
1129
  }
1127
- exports.loadNodesByEdge = loadNodesByEdge;
1128
1130
  async function applyPrivacyPolicyForRow(viewer, options, row) {
1129
1131
  const r = await applyPrivacyPolicyForRowImpl(viewer, options, row);
1130
1132
  return rowIsError(r) ? null : r;
1131
1133
  }
1132
- exports.applyPrivacyPolicyForRow = applyPrivacyPolicyForRow;
1133
1134
  async function applyPrivacyPolicyForRowImpl(viewer, options, row) {
1134
1135
  const ent = new options.ent(viewer, row);
1135
1136
  return applyPrivacyPolicyForEnt(viewer, ent, row, options);
@@ -1166,7 +1167,6 @@ async function applyPrivacyPolicyForRows(viewer, rows, options) {
1166
1167
  // filter ents that aren't visible because of privacy
1167
1168
  return result.filter((r) => r !== undefined);
1168
1169
  }
1169
- exports.applyPrivacyPolicyForRows = applyPrivacyPolicyForRows;
1170
1170
  // given a viewer, an id pair, and a map of edgeEnum to EdgeType
1171
1171
  // return the edgeEnum that's set in the group
1172
1172
  async function getEdgeTypeInGroup(viewer, id1, id2, m) {
@@ -1210,4 +1210,3 @@ async function getEdgeTypeInGroup(viewer, id1, id2, m) {
1210
1210
  }
1211
1211
  }
1212
1212
  }
1213
- exports.getEdgeTypeInGroup = getEdgeTypeInGroup;
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.__getGlobalSchemaField = exports.__getGlobalSchemaFields = exports.__getGlobalSchema = exports.__hasGlobalSchema = exports.clearGlobalSchema = exports.setGlobalSchema = void 0;
3
+ exports.setGlobalSchema = setGlobalSchema;
4
+ exports.clearGlobalSchema = clearGlobalSchema;
5
+ exports.__hasGlobalSchema = __hasGlobalSchema;
6
+ exports.__getGlobalSchema = __getGlobalSchema;
7
+ exports.__getGlobalSchemaFields = __getGlobalSchemaFields;
8
+ exports.__getGlobalSchemaField = __getGlobalSchemaField;
4
9
  const schema_1 = require("../schema/schema");
5
10
  let globalSchema;
6
11
  let globalSchemaFields = new Map();
@@ -25,27 +30,21 @@ function setGlobalSchema(val) {
25
30
  }
26
31
  }
27
32
  }
28
- exports.setGlobalSchema = setGlobalSchema;
29
33
  function clearGlobalSchema() {
30
34
  globalSchema = undefined;
31
35
  globalSchemaFields.clear();
32
36
  }
33
- exports.clearGlobalSchema = clearGlobalSchema;
34
37
  // used by tests. no guarantee will always exist
35
38
  function __hasGlobalSchema() {
36
39
  return globalSchema !== undefined;
37
40
  }
38
- exports.__hasGlobalSchema = __hasGlobalSchema;
39
41
  // used by tests. no guarantee will always exist
40
42
  function __getGlobalSchema() {
41
43
  return globalSchema;
42
44
  }
43
- exports.__getGlobalSchema = __getGlobalSchema;
44
45
  function __getGlobalSchemaFields() {
45
46
  return globalSchemaFields;
46
47
  }
47
- exports.__getGlobalSchemaFields = __getGlobalSchemaFields;
48
48
  function __getGlobalSchemaField(type) {
49
49
  return globalSchemaFields.get(type);
50
50
  }
51
- exports.__getGlobalSchemaField = __getGlobalSchemaField;
@@ -1,11 +1,11 @@
1
1
  import { ID, Context, Loader, LoaderFactory, EdgeQueryableDataOptionsConfigureLoader } from "../base";
2
2
  export declare class AssocEdgeCountLoader implements Loader<ID, number> {
3
3
  private edgeType;
4
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
4
+ context?: Context | undefined;
5
5
  private options?;
6
6
  private loaderFn;
7
7
  private loader;
8
- constructor(edgeType: string, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined, options?: EdgeQueryableDataOptionsConfigureLoader | undefined);
8
+ constructor(edgeType: string, context?: Context | undefined, options?: EdgeQueryableDataOptionsConfigureLoader | undefined);
9
9
  private getLoader;
10
10
  load(id: ID): Promise<number>;
11
11
  clearAll(): void;
@@ -22,8 +22,8 @@ export declare class AssocDirectEdgeLoader<T extends AssocEdge> implements Loade
22
22
  private edgeType;
23
23
  private edgeCtr;
24
24
  private options?;
25
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
26
- constructor(edgeType: string, edgeCtr: AssocEdgeConstructor<T>, options?: Partial<Pick<import("../base").QueryableDataOptions, "clause" | "limit" | "orderby" | "disableTransformations">> | undefined, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
25
+ context?: Context | undefined;
26
+ constructor(edgeType: string, edgeCtr: AssocEdgeConstructor<T>, options?: EdgeQueryableDataOptions | undefined, context?: Context | undefined);
27
27
  load(id: ID): Promise<T[]>;
28
28
  loadTwoWay(id: ID): Promise<T[]>;
29
29
  loadEdgeForID2(id: ID, id2: ID): Promise<T | undefined>;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CacheMap = exports.getCustomLoader = exports.getLoader = void 0;
3
+ exports.CacheMap = void 0;
4
+ exports.getLoader = getLoader;
5
+ exports.getCustomLoader = getCustomLoader;
4
6
  const logger_1 = require("../logger");
5
7
  // this is like factory factory FML
6
8
  // helper function to handle context vs not
@@ -14,7 +16,6 @@ function getLoader(factory, create, context) {
14
16
  // g|set from context cache
15
17
  return context.cache.getLoader(factory.name, create);
16
18
  }
17
- exports.getLoader = getLoader;
18
19
  function getCustomLoader(key, create, context) {
19
20
  // just create a new one every time if no context cache
20
21
  if (!context?.cache) {
@@ -24,7 +25,6 @@ function getCustomLoader(key, create, context) {
24
25
  // g|set from context cache
25
26
  return context.cache.getLoader(key, create);
26
27
  }
27
- exports.getCustomLoader = getCustomLoader;
28
28
  class CacheMap {
29
29
  constructor(options) {
30
30
  this.options = options;
@@ -2,13 +2,13 @@ import { ID, Data, SelectDataOptions, Context, Loader, LoaderFactory } from "../
2
2
  import * as clause from "../clause";
3
3
  export declare class ObjectLoader<TQueryData extends Data = Data, TResultData extends Data = TQueryData, K = keyof TQueryData> implements Loader<ID, TResultData | null>, Loader<clause.Clause<TQueryData, K>, TResultData[] | null> {
4
4
  private options;
5
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
5
+ context?: Context | undefined;
6
6
  private toPrime?;
7
7
  private idLoader;
8
8
  private clauseLoader;
9
9
  private primedLoaders;
10
10
  private memoizedInitPrime;
11
- constructor(options: SelectDataOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined, toPrime?: ObjectLoaderFactory<TResultData>[] | undefined);
11
+ constructor(options: SelectDataOptions, context?: Context | undefined, toPrime?: ObjectLoaderFactory<TResultData>[] | undefined);
12
12
  getOptions(): SelectDataOptions;
13
13
  private initPrime;
14
14
  load(key: ID): Promise<TResultData | null>;
@@ -25,9 +25,9 @@ export declare class ObjectLoader<TQueryData extends Data = Data, TResultData ex
25
25
  }
26
26
  export declare class ObjectCountLoader<V extends Data = Data, K = keyof V> implements Loader<clause.Clause<V, K>, number> {
27
27
  private options;
28
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
28
+ context?: Context | undefined;
29
29
  private loader;
30
- constructor(options: SelectDataOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
30
+ constructor(options: SelectDataOptions, context?: Context | undefined);
31
31
  getOptions(): SelectDataOptions;
32
32
  load(key: clause.Clause<V, K>): Promise<number>;
33
33
  clearAll(): void;
@@ -5,10 +5,10 @@ import { ObjectLoaderFactory } from "./object_loader";
5
5
  declare class QueryDirectLoader<K extends any> implements Loader<K, Data[]> {
6
6
  private options;
7
7
  private queryOptions?;
8
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, import("../base").ID | null>> | undefined;
8
+ context?: Context | undefined;
9
9
  private memoizedInitPrime;
10
10
  private primedLoaders;
11
- constructor(options: QueryOptions, queryOptions?: Partial<Pick<import("../base").QueryableDataOptions, "clause" | "limit" | "orderby" | "disableTransformations">> | undefined, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, import("../base").ID | null>> | undefined);
11
+ constructor(options: QueryOptions, queryOptions?: EdgeQueryableDataOptions | undefined, context?: Context | undefined);
12
12
  private initPrime;
13
13
  load(id: K): Promise<Data[]>;
14
14
  clearAll(): void;
@@ -10,9 +10,9 @@ interface QueryCountOptions {
10
10
  export declare function createCountDataLoader<K extends any>(options: QueryCountOptions): DataLoader<K, number, K>;
11
11
  export declare class RawCountLoader<K extends any> implements Loader<K, number> {
12
12
  private options;
13
- context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
13
+ context?: Context | undefined;
14
14
  private loader;
15
- constructor(options: QueryCountOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
15
+ constructor(options: QueryCountOptions, context?: Context | undefined);
16
16
  load(id: K): Promise<number>;
17
17
  clearAll(): void;
18
18
  }
@@ -26,7 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.RawCountLoaderFactory = exports.RawCountLoader = exports.createCountDataLoader = void 0;
29
+ exports.RawCountLoaderFactory = exports.RawCountLoader = void 0;
30
+ exports.createCountDataLoader = createCountDataLoader;
30
31
  const dataloader_1 = __importDefault(require("dataloader"));
31
32
  const ent_1 = require("../ent");
32
33
  const clause = __importStar(require("../clause"));
@@ -99,7 +100,6 @@ function createCountDataLoader(options) {
99
100
  return result;
100
101
  }, loaderOptions);
101
102
  }
102
- exports.createCountDataLoader = createCountDataLoader;
103
103
  // for now this only works for single column counts
104
104
  // e.g. foreign key count
105
105
  class RawCountLoader {
package/core/logger.js CHANGED
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logEnabled = exports.logTrace = exports.logIf = exports.log = exports.clearLogLevels = exports.setLogLevels = void 0;
3
+ exports.setLogLevels = setLogLevels;
4
+ exports.clearLogLevels = clearLogLevels;
5
+ exports.log = log;
6
+ exports.logIf = logIf;
7
+ exports.logTrace = logTrace;
8
+ exports.logEnabled = logEnabled;
4
9
  var m = {
5
10
  query: "log",
6
11
  warn: "warn",
@@ -16,11 +21,9 @@ function setLogLevels(levels) {
16
21
  }
17
22
  levels.forEach((level) => logLevels.set(level, true));
18
23
  }
19
- exports.setLogLevels = setLogLevels;
20
24
  function clearLogLevels() {
21
25
  logLevels.clear();
22
26
  }
23
- exports.clearLogLevels = clearLogLevels;
24
27
  function log(level, msg) {
25
28
  if (logLevels.has(level)) {
26
29
  // mostly for sqlite error but fine for any type of error
@@ -32,20 +35,16 @@ function log(level, msg) {
32
35
  console[m[level]](msg);
33
36
  }
34
37
  }
35
- exports.log = log;
36
38
  function logIf(level, logFn) {
37
39
  if (logLevels.has(level)) {
38
40
  console[m[level]](logFn());
39
41
  }
40
42
  }
41
- exports.logIf = logIf;
42
43
  function logTrace() {
43
44
  if (logLevels.has("debug")) {
44
45
  console.trace();
45
46
  }
46
47
  }
47
- exports.logTrace = logTrace;
48
48
  function logEnabled(level) {
49
49
  return logLevels.has(level);
50
50
  }
51
- exports.logEnabled = logEnabled;
package/core/privacy.d.ts CHANGED
@@ -88,7 +88,7 @@ export declare class AllowIfEntIsVisiblePolicy<TEnt extends Ent<TViewer>, TViewe
88
88
  private options;
89
89
  constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
90
90
  rules: {
91
- apply(_v: Viewer<Ent<any> | null, ID | null>, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
91
+ apply(_v: Viewer, _ent?: Ent): Promise<PrivacyResult>;
92
92
  }[];
93
93
  }
94
94
  export declare class DenyIfEntIsVisiblePolicy<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicy<TEnt, TViewer> {
@@ -96,7 +96,7 @@ export declare class DenyIfEntIsVisiblePolicy<TEnt extends Ent<TViewer>, TViewer
96
96
  private options;
97
97
  constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
98
98
  rules: {
99
- apply(_v: Viewer<Ent<any> | null, ID | null>, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
99
+ apply(_v: Viewer, _ent?: Ent): Promise<PrivacyResult>;
100
100
  }[];
101
101
  }
102
102
  export declare class DenyIfEntIsVisibleRule<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicyRule<TEnt, TViewer> {