@snowtop/ent 0.1.0-alpha13 → 0.1.0-alpha14
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/action/action.d.ts +19 -19
- package/action/executor.d.ts +3 -3
- package/action/experimental_action.d.ts +21 -20
- package/action/orchestrator.d.ts +13 -13
- package/action/privacy.d.ts +2 -2
- package/core/base.d.ts +20 -20
- package/core/context.d.ts +2 -2
- package/core/ent.d.ts +13 -13
- package/core/loaders/assoc_count_loader.d.ts +2 -2
- package/core/loaders/assoc_edge_loader.d.ts +2 -2
- package/core/loaders/object_loader.d.ts +3 -3
- package/core/loaders/query_loader.d.ts +2 -2
- package/core/loaders/raw_count_loader.d.ts +2 -2
- package/core/privacy.d.ts +24 -24
- package/core/query/assoc_query.d.ts +6 -6
- package/core/query/custom_query.d.ts +5 -5
- package/core/query/query.d.ts +1 -1
- package/core/viewer.d.ts +3 -3
- package/graphql/query/edge_connection.d.ts +9 -9
- package/graphql/query/page_info.d.ts +1 -1
- package/package.json +1 -1
- package/testutils/builder.d.ts +10 -9
- package/testutils/builder.js +7 -0
- package/testutils/fake_data/user_query.d.ts +2 -2
- package/testutils/fake_log.d.ts +3 -3
package/action/action.d.ts
CHANGED
|
@@ -9,14 +9,14 @@ export declare enum WriteOperation {
|
|
|
9
9
|
}
|
|
10
10
|
declare type MaybeNull<T extends Ent> = T | null;
|
|
11
11
|
declare type TMaybleNullableEnt<T extends Ent> = T | MaybeNull<T>;
|
|
12
|
-
export interface Builder<
|
|
12
|
+
export interface Builder<TEnt extends Ent<TViewer>, TViewer extends Viewer = Viewer, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
13
13
|
existingEnt: TExistingEnt;
|
|
14
|
-
ent: EntConstructor<
|
|
14
|
+
ent: EntConstructor<TEnt, TViewer>;
|
|
15
15
|
placeholderID: ID;
|
|
16
|
-
readonly viewer:
|
|
17
|
-
build(): Promise<Changeset
|
|
16
|
+
readonly viewer: TViewer;
|
|
17
|
+
build(): Promise<Changeset>;
|
|
18
18
|
operation: WriteOperation;
|
|
19
|
-
editedEnt?(): Promise<
|
|
19
|
+
editedEnt?(): Promise<TEnt | null>;
|
|
20
20
|
nodeType: string;
|
|
21
21
|
}
|
|
22
22
|
export interface Executor extends Iterable<DataOperation>, Iterator<DataOperation> {
|
|
@@ -27,39 +27,39 @@ export interface Executor extends Iterable<DataOperation>, Iterator<DataOperatio
|
|
|
27
27
|
postFetch?(queryer: Queryer, context?: Context): Promise<void>;
|
|
28
28
|
executeObservers?(): Promise<void>;
|
|
29
29
|
}
|
|
30
|
-
export interface Changeset
|
|
30
|
+
export interface Changeset {
|
|
31
31
|
executor(): Executor;
|
|
32
32
|
viewer: Viewer;
|
|
33
33
|
placeholderID: ID;
|
|
34
|
-
changesets?: Changeset
|
|
34
|
+
changesets?: Changeset[];
|
|
35
35
|
dependencies?: Map<ID, Builder<Ent>>;
|
|
36
36
|
}
|
|
37
|
-
export declare type TriggerReturn = void | Promise<Changeset
|
|
38
|
-
export interface Trigger<TEnt extends Ent
|
|
37
|
+
export declare type TriggerReturn = void | Promise<Changeset | void | (Changeset | void)[]> | Promise<Changeset>[];
|
|
38
|
+
export interface Trigger<TEnt extends Ent<TViewer>, TBuilder extends Builder<TEnt, TViewer, TExistingEnt>, TViewer extends Viewer = Viewer, TInput extends Data = Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
39
39
|
changeset(builder: TBuilder, input: TInput): TriggerReturn;
|
|
40
40
|
}
|
|
41
|
-
export interface Observer<TEnt extends Ent
|
|
41
|
+
export interface Observer<TEnt extends Ent<TViewer>, TBuilder extends Builder<TEnt, TViewer, TExistingEnt>, TViewer extends Viewer = Viewer, TInput extends Data = Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
42
42
|
observe(builder: TBuilder, input: TInput): void | Promise<void>;
|
|
43
43
|
}
|
|
44
|
-
export interface Validator<TEnt extends Ent
|
|
44
|
+
export interface Validator<TEnt extends Ent<TViewer>, TBuilder extends Builder<TEnt, TViewer, TExistingEnt>, TViewer extends Viewer = Viewer, TInput extends Data = Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
45
45
|
validate(builder: TBuilder, input: TInput): Promise<void> | void;
|
|
46
46
|
}
|
|
47
|
-
export interface Action<TEnt extends Ent
|
|
47
|
+
export interface Action<TEnt extends Ent<TViewer>, TBuilder extends Builder<TEnt, TViewer, TExistingEnt>, TViewer extends Viewer = Viewer, TInput extends Data = Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
48
48
|
readonly viewer: Viewer;
|
|
49
|
-
changeset(): Promise<Changeset
|
|
49
|
+
changeset(): Promise<Changeset>;
|
|
50
50
|
builder: TBuilder;
|
|
51
51
|
getPrivacyPolicy(): PrivacyPolicy<TEnt>;
|
|
52
|
-
triggers?: Trigger<TEnt, TBuilder, TInput, TExistingEnt>[];
|
|
53
|
-
observers?: Observer<TEnt, TBuilder, TInput, TExistingEnt>[];
|
|
54
|
-
validators?: Validator<TEnt, TBuilder, TInput, TExistingEnt>[];
|
|
52
|
+
triggers?: Trigger<TEnt, TBuilder, TViewer, TInput, TExistingEnt>[];
|
|
53
|
+
observers?: Observer<TEnt, TBuilder, TViewer, TInput, TExistingEnt>[];
|
|
54
|
+
validators?: Validator<TEnt, TBuilder, TViewer, TInput, TExistingEnt>[];
|
|
55
55
|
getInput(): TInput;
|
|
56
56
|
transformWrite?: (stmt: UpdateOperation<TEnt>) => Promise<TransformedUpdateOperation<TEnt>> | TransformedUpdateOperation<TEnt> | null;
|
|
57
57
|
valid(): Promise<boolean>;
|
|
58
58
|
validX(): Promise<void>;
|
|
59
|
-
viewerForEntLoad?(data: Data):
|
|
59
|
+
viewerForEntLoad?(data: Data): TViewer | Promise<TViewer>;
|
|
60
60
|
}
|
|
61
|
-
export declare function saveBuilder<
|
|
62
|
-
export declare function saveBuilderX<
|
|
61
|
+
export declare function saveBuilder<TEnt extends Ent<TViewer>, TViewer extends Viewer>(builder: Builder<TEnt, TViewer>): Promise<void>;
|
|
62
|
+
export declare function saveBuilderX<TEnt extends Ent<TViewer>, TViewer extends Viewer>(builder: Builder<TEnt, TViewer>): Promise<void>;
|
|
63
63
|
interface Orchestrator {
|
|
64
64
|
addOutboundEdge<T2 extends Ent>(id2: ID | Builder<T2>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
|
|
65
65
|
removeOutboundEdge(id2: ID, edgeType: string): void;
|
package/action/executor.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare class ListBasedExecutor<T extends Ent> implements Executor {
|
|
|
10
10
|
private operations;
|
|
11
11
|
private options?;
|
|
12
12
|
private idx;
|
|
13
|
-
constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation<T>[], options?: OrchestratorOptions<T, Data, T | null> | undefined);
|
|
13
|
+
constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation<T>[], options?: OrchestratorOptions<T, Viewer<Ent<any> | null, ID | null>, Data, T | null> | undefined);
|
|
14
14
|
private lastOp;
|
|
15
15
|
private createdEnt;
|
|
16
16
|
resolveValue(val: ID): Ent | null;
|
|
@@ -29,7 +29,7 @@ export declare class ComplexExecutor<T extends Ent> implements Executor {
|
|
|
29
29
|
private lastOp;
|
|
30
30
|
private allOperations;
|
|
31
31
|
private executors;
|
|
32
|
-
constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation[], dependencies: Map<ID, Builder<T>>, changesets: Changeset
|
|
32
|
+
constructor(viewer: Viewer, placeholderID: ID, operations: DataOperation[], dependencies: Map<ID, Builder<T>>, changesets: Changeset[], options?: OrchestratorOptions<T, Viewer, Data>);
|
|
33
33
|
[Symbol.iterator](): this;
|
|
34
34
|
private handleCreatedEnt;
|
|
35
35
|
next(): IteratorResult<DataOperation<Ent>>;
|
|
@@ -39,4 +39,4 @@ export declare class ComplexExecutor<T extends Ent> implements Executor {
|
|
|
39
39
|
preFetch?(queryer: Queryer, context: Context): Promise<void>;
|
|
40
40
|
postFetch?(queryer: Queryer, context: Context): Promise<void>;
|
|
41
41
|
}
|
|
42
|
-
export declare function executeOperations(executor: Executor, context?: Context, trackOps?: true): Promise<DataOperation<Ent>[]>;
|
|
42
|
+
export declare function executeOperations(executor: Executor, context?: Context, trackOps?: true): Promise<DataOperation<Ent<Viewer<Ent<any> | null, ID | null>>>[]>;
|
|
@@ -5,36 +5,37 @@ export interface ActionOptions<T extends Ent, TData extends Data> {
|
|
|
5
5
|
input?: TData;
|
|
6
6
|
operation?: WriteOperation;
|
|
7
7
|
}
|
|
8
|
-
interface EntBuilder<
|
|
8
|
+
interface EntBuilder<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data> extends Builder<TEnt, TViewer> {
|
|
9
9
|
valid(): Promise<boolean>;
|
|
10
10
|
validX(): Promise<void>;
|
|
11
11
|
save(): Promise<void>;
|
|
12
12
|
saveX(): Promise<void>;
|
|
13
|
-
editedEnt(): Promise<
|
|
14
|
-
editedEntX(): Promise<
|
|
13
|
+
editedEnt(): Promise<TEnt | null>;
|
|
14
|
+
editedEntX(): Promise<TEnt>;
|
|
15
|
+
getInput(): TInput;
|
|
15
16
|
}
|
|
16
|
-
export declare class BaseAction<TEnt extends Ent,
|
|
17
|
-
viewer:
|
|
18
|
-
builderCtr: BuilderConstructor<TEnt,
|
|
19
|
-
builder: EntBuilder<TEnt>;
|
|
17
|
+
export declare class BaseAction<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data> implements Action<TEnt, EntBuilder<TEnt, TViewer, TInput>, TViewer, TInput> {
|
|
18
|
+
viewer: TViewer;
|
|
19
|
+
builderCtr: BuilderConstructor<TEnt, TViewer, TInput>;
|
|
20
|
+
builder: EntBuilder<TEnt, TViewer, TInput>;
|
|
20
21
|
private input;
|
|
21
|
-
triggers: Trigger<TEnt, EntBuilder<TEnt>,
|
|
22
|
-
observers: Observer<TEnt, EntBuilder<TEnt>,
|
|
23
|
-
validators: Validator<TEnt, EntBuilder<TEnt>,
|
|
24
|
-
getPrivacyPolicy(): import("../core/base").PrivacyPolicy<Ent
|
|
25
|
-
constructor(viewer:
|
|
26
|
-
static createBuilder<TEnt extends Ent,
|
|
27
|
-
static bulkAction<TEnt extends Ent,
|
|
28
|
-
changeset(): Promise<Changeset
|
|
22
|
+
triggers: Trigger<TEnt, EntBuilder<TEnt, TViewer, TInput>, TViewer, TInput>[];
|
|
23
|
+
observers: Observer<TEnt, EntBuilder<TEnt, TViewer, TInput>, TViewer, TInput>[];
|
|
24
|
+
validators: Validator<TEnt, EntBuilder<TEnt, TViewer, TInput>, TViewer, TInput>[];
|
|
25
|
+
getPrivacyPolicy(): import("../core/base").PrivacyPolicy<Ent<Viewer<Ent<any> | null, import("../core/base").ID | null>>, Viewer<Ent<any> | null, import("../core/base").ID | null>>;
|
|
26
|
+
constructor(viewer: TViewer, builderCtr: BuilderConstructor<TEnt, TViewer, TInput>, options?: ActionOptions<TEnt, TInput> | null);
|
|
27
|
+
static createBuilder<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data>(viewer: Viewer, builderCtr: BuilderConstructor<TEnt, TViewer, TInput>, options?: ActionOptions<TEnt, TInput> | null): Builder<TEnt>;
|
|
28
|
+
static bulkAction<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data>(ent: TEnt, builderCtr: BuilderConstructor<TEnt, TViewer, TInput>, ...actions: Action<Ent, Builder<Ent, any>>[]): BaseAction<TEnt, TViewer, TInput>;
|
|
29
|
+
changeset(): Promise<Changeset>;
|
|
29
30
|
valid(): Promise<boolean>;
|
|
30
31
|
validX(): Promise<void>;
|
|
31
32
|
save(): Promise<TEnt | null>;
|
|
32
33
|
saveX(): Promise<TEnt>;
|
|
33
|
-
getInput():
|
|
34
|
+
getInput(): TInput;
|
|
34
35
|
}
|
|
35
|
-
interface BuilderConstructor<TEnt extends Ent,
|
|
36
|
-
new (viewer:
|
|
36
|
+
interface BuilderConstructor<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data> {
|
|
37
|
+
new (viewer: TViewer, operation: WriteOperation, action: Action<TEnt, EntBuilder<TEnt, TViewer, TInput>, TViewer, TInput>, existingEnt: TEnt | null): EntBuilder<TEnt, TViewer, TInput>;
|
|
37
38
|
}
|
|
38
|
-
export declare function updateRawObject<TEnt extends Ent, TInput extends Data>(viewer: Viewer, builderCtr: BuilderConstructor<TEnt, TInput>, existingEnt: TEnt, input: TInput): Promise<TEnt>;
|
|
39
|
-
export declare function getSimpleEditAction<TEnt extends Ent, TInput extends Data>(viewer:
|
|
39
|
+
export declare function updateRawObject<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data>(viewer: Viewer, builderCtr: BuilderConstructor<TEnt, TViewer, TInput>, existingEnt: TEnt, input: TInput): Promise<TEnt>;
|
|
40
|
+
export declare function getSimpleEditAction<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data>(viewer: TViewer, builderCtr: BuilderConstructor<TEnt, TViewer, TInput>, existingEnt: TEnt, input: TInput): Action<TEnt, Builder<TEnt, TViewer>, TViewer, TInput>;
|
|
40
41
|
export {};
|
package/action/orchestrator.d.ts
CHANGED
|
@@ -5,17 +5,17 @@ import { Changeset, Executor } from "../action/action";
|
|
|
5
5
|
import { WriteOperation, Builder, Action } from "../action";
|
|
6
6
|
declare type MaybeNull<T extends Ent> = T | null;
|
|
7
7
|
declare type TMaybleNullableEnt<T extends Ent> = T | MaybeNull<T>;
|
|
8
|
-
export interface OrchestratorOptions<TEnt extends Ent,
|
|
8
|
+
export interface OrchestratorOptions<TEnt extends Ent<TViewer>, TViewer extends Viewer, TInput extends Data, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
9
9
|
viewer: Viewer;
|
|
10
10
|
operation: WriteOperation;
|
|
11
11
|
tableName: string;
|
|
12
|
-
loaderOptions: LoadEntOptions<TEnt>;
|
|
12
|
+
loaderOptions: LoadEntOptions<TEnt, TViewer>;
|
|
13
13
|
key: string;
|
|
14
|
-
builder: Builder<TEnt, TExistingEnt>;
|
|
15
|
-
action?: Action<TEnt, Builder<TEnt>,
|
|
14
|
+
builder: Builder<TEnt, TViewer, TExistingEnt>;
|
|
15
|
+
action?: Action<TEnt, Builder<TEnt, TViewer>, TViewer, TInput>;
|
|
16
16
|
schema: SchemaInputType;
|
|
17
17
|
editedFields(): Map<string, any> | Promise<Map<string, any>>;
|
|
18
|
-
updateInput?: (data:
|
|
18
|
+
updateInput?: (data: TInput) => void;
|
|
19
19
|
fieldInfo: FieldInfoMap;
|
|
20
20
|
}
|
|
21
21
|
interface edgeInputDataOpts {
|
|
@@ -31,7 +31,7 @@ export declare enum edgeDirection {
|
|
|
31
31
|
inboundEdge = 0,
|
|
32
32
|
outboundEdge = 1
|
|
33
33
|
}
|
|
34
|
-
export declare class Orchestrator<TEnt extends Ent
|
|
34
|
+
export declare class Orchestrator<TEnt extends Ent<TViewer>, TInput extends Data, TViewer extends Viewer, TExistingEnt extends TMaybleNullableEnt<TEnt> = MaybeNull<TEnt>> {
|
|
35
35
|
private options;
|
|
36
36
|
private edgeSet;
|
|
37
37
|
private edges;
|
|
@@ -48,11 +48,11 @@ export declare class Orchestrator<TEnt extends Ent, TData extends Data, TExistin
|
|
|
48
48
|
private existingEnt;
|
|
49
49
|
private disableTransformations;
|
|
50
50
|
private memoizedGetFields;
|
|
51
|
-
constructor(options: OrchestratorOptions<TEnt,
|
|
51
|
+
constructor(options: OrchestratorOptions<TEnt, TViewer, TInput, TExistingEnt>);
|
|
52
52
|
private addEdge;
|
|
53
53
|
setDisableTransformations(val: boolean): void;
|
|
54
|
-
addInboundEdge<T2 extends Ent>(id1: ID | Builder<T2>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
|
|
55
|
-
addOutboundEdge<T2 extends Ent>(id2: ID | Builder<T2>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
|
|
54
|
+
addInboundEdge<T2 extends Ent>(id1: ID | Builder<T2, any>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
|
|
55
|
+
addOutboundEdge<T2 extends Ent>(id2: ID | Builder<T2, any>, edgeType: string, nodeType: string, options?: AssocEdgeInputOptions): void;
|
|
56
56
|
removeInboundEdge(id1: ID, edgeType: string): void;
|
|
57
57
|
removeOutboundEdge(id2: ID, edgeType: string): void;
|
|
58
58
|
getInputEdges(edgeType: string, op: WriteOperation): EdgeInputData[];
|
|
@@ -85,16 +85,16 @@ export declare class Orchestrator<TEnt extends Ent, TData extends Data, TExistin
|
|
|
85
85
|
editedEnt(): Promise<TEnt | null>;
|
|
86
86
|
editedEntX(): Promise<TEnt>;
|
|
87
87
|
}
|
|
88
|
-
export declare class EntChangeset<T extends Ent> implements Changeset
|
|
88
|
+
export declare class EntChangeset<T extends Ent> implements Changeset {
|
|
89
89
|
viewer: Viewer;
|
|
90
90
|
readonly placeholderID: ID;
|
|
91
91
|
readonly ent: EntConstructor<T>;
|
|
92
92
|
operations: DataOperation[];
|
|
93
|
-
dependencies?: Map<ID, Builder<Ent, Ent | null>> | undefined;
|
|
94
|
-
changesets?: Changeset
|
|
93
|
+
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
|
+
changesets?: Changeset[] | undefined;
|
|
95
95
|
private options?;
|
|
96
96
|
private _executor;
|
|
97
|
-
constructor(viewer: Viewer, placeholderID: ID, ent: EntConstructor<T>, operations: DataOperation[], dependencies?: Map<ID, Builder<Ent, Ent | null>> | undefined, changesets?: Changeset
|
|
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);
|
|
98
98
|
executor(): Executor;
|
|
99
99
|
}
|
|
100
100
|
export {};
|
package/action/privacy.d.ts
CHANGED
|
@@ -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, Ent | null> | undefined);
|
|
5
|
+
constructor(id?: ID | Builder<Ent<Viewer<Ent<any> | null, ID | null>>, any, Ent<Viewer<Ent<any> | null, ID | null>> | null> | 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, Ent | null> | undefined);
|
|
10
|
+
constructor(id?: ID | Builder<Ent<Viewer<Ent<any> | null, ID | null>>, any, Ent<Viewer<Ent<any> | null, ID | null>> | null> | undefined);
|
|
11
11
|
apply(_v: Viewer, _ent: Ent): Promise<PrivacyResult>;
|
|
12
12
|
}
|
package/core/base.d.ts
CHANGED
|
@@ -30,27 +30,27 @@ interface queryOptions {
|
|
|
30
30
|
clause: clause.Clause;
|
|
31
31
|
orderby?: string;
|
|
32
32
|
}
|
|
33
|
-
export interface Context {
|
|
34
|
-
getViewer():
|
|
33
|
+
export interface Context<TViewer extends Viewer = Viewer> {
|
|
34
|
+
getViewer(): TViewer;
|
|
35
35
|
cache?: cache;
|
|
36
36
|
}
|
|
37
|
-
export interface Viewer {
|
|
38
|
-
viewerID:
|
|
39
|
-
viewer: () => Promise<
|
|
37
|
+
export interface Viewer<TEnt extends any = Ent<any> | null, TID extends any = ID | null> {
|
|
38
|
+
viewerID: TID;
|
|
39
|
+
viewer: () => Promise<TEnt>;
|
|
40
40
|
instanceKey: () => string;
|
|
41
|
-
context?: Context
|
|
41
|
+
context?: Context<any>;
|
|
42
42
|
}
|
|
43
|
-
export interface Ent {
|
|
43
|
+
export interface Ent<TViewer extends Viewer = Viewer> {
|
|
44
44
|
id: ID;
|
|
45
|
-
viewer:
|
|
46
|
-
getPrivacyPolicy(): PrivacyPolicy<this>;
|
|
45
|
+
viewer: TViewer;
|
|
46
|
+
getPrivacyPolicy(): PrivacyPolicy<this, TViewer>;
|
|
47
47
|
nodeType: string;
|
|
48
48
|
}
|
|
49
49
|
export declare type Data = {
|
|
50
50
|
[key: string]: any;
|
|
51
51
|
};
|
|
52
|
-
export interface EntConstructor<
|
|
53
|
-
new (viewer:
|
|
52
|
+
export interface EntConstructor<TEnt extends Ent, TViewer extends Viewer = Viewer> {
|
|
53
|
+
new (viewer: TViewer, data: Data): TEnt;
|
|
54
54
|
}
|
|
55
55
|
export declare type ID = string | number;
|
|
56
56
|
export interface DataOptions {
|
|
@@ -84,15 +84,15 @@ export interface CreateRowOptions extends DataOptions {
|
|
|
84
84
|
export interface EditRowOptions extends CreateRowOptions {
|
|
85
85
|
key: string;
|
|
86
86
|
}
|
|
87
|
-
interface LoadableEntOptions<
|
|
87
|
+
interface LoadableEntOptions<TEnt extends Ent, TViewer extends Viewer = Viewer> {
|
|
88
88
|
loaderFactory: LoaderFactory<any, Data | null>;
|
|
89
|
-
ent: EntConstructor<
|
|
89
|
+
ent: EntConstructor<TEnt, TViewer>;
|
|
90
90
|
}
|
|
91
|
-
export interface LoadEntOptions<
|
|
91
|
+
export interface LoadEntOptions<TEnt extends Ent, TViewer extends Viewer = Viewer> extends LoadableEntOptions<TEnt, TViewer>, SelectBaseDataOptions {
|
|
92
92
|
fieldPrivacy?: Map<string, PrivacyPolicy>;
|
|
93
93
|
}
|
|
94
|
-
export interface LoadCustomEntOptions<
|
|
95
|
-
ent: EntConstructor<
|
|
94
|
+
export interface LoadCustomEntOptions<TEnt extends Ent, TViewer extends Viewer = Viewer> extends SelectBaseDataOptions {
|
|
95
|
+
ent: EntConstructor<TEnt, TViewer>;
|
|
96
96
|
fieldPrivacy?: Map<string, PrivacyPolicy>;
|
|
97
97
|
}
|
|
98
98
|
export interface LoaderInfo {
|
|
@@ -121,10 +121,10 @@ export declare function Allow(): PrivacyResult;
|
|
|
121
121
|
export declare function Skip(): PrivacyResult;
|
|
122
122
|
export declare function Deny(): PrivacyResult;
|
|
123
123
|
export declare function DenyWithReason(e: PrivacyError | string): PrivacyResult;
|
|
124
|
-
export interface PrivacyPolicyRule<TEnt extends Ent = Ent> {
|
|
125
|
-
apply(v:
|
|
124
|
+
export interface PrivacyPolicyRule<TEnt extends Ent = Ent, TViewer = Viewer> {
|
|
125
|
+
apply(v: TViewer, ent?: TEnt): Promise<PrivacyResult>;
|
|
126
126
|
}
|
|
127
|
-
export interface PrivacyPolicy<TEnt extends Ent = Ent> {
|
|
128
|
-
rules: PrivacyPolicyRule<TEnt>[];
|
|
127
|
+
export interface PrivacyPolicy<TEnt extends Ent = Ent, TViewer = Viewer> {
|
|
128
|
+
rules: PrivacyPolicyRule<TEnt, TViewer>[];
|
|
129
129
|
}
|
|
130
130
|
export {};
|
package/core/context.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { Viewer, Data, Loader } 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:
|
|
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;
|
package/core/ent.d.ts
CHANGED
|
@@ -4,16 +4,16 @@ 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<
|
|
8
|
-
export declare function loadEntViaKey<
|
|
9
|
-
export declare function loadEntX<
|
|
10
|
-
export declare function loadEntXViaKey<
|
|
11
|
-
export declare function loadEntFromClause<
|
|
12
|
-
export declare function loadEntXFromClause<
|
|
13
|
-
export declare function loadEnts<
|
|
14
|
-
export declare function loadEntsList<
|
|
15
|
-
export declare function loadEntsFromClause<
|
|
16
|
-
export declare function loadCustomEnts<
|
|
7
|
+
export declare function loadEnt<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
|
|
8
|
+
export declare function loadEntViaKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, key: any, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt | null>;
|
|
9
|
+
export declare function loadEntX<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, id: ID, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt>;
|
|
10
|
+
export declare function loadEntXViaKey<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, key: any, options: LoadEntOptions<TEnt, TViewer>): Promise<TEnt>;
|
|
11
|
+
export declare function loadEntFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, clause: clause.Clause): Promise<TEnt | null>;
|
|
12
|
+
export declare function loadEntXFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, clause: clause.Clause): Promise<TEnt>;
|
|
13
|
+
export declare function loadEnts<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, ...ids: ID[]): Promise<Map<ID, TEnt>>;
|
|
14
|
+
export declare function loadEntsList<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadEntOptions<TEnt, TViewer>, ...ids: ID[]): Promise<TEnt[]>;
|
|
15
|
+
export declare function loadEntsFromClause<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, clause: clause.Clause, options: LoadEntOptions<TEnt, TViewer>): Promise<Map<ID, TEnt>>;
|
|
16
|
+
export declare function loadCustomEnts<TEnt extends Ent<TViewer>, TViewer extends Viewer>(viewer: TViewer, options: LoadCustomEntOptions<TEnt, TViewer>, query: CustomQuery): Promise<TEnt[]>;
|
|
17
17
|
interface rawQueryOptions {
|
|
18
18
|
query: string;
|
|
19
19
|
values?: any[];
|
|
@@ -21,8 +21,8 @@ interface rawQueryOptions {
|
|
|
21
21
|
}
|
|
22
22
|
export declare type CustomQuery = string | rawQueryOptions | clause.Clause | QueryDataOptions;
|
|
23
23
|
export declare function loadCustomData(options: SelectBaseDataOptions, query: CustomQuery, context: Context | undefined): Promise<Data[]>;
|
|
24
|
-
export declare function loadDerivedEnt<
|
|
25
|
-
export declare function loadDerivedEntX<
|
|
24
|
+
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>;
|
|
25
|
+
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
26
|
export declare function loadRowX(options: LoadRowOptions): Promise<Data>;
|
|
27
27
|
export declare function loadRow(options: LoadRowOptions): Promise<Data | null>;
|
|
28
28
|
export declare function performRawQuery(query: string, values: any[], logValues?: any[]): Promise<Data[]>;
|
|
@@ -165,7 +165,7 @@ export declare function defaultEdgeQueryOptions(id1: ID, edgeType: string): Edge
|
|
|
165
165
|
export declare function loadEdges(options: loadEdgesOptions): Promise<AssocEdge[]>;
|
|
166
166
|
export declare function loadCustomEdges<T extends AssocEdge>(options: loadCustomEdgesOptions<T>): Promise<T[]>;
|
|
167
167
|
export declare function loadUniqueEdge(options: loadEdgesOptions): Promise<AssocEdge | null>;
|
|
168
|
-
export declare function loadUniqueNode<
|
|
168
|
+
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
169
|
export declare function loadRawEdgeCountX(options: loadEdgesOptions): Promise<number>;
|
|
170
170
|
interface loadEdgeForIDOptions<T extends AssocEdge> extends loadCustomEdgesOptions<T> {
|
|
171
171
|
id2: ID;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ID, Context, Loader, LoaderFactory } from "../base";
|
|
2
2
|
export declare class AssocEdgeCountLoader implements Loader<ID, number> {
|
|
3
3
|
private edgeType;
|
|
4
|
-
context?: Context | undefined;
|
|
4
|
+
context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
|
|
5
5
|
private loaderFn;
|
|
6
6
|
private loader;
|
|
7
|
-
constructor(edgeType: string, context?: Context | undefined);
|
|
7
|
+
constructor(edgeType: string, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
|
|
8
8
|
private getLoader;
|
|
9
9
|
load(id: ID): Promise<number>;
|
|
10
10
|
clearAll(): void;
|
|
@@ -20,8 +20,8 @@ export declare class AssocDirectEdgeLoader<T extends AssocEdge> implements Loade
|
|
|
20
20
|
private edgeType;
|
|
21
21
|
private edgeCtr;
|
|
22
22
|
private options?;
|
|
23
|
-
context?: Context | undefined;
|
|
24
|
-
constructor(edgeType: string, edgeCtr: AssocEdgeConstructor<T>, options?: Partial<Pick<import("../base").QueryableDataOptions, "limit" | "orderby" | "clause">> | undefined, context?: Context | undefined);
|
|
23
|
+
context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
|
|
24
|
+
constructor(edgeType: string, edgeCtr: AssocEdgeConstructor<T>, options?: Partial<Pick<import("../base").QueryableDataOptions, "limit" | "orderby" | "clause">> | undefined, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
|
|
25
25
|
load(id: ID): Promise<T[]>;
|
|
26
26
|
loadEdgeForID2(id: ID, id2: ID): Promise<T | undefined>;
|
|
27
27
|
clearAll(): void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Data, SelectDataOptions, Context, Loader, LoaderFactory } from "../base";
|
|
1
|
+
import { ID, Data, SelectDataOptions, Context, Loader, LoaderFactory } from "../base";
|
|
2
2
|
export declare class ObjectLoader<T> implements Loader<T, Data | null> {
|
|
3
3
|
private options;
|
|
4
|
-
context?: Context | undefined;
|
|
4
|
+
context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
|
|
5
5
|
private toPrime?;
|
|
6
6
|
private loader;
|
|
7
7
|
private primedLoaders;
|
|
8
8
|
private memoizedInitPrime;
|
|
9
|
-
constructor(options: SelectDataOptions, context?: Context | undefined, toPrime?: ObjectLoaderFactory<T>[] | undefined);
|
|
9
|
+
constructor(options: SelectDataOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined, toPrime?: ObjectLoaderFactory<T>[] | undefined);
|
|
10
10
|
getOptions(): SelectDataOptions;
|
|
11
11
|
private initPrime;
|
|
12
12
|
load(key: T): Promise<Data | null>;
|
|
@@ -10,12 +10,12 @@ export declare class QueryDirectLoader<K extends any> implements Loader<K, Data[
|
|
|
10
10
|
}
|
|
11
11
|
export declare class QueryLoader<K extends any> implements Loader<K, Data[]> {
|
|
12
12
|
private options;
|
|
13
|
-
context?: Context | undefined;
|
|
13
|
+
context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
|
|
14
14
|
private queryOptions?;
|
|
15
15
|
private loader;
|
|
16
16
|
private primedLoaders;
|
|
17
17
|
private memoizedInitPrime;
|
|
18
|
-
constructor(options: QueryOptions, context?: Context | undefined, queryOptions?: Partial<Pick<import("../base").QueryableDataOptions, "limit" | "orderby" | "clause">> | undefined);
|
|
18
|
+
constructor(options: QueryOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined, queryOptions?: Partial<Pick<import("../base").QueryableDataOptions, "limit" | "orderby" | "clause">> | undefined);
|
|
19
19
|
private initPrime;
|
|
20
20
|
load(id: K): Promise<Data[]>;
|
|
21
21
|
clearAll(): void;
|
|
@@ -9,9 +9,9 @@ interface QueryCountOptions {
|
|
|
9
9
|
export declare function createCountDataLoader<K extends any>(options: QueryCountOptions): DataLoader<K, number, K>;
|
|
10
10
|
export declare class RawCountLoader<K extends any> implements Loader<K, number> {
|
|
11
11
|
private options;
|
|
12
|
-
context?: Context | undefined;
|
|
12
|
+
context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined;
|
|
13
13
|
private loader;
|
|
14
|
-
constructor(options: QueryCountOptions, context?: Context | undefined);
|
|
14
|
+
constructor(options: QueryCountOptions, context?: Context<import("../base").Viewer<import("../base").Ent<any> | null, ID | null>> | undefined);
|
|
15
15
|
load(id: K): Promise<number>;
|
|
16
16
|
clearAll(): void;
|
|
17
17
|
}
|
package/core/privacy.d.ts
CHANGED
|
@@ -6,22 +6,22 @@ export declare class EntPrivacyError extends Error implements PrivacyError {
|
|
|
6
6
|
constructor(privacyPolicy: PrivacyPolicy, rule: PrivacyPolicyRule, ent?: Ent);
|
|
7
7
|
}
|
|
8
8
|
export declare const AlwaysAllowRule: {
|
|
9
|
-
apply(_v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
9
|
+
apply(_v: Viewer, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
10
10
|
};
|
|
11
11
|
export declare const AlwaysDenyRule: {
|
|
12
|
-
apply(_v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
12
|
+
apply(_v: Viewer, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
13
13
|
};
|
|
14
14
|
export declare const DenyIfLoggedOutRule: {
|
|
15
|
-
apply(v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
15
|
+
apply(v: Viewer, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
16
16
|
};
|
|
17
17
|
export declare const DenyIfLoggedInRule: {
|
|
18
|
-
apply(v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
18
|
+
apply(v: Viewer, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
19
19
|
};
|
|
20
20
|
export declare const AllowIfHasIdentity: {
|
|
21
|
-
apply(v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
21
|
+
apply(v: Viewer, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
22
22
|
};
|
|
23
23
|
export declare const AllowIfViewerRule: {
|
|
24
|
-
apply(v: Viewer, ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
24
|
+
apply(v: Viewer, ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
25
25
|
};
|
|
26
26
|
export declare class AllowIfViewerEqualsRule {
|
|
27
27
|
private id;
|
|
@@ -71,45 +71,45 @@ export declare class DenyIfEntPropertyIsRule<T extends Ent> implements PrivacyPo
|
|
|
71
71
|
constructor(property: keyof T, val: any);
|
|
72
72
|
apply(v: Viewer, ent?: T): Promise<PrivacyResult>;
|
|
73
73
|
}
|
|
74
|
-
export declare class AllowIfEntIsVisibleRule<
|
|
74
|
+
export declare class AllowIfEntIsVisibleRule<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicyRule {
|
|
75
75
|
private id;
|
|
76
76
|
private options;
|
|
77
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
78
|
-
apply(v:
|
|
77
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
78
|
+
apply(v: TViewer, _ent?: Ent): Promise<PrivacyResult>;
|
|
79
79
|
}
|
|
80
|
-
export declare class AllowIfEntIsNotVisibleRule<
|
|
80
|
+
export declare class AllowIfEntIsNotVisibleRule<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicyRule {
|
|
81
81
|
private id;
|
|
82
82
|
private options;
|
|
83
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
84
|
-
apply(v:
|
|
83
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
84
|
+
apply(v: TViewer, _ent?: Ent): Promise<PrivacyResult>;
|
|
85
85
|
}
|
|
86
|
-
export declare class AllowIfEntIsVisiblePolicy<
|
|
86
|
+
export declare class AllowIfEntIsVisiblePolicy<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicy<TEnt, TViewer> {
|
|
87
87
|
private id;
|
|
88
88
|
private options;
|
|
89
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
89
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
90
90
|
rules: {
|
|
91
|
-
apply(_v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
91
|
+
apply(_v: Viewer<Ent<any> | null, ID | null>, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
92
92
|
}[];
|
|
93
93
|
}
|
|
94
|
-
export declare class DenyIfEntIsVisiblePolicy<
|
|
94
|
+
export declare class DenyIfEntIsVisiblePolicy<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicy<TEnt, TViewer> {
|
|
95
95
|
private id;
|
|
96
96
|
private options;
|
|
97
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
97
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
98
98
|
rules: {
|
|
99
|
-
apply(_v: Viewer, _ent?: Ent | undefined): Promise<PrivacyResult>;
|
|
99
|
+
apply(_v: Viewer<Ent<any> | null, ID | null>, _ent?: Ent<Viewer<Ent<any> | null, ID | null>> | undefined): Promise<PrivacyResult>;
|
|
100
100
|
}[];
|
|
101
101
|
}
|
|
102
|
-
export declare class DenyIfEntIsVisibleRule<
|
|
102
|
+
export declare class DenyIfEntIsVisibleRule<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicyRule<TEnt, TViewer> {
|
|
103
103
|
private id;
|
|
104
104
|
private options;
|
|
105
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
106
|
-
apply(v:
|
|
105
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
106
|
+
apply(v: TViewer, _ent?: Ent): Promise<PrivacyResult>;
|
|
107
107
|
}
|
|
108
|
-
export declare class DenyIfEntIsNotVisibleRule<
|
|
108
|
+
export declare class DenyIfEntIsNotVisibleRule<TEnt extends Ent<TViewer>, TViewer extends Viewer> implements PrivacyPolicyRule {
|
|
109
109
|
private id;
|
|
110
110
|
private options;
|
|
111
|
-
constructor(id: ID, options: LoadEntOptions<
|
|
112
|
-
apply(v:
|
|
111
|
+
constructor(id: ID, options: LoadEntOptions<TEnt, TViewer>);
|
|
112
|
+
apply(v: TViewer, _ent?: Ent): Promise<PrivacyResult>;
|
|
113
113
|
}
|
|
114
114
|
export declare class AllowIfEdgeExistsRule implements PrivacyPolicyRule {
|
|
115
115
|
private id1;
|
|
@@ -3,15 +3,15 @@ import { AssocEdge } from "../ent";
|
|
|
3
3
|
import { AssocEdgeCountLoaderFactory } from "../loaders/assoc_count_loader";
|
|
4
4
|
import { AssocEdgeLoaderFactory } from "../loaders/assoc_edge_loader";
|
|
5
5
|
import { EdgeQuery, BaseEdgeQuery, IDInfo } from "./query";
|
|
6
|
-
export declare type EdgeQuerySource<TSource extends Ent
|
|
7
|
-
declare type loaderOptionsFunc = (type: string) => LoadEntOptions<Ent>;
|
|
8
|
-
export declare abstract class AssocEdgeQueryBase<TSource extends Ent
|
|
9
|
-
viewer:
|
|
10
|
-
src: EdgeQuerySource<TSource, TDest>;
|
|
6
|
+
export declare type EdgeQuerySource<TSource extends Ent<TViewer>, TDest extends Ent<TViewer> = Ent<any>, TViewer extends Viewer = Viewer> = TSource | TSource[] | ID | ID[] | EdgeQuery<TDest, Ent, AssocEdge>;
|
|
7
|
+
declare type loaderOptionsFunc<TViewer extends Viewer> = (type: string) => LoadEntOptions<Ent, TViewer>;
|
|
8
|
+
export declare abstract class AssocEdgeQueryBase<TSource extends Ent<TViewer>, TDest extends Ent<TViewer>, TEdge extends AssocEdge, TViewer extends Viewer = Viewer> extends BaseEdgeQuery<TSource, TDest, TEdge> implements EdgeQuery<TSource, TDest, TEdge> {
|
|
9
|
+
viewer: TViewer;
|
|
10
|
+
src: EdgeQuerySource<TSource, TDest, TViewer>;
|
|
11
11
|
private countLoaderFactory;
|
|
12
12
|
private dataLoaderFactory;
|
|
13
13
|
private options;
|
|
14
|
-
constructor(viewer:
|
|
14
|
+
constructor(viewer: TViewer, src: EdgeQuerySource<TSource, TDest, TViewer>, countLoaderFactory: AssocEdgeCountLoaderFactory, dataLoaderFactory: AssocEdgeLoaderFactory<TEdge>, options: LoadEntOptions<TDest, TViewer> | loaderOptionsFunc<TViewer>);
|
|
15
15
|
private isEdgeQuery;
|
|
16
16
|
abstract sourceEnt(id: ID): Promise<Ent | null>;
|
|
17
17
|
private getSingleID;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { Data, Ent, ID, EdgeQueryableDataOptions, LoadEntOptions, Viewer, LoaderFactory, ConfigurableLoaderFactory } from "../base";
|
|
2
2
|
import { BaseEdgeQuery, IDInfo, EdgeQuery } from "./query";
|
|
3
|
-
export interface CustomEdgeQueryOptions<TSource extends Ent
|
|
3
|
+
export interface CustomEdgeQueryOptions<TSource extends Ent<TViewer>, TDest extends Ent<TViewer>, TViewer extends Viewer = Viewer> {
|
|
4
4
|
src: TSource | ID;
|
|
5
5
|
countLoaderFactory: LoaderFactory<ID, number>;
|
|
6
6
|
dataLoaderFactory: ConfigurableLoaderFactory<ID, Data[]>;
|
|
7
|
-
options: LoadEntOptions<TDest>;
|
|
7
|
+
options: LoadEntOptions<TDest, TViewer>;
|
|
8
8
|
sortColumn?: string;
|
|
9
9
|
}
|
|
10
|
-
export declare abstract class CustomEdgeQueryBase<TSource extends Ent
|
|
11
|
-
viewer:
|
|
10
|
+
export declare abstract class CustomEdgeQueryBase<TSource extends Ent<TViewer>, TDest extends Ent<TViewer>, TViewer extends Viewer = Viewer> extends BaseEdgeQuery<TSource, TDest, Data> implements EdgeQuery<TSource, TDest, Data> {
|
|
11
|
+
viewer: TViewer;
|
|
12
12
|
private options;
|
|
13
13
|
private id;
|
|
14
|
-
constructor(viewer:
|
|
14
|
+
constructor(viewer: TViewer, options: CustomEdgeQueryOptions<TSource, TDest, TViewer>);
|
|
15
15
|
abstract sourceEnt(id: ID): Promise<Ent | null>;
|
|
16
16
|
private idVisible;
|
|
17
17
|
queryRawCount(): Promise<number>;
|
package/core/query/query.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export declare abstract class BaseEdgeQuery<TSource extends Ent, TDest extends E
|
|
|
41
41
|
private idMap;
|
|
42
42
|
private idsToFetch;
|
|
43
43
|
constructor(viewer: Viewer, sortCol: string);
|
|
44
|
-
getPrivacyPolicy(): PrivacyPolicy<Ent
|
|
44
|
+
getPrivacyPolicy(): PrivacyPolicy<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>>;
|
|
45
45
|
abstract sourceEnt(id: ID): Promise<Ent | null>;
|
|
46
46
|
first(n: number, after?: string): this;
|
|
47
47
|
last(n: number, before?: string): this;
|
package/core/viewer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ID, Ent, Viewer, Context } from "./base";
|
|
2
2
|
export declare class LoggedOutViewer implements Viewer {
|
|
3
|
-
context?: Context | undefined;
|
|
4
|
-
constructor(context?: Context | undefined);
|
|
3
|
+
context?: Context<Viewer<Ent<any> | null, ID | null>> | undefined;
|
|
4
|
+
constructor(context?: Context<Viewer<Ent<any> | null, ID | null>> | undefined);
|
|
5
5
|
viewerID: null;
|
|
6
6
|
viewer(): Promise<null>;
|
|
7
7
|
instanceKey(): string;
|
|
@@ -18,6 +18,6 @@ export declare class IDViewer implements Viewer {
|
|
|
18
18
|
constructor(viewerID: ID, opts?: Partial<IDViewerOptions>);
|
|
19
19
|
constructor(opts: IDViewerOptions);
|
|
20
20
|
setContext(ctx: Context): this;
|
|
21
|
-
viewer(): Promise<Ent | null>;
|
|
21
|
+
viewer(): Promise<Ent<Viewer<Ent<any> | null, ID | null>> | null>;
|
|
22
22
|
instanceKey(): string;
|
|
23
23
|
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { EdgeQuery, PaginationInfo } from "../../core/query/query";
|
|
2
|
-
import { Data, Ent, Viewer } from "../../core/base";
|
|
2
|
+
import { Data, Ent, ID, Viewer } from "../../core/base";
|
|
3
3
|
export interface GraphQLEdge<T extends Data> {
|
|
4
4
|
edge: T;
|
|
5
5
|
node: Ent;
|
|
6
6
|
cursor: string;
|
|
7
7
|
}
|
|
8
|
-
interface edgeQueryCtr<T extends Ent, TEdge extends Data> {
|
|
9
|
-
(v:
|
|
8
|
+
interface edgeQueryCtr<T extends Ent, TEdge extends Data, TViewer extends Viewer> {
|
|
9
|
+
(v: TViewer, src: T): EdgeQuery<T, Ent, TEdge>;
|
|
10
10
|
}
|
|
11
|
-
interface edgeQueryCtr2<T extends Ent, TEdge extends Data> {
|
|
12
|
-
(v:
|
|
11
|
+
interface edgeQueryCtr2<T extends Ent, TEdge extends Data, TViewer extends Viewer> {
|
|
12
|
+
(v: TViewer): EdgeQuery<T, Ent, TEdge>;
|
|
13
13
|
}
|
|
14
|
-
export declare class GraphQLEdgeConnection<TSource extends Ent, TEdge extends Data> {
|
|
14
|
+
export declare class GraphQLEdgeConnection<TSource extends Ent, TEdge extends Data, TViewer extends Viewer = Viewer> {
|
|
15
15
|
query: EdgeQuery<TSource, Ent, TEdge>;
|
|
16
16
|
private results;
|
|
17
17
|
private viewer;
|
|
18
18
|
private source?;
|
|
19
19
|
private args?;
|
|
20
|
-
constructor(viewer:
|
|
21
|
-
constructor(viewer:
|
|
20
|
+
constructor(viewer: TViewer, source: TSource, getQuery: edgeQueryCtr<TSource, TEdge, TViewer>, args?: Data);
|
|
21
|
+
constructor(viewer: TViewer, getQuery: edgeQueryCtr2<TSource, TEdge, TViewer>, args?: Data);
|
|
22
22
|
first(limit: number, cursor?: string): void;
|
|
23
23
|
last(limit: number, cursor?: string): void;
|
|
24
24
|
modifyQuery(fn: (query: EdgeQuery<TSource, Ent, TEdge>) => EdgeQuery<TSource, Ent, TEdge>): void;
|
|
25
25
|
queryTotalCount(): Promise<number>;
|
|
26
26
|
queryEdges(): Promise<GraphQLEdge<TEdge>[]>;
|
|
27
|
-
queryNodes(): Promise<Ent[]>;
|
|
27
|
+
queryNodes(): Promise<Ent<Viewer<Ent<any> | null, ID | null>>[]>;
|
|
28
28
|
private defaultPageInfo;
|
|
29
29
|
queryPageInfo(): Promise<PaginationInfo>;
|
|
30
30
|
private queryData;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { GraphQLObjectType } from "graphql";
|
|
2
2
|
import { RequestContext } from "../../core/context";
|
|
3
3
|
import { PaginationInfo } from "../../core/query/query";
|
|
4
|
-
export declare const GraphQLPageInfo: GraphQLObjectType<PaginationInfo, RequestContext
|
|
4
|
+
export declare const GraphQLPageInfo: GraphQLObjectType<PaginationInfo, RequestContext<import("../..").Viewer<import("../..").Ent<any> | null, import("../..").ID | null>>>;
|
package/package.json
CHANGED
package/testutils/builder.d.ts
CHANGED
|
@@ -77,12 +77,13 @@ export declare class SimpleBuilder<T extends Ent, TExistingEnt extends TMaybleNu
|
|
|
77
77
|
existingEnt: TExistingEnt;
|
|
78
78
|
ent: EntConstructor<T>;
|
|
79
79
|
placeholderID: ID;
|
|
80
|
-
orchestrator: Orchestrator<T, Data>;
|
|
80
|
+
orchestrator: Orchestrator<T, Data, Viewer>;
|
|
81
81
|
fields: Map<string, any>;
|
|
82
82
|
nodeType: string;
|
|
83
|
-
constructor(viewer: Viewer, schema: BuilderSchema<T>, fields: Map<string, any>, operation: WriteOperation, existingEnt: TExistingEnt, action?: Action<T, SimpleBuilder<T>, Data> | undefined);
|
|
83
|
+
constructor(viewer: Viewer, schema: BuilderSchema<T>, fields: Map<string, any>, operation: WriteOperation, existingEnt: TExistingEnt, action?: Action<T, SimpleBuilder<T>, Viewer, Data> | undefined);
|
|
84
|
+
getInput(): Data;
|
|
84
85
|
updateInput(input: Data): void;
|
|
85
|
-
build(): Promise<Changeset
|
|
86
|
+
build(): Promise<Changeset>;
|
|
86
87
|
editedEnt(): Promise<T | null>;
|
|
87
88
|
editedEntX(): Promise<T>;
|
|
88
89
|
save(): Promise<void>;
|
|
@@ -93,18 +94,18 @@ export declare class SimpleBuilder<T extends Ent, TExistingEnt extends TMaybleNu
|
|
|
93
94
|
interface viewerEntLoadFunc {
|
|
94
95
|
(data: Data): Viewer | Promise<Viewer>;
|
|
95
96
|
}
|
|
96
|
-
export declare class SimpleAction<T extends Ent, TExistingEnt extends TMaybleNullableEnt<T> = MaybeNull<T>> implements Action<T, SimpleBuilder<T, TExistingEnt>, Data, TExistingEnt> {
|
|
97
|
+
export declare class SimpleAction<T extends Ent, TExistingEnt extends TMaybleNullableEnt<T> = MaybeNull<T>> implements Action<T, SimpleBuilder<T, TExistingEnt>, Viewer, Data, TExistingEnt> {
|
|
97
98
|
viewer: Viewer;
|
|
98
99
|
private fields;
|
|
99
100
|
builder: SimpleBuilder<T, TExistingEnt>;
|
|
100
|
-
validators: Validator<T, SimpleBuilder<T
|
|
101
|
-
triggers: Trigger<T, SimpleBuilder<T
|
|
102
|
-
observers: Observer<T, SimpleBuilder<T
|
|
101
|
+
validators: Validator<T, SimpleBuilder<T>>[];
|
|
102
|
+
triggers: Trigger<T, SimpleBuilder<T>>[];
|
|
103
|
+
observers: Observer<T, SimpleBuilder<T>>[];
|
|
103
104
|
viewerForEntLoad: viewerEntLoadFunc | undefined;
|
|
104
105
|
constructor(viewer: Viewer, schema: BuilderSchema<T>, fields: Map<string, any>, operation: WriteOperation | undefined, existingEnt: TExistingEnt);
|
|
105
|
-
getPrivacyPolicy(): PrivacyPolicy<Ent
|
|
106
|
+
getPrivacyPolicy(): PrivacyPolicy<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>>;
|
|
106
107
|
getInput(): Data;
|
|
107
|
-
changeset(): Promise<Changeset
|
|
108
|
+
changeset(): Promise<Changeset>;
|
|
108
109
|
valid(): Promise<boolean>;
|
|
109
110
|
validX(): Promise<void>;
|
|
110
111
|
save(): Promise<T | null>;
|
package/testutils/builder.js
CHANGED
|
@@ -207,6 +207,13 @@ class SimpleBuilder {
|
|
|
207
207
|
updateInput: this.updateInput.bind(this),
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
|
+
getInput() {
|
|
211
|
+
let ret = {};
|
|
212
|
+
for (const [k, v] of this.fields) {
|
|
213
|
+
ret[k] = v;
|
|
214
|
+
}
|
|
215
|
+
return ret;
|
|
216
|
+
}
|
|
210
217
|
updateInput(input) {
|
|
211
218
|
const knownFields = (0, schema_1.getFields)(this.schema);
|
|
212
219
|
for (const k in input) {
|
|
@@ -53,7 +53,7 @@ export declare class UserToFriendRequestsQuery extends AssocEdgeQueryBase<FakeUs
|
|
|
53
53
|
}
|
|
54
54
|
export declare class UserToIncomingFriendRequestsQuery extends AssocEdgeQueryBase<FakeUser, FakeUser, AssocEdge> {
|
|
55
55
|
constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>);
|
|
56
|
-
getPrivacyPolicy(): import("../../core/base").PrivacyPolicy<Ent
|
|
56
|
+
getPrivacyPolicy(): import("../../core/base").PrivacyPolicy<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>>;
|
|
57
57
|
sourceEnt(id: ID): Promise<FakeUser | null>;
|
|
58
58
|
static query(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>): UserToIncomingFriendRequestsQuery;
|
|
59
59
|
queryContacts(): UserToContactsQuery;
|
|
@@ -90,7 +90,7 @@ export declare class UserToEventsInNextWeekQuery extends CustomEdgeQueryBase<Fak
|
|
|
90
90
|
constructor(viewer: Viewer, src: ID | FakeUser);
|
|
91
91
|
static query(viewer: Viewer, src: FakeUser | ID): UserToEventsInNextWeekQuery;
|
|
92
92
|
sourceEnt(id: ID): Promise<FakeUser | null>;
|
|
93
|
-
getPrivacyPolicy(): import("../../core/base").PrivacyPolicy<Ent
|
|
93
|
+
getPrivacyPolicy(): import("../../core/base").PrivacyPolicy<Ent<Viewer<Ent<any> | null, ID | null>>, Viewer<Ent<any> | null, ID | null>>;
|
|
94
94
|
}
|
|
95
95
|
export declare class UserToFollowingQuery extends AssocEdgeQueryBase<FakeUser, Ent, AssocEdge> {
|
|
96
96
|
constructor(viewer: Viewer, src: EdgeQuerySource<FakeUser, FakeUser>);
|
package/testutils/fake_log.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ent } from "../core/base";
|
|
1
|
+
import { Ent, Viewer } from "../core/base";
|
|
2
2
|
import { Builder } from "./../action";
|
|
3
3
|
export declare class FakeLogger {
|
|
4
4
|
private static logs;
|
|
@@ -8,6 +8,6 @@ export declare class FakeLogger {
|
|
|
8
8
|
static contains(line: string): boolean;
|
|
9
9
|
static clear(): void;
|
|
10
10
|
}
|
|
11
|
-
export declare class EntCreationObserver<
|
|
12
|
-
observe(builder: Builder<
|
|
11
|
+
export declare class EntCreationObserver<TEnt extends Ent<TViewer>, TViewer extends Viewer = Viewer> {
|
|
12
|
+
observe(builder: Builder<TEnt, TViewer>): Promise<void>;
|
|
13
13
|
}
|