@snowtop/ent 0.0.23 → 0.0.28-alpha.2

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.
package/schema/field.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Type, Field, FieldOptions, PolymorphicOptions, ForeignKey } from "./schema";
1
+ import { Field, FieldOptions, ForeignKey, PolymorphicOptions, Type } from "./schema";
2
2
  export declare abstract class BaseField {
3
3
  name: string;
4
4
  nullable?: boolean;
@@ -21,10 +21,23 @@ export declare class UUIDField extends BaseField implements Field {
21
21
  constructor(options: FieldOptions);
22
22
  }
23
23
  export declare function UUIDType(options: FieldOptions): UUIDField;
24
+ export interface IntegerOptions extends FieldOptions {
25
+ min?: number;
26
+ max?: number;
27
+ }
24
28
  export declare class IntegerField extends BaseField implements Field {
25
29
  type: Type;
30
+ private validators;
31
+ private options;
32
+ constructor(options?: IntegerOptions);
33
+ getOptions(): IntegerOptions;
34
+ private handleOptions;
35
+ min(l: number): this;
36
+ max(l: number): this;
37
+ valid(val: any): boolean;
38
+ validate(validator: (str: number) => boolean): this;
26
39
  }
27
- export declare function IntegerType(options: FieldOptions): IntegerField;
40
+ export declare function IntegerType(options: IntegerOptions): IntegerField;
28
41
  export declare class BigIntegerField extends BaseField implements Field {
29
42
  type: Type;
30
43
  }
@@ -53,23 +66,24 @@ export declare class StringField extends BaseField implements Field {
53
66
  type: Type;
54
67
  private validators;
55
68
  private formatters;
69
+ private options;
56
70
  constructor(options?: StringOptions);
57
71
  getOptions(): StringOptions;
58
72
  private handleOptions;
59
- minLen(l: number): StringField;
60
- maxLen(l: number): StringField;
61
- length(l: number): StringField;
73
+ minLen(l: number): this;
74
+ maxLen(l: number): this;
75
+ length(l: number): this;
62
76
  valid(val: any): boolean;
63
77
  format(val: any): any;
64
- validate(validator: (str: string) => boolean): StringField;
65
- formatter(formatter: (str: string) => string): StringField;
66
- match(pattern: string | RegExp): StringField;
67
- doesNotMatch(pattern: string | RegExp): StringField;
68
- toLowerCase(): StringField;
69
- toUpperCase(): StringField;
70
- trim(): StringField;
71
- trimLeft(): StringField;
72
- trimRight(): StringField;
78
+ validate(validator: (str: string) => boolean): this;
79
+ formatter(formatter: (str: string) => string): this;
80
+ match(pattern: string | RegExp): this;
81
+ doesNotMatch(pattern: string | RegExp): this;
82
+ toLowerCase(): this;
83
+ toUpperCase(): this;
84
+ trim(): this;
85
+ trimLeft(): this;
86
+ trimRight(): this;
73
87
  }
74
88
  export declare function StringType(options: StringOptions): StringField;
75
89
  export interface TimestampOptions extends FieldOptions {
package/schema/field.js CHANGED
@@ -20,10 +20,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.UUIDListType = exports.EnumListType = exports.DateListType = exports.TimetzListType = exports.TimeListType = exports.TimestamptzListType = exports.TimestampListType = exports.BooleanListType = exports.BigIntegerListType = exports.FloatListType = exports.IntegerListType = exports.IntListType = exports.StringListType = exports.ListField = exports.EnumType = exports.EnumField = exports.DateType = exports.DateField = exports.TimetzType = exports.TimeType = exports.TimeField = exports.leftPad = exports.TimestamptzType = exports.TimestampType = exports.TimestampField = exports.StringType = exports.StringField = exports.BooleanType = exports.BooleanField = exports.FloatType = exports.FloatField = exports.BigIntegerType = exports.BigIntegerField = exports.IntegerType = exports.IntegerField = exports.UUIDType = exports.UUIDField = exports.BaseField = void 0;
23
- const schema_1 = require("./schema");
24
- const snake_case_1 = require("snake-case");
25
23
  const luxon_1 = require("luxon");
24
+ const snake_case_1 = require("snake-case");
26
25
  const db_1 = __importStar(require("../core/db"));
26
+ const schema_1 = require("./schema");
27
27
  class BaseField {
28
28
  logValue(val) {
29
29
  if (this.sensitive) {
@@ -89,14 +89,52 @@ function UUIDType(options) {
89
89
  }
90
90
  exports.UUIDType = UUIDType;
91
91
  class IntegerField extends BaseField {
92
- constructor() {
93
- super(...arguments);
92
+ constructor(options) {
93
+ super();
94
94
  this.type = { dbType: schema_1.DBType.Int };
95
+ this.validators = [];
96
+ this.options = { name: "field" };
97
+ // for legacy callers
98
+ this.handleOptions(options || this.options);
99
+ }
100
+ getOptions() {
101
+ return this.options;
102
+ }
103
+ handleOptions(options) {
104
+ const params = {
105
+ min: this.min,
106
+ max: this.max,
107
+ };
108
+ for (const k in params) {
109
+ const v = options[k];
110
+ if (v !== undefined) {
111
+ params[k].apply(this, [v]);
112
+ }
113
+ }
114
+ this.options = options;
115
+ }
116
+ min(l) {
117
+ return this.validate((val) => val >= l);
118
+ }
119
+ max(l) {
120
+ return this.validate((val) => val <= l);
121
+ }
122
+ valid(val) {
123
+ for (const validator of this.validators) {
124
+ if (!validator(val)) {
125
+ return false;
126
+ }
127
+ }
128
+ return true;
129
+ }
130
+ validate(validator) {
131
+ this.validators.push(validator);
132
+ return this;
95
133
  }
96
134
  }
97
135
  exports.IntegerField = IntegerField;
98
136
  function IntegerType(options) {
99
- let result = new IntegerField();
137
+ let result = new IntegerField(options);
100
138
  return Object.assign(result, options);
101
139
  }
102
140
  exports.IntegerType = IntegerType;
@@ -142,11 +180,12 @@ class StringField extends BaseField {
142
180
  this.type = { dbType: schema_1.DBType.String };
143
181
  this.validators = [];
144
182
  this.formatters = [];
183
+ this.options = { name: "field" };
145
184
  // for legacy callers
146
185
  this.handleOptions(options || { name: "field" });
147
186
  }
148
187
  getOptions() {
149
- return this.getOptions;
188
+ return this.options;
150
189
  }
151
190
  handleOptions(options) {
152
191
  const noParams = {
@@ -174,6 +213,7 @@ class StringField extends BaseField {
174
213
  noParams[k].apply(this);
175
214
  }
176
215
  }
216
+ this.options = options;
177
217
  }
178
218
  minLen(l) {
179
219
  return this.validate((val) => {
@@ -25,6 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const glob_1 = __importDefault(require("glob"));
27
27
  const minimist_1 = __importDefault(require("minimist"));
28
+ const graphql_1 = require("../graphql/graphql");
28
29
  const readline = __importStar(require("readline"));
29
30
  const path = __importStar(require("path"));
30
31
  const fs = __importStar(require("fs"));
@@ -52,7 +53,17 @@ async function readInputs() {
52
53
  });
53
54
  });
54
55
  }
55
- async function captureCustom(filePath) {
56
+ async function captureCustom(filePath, filesCsv) {
57
+ if (filesCsv !== undefined) {
58
+ let files = filesCsv.split(",");
59
+ for (let i = 0; i < files.length; i++) {
60
+ // TODO fix. we have "src" in the path we get here
61
+ files[i] = path.join(filePath, "..", files[i]);
62
+ }
63
+ await requireFiles(files);
64
+ return;
65
+ }
66
+ // TODO delete all of this eventually
56
67
  // TODO configurable paths eventually
57
68
  // for now only files that are in the include path of the roots are allowed
58
69
  const rootFiles = [
@@ -81,18 +92,28 @@ async function captureCustom(filePath) {
81
92
  ignore: ignore,
82
93
  });
83
94
  const files = rootFiles.concat(customGQLResolvers, customGQLMutations);
84
- //console.log(files);
85
- let promises = [];
86
- files.forEach((file) => {
95
+ await requireFiles(files);
96
+ }
97
+ async function requireFiles(files) {
98
+ await Promise.all(files.map(async (file) => {
87
99
  if (fs.existsSync(file)) {
88
- promises.push(require(file));
100
+ try {
101
+ await require(file);
102
+ }
103
+ catch (e) {
104
+ throw new Error(`${e.message} loading ${file}`);
105
+ }
106
+ }
107
+ else {
108
+ throw new Error(`file ${file} doesn't exist`);
89
109
  }
110
+ })).catch((err) => {
111
+ throw new Error(err);
90
112
  });
91
- await Promise.all(promises);
92
113
  }
93
114
  async function parseImports(filePath) {
94
115
  // only do graphql files...
95
- return (0, imports_1.parseCustomInput)(path.join(filePath, "graphql"), {
116
+ return (0, imports_1.parseCustomImports)(path.join(filePath, "graphql"), {
96
117
  ignore: ["**/generated/**", "**/tests/**"],
97
118
  });
98
119
  }
@@ -110,6 +131,24 @@ function findGraphQLPath(filePath) {
110
131
  return undefined;
111
132
  }
112
133
  async function main() {
134
+ // known custom types that are not required
135
+ // scalar Time will successfully parse
136
+ // TODO add a mechanism for a type we should check for to
137
+ // add this to schema.gql
138
+ // e.g. scalar Time will be added to schemas which don't use it (yet)
139
+ // TODO foreign non-scalars??
140
+ (0, graphql_1.addCustomType)({
141
+ importPath: "../graphql/scalars/time",
142
+ type: "GraphQLTime",
143
+ });
144
+ // if not in the schema, will be ignored
145
+ // something like GraphQLUpload gotten via gqlArg({type: gqlFileUpload})
146
+ // these 2 need this because they're added by the schema
147
+ // if this list grows too long, need to build this into golang types and passed here
148
+ (0, graphql_1.addCustomType)({
149
+ importPath: "graphql-type-json",
150
+ type: "GraphQLJSON",
151
+ });
113
152
  const options = (0, minimist_1.default)(process.argv.slice(2));
114
153
  if (!options.path) {
115
154
  throw new Error("path required");
@@ -126,7 +165,7 @@ async function main() {
126
165
  GQLCapture.enable(true);
127
166
  const [inputsRead, _, imports] = await Promise.all([
128
167
  readInputs(),
129
- captureCustom(options.path),
168
+ captureCustom(options.path, options.files),
130
169
  parseImports(options.path),
131
170
  ]);
132
171
  const { nodes, nodesMap } = inputsRead;
@@ -9,6 +9,7 @@ export declare class User implements Ent {
9
9
  accountID: string;
10
10
  nodeType: string;
11
11
  privacyPolicy: import("../core/base").PrivacyPolicy;
12
+ firstName: string;
12
13
  constructor(viewer: Viewer, data: Data);
13
14
  }
14
15
  export declare class Event implements Ent {
@@ -23,6 +23,7 @@ class User {
23
23
  this.data.created_at = (0, convert_1.convertDate)(data.created_at);
24
24
  this.data.updated_at = (0, convert_1.convertDate)(data.updated_at);
25
25
  this.id = data.id;
26
+ this.firstName = data.first_name;
26
27
  }
27
28
  }
28
29
  exports.User = User;
@@ -1,25 +1,30 @@
1
- import { Viewer } from "../../core/base";
1
+ import { ID, Viewer } from "../../core/base";
2
2
  import { AssocEdge } from "../../core/ent";
3
3
  import { AssocEdgeQueryBase, EdgeQuerySource } from "../../core/query/assoc_query";
4
4
  import { FakeUser } from "./fake_user";
5
5
  import { FakeEvent } from "./internal";
6
6
  export declare class EventToAttendeesQuery extends AssocEdgeQueryBase<FakeEvent, FakeUser, AssocEdge> {
7
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent>);
8
- static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent>): EventToAttendeesQuery;
7
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>);
8
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>): EventToAttendeesQuery;
9
+ sourceEnt(id: ID): Promise<FakeEvent | null>;
9
10
  }
10
11
  export declare class EventToInvitedQuery extends AssocEdgeQueryBase<FakeEvent, FakeUser, AssocEdge> {
11
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent>);
12
- static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent>): EventToInvitedQuery;
12
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>);
13
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>): EventToInvitedQuery;
14
+ sourceEnt(id: ID): Promise<FakeEvent | null>;
13
15
  }
14
16
  export declare class EventToDeclinedQuery extends AssocEdgeQueryBase<FakeEvent, FakeUser, AssocEdge> {
15
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent>);
16
- static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent>): EventToDeclinedQuery;
17
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>);
18
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>): EventToDeclinedQuery;
19
+ sourceEnt(id: ID): Promise<FakeEvent | null>;
17
20
  }
18
21
  export declare class EventToMaybeQuery extends AssocEdgeQueryBase<FakeEvent, FakeUser, AssocEdge> {
19
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent>);
20
- static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent>): EventToMaybeQuery;
22
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>);
23
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>): EventToMaybeQuery;
24
+ sourceEnt(id: ID): Promise<FakeEvent | null>;
21
25
  }
