@snowtop/ent 0.1.0-alpha15 → 0.1.0-alpha150

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 (170) hide show
  1. package/action/action.d.ts +27 -16
  2. package/action/action.js +22 -7
  3. package/action/executor.d.ts +16 -3
  4. package/action/executor.js +90 -23
  5. package/action/experimental_action.d.ts +25 -16
  6. package/action/experimental_action.js +35 -9
  7. package/action/index.d.ts +3 -1
  8. package/action/index.js +7 -1
  9. package/action/operations.d.ts +125 -0
  10. package/action/operations.js +684 -0
  11. package/action/orchestrator.d.ts +38 -12
  12. package/action/orchestrator.js +427 -102
  13. package/action/relative_value.d.ts +47 -0
  14. package/action/relative_value.js +125 -0
  15. package/action/transaction.d.ts +10 -0
  16. package/action/transaction.js +23 -0
  17. package/auth/auth.d.ts +1 -1
  18. package/core/base.d.ts +51 -21
  19. package/core/base.js +7 -1
  20. package/core/clause.d.ts +85 -40
  21. package/core/clause.js +375 -64
  22. package/core/config.d.ts +15 -1
  23. package/core/config.js +10 -1
  24. package/core/const.d.ts +3 -0
  25. package/core/const.js +6 -0
  26. package/core/context.d.ts +4 -2
  27. package/core/context.js +20 -2
  28. package/core/convert.d.ts +1 -1
  29. package/core/date.js +1 -5
  30. package/core/db.d.ts +12 -8
  31. package/core/db.js +18 -8
  32. package/core/ent.d.ts +68 -94
  33. package/core/ent.js +535 -586
  34. package/core/global_schema.d.ts +7 -0
  35. package/core/global_schema.js +51 -0
  36. package/core/loaders/assoc_count_loader.d.ts +1 -0
  37. package/core/loaders/assoc_count_loader.js +10 -2
  38. package/core/loaders/assoc_edge_loader.d.ts +1 -1
  39. package/core/loaders/assoc_edge_loader.js +10 -13
  40. package/core/loaders/index.d.ts +1 -1
  41. package/core/loaders/index.js +1 -3
  42. package/core/loaders/index_loader.d.ts +3 -3
  43. package/core/loaders/loader.d.ts +2 -2
  44. package/core/loaders/loader.js +5 -5
  45. package/core/loaders/object_loader.d.ts +30 -9
  46. package/core/loaders/object_loader.js +225 -78
  47. package/core/loaders/query_loader.d.ts +6 -12
  48. package/core/loaders/query_loader.js +54 -13
  49. package/core/loaders/raw_count_loader.js +5 -1
  50. package/core/logger.d.ts +1 -1
  51. package/core/logger.js +1 -0
  52. package/core/privacy.d.ts +7 -6
  53. package/core/privacy.js +21 -25
  54. package/core/query/assoc_query.d.ts +3 -2
  55. package/core/query/assoc_query.js +9 -1
  56. package/core/query/custom_clause_query.d.ts +27 -0
  57. package/core/query/custom_clause_query.js +88 -0
  58. package/core/query/custom_query.d.ts +17 -2
  59. package/core/query/custom_query.js +88 -13
  60. package/core/query/index.d.ts +1 -0
  61. package/core/query/index.js +3 -1
  62. package/core/query/query.d.ts +15 -3
  63. package/core/query/query.js +128 -53
  64. package/core/query/shared_assoc_test.d.ts +2 -1
  65. package/core/query/shared_assoc_test.js +44 -54
  66. package/core/query/shared_test.d.ts +8 -1
  67. package/core/query/shared_test.js +532 -236
  68. package/core/viewer.d.ts +2 -0
  69. package/core/viewer.js +3 -1
  70. package/graphql/graphql.d.ts +52 -19
  71. package/graphql/graphql.js +174 -136
  72. package/graphql/graphql_field_helpers.d.ts +7 -1
  73. package/graphql/graphql_field_helpers.js +21 -1
  74. package/graphql/index.d.ts +2 -2
  75. package/graphql/index.js +3 -5
  76. package/graphql/query/connection_type.d.ts +9 -9
  77. package/graphql/query/shared_assoc_test.js +1 -1
  78. package/graphql/query/shared_edge_connection.js +1 -19
  79. package/graphql/scalars/orderby_direction.d.ts +2 -0
  80. package/graphql/scalars/orderby_direction.js +15 -0
  81. package/imports/dataz/example1/_auth.js +128 -47
  82. package/imports/dataz/example1/_viewer.js +87 -39
  83. package/imports/index.d.ts +7 -2
  84. package/imports/index.js +20 -5
  85. package/index.d.ts +14 -5
  86. package/index.js +26 -10
  87. package/package.json +18 -17
  88. package/parse_schema/parse.d.ts +31 -9
  89. package/parse_schema/parse.js +179 -32
  90. package/schema/base_schema.d.ts +13 -3
  91. package/schema/base_schema.js +13 -0
  92. package/schema/field.d.ts +78 -21
  93. package/schema/field.js +231 -71
  94. package/schema/index.d.ts +2 -2
  95. package/schema/index.js +7 -2
  96. package/schema/json_field.d.ts +16 -4
  97. package/schema/json_field.js +32 -2
  98. package/schema/schema.d.ts +109 -20
  99. package/schema/schema.js +42 -53
  100. package/schema/struct_field.d.ts +15 -3
  101. package/schema/struct_field.js +117 -22
  102. package/schema/union_field.d.ts +1 -1
  103. package/scripts/custom_compiler.js +12 -8
  104. package/scripts/custom_graphql.js +145 -34
  105. package/scripts/migrate_v0.1.js +36 -0
  106. package/scripts/move_types.js +120 -0
  107. package/scripts/read_schema.js +22 -7
  108. package/testutils/action/complex_schemas.d.ts +69 -0
  109. package/testutils/action/complex_schemas.js +405 -0
  110. package/testutils/builder.d.ts +39 -43
  111. package/testutils/builder.js +75 -49
  112. package/testutils/db/fixture.d.ts +10 -0
  113. package/testutils/db/fixture.js +26 -0
  114. package/testutils/db/{test_db.d.ts → temp_db.d.ts} +32 -8
  115. package/testutils/db/{test_db.js → temp_db.js} +244 -48
  116. package/testutils/db/value.d.ts +7 -0
  117. package/testutils/db/value.js +251 -0
  118. package/testutils/db_mock.d.ts +16 -4
  119. package/testutils/db_mock.js +52 -9
  120. package/testutils/db_time_zone.d.ts +4 -0
  121. package/testutils/db_time_zone.js +41 -0
  122. package/testutils/ent-graphql-tests/index.d.ts +7 -1
  123. package/testutils/ent-graphql-tests/index.js +56 -26
  124. package/testutils/fake_comms.js +1 -1
  125. package/testutils/fake_data/const.d.ts +2 -1
  126. package/testutils/fake_data/const.js +3 -0
  127. package/testutils/fake_data/fake_contact.d.ts +7 -3
  128. package/testutils/fake_data/fake_contact.js +13 -7
  129. package/testutils/fake_data/fake_event.d.ts +4 -1
  130. package/testutils/fake_data/fake_event.js +7 -6
  131. package/testutils/fake_data/fake_tag.d.ts +36 -0
  132. package/testutils/fake_data/fake_tag.js +89 -0
  133. package/testutils/fake_data/fake_user.d.ts +8 -5
  134. package/testutils/fake_data/fake_user.js +16 -15
  135. package/testutils/fake_data/index.js +5 -1
  136. package/testutils/fake_data/internal.d.ts +2 -0
  137. package/testutils/fake_data/internal.js +7 -1
  138. package/testutils/fake_data/tag_query.d.ts +13 -0
  139. package/testutils/fake_data/tag_query.js +43 -0
  140. package/testutils/fake_data/test_helpers.d.ts +11 -4
  141. package/testutils/fake_data/test_helpers.js +29 -13
  142. package/testutils/fake_data/user_query.d.ts +11 -4
  143. package/testutils/fake_data/user_query.js +54 -22
  144. package/testutils/fake_log.js +1 -1
  145. package/testutils/parse_sql.d.ts +6 -0
  146. package/testutils/parse_sql.js +16 -2
  147. package/testutils/test_edge_global_schema.d.ts +15 -0
  148. package/testutils/test_edge_global_schema.js +62 -0
  149. package/testutils/write.d.ts +2 -2
  150. package/testutils/write.js +33 -7
  151. package/tsc/ast.d.ts +25 -2
  152. package/tsc/ast.js +141 -17
  153. package/tsc/compilerOptions.js +5 -1
  154. package/tsc/move_generated.d.ts +1 -0
  155. package/tsc/move_generated.js +164 -0
  156. package/tsc/transform.d.ts +22 -0
  157. package/tsc/transform.js +182 -0
  158. package/tsc/transform_action.d.ts +22 -0
  159. package/tsc/transform_action.js +183 -0
  160. package/tsc/transform_ent.d.ts +17 -0
  161. package/tsc/transform_ent.js +60 -0
  162. package/tsc/transform_schema.d.ts +27 -0
  163. package/{scripts → tsc}/transform_schema.js +146 -117
  164. package/graphql/enums.d.ts +0 -3
  165. package/graphql/enums.js +0 -25
  166. package/scripts/move_generated.js +0 -142
  167. package/scripts/transform_code.js +0 -113
  168. package/scripts/transform_schema.d.ts +0 -1
  169. /package/scripts/{move_generated.d.ts → migrate_v0.1.d.ts} +0 -0
  170. /package/scripts/{transform_code.d.ts → move_types.d.ts} +0 -0
