@snowtop/ent 0.1.0-alpha9 → 0.1.0-alpha91

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 (135) hide show
  1. package/action/action.d.ts +36 -31
  2. package/action/action.js +2 -6
  3. package/action/executor.d.ts +3 -3
  4. package/action/executor.js +2 -2
  5. package/action/experimental_action.d.ts +29 -22
  6. package/action/experimental_action.js +29 -6
  7. package/action/orchestrator.d.ts +38 -16
  8. package/action/orchestrator.js +223 -61
  9. package/action/privacy.d.ts +2 -2
  10. package/core/base.d.ts +45 -24
  11. package/core/base.js +7 -1
  12. package/core/clause.d.ts +83 -7
  13. package/core/clause.js +334 -63
  14. package/core/config.d.ts +8 -0
  15. package/core/config.js +5 -1
  16. package/core/context.d.ts +5 -3
  17. package/core/context.js +20 -2
  18. package/core/convert.d.ts +1 -1
  19. package/core/db.d.ts +2 -2
  20. package/core/db.js +6 -2
  21. package/core/ent.d.ts +79 -24
  22. package/core/ent.js +527 -176
  23. package/core/loaders/assoc_count_loader.d.ts +3 -2
  24. package/core/loaders/assoc_count_loader.js +14 -2
  25. package/core/loaders/assoc_edge_loader.d.ts +2 -2
  26. package/core/loaders/assoc_edge_loader.js +5 -1
  27. package/core/loaders/index.d.ts +1 -1
  28. package/core/loaders/index.js +1 -3
  29. package/core/loaders/index_loader.d.ts +2 -2
  30. package/core/loaders/loader.js +5 -5
  31. package/core/loaders/object_loader.d.ts +6 -5
  32. package/core/loaders/object_loader.js +67 -59
  33. package/core/loaders/query_loader.d.ts +6 -12
  34. package/core/loaders/query_loader.js +52 -11
  35. package/core/loaders/raw_count_loader.d.ts +2 -2
  36. package/core/loaders/raw_count_loader.js +5 -1
  37. package/core/logger.d.ts +1 -1
  38. package/core/logger.js +1 -0
  39. package/core/privacy.d.ts +26 -25
  40. package/core/privacy.js +21 -25
  41. package/core/query/assoc_query.d.ts +7 -6
  42. package/core/query/assoc_query.js +9 -1
  43. package/core/query/custom_clause_query.d.ts +26 -0
  44. package/core/query/custom_clause_query.js +78 -0
  45. package/core/query/custom_query.d.ts +20 -5
  46. package/core/query/custom_query.js +87 -12
  47. package/core/query/index.d.ts +1 -0
  48. package/core/query/index.js +3 -1
  49. package/core/query/query.d.ts +8 -4
  50. package/core/query/query.js +101 -53
  51. package/core/query/shared_assoc_test.d.ts +2 -1
  52. package/core/query/shared_assoc_test.js +34 -43
  53. package/core/query/shared_test.d.ts +8 -1
  54. package/core/query/shared_test.js +470 -236
  55. package/core/viewer.d.ts +3 -3
  56. package/core/viewer.js +1 -1
  57. package/graphql/graphql.js +16 -6
  58. package/graphql/query/edge_connection.d.ts +9 -9
  59. package/graphql/query/page_info.d.ts +1 -1
  60. package/graphql/query/shared_edge_connection.js +1 -15
  61. package/imports/index.js +5 -1
  62. package/index.d.ts +11 -5
  63. package/index.js +20 -7
  64. package/package.json +1 -1
  65. package/parse_schema/parse.d.ts +12 -3
  66. package/parse_schema/parse.js +70 -11
  67. package/schema/base_schema.js +3 -0
  68. package/schema/field.d.ts +44 -8
  69. package/schema/field.js +136 -10
  70. package/schema/index.d.ts +2 -2
  71. package/schema/index.js +5 -1
  72. package/schema/json_field.d.ts +13 -1
  73. package/schema/json_field.js +28 -1
  74. package/schema/schema.d.ts +66 -11
  75. package/schema/schema.js +18 -4
  76. package/schema/struct_field.d.ts +11 -1
  77. package/schema/struct_field.js +44 -5
  78. package/scripts/custom_compiler.js +10 -6
  79. package/scripts/custom_graphql.js +13 -4
  80. package/scripts/{transform_schema.d.ts → migrate_v0.1.d.ts} +0 -0
  81. package/scripts/migrate_v0.1.js +36 -0
  82. package/scripts/read_schema.js +20 -5
  83. package/testutils/builder.d.ts +31 -21
  84. package/testutils/builder.js +83 -29
  85. package/testutils/db/fixture.d.ts +10 -0
  86. package/testutils/db/fixture.js +26 -0
  87. package/testutils/db/{test_db.d.ts → temp_db.d.ts} +20 -7
  88. package/testutils/db/{test_db.js → temp_db.js} +102 -36
  89. package/testutils/db/value.d.ts +6 -0
  90. package/testutils/db/value.js +251 -0
  91. package/testutils/db_mock.js +3 -1
  92. package/testutils/db_time_zone.d.ts +4 -0
  93. package/testutils/db_time_zone.js +41 -0
  94. package/testutils/ent-graphql-tests/index.js +8 -1
  95. package/testutils/fake_data/const.d.ts +2 -1
  96. package/testutils/fake_data/const.js +3 -0
  97. package/testutils/fake_data/fake_contact.d.ts +7 -4
  98. package/testutils/fake_data/fake_contact.js +14 -6
  99. package/testutils/fake_data/fake_event.d.ts +5 -3
  100. package/testutils/fake_data/fake_event.js +8 -5
  101. package/testutils/fake_data/fake_tag.d.ts +35 -0
  102. package/testutils/fake_data/fake_tag.js +88 -0
  103. package/testutils/fake_data/fake_user.d.ts +6 -4
  104. package/testutils/fake_data/fake_user.js +16 -13
  105. package/testutils/fake_data/index.js +5 -1
  106. package/testutils/fake_data/internal.d.ts +2 -0
  107. package/testutils/fake_data/internal.js +7 -1
  108. package/testutils/fake_data/tag_query.d.ts +13 -0
  109. package/testutils/fake_data/tag_query.js +43 -0
  110. package/testutils/fake_data/test_helpers.d.ts +11 -4
  111. package/testutils/fake_data/test_helpers.js +28 -12
  112. package/testutils/fake_data/user_query.d.ts +13 -6
  113. package/testutils/fake_data/user_query.js +54 -22
  114. package/testutils/fake_log.d.ts +3 -3
  115. package/testutils/parse_sql.d.ts +6 -0
  116. package/testutils/parse_sql.js +16 -2
  117. package/testutils/test_edge_global_schema.d.ts +15 -0
  118. package/testutils/test_edge_global_schema.js +62 -0
  119. package/testutils/write.d.ts +2 -2
  120. package/testutils/write.js +33 -7
  121. package/tsc/ast.d.ts +44 -0
  122. package/tsc/ast.js +271 -0
  123. package/tsc/compilerOptions.d.ts +6 -0
  124. package/tsc/compilerOptions.js +45 -2
  125. package/tsc/move_generated.d.ts +1 -0
  126. package/tsc/move_generated.js +164 -0
  127. package/tsc/transform.d.ts +21 -0
  128. package/tsc/transform.js +171 -0
  129. package/tsc/transform_action.d.ts +22 -0
  130. package/tsc/transform_action.js +183 -0
  131. package/tsc/transform_ent.d.ts +17 -0
  132. package/tsc/transform_ent.js +59 -0
  133. package/tsc/transform_schema.d.ts +27 -0
  134. package/tsc/transform_schema.js +383 -0
  135. package/scripts/transform_schema.js +0 -445