22
26
  export declare class EventToHostsQuery extends AssocEdgeQueryBase<FakeEvent, FakeUser, AssocEdge> {
23
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent>);
24
- static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent>): EventToHostsQuery;
27
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>);
28
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeEvent, FakeUser>): EventToHostsQuery;
29
+ sourceEnt(id: ID): Promise<FakeEvent | null>;
25
30
  }
@@ -14,6 +14,9 @@ class EventToAttendeesQuery extends assoc_query_1.AssocEdgeQueryBase {
14
14
  static query(viewer, src) {
15
15
  return new EventToAttendeesQuery(viewer, src);
16
16
  }
17
+ sourceEnt(id) {
18
+ return internal_1.FakeEvent.load(this.viewer, id);
19
+ }
17
20
  }
18
21
  exports.EventToAttendeesQuery = EventToAttendeesQuery;
19
22
  class EventToInvitedQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -23,6 +26,9 @@ class EventToInvitedQuery extends assoc_query_1.AssocEdgeQueryBase {
23
26
  static query(viewer, src) {
24
27
  return new EventToInvitedQuery(viewer, src);
25
28
  }
29
+ sourceEnt(id) {
30
+ return internal_1.FakeEvent.load(this.viewer, id);
31
+ }
26
32
  }
27
33
  exports.EventToInvitedQuery = EventToInvitedQuery;