@@ -1,12 +1,14 @@
1
- import { ID, Data, Ent, Viewer, EntConstructor, LoadEntOptions } from "../core/base";
2
- import { AssocEdgeInputOptions, DataOperation } from "../core/ent";
1
+ import { ID, Data, Ent, Viewer, LoadEntOptions, CreateRowOptions } from "../core/base";
2
+ import { parameterizedQueryOptions } from "../core/ent";
3
3
  import { SchemaInputType, FieldInfoMap } from "../schema/schema";
4
- import { Changeset, Executor } from "../action/action";
4
+ import { Changeset, ChangesetOptions, Executor } from "../action/action";
5
+ import { AssocEdgeInputOptions, DataOperation, AssocEdgeOptions } from "./operations";
5
6
  import { WriteOperation, Builder, Action } from "../action";
6
- declare type MaybeNull<T extends Ent> = T | null;
7
- declare type TMaybleNullableEnt<T extends Ent> = T | MaybeNull<T>;
8
- export interface OrchestratorOptions<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
9
- viewer: Viewer;
7
+ import * as clause from "../core/clause";
8
+ type MaybeNull<T extends Ent> = T | null;
9
+ type TMaybleNullableEnt<T extends Ent> = T | MaybeNull<T>;
10
+ export interface OrchestratorOptions<TEnt extends Ent<TViewer>, TInput extends Data, TViewer extends Viewer, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
11
+ viewer: TViewer;
10
12
  operation: WriteOperation;
