@snowtop/ent 0.2.5 → 0.2.6

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 (97) 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/operations.js +17 -7
  6. package/action/orchestrator.d.ts +2 -2
  7. package/action/orchestrator.js +17 -7
  8. package/action/privacy.d.ts +2 -2
  9. package/action/relative_value.js +3 -3
  10. package/auth/auth.d.ts +0 -1
  11. package/auth/auth.js +4 -5
  12. package/core/base.js +5 -5
  13. package/core/clause.js +76 -67
  14. package/core/config.d.ts +1 -1
  15. package/core/config.js +22 -9
  16. package/core/context.d.ts +0 -1
  17. package/core/convert.d.ts +0 -1
  18. package/core/convert.js +16 -17
  19. package/core/date.js +1 -2
  20. package/core/db.js +17 -7
  21. package/core/ent.d.ts +2 -0
  22. package/core/ent.js +127 -92
  23. package/core/global_schema.js +6 -7
  24. package/core/loaders/assoc_count_loader.d.ts +2 -2
  25. package/core/loaders/assoc_count_loader.js +17 -7
  26. package/core/loaders/assoc_edge_loader.d.ts +2 -2
  27. package/core/loaders/assoc_edge_loader.js +44 -20
  28. package/core/loaders/cache_utils.d.ts +1 -0
  29. package/core/loaders/cache_utils.js +28 -0
  30. package/core/loaders/index.d.ts +1 -0
  31. package/core/loaders/index.js +4 -1
  32. package/core/loaders/loader.d.ts +2 -0
  33. package/core/loaders/loader.js +20 -3
  34. package/core/loaders/object_loader.d.ts +6 -4
  35. package/core/loaders/object_loader.js +86 -48
  36. package/core/loaders/query_loader.d.ts +2 -2
  37. package/core/loaders/query_loader.js +25 -9
  38. package/core/loaders/raw_count_loader.d.ts +2 -2
  39. package/core/loaders/raw_count_loader.js +22 -10
  40. package/core/logger.js +6 -7
  41. package/core/privacy.d.ts +2 -2
  42. package/core/privacy.js +4 -5
  43. package/core/query/assoc_query.js +17 -7
  44. package/core/query/query.js +17 -7
  45. package/core/query/shared_assoc_test.js +1 -2
  46. package/core/query_impl.js +4 -5
  47. package/core/viewer.d.ts +2 -2
  48. package/graphql/graphql_field_helpers.js +22 -22
  49. package/graphql/mutations/union.js +1 -2
  50. package/graphql/node_resolver.js +7 -7
  51. package/graphql/query/shared_assoc_test.js +1 -2
  52. package/graphql/scalars/date.js +8 -3
  53. package/graphql/scalars/time.d.ts +1 -1
  54. package/imports/dataz/example1/_auth.js +14 -10
  55. package/imports/index.js +18 -9
  56. package/index.js +17 -7
  57. package/names/names.js +61 -18
  58. package/package.json +14 -17
  59. package/parse_schema/parse.js +2 -3
  60. package/schema/binary_field.js +3 -3
  61. package/schema/field.js +45 -35
  62. package/schema/json_field.js +7 -7
  63. package/schema/schema.js +12 -12
  64. package/schema/struct_field.js +4 -4
  65. package/schema/union_field.js +3 -3
  66. package/scripts/custom_compiler.js +17 -7
  67. package/scripts/custom_graphql.js +17 -7
  68. package/scripts/fix_action_exports.js +17 -7
  69. package/scripts/move_types.js +17 -7
  70. package/scripts/read_schema.js +17 -7
  71. package/testutils/action/complex_schemas.js +28 -18
  72. package/testutils/builder.d.ts +1 -1
  73. package/testutils/builder.js +7 -7
  74. package/testutils/db/fixture.js +1 -2
  75. package/testutils/db/temp_db.js +54 -44
  76. package/testutils/db/value.js +3 -4
  77. package/testutils/db_mock.js +12 -0
  78. package/testutils/ent-graphql-tests/index.d.ts +3 -3
  79. package/testutils/ent-graphql-tests/index.js +27 -18
  80. package/testutils/fake_data/const.js +2 -2
  81. package/testutils/fake_data/fake_contact.js +20 -10
  82. package/testutils/fake_data/fake_event.js +20 -10
  83. package/testutils/fake_data/fake_tag.js +21 -11
  84. package/testutils/fake_data/fake_user.js +21 -11
  85. package/testutils/fake_data/test_helpers.js +17 -17
  86. package/testutils/fake_data/user_query.js +19 -9
  87. package/testutils/parse_sql.js +151 -43
  88. package/testutils/query.js +2 -3
  89. package/testutils/soft_delete.js +17 -7
  90. package/testutils/test_edge_global_schema.js +17 -7
  91. package/testutils/write.js +20 -11
  92. package/tsc/ast.js +27 -18
  93. package/tsc/compilerOptions.js +22 -13
  94. package/tsc/move_generated.js +18 -9
  95. package/tsc/transform.js +18 -9
  96. package/tsc/transform_action.js +17 -7
  97. package/tsc/transform_schema.js +17 -7