28
34
  class EventToDeclinedQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -32,6 +38,9 @@ class EventToDeclinedQuery extends assoc_query_1.AssocEdgeQueryBase {
32
38
  static query(viewer, src) {
33
39
  return new EventToDeclinedQuery(viewer, src);
34
40
  }
41
+ sourceEnt(id) {
42
+ return internal_1.FakeEvent.load(this.viewer, id);
43
+ }
35
44
  }
36
45
  exports.EventToDeclinedQuery = EventToDeclinedQuery;
37
46
  class EventToMaybeQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -41,6 +50,9 @@ class EventToMaybeQuery extends assoc_query_1.AssocEdgeQueryBase {
41
50
  static query(viewer, src) {
42
51
  return new EventToMaybeQuery(viewer, src);
43
52
  }
53
+ sourceEnt(id) {
54
+ return internal_1.FakeEvent.load(this.viewer, id);
55
+ }
44
56
  }
45
57
  exports.EventToMaybeQuery = EventToMaybeQuery;
46
58
  class EventToHostsQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -50,5 +62,8 @@ class EventToHostsQuery extends assoc_query_1.AssocEdgeQueryBase {
50
62
  static query(viewer, src) {
51
63
  return new EventToHostsQuery(viewer, src);
52
64
  }
65
+ sourceEnt(id) {
66
+ return internal_1.FakeEvent.load(this.viewer, id);
67
+ }
53
68
  }