11
13
  tableName: string;
12
14
  loaderOptions: LoadEntOptions<TEnt, TViewer>;
@@ -16,6 +18,7 @@ export interface OrchestratorOptions<TEnt extends Ent<TViewer>, TViewer extends
16
18
  schema: SchemaInputType;
17
19
  editedFields(): Map<string, any> | Promise<Map<string, any>>;
18
20
  updateInput?: (data: TInput) => void;
21
+ expressions?: Map<string, clause.Clause>;
19
22
  fieldInfo: FieldInfoMap;
20
23
  }
21
24
  interface edgeInputDataOpts {
@@ -35,6 +38,7 @@ export declare class Orchestrator<TEnt extends Ent<TViewer>, TInput extends Data
35
38
  private options;
36
39
  private edgeSet;
37
40
  private edges;
41
+ private conditionalEdges;
38
42
  private validatedFields;
39
43
  private logValues;
40
44
  private changesets;
@@ -47,25 +51,34 @@ export declare class Orchestrator<TEnt extends Ent<TViewer>, TInput extends Data
47
51
  private actualOperation;
48
52
  private existingEnt;
49
53
  private disableTransformations;
54
+ private onConflict;
50
55
  private memoizedGetFields;
51
- constructor(options: OrchestratorOptions<TEnt, TViewer, TInput, TExistingEnt>);
56
+ constructor(options: OrchestratorOptions<TEnt, TInput, TViewer, TExistingEnt>);
57
+ __getOptions(): OrchestratorOptions<any, any, any, any>;
52
58
  private addEdge;
53
59
  setDisableTransformations(val: boolean): void;
60
+ setOnConflictOptions(onConflict: CreateRowOptions["onConflict"]): void;
54
61
  addInboundEdge<T2 extends Ent>(id1: ID | Builder<T2, any>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
55
62
  addOutboundEdge<T2 extends Ent>(id2: ID | Builder<T2, any>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
56
- removeInboundEdge(id1: ID, edgeType: string): void;
57
- removeOutboundEdge(id2: ID, edgeType: string): void;
63
+ removeInboundEdge(id1: ID, edgeType: string, options?: AssocEdgeOptions): void;
64
+ removeOutboundEdge(id2: ID, edgeType: string, options?: AssocEdgeOptions): void;
58
65
  getInputEdges(edgeType: string, op: WriteOperation): EdgeInputData[];
59
66
  clearInputEdges(edgeType: string, op: WriteOperation, id?: ID): void;
60
67
  private buildMainOp;
61
68
  private getEdgeOperation;
62
69
  private buildEdgeOps;
63
70
  private throwError;
71
+ private getRowForPrivacyPolicyImpl;
64
72
  private getEntForPrivacyPolicyImpl;
65
73
  private getSQLStatementOperation;
66
74
  private getWriteOpForSQLStamentOp;
67
75
  getPossibleUnsafeEntForPrivacy(): Promise<TEnt>;
68
76
  getEditedData(): Promise<Data>;
77
+ /**
78
+ * @returns validated and formatted fields that would be written to the db
79
+ * throws an error if called before valid() or validX() has been called
80
+ */
81
+ getValidatedFields(): Data;
69
82
  private getFieldsInfo;
70
83
  private validate;
71
84
  private triggers;
@@ -79,7 +92,17 @@ export declare class Orchestrator<TEnt extends Ent<TViewer>, TInput extends Data
79
92
  private formatAndValidateFields;
80
93
  valid(): Promise<boolean>;
81
94
  validX(): Promise<void>;
95
+ /**
96
+ * @experimental API that's not guaranteed to remain in the future which returns
97
+ * a list of errors encountered
98
+ * 0 errors indicates valid
99
+ * NOTE that this currently doesn't catch errors returned by validators().
100
+ * If those throws, this still throws and doesn't return them
101
+ */
102
+ validWithErrors(): Promise<Error[]>;
103
+ private buildPlusChangeset;
82
104
  build(): Promise<EntChangeset<TEnt>>;
105
+ buildWithOptions_BETA(options: ChangesetOptions): Promise<EntChangeset<TEnt>>;
83
106
  private viewerForEntLoad;
84
107
  returnedRow(): Promise<Data | null>;
85
108
  editedEnt(): Promise<TEnt | null>;
@@ -87,14 +110,17 @@ export declare class Orchestrator<TEnt extends Ent<TViewer>, TInput extends Data
87
110
  }
88
111
  export declare class EntChangeset<T extends Ent> implements Changeset {
89
112
  viewer: Viewer;
113
+ private builder;
90
114
  readonly placeholderID: ID;
91
- readonly ent: EntConstructor<T>;
115
+ private conditionalOverride;
92
116
  operations: DataOperation[];
93
117
  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;
94
118
  changesets?: Changeset[] | undefined;
95
119
  private options?;
96
120
  private _executor;
97
- constructor(viewer: Viewer, placeholderID: ID, ent: EntConstructor<T>, operations: DataOperation[], 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<T, Viewer<Ent<any> | null, ID | null>, Data, MaybeNull<T>> | undefined);
121
+ constructor(viewer: Viewer, builder: Builder<T>, placeholderID: ID, conditionalOverride: boolean, operations: DataOperation[], 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<T, Data, Viewer<Ent<any> | null, ID | null>, MaybeNull<T>> | undefined);
122
+ static changesetFrom(builder: Builder<any, any, any>, ops: DataOperation[]): EntChangeset<any>;
123
+ static changesetFromQueries(builder: Builder<any, any, any>, queries: Array<string | parameterizedQueryOptions>): EntChangeset<any>;
98
124
  executor(): Executor;
99
125
  }
100
126
  export {};