package/core/config.d.ts CHANGED
@@ -20,6 +20,7 @@ export interface Config {
20
20
  log?: logType | logType[];
21
21
  codegen?: CodegenConfig;
22
22
  customGraphQLJSONPath?: string;
23
+ globalSchemaPath?: string;
23
24
  }
24
25
  interface CodegenConfig {
25
26
  defaultEntPolicy?: PrivacyConfig;
@@ -35,6 +36,8 @@ interface CodegenConfig {
35
36
  schemaSQLFilePath?: boolean;
36
37
  databaseToCompareTo?: string;
37
38
  fieldPrivacyEvaluated?: fieldPrivacyEvaluated;
39
+ templatizedViewer?: importedObject;
40
+ customAssocEdgePath?: importedObject;
38
41
  }
39
42
  interface PrettierConfig {
40
43
  custom?: boolean;
@@ -45,5 +48,10 @@ interface PrivacyConfig {
45
48
  policyName: string;
46
49
  class?: boolean;
47
50
  }
51
+ interface importedObject {
52
+ path: string;
53
+ name: string;
54
+ alias?: string;
55
+ }
48
56
  export declare function loadConfig(file?: string | Buffer | Config): void;
49
57
  export {};
package/core/config.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/core/context.d.ts CHANGED
@@ -1,17 +1,19 @@
1
1
  /// <reference types="node" />
2
- import { Viewer, Data, Loader } from "./base";
2
+ import { Viewer, Data, Loader, LoaderWithLoadMany } from "./base";
3
3
  import { IncomingMessage, ServerResponse } from "http";
4
4
  import * as clause from "./clause";
5
5
  import { Context } from "./base";
6
- export interface RequestContext extends Context {
7
- authViewer(viewer: Viewer): Promise<void>;
6
+ export interface RequestContext<TViewer extends Viewer = Viewer> extends Context<TViewer> {
7
+ authViewer(viewer: TViewer): Promise<void>;
8
8
  logout(): Promise<void>;
9
9
  request: IncomingMessage;
10
10
  response: ServerResponse;
11
11
  }
12
12
  export declare class ContextCache {
13
13
  loaders: Map<string, Loader<any, any>>;
14
+ loaderWithLoadMany: Map<string, LoaderWithLoadMany<any, any>>;
14
15
  getLoader<T, V>(name: string, create: () => Loader<T, V>): Loader<T, V>;
16
+ getLoaderWithLoadMany<T, V>(name: string, create: () => LoaderWithLoadMany<T, V>): LoaderWithLoadMany<T, V>;
15
17
  private itemMap;
16
18
  private listMap;
17
19
  private getkey;
package/core/context.js CHANGED
@@ -5,6 +5,8 @@ const logger_1 = require("./logger");
5
5
  class ContextCache {
6
6
  constructor() {
7
7
  this.loaders = new Map();
8
+ // we should eventually combine the two but better for typing to be separate for now
9
+ this.loaderWithLoadMany = new Map();
8
10
  // we have a per-table map to make it easier to purge and have less things to compare with
9
11
  this.itemMap = new Map();
10
12
  this.listMap = new Map();
@@ -19,6 +21,16 @@ class ContextCache {
19
21
  this.loaders.set(name, l);
20
22
  return l;
21
23
  }
24
+ getLoaderWithLoadMany(name, create) {
25
+ let l = this.loaderWithLoadMany.get(name);
26
+ if (l) {
27
+ return l;
28
+ }
29
+ (0, logger_1.log)("debug", `new context-aware loader created for ${name}`);
30
+ l = create();
31
+ this.loaderWithLoadMany.set(name, l);
32
+ return l;
33
+ }
22
34
  // tableName is ignored bcos already indexed on that
23
35
  // maybe we just want to store sql queries???
24
36
  getkey(options) {
@@ -39,7 +51,7 @@ class ContextCache {
39
51
  const key = this.getkey(options);
40
52
  let rows = m.get(key);
41
53
  if (rows) {
42
- (0, logger_1.log)("query", {
54
+ (0, logger_1.log)("cache", {
43
55
  "cache-hit": key,
44
56
  "tableName": options.tableName,
45
57
  });
@@ -54,7 +66,7 @@ class ContextCache {
54
66
  const key = this.getkey(options);
55
67
  let row = m.get(key);
56
68
  if (row) {
57
- (0, logger_1.log)("query", {
69
+ (0, logger_1.log)("cache", {
58
70
  "cache-hit": key,
59
71
  "tableName": options.tableName,
60
72
  });
@@ -79,7 +91,13 @@ class ContextCache {
79
91
  // but may have some benefits by explicitily doing so?
80
92
  loader.clearAll();
81
93
  }
94
+ for (const [_key, loader] of this.loaderWithLoadMany) {
95
+ // may not need this since we're clearing the loaders themselves...
96
+ // but may have some benefits by explicitily doing so?
97
+ loader.clearAll();
98
+ }
82
99
  this.loaders.clear();
100
+ this.loaderWithLoadMany.clear();
83
101
  this.itemMap.clear();
84
102
  this.listMap.clear();
85
103
  }
package/core/convert.d.ts CHANGED
@@ -10,5 +10,5 @@ export declare function convertBoolList(val: any): boolean[];
10
10
  export declare function convertNullableBoolList(val: any): boolean[] | null;
11
11
  export declare function convertJSON(val: any): any;
12
12
  export declare function convertNullableJSON(val: any): any | null;
13
- export declare function convertJSONList(val: any): boolean[];
13
+ export declare function convertJSONList(val: any): any[];
14
14
  export declare function convertNullableJSONList(val: any): any[] | null;
package/core/db.d.ts CHANGED
@@ -5,7 +5,6 @@ export interface Database extends PoolConfig {
5
5
  password?: string;
6
6
  host?: string;
7
7
  port?: number;
8
- ssl?: boolean;
9
8
  sslmode?: string;
10
9
  }
11
10
  export declare type env = "production" | "test" | "development";
@@ -29,7 +28,7 @@ export default class DB {
29
28
  getConnection(): Connection;
30
29
  getPool(): Queryer;
31
30
  getNewClient(): Promise<Client>;
32
- getSQLiteClient(): Promise<Sqlite>;
31
+ getSQLiteClient(): Sqlite;
33
32
  endPool(): Promise<void>;
34
33
  static getInstance(): DB;
35
34
  static getDialect(): Dialect;
@@ -78,6 +77,7 @@ interface SqliteRunResult {
78
77
  }
79
78
  interface SqliteDatabase {
80
79
  memory: boolean;
80
+ exec(query: string): SqliteStatement;
81
81
  prepare(query: string): SqliteStatement;
82
82
  close(): void;
83
83
  transaction(fn: (...params: any[]) => any): SqliteTransaction;
package/core/db.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -148,7 +152,7 @@ class DB {
148
152
  async getNewClient() {
149
153
  return this.q.newClient();
150
154
  }
151
- async getSQLiteClient() {
155
+ getSQLiteClient() {
152
156
  if (this.db.dialect == Dialect.Postgres) {
153
157
  throw new Error(`can't call getSQLiteClient when dialect is postgres`);
154
158
  }
package/core/ent.d.ts CHANGED
@@ -1,28 +1,66 @@
1
1
  import { Queryer, SyncQueryer } from "./db";
2
- import { Viewer, Ent, ID, LoadRowsOptions, LoadRowOptions, Data, DataOptions, QueryableDataOptions, EditRowOptions, LoadEntOptions, LoadCustomEntOptions, EdgeQueryableDataOptions, Context, SelectBaseDataOptions, CreateRowOptions, QueryDataOptions } from "./base";
2
+ import { Viewer, Ent, ID, LoadRowsOptions, LoadRowOptions, Data, DataOptions, QueryableDataOptions, EditRowOptions, LoadEntOptions, LoadCustomEntOptions, EdgeQueryableDataOptions, Context, CreateRowOptions, QueryDataOptions, SelectCustomDataOptions } from "./base";
3
3
  import { Executor } from "../action/action";
4
4
  import * as clause from "./clause";
5
5
  import { Builder } from "../action";
6
6
  import DataLoader from "dataloader";
7
- export declare function loadEnt<T extends Ent>(viewer: Viewer, id: ID, options: LoadEntOptions<T>): Promise<T | null>;
8
- export declare function loadEntViaKey<T extends Ent>(viewer: Viewer, key: any, options: LoadEntOptions<T>): Promise<T | null>;
9
- export declare function loadEntX<T extends Ent>(viewer: Viewer, id: ID, options: LoadEntOptions<T>): Promise<T>;
10
- export declare function loadEntXViaKey<T extends Ent>(viewer: Viewer, key: any, options: LoadEntOptions<T>): Promise<T>;
11
- export declare function loadEntFromClause<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, clause: clause.Clause): Promise<T | null>;
12
- export declare function loadEntXFromClause<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, clause: clause.Clause): Promise<T>;
13
- export declare function loadEnts<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, ...ids: ID[]): Promise<Map<ID, T>>;
14
- export declare function loadEntsList<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, ...ids: ID[]): Promise<T[]>;
15
- export declare function loadEntsFromClause<T extends Ent>(viewer: Viewer, clause: clause.Clause, options: LoadEntOptions<T>): Promise<Map<ID, T>>;
16
- export declare function loadCustomEnts<T extends Ent>(viewer: Viewer, options: LoadCustomEntOptions<T>, query: CustomQuery): Promise<T[]>;
17
- interface rawQueryOptions {
7
+ import { GlobalSchema } from "../schema/";
8
+ export declare function getEntKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): string;
9
+ export declare function loadEnt<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
10
+ export declare function loadEntViaKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, key: any, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
11
+ export declare function loadEntX<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt>;
12
+ export declare function loadEntXViaKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, key: any, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt>;
13
+ /**
14
+ * @deprecated use loadCustomEnts
15
+ */
16
+ export declare function loadEntFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, clause: clause.Clause): Promise<TEnt | null>;
17
+ /**
18
+ * @deprecated use loadCustomEnts
19
+ */
20
+ export declare function loadEntXFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, clause: clause.Clause): Promise<TEnt>;
21
+ export declare function loadEnts<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, ...ids: ID[]): Promise<Map<ID, TEnt>>;
22
+ export declare function loadEntsList<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, ...ids: ID[]): Promise<TEnt[]>;
23
+ /**
24
+ * @deperecated use loadCustomEnts
25
+ */
26
+ export declare function loadEntsFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, clause: clause.Clause, options: LoadEntOptions<TEnt, TViewer>): Promise<Map<ID, TEnt>>;
27
+ export declare function loadCustomEnts<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadCustomEntOptions<TEnt, TViewer>, query: CustomQuery): Promise<TEnt[]>;
28
+ interface parameterizedQueryOptions {
18
29
  query: string;
19
30
  values?: any[];
20
31
  logValues?: any[];
21
32
  }
22
- export declare type CustomQuery = string | rawQueryOptions | clause.Clause | QueryDataOptions;
23
- export declare function loadCustomData(options: SelectBaseDataOptions, query: CustomQuery, context: Context | undefined): Promise<Data[]>;
24
- export declare function loadDerivedEnt<T extends Ent>(viewer: Viewer, data: Data, loader: new (viewer: Viewer, data: Data) => T): Promise<T | null>;
25
- export declare function loadDerivedEntX<T extends Ent>(viewer: Viewer, data: Data, loader: new (viewer: Viewer, data: Data) => T): Promise<T>;
33
+ export declare type CustomQuery = string | parameterizedQueryOptions | clause.Clause | QueryDataOptions;
34
+ /**
35
+ * Note that if there's default read transformations (e.g. soft delete) and a clause is passed in
36
+ * either as Clause or QueryDataOptions without {disableTransformations: true}, the default transformation
37
+ * (e.g. soft delete) is applied.
38
+ *
39
+ * Passing a full SQL string or Paramterized SQL string doesn't apply it and the given string is sent to the
40
+ * database as written.
41
+ *
42
+ * e.g.
43
+ * Foo.loadCustom(opts, 'SELECT * FROM foo') // doesn't change the query
44
+ * Foo.loadCustom(opts, { query: 'SELECT * FROM foo WHERE id = ?', values: [1]}) // doesn't change the query
45
+ * Foo.loadCustom(opts, query.Eq('time', Date.now())) // changes the query
46
+ * Foo.loadCustom(opts, {
47
+ * clause: query.LessEq('time', Date.now()),
48
+ * limit: 100,
49
+ * orderby: 'time',
50
+ * }) // changes the query
51
+ * Foo.loadCustom(opts, {
52
+ * clause: query.LessEq('time', Date.now()),
53
+ * limit: 100,
54
+ * orderby: 'time',
55
+ * disableTransformations: false
56
+ * }) // doesn't change the query
57
+ */
58
+ export declare function loadCustomData(options: SelectCustomDataOptions, query: CustomQuery, context: Context | undefined): Promise<Data[]>;
59
+ interface CustomCountOptions extends DataOptions {
60
+ }
61
+ export declare function loadCustomCount(options: CustomCountOptions, query: CustomQuery, context: Context | undefined): Promise<number>;
62
+ export declare function loadDerivedEnt<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, data: Data, loader: new (viewer: TViewer, data: Data) => TEnt): Promise<TEnt | null>;
63
+ export declare function loadDerivedEntX<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, data: Data, loader: new (viewer: TViewer, data: Data) => TEnt): Promise<TEnt>;
26
64
  export declare function loadRowX(options: LoadRowOptions): Promise<Data>;
27
65
  export declare function loadRow(options: LoadRowOptions): Promise<Data | null>;
28
66
  export declare function performRawQuery(query: string, values: any[], logValues?: any[]): Promise<Data[]>;
@@ -52,6 +90,13 @@ export interface EditNodeOptions<T extends Ent> extends EditRowOptions {
52
90
  fieldsToResolve: string[];
53
91
  loadEntOptions: LoadEntOptions<T>;
54
92
  placeholderID?: ID;
93
+ key: string;
94
+ }
95
+ export declare class RawQueryOperation implements DataOperation {
96
+ private queries;
97
+ constructor(queries: (string | parameterizedQueryOptions)[]);
98
+ performWrite(queryer: Queryer, context?: Context): Promise<void>;
99
+ performWriteSync(queryer: SyncQueryer, context?: Context): void;
55
100
  }
56
101
  export declare class EditNodeOperation<T extends Ent> implements DataOperation {
57
102
  options: EditNodeOptions<T>;
@@ -67,7 +112,11 @@ export declare class EditNodeOperation<T extends Ent> implements DataOperation {
67
112
  returnedRow(): Data | null;
68
113
  createdEnt(viewer: Viewer): T | null;
69
114
  }
115
+ export declare function setGlobalSchema(val: GlobalSchema): void;
116
+ export declare function clearGlobalSchema(): void;
117
+ export declare function __hasGlobalSchema(): boolean;
70
118
  export declare class EdgeOperation implements DataOperation {
119
+ private builder;
71
120
  edgeInput: AssocEdgeInput;
72
121
  private options;
73
122
  private edgeData;
@@ -96,9 +145,9 @@ export declare class EdgeOperation implements DataOperation {
96
145
  export declare function buildInsertQuery(options: CreateRowOptions, suffix?: string): [string, string[], string[]];
97
146
  export declare function createRow(queryer: Queryer, options: CreateRowOptions, suffix: string): Promise<Data | null>;
98
147
  export declare function createRowSync(queryer: SyncQueryer, options: CreateRowOptions, suffix: string): Data | null;
99
- export declare function buildUpdateQuery(options: EditRowOptions, id: ID, suffix?: string): [string, any[], any[]];
100
- export declare function editRow(queryer: Queryer, options: EditRowOptions, id: ID, suffix?: string): Promise<Data | null>;
101
- export declare function editRowSync(queryer: SyncQueryer, options: EditRowOptions, id: ID, suffix?: string): Data | null;
148
+ export declare function buildUpdateQuery(options: EditRowOptions, suffix?: string): [string, any[], any[]];
149
+ export declare function editRow(queryer: Queryer, options: EditRowOptions, suffix?: string): Promise<Data | null>;
150
+ export declare function editRowSync(queryer: SyncQueryer, options: EditRowOptions, suffix?: string): Data | null;
102
151
  export declare function deleteRows(queryer: Queryer, options: DataOptions, cls: clause.Clause): Promise<void>;
103
152
  export declare function deleteRowsSync(queryer: SyncQueryer, options: DataOptions, cls: clause.Clause): void;
104
153
  export declare class DeleteNodeOperation implements DataOperation {
@@ -116,7 +165,9 @@ export declare class AssocEdge {
116
165
  id2Type: string;
117
166
  time: Date;
118
167
  data?: string | null;
168
+ private rawData;
119
169
  constructor(data: Data);
170
+ __getRawData(): Data;
120
171
  getCursor(): string;
121
172
  }
122
173
  interface cursorOptions {
@@ -145,7 +196,7 @@ export declare class AssocEdgeData {
145
196
  edgeTable: string;
146
197
  constructor(data: Data);
147
198
  }
148
- export declare const assocEdgeLoader: DataLoader<any, any, any>;
199
+ export declare const assocEdgeLoader: DataLoader<ID, Data | null, ID>;
149
200
  export declare function loadEdgeData(edgeType: string): Promise<AssocEdgeData | null>;
150
201
  export declare function loadEdgeDatas(...edgeTypes: string[]): Promise<Map<string, AssocEdgeData>>;
151
202
  export interface AssocEdgeConstructor<T extends AssocEdge> {
@@ -156,6 +207,7 @@ interface loadEdgesOptions {
156
207
  edgeType: string;
157
208
  context?: Context;
158
209
  queryOptions?: EdgeQueryableDataOptions;
210
+ disableTransformations?: boolean;
159
211
  }
160
212
  interface loadCustomEdgesOptions<T extends AssocEdge> extends loadEdgesOptions {
161
213
  ctr: AssocEdgeConstructor<T>;
@@ -163,17 +215,20 @@ interface loadCustomEdgesOptions<T extends AssocEdge> extends loadEdgesOptions {
163
215
  export declare const DefaultLimit = 1000;
164
216
  export declare function defaultEdgeQueryOptions(id1: ID, edgeType: string): EdgeQueryableDataOptions;
165
217
  export declare function loadEdges(options: loadEdgesOptions): Promise<AssocEdge[]>;
218
+ export declare function getEdgeClauseAndFields(cls: clause.Clause, options: loadEdgesOptions): {
219
+ cls: clause.Clause;
220
+ fields: string[];
221
+ };
166
222
  export declare function loadCustomEdges<T extends AssocEdge>(options: loadCustomEdgesOptions<T>): Promise<T[]>;
167
223
  export declare function loadUniqueEdge(options: loadEdgesOptions): Promise<AssocEdge | null>;
168
- export declare function loadUniqueNode<T extends Ent>(viewer: Viewer, id1: ID, edgeType: string, options: LoadEntOptions<T>): Promise<T | null>;
224
+ export declare function loadUniqueNode<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id1: ID, edgeType: string, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
169
225
  export declare function loadRawEdgeCountX(options: loadEdgesOptions): Promise<number>;
170
226
  interface loadEdgeForIDOptions<T extends AssocEdge> extends loadCustomEdgesOptions<T> {
171
227
  id2: ID;
172
228
  }
173
229
  export declare function loadEdgeForID2<T extends AssocEdge>(options: loadEdgeForIDOptions<T>): Promise<T | undefined>;
174
230
  export declare function loadNodesByEdge<T extends Ent>(viewer: Viewer, id1: ID, edgeType: string, options: LoadEntOptions<T>): Promise<T[]>;
175
- export declare function applyPrivacyPolicyForRow<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, row: Data | null): Promise<T | null>;
176
- export declare function applyPrivacyPolicyForRowX<T extends Ent>(viewer: Viewer, options: LoadEntOptions<T>, row: Data): Promise<T>;
177
- export declare function applyPrivacyPolicyForRows<T extends Ent>(viewer: Viewer, rows: Data[], options: LoadEntOptions<T>): Promise<Map<ID, T>>;
231
+ export declare function applyPrivacyPolicyForRow<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, row: Data): Promise<TEnt | null>;
232
+ export declare function applyPrivacyPolicyForRows<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, rows: Data[], options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt[]>;
178
233
  export declare function getEdgeTypeInGroup<T extends string>(viewer: Viewer, id1: ID, id2: ID, m: Map<T, string>): Promise<[T, AssocEdge] | undefined>;
179
234
  export {};