54
69
  exports.EventToHostsQuery = EventToHostsQuery;
@@ -1,14 +1,18 @@
1
- import { Data } from "../../core/base";
1
+ import { Data, Ent } from "../../core/base";
2
2
  import { AssocEdge } from "../../core/ent";
3
3
  import { TempDB } from "../db/test_db";
4
4
  import { FakeUser, UserCreateInput, ContactCreateInput, FakeContact } from ".";
5
5
  import { EventCreateInput, FakeEvent } from "./fake_event";
6
+ import { BuilderSchema } from "../builder";
6
7
  export declare function getContactInput(user: FakeUser, input?: Partial<ContactCreateInput>): ContactCreateInput;
7
8
  export declare function getUserInput(input?: Partial<UserCreateInput>): UserCreateInput;
8
9
  export declare function getEventInput(user: FakeUser, input?: Partial<EventCreateInput>): EventCreateInput;
9
10
  export declare function createTestUser(input?: Partial<UserCreateInput>): Promise<FakeUser>;
10
11
  export declare const inputs: Partial<ContactCreateInput>[];
11
12
  export declare function createAllContacts(input?: Partial<UserCreateInput>, slice?: number): Promise<[FakeUser, FakeContact[]]>;
13
+ export declare function createUserPlusFriendRequests(input?: Partial<UserCreateInput>, slice?: number): Promise<[FakeUser, FakeUser[]]>;
14
+ export declare function addEdge<T extends Ent>(source: T, schema: BuilderSchema<T>, edgeType: string, inbound: boolean, // inbound or outbound
15
+ ...dest: Ent[]): Promise<void>;
12
16
  export declare function verifyUserToContactEdges(user: FakeUser, edges: AssocEdge[], contacts: FakeContact[]): void;