package/action/action.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clearEdgeTypeInGroup = exports.setEdgeTypeInGroup = exports.saveBuilderX = exports.saveBuilder = exports.WriteOperation = void 0;
3
+ exports.WriteOperation = void 0;
4
+ exports.saveBuilder = saveBuilder;
5
+ exports.saveBuilderX = saveBuilderX;
6
+ exports.setEdgeTypeInGroup = setEdgeTypeInGroup;
7
+ exports.clearEdgeTypeInGroup = clearEdgeTypeInGroup;
4
8
  const base_1 = require("../core/base");
5
9
  Object.defineProperty(exports, "WriteOperation", { enumerable: true, get: function () { return base_1.WriteOperation; } });
6
10
  const ent_1 = require("../core/ent");
@@ -8,11 +12,9 @@ const logger_1 = require("../core/logger");
8
12
  async function saveBuilder(builder) {
9
13
  await saveBuilderImpl(builder, false);
10
14
  }
11
- exports.saveBuilder = saveBuilder;
12
15
  async function saveBuilderX(builder) {
13
16
  await saveBuilderImpl(builder, true);
14
17
  }
15
- exports.saveBuilderX = saveBuilderX;
16
18
  async function saveBuilderImpl(builder, throwErr) {
17
19
  let changeset;
18
20
  try {
@@ -83,7 +85,6 @@ async function setEdgeTypeInGroup(orchestrator, inputEnumValue, id1, id2, id2Nod
83
85
  }
84
86
  await Promise.all(promises);
85
87
  }
86
- exports.setEdgeTypeInGroup = setEdgeTypeInGroup;
87
88
  async function clearEdgeTypeInGroup(orchestrator, id1, id2, m) {
88
89
  let promises = [];
89
90
  for (const [_, edgeType] of m) {
@@ -102,4 +103,3 @@ async function clearEdgeTypeInGroup(orchestrator, id1, id2, m) {
102
103
  }
103
104
  await Promise.all(promises);
104
105
  }
105
- exports.clearEdgeTypeInGroup = clearEdgeTypeInGroup;
@@ -12,7 +12,7 @@ export declare class ListBasedExecutor<T extends Ent> implements Executor {
12
12
  private complexOptions?;
13
13
  private idx;
14
14
  builder?: Builder<Ent> | undefined;
15
- constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation<T>[], options?: OrchestratorOptions<T, Data, Viewer<Ent<any> | null, ID | null>, T | null> | undefined, complexOptions?: ComplexExecutorOptions | undefined);
15
+ constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation<T>[], options?: OrchestratorOptions<T, Data, Viewer> | undefined, complexOptions?: ComplexExecutorOptions | undefined);
16
16
  private lastOp;
17
17
  private createdEnt;
18
18
  private changedOps;
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.executeOperations = exports.ComplexExecutor = exports.ListBasedExecutor = void 0;
6
+ exports.ComplexExecutor = exports.ListBasedExecutor = void 0;
7
+ exports.executeOperations = executeOperations;
7
8
  const graph_data_structure_1 = require("graph-data-structure");
8
9
  const ent_1 = require("../core/ent");
9
10
  const db_1 = __importDefault(require("../core/db"));
@@ -122,7 +123,7 @@ class ComplexExecutor {
122
123
  this.executors = [];
123
124
  this.changedOps = new Map();
124
125
  this.builder = options?.builder;
125
- let graph = (0, graph_data_structure_1.Graph)();
126
+ const graph = new graph_data_structure_1.Graph();
126
127
  const changesetMap = new Map();
127
128
  const impl = (c) => {
128
129
  changesetMap.set(c.placeholderID.toString(), c);
@@ -155,7 +156,7 @@ class ComplexExecutor {
155
156
  // TODO: can this logic be rewritten to not have a set yet avoid duplicates?
156
157
  let nodeOps = new Set();
157
158
  let remainOps = new Set();
158
- let sorted = graph.topologicalSort(graph.nodes());
159
+ const sorted = (0, graph_data_structure_1.topologicalSort)(graph);
159
160
  sorted.forEach((node) => {
160
161
  let c = changesetMap.get(node);
161
162
  if (!c) {
@@ -338,7 +339,6 @@ async function executeOperations(executor, context, trackOps) {
338
339
  }
339
340
  return operations;
340
341
  }
341
- exports.executeOperations = executeOperations;
342
342
  function maybeChangeOp(op, complexOptions) {
343
343
  if (!op ||
344
344
  !complexOptions?.conditionalOverride ||
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSimpleInsertAction = exports.getSimpleDeleteAction = exports.getSimpleEditAction = exports.updateRawObject = exports.BaseAction = void 0;
3
+ exports.BaseAction = void 0;
4
+ exports.updateRawObject = updateRawObject;
5
+ exports.getSimpleEditAction = getSimpleEditAction;
6
+ exports.getSimpleDeleteAction = getSimpleDeleteAction;
7
+ exports.getSimpleInsertAction = getSimpleInsertAction;
4
8
  const privacy_1 = require("../core/privacy");
5
9
  const action_1 = require("./action");
6
10
  class BaseAction {
@@ -94,7 +98,6 @@ async function updateRawObject(viewer, builderCtr, existingEnt, input) {
94
98
  });
95
99
  return action.saveX();
96
100
  }
97
- exports.updateRawObject = updateRawObject;
98
101
  // TODO need to fix types for all these
99
102
  // creates an action which has no privacy, triggers, observers etc
100
103
  // does do field validation
@@ -108,7 +111,6 @@ function getSimpleEditAction(viewer, builderCtr, existingEnt, input, opts) {
108
111
  ...opts,
109
112
  });
110
113
  }
111
- exports.getSimpleEditAction = getSimpleEditAction;
112
114
  function getSimpleDeleteAction(viewer, builderCtr, existingEnt, input, opts) {
113
115
  return new BaseAction(viewer, builderCtr, {
114
116
  existingEnt: existingEnt,
@@ -117,7 +119,6 @@ function getSimpleDeleteAction(viewer, builderCtr, existingEnt, input, opts) {
117
119
  ...opts,
118
120
  });
119
121
  }
120
- exports.getSimpleDeleteAction = getSimpleDeleteAction;
121
122
  function getSimpleInsertAction(viewer, builderCtr, input, opts) {
122
123
  return new BaseAction(viewer, builderCtr, {
123
124
  operation: action_1.WriteOperation.Insert,
@@ -126,4 +127,3 @@ function getSimpleInsertAction(viewer, builderCtr, input, opts) {
126
127
  ...opts,
127
128
  });
128
129
  }
129
- exports.getSimpleInsertAction = getSimpleInsertAction;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.ConditionalNodeOperation = exports.ConditionalOperation = exports.EdgeOperation = exports.EditNodeOperation = exports.NoOperation = exports.RawQueryOperation = exports.DeleteNodeOperation = void 0;
27
37
  const action_1 = require("../action");
@@ -122,11 +122,11 @@ export declare class EntChangeset<TEnt extends Ent<TViewer>, TViewer extends Vie
122
122
  readonly placeholderID: ID;
123
123
  private conditionalOverride;
124
124
  operations: DataOperation<any, TViewer>[];
125
- dependencies?: Map<ID, Builder<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>, Ent<Viewer<Ent<any> | null, ID | null>> | null>> | undefined;
125
+ dependencies?: Map<ID, Builder<Ent>> | undefined;
126
126
  changesets?: Changeset[] | undefined;
127
127
  private options?;
128
128
  private _executor;
129
- constructor(viewer: Viewer, builder: Builder<TEnt, TViewer>, placeholderID: ID, conditionalOverride: boolean, operations: DataOperation<any, TViewer>[], dependencies?: Map<ID, Builder<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>, Ent<Viewer<Ent<any> | null, ID | null>> | null>> | undefined, changesets?: Changeset[] | undefined, options?: OrchestratorOptions<TEnt, Data, TViewer, MaybeNull<TEnt>> | undefined);
129
+ constructor(viewer: Viewer, builder: Builder<TEnt, TViewer>, placeholderID: ID, conditionalOverride: boolean, operations: DataOperation<any, TViewer>[], dependencies?: Map<ID, Builder<Ent>> | undefined, changesets?: Changeset[] | undefined, options?: OrchestratorOptions<TEnt, Data, TViewer> | undefined);
130
130
  static changesetFrom<TEnt extends Ent<TViewer>, TViewer extends Viewer = Viewer>(builder: Builder<TEnt, TViewer, any>, ops: DataOperation<any, TViewer>[]): EntChangeset<any, TViewer>;
131
131
  static changesetFromQueries<TEnt extends Ent<TViewer>, TViewer extends Viewer = Viewer>(builder: Builder<TEnt, TViewer, any>, queries: Array<string | parameterizedQueryOptions>): EntChangeset<any, TViewer>;
132
132
  private static changesetFromEdgeOp;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
@@ -2,11 +2,11 @@ import { Builder } from "./action";
2
2
  import { Viewer, ID, Ent, PrivacyResult, PrivacyPolicyRule } from "../core/base";
3
3
  export declare class DenyIfBuilder implements PrivacyPolicyRule {
4
4
  private id?;
5
- constructor(id?: ID | Builder<Ent<Viewer<Ent<any> | null, ID | null>>, any, Ent<Viewer<Ent<any> | null, ID | null>> | null> | undefined);
5
+ constructor(id?: (ID | Builder<Ent, any>) | undefined);
6
6
  apply(_v: Viewer, _ent: Ent): Promise<PrivacyResult>;
7
7
  }
8
8
  export declare class AllowIfBuilder implements PrivacyPolicyRule {
9
9
  private id?;
10
- constructor(id?: ID | Builder<Ent<Viewer<Ent<any> | null, ID | null>>, any, Ent<Viewer<Ent<any> | null, ID | null>> | null> | undefined);
10
+ constructor(id?: (ID | Builder<Ent, any>) | undefined);
11
11
  apply(_v: Viewer, _ent: Ent): Promise<PrivacyResult>;
12
12
  }
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.maybeConvertRelativeInputPlusExpressions = exports.convertRelativeInput = exports.NumberOps = void 0;
3
+ exports.NumberOps = void 0;
4
+ exports.convertRelativeInput = convertRelativeInput;
5
+ exports.maybeConvertRelativeInputPlusExpressions = maybeConvertRelativeInputPlusExpressions;
4
6
  const clause_1 = require("../core/clause");
5
7
  function addNumber(delta) {
6
8
  return {
@@ -101,7 +103,6 @@ function convertRelativeInput(rel, col, existing) {
101
103
  }
102
104
  throw new Error(`error in convertRelativeInput. shouldn't have gotten here`);
103
105
  }
104
- exports.convertRelativeInput = convertRelativeInput;
105
106
  function maybeConvertRelativeInputPlusExpressions(rel, col, existing, expressions) {
106
107
  if (rel === null) {
107
108
  return rel;
@@ -122,4 +123,3 @@ function maybeConvertRelativeInputPlusExpressions(rel, col, existing, expression
122
123
  expressions.set(col, clause);
123
124
  return value;
124
125
  }
125
- exports.maybeConvertRelativeInputPlusExpressions = maybeConvertRelativeInputPlusExpressions;
package/auth/auth.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { Viewer } from "../core/base";
3
2
  import { RequestContext } from "../core/context";
4
3
  import { IncomingMessage, ServerResponse } from "http";
package/auth/auth.js CHANGED
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildContext = exports.getLoggedInViewer = exports.clearAuthHandlers = exports.registerAuthHandler = void 0;
3
+ exports.registerAuthHandler = registerAuthHandler;
4
+ exports.clearAuthHandlers = clearAuthHandlers;
5
+ exports.getLoggedInViewer = getLoggedInViewer;
6
+ exports.buildContext = buildContext;
4
7
  const viewer_1 = require("../core/viewer");
5
8
  const context_1 = require("../core/context");
6
9
  const logger_1 = require("../core/logger");
@@ -8,11 +11,9 @@ let handlers = new Map();
8
11
  async function registerAuthHandler(name, auth) {
9
12
  handlers.set(name, auth);
10
13
  }
11
- exports.registerAuthHandler = registerAuthHandler;
12
14
  async function clearAuthHandlers() {
13
15
  handlers.clear();
14
16
  }
15
- exports.clearAuthHandlers = clearAuthHandlers;
16
17
  async function getLoggedInViewer(context) {
17
18
  for (const [name, authHandler] of handlers) {
18
19
  let v = await authHandler.authViewer(context);
@@ -24,7 +25,6 @@ async function getLoggedInViewer(context) {
24
25
  (0, logger_1.log)("info", "no auth handler returned viewer. default to logged out viewer");
25
26
  return null;
26
27
  }
27
- exports.getLoggedInViewer = getLoggedInViewer;
28
28
  async function buildContext(request, response) {
29
29
  const ctx = new contextImpl(request, response);
30
30
  let viewer = await getLoggedInViewer(ctx);
@@ -34,7 +34,6 @@ async function buildContext(request, response) {
34
34
  }
35
35
  return ctx;
36
36
  }
37
- exports.buildContext = buildContext;
38
37
  class contextImpl {
39
38
  constructor(request, response) {
40
39
  this.request = request;
package/core/base.js CHANGED
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WriteOperation = exports.DenyWithReason = exports.Deny = exports.Skip = exports.Allow = void 0;
3
+ exports.WriteOperation = void 0;
4
+ exports.Allow = Allow;
5
+ exports.Skip = Skip;
6
+ exports.Deny = Deny;
7
+ exports.DenyWithReason = DenyWithReason;
4
8
  // Privacy
5
9
  var privacyResult;
6
10
  (function (privacyResult) {
@@ -15,21 +19,18 @@ const allow = {
15
19
  function Allow() {
16
20
  return allow;
17
21
  }
18
- exports.Allow = Allow;
19
22
  const skip = {
20
23
  result: privacyResult.Skip,
21
24
  };
22
25
  function Skip() {
23
26
  return skip;
24
27
  }
25
- exports.Skip = Skip;
26
28
  const deny = {
27
29
  result: privacyResult.Deny,
28
30
  };
29
31
  function Deny() {
30
32
  return deny;
31
33
  }
32
- exports.Deny = Deny;
33
34
  class DenyWithReasonError extends Error {
34
35
  constructor(privacyPolicy, rule, msg, ent) {
35
36
  super(msg);
@@ -52,7 +53,6 @@ function DenyWithReason(e) {
52
53
  error: e,
53
54
  };
54
55
  }
55
- exports.DenyWithReason = DenyWithReason;
56
56
  var WriteOperation;
57
57
  (function (WriteOperation) {
58
58
  WriteOperation["Insert"] = "insert";