13
17
  export declare function verifyUserToContactRawData(user: FakeUser, edges: Data[], contacts: FakeContact[]): void;
14
18
  export declare function verifyUserToContacts(user: FakeUser, ents: FakeContact[], contacts: FakeContact[]): void;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAllEvents = exports.tempDBTables = exports.setupTempDB = exports.createTestEvent = exports.edgeTableNames = exports.createEdges = exports.verifyUserToContacts = exports.verifyUserToContactRawData = exports.verifyUserToContactEdges = exports.createAllContacts = exports.inputs = exports.createTestUser = exports.getEventInput = exports.getUserInput = exports.getContactInput = void 0;
3
+ exports.createAllEvents = exports.tempDBTables = exports.setupTempDB = exports.createTestEvent = exports.edgeTableNames = exports.createEdges = exports.verifyUserToContacts = exports.verifyUserToContactRawData = exports.verifyUserToContactEdges = exports.addEdge = exports.createUserPlusFriendRequests = exports.createAllContacts = exports.inputs = exports.createTestUser = exports.getEventInput = exports.getUserInput = exports.getContactInput = void 0;
4
4
  const assert_1 = require("assert");
5
5
  const jest_date_mock_1 = require("jest-date-mock");
6
6
  const viewer_1 = require("../../core/viewer");
@@ -12,6 +12,8 @@ const _1 = require(".");
12
12
  const fake_event_1 = require("./fake_event");
13
13
  const const_1 = require("./const");
14
14
  const mock_date_1 = require("./../mock_date");
15
+ const builder_1 = require("../builder");
16
+ const action_1 = require("../../action");
15
17
  function getContactInput(user, input) {
16
18
  return {
17
19
  firstName: "Jon",
@@ -99,6 +101,38 @@ async function createAllContacts(input, slice) {
99
101
  return [user, contacts];
100
102
  }
101
103
  exports.createAllContacts = createAllContacts;
104
+ async function createUserPlusFriendRequests(input, slice) {
105
+ const user = await createTestUser(input);
106
+ let userInputs = exports.inputs.slice(0, slice || exports.inputs.length);
107
+ const friendRequests = await Promise.all(userInputs.map(async (input) => {
108
+ return createTestUser(input);
109
+ }));
110
+ expect(friendRequests.length).toBe(userInputs.length);
111
+ await addEdge(user, new _1.FakeUserSchema(), _1.EdgeType.UserToFriendRequests, true, ...friendRequests);
112
+ return [user, friendRequests];
113
+ }
114
+ exports.createUserPlusFriendRequests = createUserPlusFriendRequests;
115
+ async function addEdge(source, schema, edgeType, inbound, // inbound or outbound
116
+ ...dest) {
117
+ const action = new builder_1.SimpleAction(source.viewer, schema, new Map(), action_1.WriteOperation.Edit, source);
118
+ dest.forEach(async (friendRequest) => {
119
+ // just to make times deterministic so that tests can consistently work
120
+ (0, jest_date_mock_1.advanceBy)(100);
121
+ // add edge
122
+ if (inbound) {
123
+ action.builder.orchestrator.addInboundEdge(friendRequest.id, edgeType, dest[0].nodeType, {
124
+ time: new Date(), // set time to advanceBy time
125
+ });
126
+ }
127
+ else {
128
+ action.builder.orchestrator.addOutboundEdge(friendRequest.id, edgeType, dest[0].nodeType, {
129
+ time: new Date(), // set time to advanceBy time
130
+ });
131
+ }
132
+ });
133
+ await action.saveX();
134
+ }
135
+ exports.addEdge = addEdge;
102
136
  function verifyUserToContactEdges(user, edges, contacts) {
103
137
  expect(edges.length).toBe(contacts.length);
104
138
  for (let i = 0; i < contacts.length; i++) {
@@ -10,16 +10,19 @@ import { QueryLoaderFactory } from "../../core/loaders/query_loader";
10
10
  export declare class UserToContactsQuery extends AssocEdgeQueryBase<FakeUser, FakeContact, AssocEdge> {
11
11
  constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
12
12
  static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToContactsQuery;
13
+ sourceEnt(id: ID): Promise<FakeUser | null>;
13
14
  }
14
15
  export declare const userToContactsCountLoaderFactory: RawCountLoaderFactory;
15
16
  export declare const userToContactsDataLoaderFactory: IndexLoaderFactory;
16
- export declare class UserToContactsFkeyQuery extends CustomEdgeQueryBase<FakeContact> {
17
+ export declare class UserToContactsFkeyQuery extends CustomEdgeQueryBase<FakeUser, FakeContact> {
17
18
  constructor(viewer: Viewer, src: ID | FakeUser);
18
19
  static query(viewer: Viewer, src: FakeUser | ID): UserToContactsFkeyQuery;
20
+ sourceEnt(id: ID): Promise<FakeUser | null>;
19
21
  }
20
22
  export declare class UserToFriendsQuery extends AssocEdgeQueryBase<FakeUser, FakeUser, AssocEdge> {
21
23
  constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
22
24
  static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToFriendsQuery;
25
+ sourceEnt(id: ID): Promise<FakeUser | null>;
23
26
  queryContacts(): UserToContactsQuery;
24
27
  queryFriends(): UserToFriendsQuery;
25
28
  queryHostedEvents(): UserToHostedEventsQuery;
@@ -32,6 +35,7 @@ export declare class CustomEdge extends AssocEdge {
32
35
  export declare class UserToCustomEdgeQuery extends AssocEdgeQueryBase<FakeUser, FakeUser, CustomEdge> {
33
36
  constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
34
37
  static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToCustomEdgeQuery;
38
+ sourceEnt(id: ID): Promise<FakeUser | null>;
35
39
  queryContacts(): UserToContactsQuery;
36
40
  queryFriends(): UserToFriendsQuery;
37
41
  queryHostedEvents(): UserToHostedEventsQuery;
@@ -40,6 +44,7 @@ export declare class UserToCustomEdgeQuery extends AssocEdgeQueryBase<FakeUser,
40
44
  export declare class UserToFriendRequestsQuery extends AssocEdgeQueryBase<FakeUser, FakeUser, AssocEdge> {
41
45
  constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
42
46
  static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToFriendRequestsQuery;
47
+ sourceEnt(id: ID): Promise<FakeUser | null>;
43
48
  queryContacts(): UserToContactsQuery;
44
49
  queryFriends(): UserToFriendsQuery;
45
50
  queryHostedEvents(): UserToHostedEventsQuery;
@@ -47,8 +52,10 @@ export declare class UserToFriendRequestsQuery extends AssocEdgeQueryBase<FakeUs
47
52
  queryCustomEdge(): UserToCustomEdgeQuery;
48
53
  }
49
54
  export declare class UserToIncomingFriendRequestsQuery extends AssocEdgeQueryBase<FakeUser, FakeUser, AssocEdge> {
50
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
51
- static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToIncomingFriendRequestsQuery;
55
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>);
56
+ getPrivacyPolicy(): import("../../core/base").PrivacyPolicy;
57
+ sourceEnt(id: ID): Promise<FakeUser | null>;
58
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>): UserToIncomingFriendRequestsQuery;
52
59
  queryContacts(): UserToContactsQuery;
53
60
  queryFriends(): UserToFriendsQuery;
54
61
  queryHostedEvents(): UserToHostedEventsQuery;
@@ -56,8 +63,9 @@ export declare class UserToIncomingFriendRequestsQuery extends AssocEdgeQueryBas
56
63
  queryCustomEdge(): UserToCustomEdgeQuery;
57
64
  }
58
65
  export declare class UserToEventsAttendingQuery extends AssocEdgeQueryBase<FakeUser, FakeEvent, AssocEdge> {
59
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
60
- static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToEventsAttendingQuery;
66
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeEvent>);
67
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeEvent>): UserToEventsAttendingQuery;
68
+ sourceEnt(id: ID): Promise<FakeUser | null>;
61
69
  queryHosts(): EventToHostsQuery;
62
70
  queryAttendees(): EventToAttendeesQuery;
63
71
  queryInvited(): EventToInvitedQuery;
@@ -65,8 +73,9 @@ export declare class UserToEventsAttendingQuery extends AssocEdgeQueryBase<FakeU
65
73
  queryMaybe(): EventToMaybeQuery;
66
74
  }
67
75
  export declare class UserToHostedEventsQuery extends AssocEdgeQueryBase<FakeUser, FakeEvent, AssocEdge> {
68
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
69
- static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToHostedEventsQuery;
76
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeEvent>);
77
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeEvent>): UserToHostedEventsQuery;
78
+ sourceEnt(id: ID): Promise<FakeUser | null>;
70
79
  queryHosts(): EventToHostsQuery;
71
80
  queryAttendees(): EventToAttendeesQuery;
72
81
  queryInvited(): EventToInvitedQuery;
@@ -77,11 +86,14 @@ export declare const getNextWeekClause: () => clause.Clause;
77
86
  export declare function getCompleteClause(id: ID): clause.Clause;
78
87
  export declare const userToEventsInNextWeekCountLoaderFactory: RawCountLoaderFactory;
79
88
  export declare const userToEventsInNextWeekDataLoaderFactory: QueryLoaderFactory<unknown>;
80
- export declare class UserToEventsInNextWeekQuery extends CustomEdgeQueryBase<FakeEvent> {
89
+ export declare class UserToEventsInNextWeekQuery extends CustomEdgeQueryBase<FakeUser, FakeEvent> {
81
90
  constructor(viewer: Viewer, src: ID | FakeUser);
82
91
  static query(viewer: Viewer, src: FakeUser | ID): UserToEventsInNextWeekQuery;
92
+ sourceEnt(id: ID): Promise<FakeUser | null>;
93
+ getPrivacyPolicy(): import("../../core/base").PrivacyPolicy;
83
94
  }
84
95
  export declare class UserToFollowingQuery extends AssocEdgeQueryBase<FakeUser, Ent, AssocEdge> {
85
- constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser>);
86
- static query(viewer: Viewer, src: EdgeQuerySource<FakeUser>): UserToFollowingQuery;
96
+ constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>);
97
+ static query(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>): UserToFollowingQuery;
98
+ sourceEnt(id: ID): Promise<FakeUser | null>;
87
99
  }
@@ -35,6 +35,7 @@ const luxon_1 = require("luxon");
35
35
  const query_loader_1 = require("../../core/loaders/query_loader");
36
36
  const mock_date_1 = require("./../mock_date");
37
37
  const _1 = require(".");
38
+ const privacy_1 = require("../../core/privacy");
38
39
  class UserToContactsQuery extends assoc_query_1.AssocEdgeQueryBase {
39
40
  constructor(viewer, src) {
40
41
  super(viewer, src, new assoc_count_loader_1.AssocEdgeCountLoaderFactory(internal_1.EdgeType.UserToContacts), new assoc_edge_loader_1.AssocEdgeLoaderFactory(internal_1.EdgeType.UserToContacts, ent_1.AssocEdge), internal_1.FakeContact.loaderOptions());
@@ -42,6 +43,9 @@ class UserToContactsQuery extends assoc_query_1.AssocEdgeQueryBase {
42
43
  static query(viewer, src) {
43
44
  return new UserToContactsQuery(viewer, src);
44
45
  }
46
+ sourceEnt(id) {
47
+ return internal_1.FakeUser.load(this.viewer, id);
48
+ }
45
49
  }
46
50
  exports.UserToContactsQuery = UserToContactsQuery;
47
51
  exports.userToContactsCountLoaderFactory = new raw_count_loader_1.RawCountLoaderFactory({
@@ -64,6 +68,9 @@ class UserToContactsFkeyQuery extends custom_query_1.CustomEdgeQueryBase {
64
68
  static query(viewer, src) {
65
69
  return new UserToContactsFkeyQuery(viewer, src);
66
70
  }
71
+ sourceEnt(id) {
72
+ return internal_1.FakeUser.load(this.viewer, id);
73
+ }
67
74
  }
68
75
  exports.UserToContactsFkeyQuery = UserToContactsFkeyQuery;
69
76
  class UserToFriendsQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -73,6 +80,9 @@ class UserToFriendsQuery extends assoc_query_1.AssocEdgeQueryBase {
73
80
  static query(viewer, src) {
74
81
  return new UserToFriendsQuery(viewer, src);
75
82
  }
83
+ sourceEnt(id) {
84
+ return internal_1.FakeUser.load(this.viewer, id);
85
+ }
76
86
  queryContacts() {
77
87
  return UserToContactsQuery.query(this.viewer, this);
78
88
  }
@@ -104,6 +114,9 @@ class UserToCustomEdgeQuery extends assoc_query_1.AssocEdgeQueryBase {
104
114
  static query(viewer, src) {
105
115
  return new UserToCustomEdgeQuery(viewer, src);
106
116
  }
117
+ sourceEnt(id) {
118
+ return internal_1.FakeUser.load(this.viewer, id);
119
+ }
107
120
  queryContacts() {
108
121
  return UserToContactsQuery.query(this.viewer, this);
109
122
  }
@@ -125,6 +138,9 @@ class UserToFriendRequestsQuery extends assoc_query_1.AssocEdgeQueryBase {
125
138
  static query(viewer, src) {
126
139
  return new UserToFriendRequestsQuery(viewer, src);
127
140
  }
141
+ sourceEnt(id) {
142
+ return internal_1.FakeUser.load(this.viewer, id);
143
+ }
128
144
  queryContacts() {
129
145
  return UserToContactsQuery.query(this.viewer, this);
130
146
  }
@@ -146,6 +162,12 @@ class UserToIncomingFriendRequestsQuery extends assoc_query_1.AssocEdgeQueryBase
146
162
  constructor(viewer, src) {
147
163
  super(viewer, src, new assoc_count_loader_1.AssocEdgeCountLoaderFactory(internal_1.EdgeType.UserToIncomingFriendRequests), new assoc_edge_loader_1.AssocEdgeLoaderFactory(internal_1.EdgeType.UserToIncomingFriendRequests, ent_1.AssocEdge), internal_1.FakeUser.loaderOptions());
148
164
  }
165
+ getPrivacyPolicy() {
166
+ return privacy_1.AllowIfViewerPrivacyPolicy;
167
+ }
168
+ sourceEnt(id) {
169
+ return internal_1.FakeUser.load(this.viewer, id);
170
+ }
149
171
  static query(viewer, src) {
150
172
  return new UserToIncomingFriendRequestsQuery(viewer, src);
151
173
  }
@@ -173,6 +195,9 @@ class UserToEventsAttendingQuery extends assoc_query_1.AssocEdgeQueryBase {
173
195
  static query(viewer, src) {
174
196
  return new UserToEventsAttendingQuery(viewer, src);
175
197
  }
198
+ sourceEnt(id) {
199
+ return internal_1.FakeUser.load(this.viewer, id);
200
+ }
176
201
  queryHosts() {
177
202
  return internal_1.EventToHostsQuery.query(this.viewer, this);
178
203
  }
@@ -197,6 +222,9 @@ class UserToHostedEventsQuery extends assoc_query_1.AssocEdgeQueryBase {
197
222
  static query(viewer, src) {
198
223
  return new UserToHostedEventsQuery(viewer, src);
199
224
  }
225
+ sourceEnt(id) {
226
+ return internal_1.FakeUser.load(this.viewer, id);
227
+ }
200
228
  queryHosts() {
201
229
  return internal_1.EventToHostsQuery.query(this.viewer, this);
202
230
  }
@@ -256,6 +284,12 @@ class UserToEventsInNextWeekQuery extends custom_query_1.CustomEdgeQueryBase {
256
284
  static query(viewer, src) {
257
285
  return new UserToEventsInNextWeekQuery(viewer, src);
258
286
  }
287
+ sourceEnt(id) {
288
+ return internal_1.FakeUser.load(this.viewer, id);
289
+ }
290
+ getPrivacyPolicy() {
291
+ return privacy_1.AllowIfViewerPrivacyPolicy;
292
+ }
259
293
  }
260
294
  exports.UserToEventsInNextWeekQuery = UserToEventsInNextWeekQuery;
261
295
  class UserToFollowingQuery extends assoc_query_1.AssocEdgeQueryBase {
@@ -265,5 +299,8 @@ class UserToFollowingQuery extends assoc_query_1.AssocEdgeQueryBase {
265
299
  static query(viewer, src) {
266
300
  return new UserToFollowingQuery(viewer, src);
267
301
  }
302
+ sourceEnt(id) {
303
+ return internal_1.FakeUser.load(this.viewer, id);
304
+ }
268
305
  }
269
306
  exports.UserToFollowingQuery = UserToFollowingQuery;