@nx-ddd/hasura 19.0.0-preview.10
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/README.md +11 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/lib/apollo-multi.service.d.ts +23 -0
- package/lib/apollo-multi.service.js +52 -0
- package/lib/apollo-multi.service.js.map +1 -0
- package/lib/decorators.d.ts +35 -0
- package/lib/decorators.js +50 -0
- package/lib/decorators.js.map +1 -0
- package/lib/hasura.config.d.ts +8 -0
- package/lib/hasura.config.js +15 -0
- package/lib/hasura.config.js.map +1 -0
- package/lib/hasura.converter.d.ts +24 -0
- package/lib/hasura.converter.js +82 -0
- package/lib/hasura.converter.js.map +1 -0
- package/lib/hasura.di.d.ts +33 -0
- package/lib/hasura.di.js +79 -0
- package/lib/hasura.di.js.map +1 -0
- package/lib/hasura.interceptor.d.ts +6 -0
- package/lib/hasura.interceptor.js +24 -0
- package/lib/hasura.interceptor.js.map +1 -0
- package/lib/hasura.repository.d.ts +40 -0
- package/lib/hasura.repository.js +261 -0
- package/lib/hasura.repository.js.map +1 -0
- package/lib/hasura.service.d.ts +18 -0
- package/lib/hasura.service.js +49 -0
- package/lib/hasura.service.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/links.d.ts +7 -0
- package/lib/links.js +23 -0
- package/lib/links.js.map +1 -0
- package/package.json +9 -0
package/README.md
ADDED
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
package/index.js
ADDED
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/@nx-ddd/hasura/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Apollo, ApolloBase } from "apollo-angular";
|
|
2
|
+
import { HasuraConfig } from "./hasura.config";
|
|
3
|
+
import { HttpLink } from 'apollo-angular/http';
|
|
4
|
+
import { ApolloClient } from "@apollo/client/core";
|
|
5
|
+
import { Observable } from "rxjs";
|
|
6
|
+
import { GetHeaders } from "./links";
|
|
7
|
+
export declare class ApolloMultiService {
|
|
8
|
+
readonly apollo: Apollo;
|
|
9
|
+
readonly httpLink: HttpLink;
|
|
10
|
+
protected createClient(name: string, baseUrl: string, getHeaders: GetHeaders): void;
|
|
11
|
+
getClient(endpoint: string, getHeaders: GetHeaders): ApolloBase;
|
|
12
|
+
}
|
|
13
|
+
export type GetApolloClient<E extends {
|
|
14
|
+
id: string;
|
|
15
|
+
}> = (config: HasuraConfig) => ApolloClient<E> | Promise<ApolloClient<E>> | Observable<ApolloClient<E>>;
|
|
16
|
+
export declare const GET_APOLLO_CLIENT: {
|
|
17
|
+
token: import("@angular/core").InjectionToken<GetApolloClient<any>>;
|
|
18
|
+
inject: () => GetApolloClient<any>;
|
|
19
|
+
provide: (useFactory: () => GetApolloClient<any>) => {
|
|
20
|
+
provide: import("@angular/core").InjectionToken<GetApolloClient<any>>;
|
|
21
|
+
useFactory: () => GetApolloClient<any>;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET_APOLLO_CLIENT = exports.ApolloMultiService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@angular/core");
|
|
6
|
+
const apollo_angular_1 = require("apollo-angular");
|
|
7
|
+
const http_1 = require("apollo-angular/http");
|
|
8
|
+
const cache_1 = require("@apollo/client/cache");
|
|
9
|
+
const context_1 = require("@apollo/client/link/context");
|
|
10
|
+
const core_2 = require("@apollo/client/core");
|
|
11
|
+
const utilities_1 = require("@apollo/client/utilities");
|
|
12
|
+
const core_3 = require("@nx-ddd/core");
|
|
13
|
+
const links_1 = require("./links");
|
|
14
|
+
function isSubscription(query) {
|
|
15
|
+
const definition = (0, utilities_1.getMainDefinition)(query);
|
|
16
|
+
return (definition.kind === 'OperationDefinition' &&
|
|
17
|
+
definition.operation === 'subscription');
|
|
18
|
+
}
|
|
19
|
+
let ApolloMultiService = class ApolloMultiService {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.apollo = (0, core_1.inject)(apollo_angular_1.Apollo);
|
|
22
|
+
this.httpLink = (0, core_1.inject)(http_1.HttpLink);
|
|
23
|
+
}
|
|
24
|
+
createClient(name, baseUrl, getHeaders) {
|
|
25
|
+
const wsLink = (0, links_1.buildWebsocketLink)(baseUrl, getHeaders);
|
|
26
|
+
const link = (0, core_2.split)(({ query }) => isSubscription(query), wsLink, core_2.ApolloLink.from([
|
|
27
|
+
(0, context_1.setContext)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const headers = yield (0, links_1.resolve)(() => getHeaders());
|
|
29
|
+
return { headers };
|
|
30
|
+
})),
|
|
31
|
+
this.httpLink.create({ uri: baseUrl, }),
|
|
32
|
+
]));
|
|
33
|
+
this.apollo.removeClient(name);
|
|
34
|
+
this.apollo.createNamed(name, { link, cache: new cache_1.InMemoryCache() });
|
|
35
|
+
}
|
|
36
|
+
getClient(endpoint, getHeaders) {
|
|
37
|
+
const name = endpoint;
|
|
38
|
+
let client = this.apollo.use(name);
|
|
39
|
+
console.debug('[ApolloMultiService] getClient:', name);
|
|
40
|
+
if (!client) {
|
|
41
|
+
this.createClient(name, endpoint, getHeaders);
|
|
42
|
+
client = this.apollo.use(name);
|
|
43
|
+
}
|
|
44
|
+
return client;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.ApolloMultiService = ApolloMultiService;
|
|
48
|
+
exports.ApolloMultiService = ApolloMultiService = tslib_1.__decorate([
|
|
49
|
+
(0, core_1.Injectable)({ providedIn: 'root' })
|
|
50
|
+
], ApolloMultiService);
|
|
51
|
+
exports.GET_APOLLO_CLIENT = (0, core_3.makeDI)('GET_APOLLO_CLIENT');
|
|
52
|
+
//# sourceMappingURL=apollo-multi.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apollo-multi.service.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/apollo-multi.service.ts"],"names":[],"mappings":";;;;AAAA,wCAAmD;AACnD,mDAAoD;AAEpD,8CAA+C;AAC/C,gDAAqD;AACrD,yDAAyD;AACzD,8CAAoF;AACpF,wDAA6D;AAC7D,uCAAsC;AAEtC,mCAAkE;AAElE,SAAS,cAAc,CAAC,KAAmB;IACzC,MAAM,UAAU,GAAG,IAAA,6BAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CACL,UAAU,CAAC,IAAI,KAAK,qBAAqB;QACzC,UAAU,CAAC,SAAS,KAAK,cAAc,CACxC,CAAC;AACJ,CAAC;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;QACI,WAAM,GAAG,IAAA,aAAM,EAAC,uBAAM,CAAC,CAAC;QACxB,aAAQ,GAAG,IAAA,aAAM,EAAC,eAAQ,CAAC,CAAC;IA8BvC,CAAC;IA5BW,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,UAAsB;QAC1E,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAA,YAAK,EAChB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,MAAM,EACN,iBAAU,CAAC,IAAI,CAAC;YACd,IAAA,oBAAU,EAAC,GAAS,EAAE;gBACpB,MAAM,OAAO,GAAG,MAAM,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;gBAClD,OAAO,EAAE,OAAO,EAAE,CAAA;YACpB,CAAC,CAAA,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC;SACxC,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,qBAAa,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,UAAsB;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC;QACtB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC9C,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAhCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,iBAAU,EAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC;GACpB,kBAAkB,CAgC9B;AAIY,QAAA,iBAAiB,GAAG,IAAA,aAAM,EAAuB,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare function getFlattenFieldAnnotations<Annotation>(T: any, prefix?: string): Record<string, Annotation>;
|
|
2
|
+
export declare function getFields(T: any, options?: {
|
|
3
|
+
prefix?: string;
|
|
4
|
+
case?: 'snake' | 'camel';
|
|
5
|
+
}): string[];
|
|
6
|
+
export declare const Hasura: {
|
|
7
|
+
Text: (nameOrProps?: {
|
|
8
|
+
name?: string;
|
|
9
|
+
} | string) => (target: any, propName: string) => void;
|
|
10
|
+
Timestamp: (nameOrProps?: {
|
|
11
|
+
name?: string;
|
|
12
|
+
} | string) => (target: any, propName: string) => void;
|
|
13
|
+
Date: (nameOrProps?: {
|
|
14
|
+
name?: string;
|
|
15
|
+
} | string) => (target: any, propName: string) => void;
|
|
16
|
+
Integer: (nameOrProps?: {
|
|
17
|
+
name?: string;
|
|
18
|
+
} | string) => (target: any, propName: string) => void;
|
|
19
|
+
Numeric: (nameOrProps?: {
|
|
20
|
+
name?: string;
|
|
21
|
+
} | string) => (target: any, propName: string) => void;
|
|
22
|
+
Boolean: (nameOrProps?: {
|
|
23
|
+
name?: string;
|
|
24
|
+
} | string) => (target: any, propName: string) => void;
|
|
25
|
+
Map: (childType: () => any) => (target: any, propName: string) => void;
|
|
26
|
+
JSON: (nameOrProps?: {
|
|
27
|
+
name?: string;
|
|
28
|
+
} | string) => (target: any, propName: string) => void;
|
|
29
|
+
getAnnotations: (target: any) => {
|
|
30
|
+
type: string;
|
|
31
|
+
fieldName: string;
|
|
32
|
+
propName: string;
|
|
33
|
+
childType: any;
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Hasura = void 0;
|
|
4
|
+
exports.getFlattenFieldAnnotations = getFlattenFieldAnnotations;
|
|
5
|
+
exports.getFields = getFields;
|
|
6
|
+
const create_decorator_1 = require("@nx-ddd/core/create-decorator");
|
|
7
|
+
const lodash_es_1 = require("lodash-es");
|
|
8
|
+
const { createDecorator, getAnnotations, } = (0, create_decorator_1.makeDecoratorFactories)((type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }), '[@nx-ddd/hasura] annotations');
|
|
9
|
+
function getFlattenFieldAnnotations(T, prefix = '') {
|
|
10
|
+
const annotations = exports.Hasura.getAnnotations(T);
|
|
11
|
+
return (annotations !== null && annotations !== void 0 ? annotations : []).reduce((acc, annotation) => {
|
|
12
|
+
const currentKey = prefix ? (0, lodash_es_1.camelCase)(`${prefix}_${annotation.fieldName}`) : annotation.fieldName;
|
|
13
|
+
if (annotation.childType) {
|
|
14
|
+
return Object.assign(Object.assign({}, acc), getFlattenFieldAnnotations(annotation.childType(), currentKey));
|
|
15
|
+
}
|
|
16
|
+
return Object.assign(Object.assign({}, acc), { [currentKey]: annotation });
|
|
17
|
+
}, {});
|
|
18
|
+
}
|
|
19
|
+
function getFields(T, options = {
|
|
20
|
+
prefix: '',
|
|
21
|
+
case: 'snake'
|
|
22
|
+
}) {
|
|
23
|
+
const annotations = exports.Hasura.getAnnotations(T);
|
|
24
|
+
const changeCase = (options === null || options === void 0 ? void 0 : options.case) === 'snake' ? lodash_es_1.snakeCase : lodash_es_1.camelCase;
|
|
25
|
+
const fields = (annotations !== null && annotations !== void 0 ? annotations : []).flatMap((annotation) => {
|
|
26
|
+
const currentKey = changeCase((options === null || options === void 0 ? void 0 : options.prefix) ? `${options === null || options === void 0 ? void 0 : options.prefix}_${annotation.fieldName}` : annotation.fieldName);
|
|
27
|
+
if (annotation.childType) {
|
|
28
|
+
return [
|
|
29
|
+
...getFields(annotation.childType(), {
|
|
30
|
+
prefix: currentKey,
|
|
31
|
+
case: options === null || options === void 0 ? void 0 : options.case,
|
|
32
|
+
})
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
return [currentKey];
|
|
36
|
+
});
|
|
37
|
+
return fields;
|
|
38
|
+
}
|
|
39
|
+
exports.Hasura = {
|
|
40
|
+
Text: createDecorator('text'),
|
|
41
|
+
Timestamp: createDecorator('timestamp'),
|
|
42
|
+
Date: createDecorator('date'),
|
|
43
|
+
Integer: createDecorator('integer'),
|
|
44
|
+
Numeric: createDecorator('numeric'),
|
|
45
|
+
Boolean: createDecorator('boolean'),
|
|
46
|
+
Map: (childType) => createDecorator('map', { childType })(),
|
|
47
|
+
JSON: createDecorator('json'),
|
|
48
|
+
getAnnotations,
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
import { Provider } from "@angular/core";
|
|
3
|
+
export interface HasuraConfig {
|
|
4
|
+
adminSecret?: string;
|
|
5
|
+
url: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const HASURA_CONFIG: InjectionToken<HasuraConfig>;
|
|
8
|
+
export declare function provideHasuraConfig(config: HasuraConfig): Provider[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HASURA_CONFIG = void 0;
|
|
4
|
+
exports.provideHasuraConfig = provideHasuraConfig;
|
|
5
|
+
const http_1 = require("@angular/common/http");
|
|
6
|
+
const core_1 = require("@angular/core");
|
|
7
|
+
const hasura_interceptor_1 = require("./hasura.interceptor");
|
|
8
|
+
exports.HASURA_CONFIG = new core_1.InjectionToken('HASURA_CONFIG');
|
|
9
|
+
function provideHasuraConfig(config) {
|
|
10
|
+
return [
|
|
11
|
+
{ provide: exports.HASURA_CONFIG, useValue: config },
|
|
12
|
+
config.adminSecret ? { provide: http_1.HTTP_INTERCEPTORS, useClass: hasura_interceptor_1.HasuraInterceptor, multi: true } : [],
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=hasura.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.config.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.config.ts"],"names":[],"mappings":";;;AAYA,kDAKC;AAjBD,+CAAyD;AACzD,wCAA+C;AAE/C,6DAAyD;AAO5C,QAAA,aAAa,GAAG,IAAI,qBAAc,CAAe,eAAe,CAAC,CAAC;AAE/E,SAAgB,mBAAmB,CAAC,MAAoB;IACtD,OAAO;QACL,EAAE,OAAO,EAAE,qBAAa,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAiB,EAAE,QAAQ,EAAE,sCAAiB,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,EAAE;KAClG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ClassConstructor } from 'class-transformer';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
export interface HasuraConverter<E> {
|
|
4
|
+
toHasura(entity: E): object;
|
|
5
|
+
toHasuraMany(entities: E[]): object[];
|
|
6
|
+
fromHasura(entity: object): E;
|
|
7
|
+
fromHasuraMany(entities: object[]): E[];
|
|
8
|
+
}
|
|
9
|
+
export declare function deepCamelToSnakeCase(obj: any): any;
|
|
10
|
+
export declare function deepSnakeToCamelCase(obj: any): any;
|
|
11
|
+
export declare function fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T;
|
|
12
|
+
export declare function toHasura(object: object, type: any, { extraFunc }?: {
|
|
13
|
+
extraFunc?: (obj: any) => any;
|
|
14
|
+
}): any;
|
|
15
|
+
export declare function makeConverter<T extends object>(type: {
|
|
16
|
+
new (): T;
|
|
17
|
+
}): HasuraConverter<T>;
|
|
18
|
+
export declare class HasuraUtils {
|
|
19
|
+
static toTimestamp(date: dayjs.Dayjs | null): string | null;
|
|
20
|
+
static fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T;
|
|
21
|
+
static toHasura(object: object, type: any, { extraFunc }?: {
|
|
22
|
+
extraFunc?: (obj: any) => any;
|
|
23
|
+
}): any;
|
|
24
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HasuraUtils = void 0;
|
|
4
|
+
exports.deepCamelToSnakeCase = deepCamelToSnakeCase;
|
|
5
|
+
exports.deepSnakeToCamelCase = deepSnakeToCamelCase;
|
|
6
|
+
exports.fromHasura = fromHasura;
|
|
7
|
+
exports.toHasura = toHasura;
|
|
8
|
+
exports.makeConverter = makeConverter;
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const decorators_1 = require("./decorators");
|
|
11
|
+
const lodash_es_1 = require("lodash-es");
|
|
12
|
+
const util_1 = require("@nx-ddd/core/util");
|
|
13
|
+
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
14
|
+
function deepCamelToSnakeCase(obj) {
|
|
15
|
+
if (Array.isArray(obj)) {
|
|
16
|
+
return obj.map(deepCamelToSnakeCase);
|
|
17
|
+
}
|
|
18
|
+
else if ((0, lodash_es_1.isObject)(obj)) {
|
|
19
|
+
return (0, lodash_es_1.mapKeys)((0, lodash_es_1.mapValues)(obj, deepCamelToSnakeCase), (_, key) => (0, lodash_es_1.snakeCase)(key));
|
|
20
|
+
}
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
function deepSnakeToCamelCase(obj) {
|
|
24
|
+
if (Array.isArray(obj)) {
|
|
25
|
+
return obj.map(deepSnakeToCamelCase);
|
|
26
|
+
}
|
|
27
|
+
else if ((0, lodash_es_1.isObject)(obj)) {
|
|
28
|
+
return (0, lodash_es_1.mapKeys)((0, lodash_es_1.mapValues)(obj, deepSnakeToCamelCase), (_, key) => key.replace(/_([a-z])/g, (g) => g[1].toUpperCase()));
|
|
29
|
+
}
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
function fromHasura(_object, type) {
|
|
33
|
+
return HasuraUtils.fromHasura(_object, type);
|
|
34
|
+
}
|
|
35
|
+
function toHasura(object, type, { extraFunc = deepCamelToSnakeCase } = {}) {
|
|
36
|
+
return HasuraUtils.toHasura(object, type, { extraFunc });
|
|
37
|
+
}
|
|
38
|
+
function makeConverter(type) {
|
|
39
|
+
return {
|
|
40
|
+
toHasura(entity) {
|
|
41
|
+
return toHasura(entity, type);
|
|
42
|
+
},
|
|
43
|
+
toHasuraMany(entities) {
|
|
44
|
+
return entities.map((entity) => this.toHasura(entity));
|
|
45
|
+
},
|
|
46
|
+
fromHasura(entity) {
|
|
47
|
+
return fromHasura(entity, type);
|
|
48
|
+
},
|
|
49
|
+
fromHasuraMany(entities) {
|
|
50
|
+
return entities.map((entity) => this.fromHasura(entity));
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
class HasuraUtils {
|
|
55
|
+
static toTimestamp(date) {
|
|
56
|
+
if (!dayjs_1.default.isDayjs(date))
|
|
57
|
+
return null;
|
|
58
|
+
return date.toISOString();
|
|
59
|
+
}
|
|
60
|
+
static fromHasura(_object, type) {
|
|
61
|
+
const object = deepSnakeToCamelCase(_object);
|
|
62
|
+
return (0, util_1.plainToInstanceWithValid)(type, object);
|
|
63
|
+
}
|
|
64
|
+
static toHasura(object, type, { extraFunc = deepCamelToSnakeCase } = {}) {
|
|
65
|
+
const fields = (0, decorators_1.getFlattenFieldAnnotations)(type);
|
|
66
|
+
const obj = Object.entries(fields).reduce((acc, [key, annotation]) => {
|
|
67
|
+
const value = (0, lodash_es_1.get)(object, annotation.fieldName);
|
|
68
|
+
switch (annotation.type) {
|
|
69
|
+
case 'text': return Object.assign(Object.assign({}, acc), { [key]: value });
|
|
70
|
+
case 'timestamp': return Object.assign(Object.assign({}, acc), { [key]: this.toTimestamp(value) });
|
|
71
|
+
case 'numeric': return Object.assign(Object.assign({}, acc), { [key]: isNaN(Number(value)) ? null : Number(value) });
|
|
72
|
+
case 'integer': return Object.assign(Object.assign({}, acc), { [key]: isNaN(Number(value)) ? null : Number(value) });
|
|
73
|
+
case 'json': return Object.assign(Object.assign({}, acc), { [key]: value });
|
|
74
|
+
case 'map': return Object.assign({}, acc);
|
|
75
|
+
default: return Object.assign(Object.assign({}, acc), { [key]: value });
|
|
76
|
+
}
|
|
77
|
+
}, {});
|
|
78
|
+
return extraFunc(obj);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.HasuraUtils = HasuraUtils;
|
|
82
|
+
//# sourceMappingURL=hasura.converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.converter.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export { DeepPartial } from '@nx-ddd/common/domain/models';
|
|
2
|
+
export { TransformToDayjs } from '@nx-ddd/common/domain/models';
|
|
3
|
+
export { IsDayjs } from 'class-validator-extended';
|
|
4
|
+
import { EnvironmentProviders, InjectionToken, Provider } from '@angular/core';
|
|
5
|
+
import { ApolloLink, HttpLink, InMemoryCache } from '@apollo/client/core';
|
|
6
|
+
import { HasuraConfig } from './hasura.config';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
8
|
+
export declare function provideHttpLink(): {
|
|
9
|
+
provide: typeof ApolloLink;
|
|
10
|
+
useFactory: (config: HasuraConfig) => HttpLink;
|
|
11
|
+
deps: InjectionToken<HasuraConfig>[];
|
|
12
|
+
};
|
|
13
|
+
type HasuraAuthorization = Promise<string> | Observable<string> | string;
|
|
14
|
+
export declare function provideHasuraAuthorization(useFactory: () => HasuraAuthorization): {
|
|
15
|
+
provide: InjectionToken<HasuraAuthorization>;
|
|
16
|
+
useFactory: () => HasuraAuthorization;
|
|
17
|
+
};
|
|
18
|
+
type PromiseOrObservable<T> = Promise<T> | Observable<T> | T;
|
|
19
|
+
export declare function provideGraphqlHeaders(useFactory: () => () => PromiseOrObservable<Record<string, string>>): Provider;
|
|
20
|
+
export declare function provideWebsocketLink(): {
|
|
21
|
+
provide: typeof ApolloLink;
|
|
22
|
+
useFactory: () => import("@apollo/client/link/ws").WebSocketLink;
|
|
23
|
+
};
|
|
24
|
+
export declare function provideApolloOptions(): {
|
|
25
|
+
provide: InjectionToken<import("@apollo/client/core").ApolloClientOptions<any>>;
|
|
26
|
+
useFactory: (link: ApolloLink) => {
|
|
27
|
+
cache: InMemoryCache;
|
|
28
|
+
link: ApolloLink;
|
|
29
|
+
};
|
|
30
|
+
deps: (typeof ApolloLink)[];
|
|
31
|
+
};
|
|
32
|
+
export declare function provideHasura(config: HasuraConfig): (Provider | EnvironmentProviders)[];
|
|
33
|
+
export declare function provideHasuraWithWebSocket(config: HasuraConfig): (Provider | EnvironmentProviders)[];
|
package/lib/hasura.di.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IsDayjs = exports.TransformToDayjs = void 0;
|
|
4
|
+
exports.provideHttpLink = provideHttpLink;
|
|
5
|
+
exports.provideHasuraAuthorization = provideHasuraAuthorization;
|
|
6
|
+
exports.provideGraphqlHeaders = provideGraphqlHeaders;
|
|
7
|
+
exports.provideWebsocketLink = provideWebsocketLink;
|
|
8
|
+
exports.provideApolloOptions = provideApolloOptions;
|
|
9
|
+
exports.provideHasura = provideHasura;
|
|
10
|
+
exports.provideHasuraWithWebSocket = provideHasuraWithWebSocket;
|
|
11
|
+
var models_1 = require("@nx-ddd/common/domain/models");
|
|
12
|
+
Object.defineProperty(exports, "TransformToDayjs", { enumerable: true, get: function () { return models_1.TransformToDayjs; } });
|
|
13
|
+
var class_validator_extended_1 = require("class-validator-extended");
|
|
14
|
+
Object.defineProperty(exports, "IsDayjs", { enumerable: true, get: function () { return class_validator_extended_1.IsDayjs; } });
|
|
15
|
+
const core_1 = require("@angular/core");
|
|
16
|
+
const core_2 = require("@apollo/client/core");
|
|
17
|
+
const apollo_angular_1 = require("apollo-angular");
|
|
18
|
+
const hasura_config_1 = require("./hasura.config");
|
|
19
|
+
const links_1 = require("./links");
|
|
20
|
+
function provideHttpLink() {
|
|
21
|
+
return {
|
|
22
|
+
provide: core_2.ApolloLink,
|
|
23
|
+
useFactory: (config) => new core_2.HttpLink({
|
|
24
|
+
uri: config.url,
|
|
25
|
+
headers: (config === null || config === void 0 ? void 0 : config.adminSecret) && { 'x-hasura-admin-secret': config.adminSecret },
|
|
26
|
+
}),
|
|
27
|
+
deps: [hasura_config_1.HASURA_CONFIG],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const HASURA_AUTHORIZATION = new core_1.InjectionToken('HASURA_AUTHORIZATION');
|
|
31
|
+
function provideHasuraAuthorization(useFactory) {
|
|
32
|
+
return {
|
|
33
|
+
provide: HASURA_AUTHORIZATION,
|
|
34
|
+
useFactory,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const GRAPHQL_HEADERS = new core_1.InjectionToken('GRAPHQL_HEADERS', {
|
|
38
|
+
providedIn: 'root',
|
|
39
|
+
factory: () => () => ({}),
|
|
40
|
+
});
|
|
41
|
+
function provideGraphqlHeaders(useFactory) {
|
|
42
|
+
return [
|
|
43
|
+
{ provide: GRAPHQL_HEADERS, useFactory },
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
function provideWebsocketLink() {
|
|
47
|
+
return {
|
|
48
|
+
provide: core_2.ApolloLink,
|
|
49
|
+
useFactory: () => {
|
|
50
|
+
const config = (0, core_1.inject)(hasura_config_1.HASURA_CONFIG);
|
|
51
|
+
const _getHeaders = (0, core_1.inject)(GRAPHQL_HEADERS);
|
|
52
|
+
return (0, links_1.buildWebsocketLink)(config.url, _getHeaders);
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function provideApolloOptions() {
|
|
57
|
+
return {
|
|
58
|
+
provide: apollo_angular_1.APOLLO_OPTIONS,
|
|
59
|
+
useFactory: (link) => ({ cache: new core_2.InMemoryCache(), link }),
|
|
60
|
+
deps: [core_2.ApolloLink],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function provideHasura(config) {
|
|
64
|
+
return [
|
|
65
|
+
(0, core_1.importProvidersFrom)(apollo_angular_1.ApolloModule),
|
|
66
|
+
(0, hasura_config_1.provideHasuraConfig)(config),
|
|
67
|
+
provideApolloOptions(),
|
|
68
|
+
provideHttpLink(),
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
function provideHasuraWithWebSocket(config) {
|
|
72
|
+
return [
|
|
73
|
+
(0, core_1.importProvidersFrom)(apollo_angular_1.ApolloModule),
|
|
74
|
+
(0, hasura_config_1.provideHasuraConfig)(config),
|
|
75
|
+
provideApolloOptions(),
|
|
76
|
+
provideWebsocketLink(),
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=hasura.di.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.di.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.di.ts"],"names":[],"mappings":";;;AAUA,0CASC;AAMD,gEAKC;AASD,sDAMC;AAED,oDASC;AAED,oDAMC;AAED,sCAOC;AAED,gEAOC;AAjFD,uDAAgE;AAAvD,0GAAA,gBAAgB,OAAA;AACzB,qEAAmD;AAA1C,mHAAA,OAAO,OAAA;AAChB,wCAA4G;AAC5G,8CAA0E;AAC1E,mDAA8D;AAC9D,mDAAmF;AACnF,mCAAyD;AAGzD,SAAgB,eAAe;IAC7B,OAAO;QACL,OAAO,EAAE,iBAAU;QACnB,UAAU,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,IAAI,eAAQ,CAAC;YACjD,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,KAAI,EAAE,uBAAuB,EAAE,MAAM,CAAC,WAAW,EAAE;SAChF,CAAC;QACF,IAAI,EAAE,CAAC,6BAAa,CAAC;KACtB,CAAC;AACJ,CAAC;AAID,MAAM,oBAAoB,GAAG,IAAI,qBAAc,CAAsB,sBAAsB,CAAC,CAAC;AAE7F,SAAgB,0BAA0B,CAAC,UAAqC;IAC9E,OAAO;QACL,OAAO,EAAE,oBAAoB;QAC7B,UAAU;KACX,CAAC;AACJ,CAAC;AAID,MAAM,eAAe,GAAG,IAAI,qBAAc,CAAa,iBAAiB,EAAE;IACxE,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,SAAgB,qBAAqB,CACnC,UAAmE;IAEnE,OAAO;QACL,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,iBAAU;QACnB,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,MAAM,GAAG,IAAA,aAAM,EAAC,6BAAa,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,IAAA,aAAM,EAAC,eAAe,CAAC,CAAC;YAC5C,OAAO,IAAA,0BAAkB,EAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO;QACL,OAAO,EAAE,+BAAc;QACvB,UAAU,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,oBAAa,EAAE,EAAE,IAAI,EAAE,CAAC;QACxE,IAAI,EAAE,CAAC,iBAAU,CAAC;KACnB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,MAAoB;IAChD,OAAO;QACL,IAAA,0BAAmB,EAAC,6BAAY,CAAC;QACjC,IAAA,mCAAmB,EAAC,MAAM,CAAC;QAC3B,oBAAoB,EAAE;QACtB,eAAe,EAAE;KAClB,CAAA;AACH,CAAC;AAED,SAAgB,0BAA0B,CAAC,MAAoB;IAC7D,OAAO;QACL,IAAA,0BAAmB,EAAC,6BAAY,CAAC;QACjC,IAAA,mCAAmB,EAAC,MAAM,CAAC;QAC3B,oBAAoB,EAAE;QACtB,oBAAoB,EAAE;KACvB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
export declare class HasuraInterceptor implements HttpInterceptor {
|
|
4
|
+
private config;
|
|
5
|
+
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HasuraInterceptor = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@angular/core");
|
|
6
|
+
const hasura_config_1 = require("./hasura.config");
|
|
7
|
+
let HasuraInterceptor = class HasuraInterceptor {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.config = (0, core_1.inject)(hasura_config_1.HASURA_CONFIG);
|
|
10
|
+
}
|
|
11
|
+
intercept(req, next) {
|
|
12
|
+
if (req.url.startsWith(this.config.url)) {
|
|
13
|
+
return next.handle(req.clone({
|
|
14
|
+
headers: req.headers.set('x-hasura-admin-secret', this.config.adminSecret),
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
return next.handle(req);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.HasuraInterceptor = HasuraInterceptor;
|
|
21
|
+
exports.HasuraInterceptor = HasuraInterceptor = tslib_1.__decorate([
|
|
22
|
+
(0, core_1.Injectable)()
|
|
23
|
+
], HasuraInterceptor);
|
|
24
|
+
//# sourceMappingURL=hasura.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.interceptor.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.interceptor.ts"],"names":[],"mappings":";;;;AACA,wCAAmD;AAEnD,mDAAgD;AAGzC,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAAvB;QACG,WAAM,GAAG,IAAA,aAAM,EAAC,6BAAa,CAAC,CAAC;IAUzC,CAAC;IARC,SAAS,CAAC,GAAqB,EAAE,IAAiB;QAChD,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aAC3E,CAAC,CAAC,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;CACF,CAAA;AAXY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,iBAAU,GAAE;GACA,iBAAiB,CAW7B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FetchResult, OperationVariables } from "@apollo/client/core";
|
|
2
|
+
import { HasuraConverter } from "./hasura.converter";
|
|
3
|
+
import { HasuraService } from "./hasura.service";
|
|
4
|
+
import { Observable } from "rxjs";
|
|
5
|
+
export declare function makeSubscription(query: any): {
|
|
6
|
+
kind: any;
|
|
7
|
+
definitions: any;
|
|
8
|
+
};
|
|
9
|
+
export declare abstract class HasuraRepository<E extends {
|
|
10
|
+
id: string;
|
|
11
|
+
}> {
|
|
12
|
+
protected hasura: HasuraService;
|
|
13
|
+
protected abstract converter: HasuraConverter<E>;
|
|
14
|
+
readonly abstract updateColumns: string[];
|
|
15
|
+
readonly abstract tableName: string;
|
|
16
|
+
protected subscribe<T = any, TVariables extends OperationVariables = OperationVariables>({ query, variables }: {
|
|
17
|
+
query: any;
|
|
18
|
+
variables: any;
|
|
19
|
+
}): Observable<FetchResult<T>>;
|
|
20
|
+
get pkey(): string;
|
|
21
|
+
get(params: {
|
|
22
|
+
id: string;
|
|
23
|
+
}): Promise<any>;
|
|
24
|
+
get listQuery(): string;
|
|
25
|
+
list(): Promise<E[]>;
|
|
26
|
+
listChanges(): Observable<E[]>;
|
|
27
|
+
create(data: Omit<E, 'id' | 'createdAt' | 'updatedAt' | 'deletedAt'> & Partial<Pick<E, 'id'>>): Promise<E>;
|
|
28
|
+
createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]>;
|
|
29
|
+
update(data: Partial<E> & {
|
|
30
|
+
id: string;
|
|
31
|
+
}): Promise<FetchResult<any>>;
|
|
32
|
+
updateMany(data: Partial<E>[]): Promise<number>;
|
|
33
|
+
delete(id: string): Promise<FetchResult<any>>;
|
|
34
|
+
save(data: Omit<E, 'createdAt' | 'updatedAt' | 'deletedAt'>): Promise<FetchResult<any>>;
|
|
35
|
+
saveMany(entities: E[]): Promise<FetchResult<any>>;
|
|
36
|
+
deleteMany(params: {
|
|
37
|
+
id: string;
|
|
38
|
+
}[]): Promise<number>;
|
|
39
|
+
deleteAll(): Promise<FetchResult<any>>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HasuraRepository = void 0;
|
|
4
|
+
exports.makeSubscription = makeSubscription;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const core_1 = require("@angular/core");
|
|
7
|
+
const core_2 = require("@apollo/client/core");
|
|
8
|
+
const hasura_service_1 = require("./hasura.service");
|
|
9
|
+
const lodash_es_1 = require("lodash-es");
|
|
10
|
+
const rxjs_1 = require("rxjs");
|
|
11
|
+
function makeSubscription(query) {
|
|
12
|
+
const { kind, definitions } = query;
|
|
13
|
+
const subscriptionDefinitions = definitions.map((definition) => {
|
|
14
|
+
if (definition.kind === 'OperationDefinition' && definition.operation === 'query') {
|
|
15
|
+
return Object.assign(Object.assign({}, definition), { operation: 'subscription' });
|
|
16
|
+
}
|
|
17
|
+
return definition;
|
|
18
|
+
});
|
|
19
|
+
return { kind, definitions: subscriptionDefinitions };
|
|
20
|
+
}
|
|
21
|
+
;
|
|
22
|
+
let HasuraRepository = class HasuraRepository {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.hasura = (0, core_1.inject)(hasura_service_1.HasuraService);
|
|
25
|
+
}
|
|
26
|
+
subscribe({ query, variables }) {
|
|
27
|
+
return this.hasura.getApolloClient().pipe((0, rxjs_1.switchMap)((client) => client.subscribe({
|
|
28
|
+
query: makeSubscription(query),
|
|
29
|
+
variables: variables,
|
|
30
|
+
})));
|
|
31
|
+
}
|
|
32
|
+
get pkey() {
|
|
33
|
+
return `${this.tableName}_pkey`;
|
|
34
|
+
}
|
|
35
|
+
get(params) {
|
|
36
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const queryName = `${this.tableName}_by_pk`;
|
|
38
|
+
return (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient()).then((client) => client.query({
|
|
39
|
+
query: (0, core_2.gql) `query get($id: String!) {
|
|
40
|
+
${queryName}(id: $id) {
|
|
41
|
+
${this.updateColumns.join(' ')}
|
|
42
|
+
}
|
|
43
|
+
}`,
|
|
44
|
+
variables: params,
|
|
45
|
+
})).then((res => res.data[queryName])).then(data => data ? this.converter.fromHasura(data) : data);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
get listQuery() {
|
|
49
|
+
return `query list {
|
|
50
|
+
${this.tableName} {
|
|
51
|
+
${this.updateColumns.join(' ')}
|
|
52
|
+
}
|
|
53
|
+
}`;
|
|
54
|
+
}
|
|
55
|
+
list() {
|
|
56
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
58
|
+
return client.query({
|
|
59
|
+
query: (0, core_2.gql) `${this.listQuery}`,
|
|
60
|
+
}).then(res => this.converter.fromHasuraMany(res.data[this.tableName]));
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
listChanges() {
|
|
64
|
+
return this.subscribe({
|
|
65
|
+
query: (0, core_2.gql) `${this.listQuery}`,
|
|
66
|
+
variables: {},
|
|
67
|
+
}).pipe((0, rxjs_1.map)(res => this.converter.fromHasuraMany(res.data[this.tableName])));
|
|
68
|
+
}
|
|
69
|
+
create(data) {
|
|
70
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const mutationName = `insert_${this.tableName}`;
|
|
72
|
+
const mutation = (0, core_2.gql) `mutation create($object: ${this.tableName}_insert_input!) {
|
|
73
|
+
${mutationName}(objects: [$object]) {
|
|
74
|
+
affected_rows
|
|
75
|
+
returning {
|
|
76
|
+
${this.updateColumns.join(' ')}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}`;
|
|
80
|
+
const object = (0, lodash_es_1.omitBy)((0, lodash_es_1.omit)(this.converter.toHasura(data), ['createdAt', 'updatedAt', 'created_at', 'updated_at']), value => typeof value === 'undefined');
|
|
81
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
82
|
+
return client.mutate({
|
|
83
|
+
mutation,
|
|
84
|
+
variables: { object },
|
|
85
|
+
}).then(result => {
|
|
86
|
+
return this.converter.fromHasura(result.data[mutationName].returning[0]);
|
|
87
|
+
}).catch(error => {
|
|
88
|
+
console.error(error.graphQLErrors);
|
|
89
|
+
throw error;
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
createMany(data) {
|
|
94
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const mutationName = `insert_${this.tableName}`;
|
|
96
|
+
const objects = data.map((item) => this.converter.toHasura(item));
|
|
97
|
+
const mutation = (0, core_2.gql) `
|
|
98
|
+
mutation createMany($objects: [${this.tableName}_insert_input!]!) {
|
|
99
|
+
${mutationName}(objects: $objects) {
|
|
100
|
+
returning {
|
|
101
|
+
${this.updateColumns.join(" ")}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`;
|
|
106
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
107
|
+
return client.mutate({
|
|
108
|
+
mutation,
|
|
109
|
+
variables: { objects },
|
|
110
|
+
}).then((result) => this.converter.fromHasuraMany(result.data[mutationName].returning)).catch((error) => {
|
|
111
|
+
console.error(error.graphQLErrors);
|
|
112
|
+
throw error;
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
update(data) {
|
|
117
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const mutation = (0, core_2.gql) `mutation update($id: String!, $object: ${this.tableName}_set_input!) {
|
|
119
|
+
update_${this.tableName}(where: {id: {_eq: $id}}, _set: $object) { affected_rows }
|
|
120
|
+
}`;
|
|
121
|
+
const fields = Object.keys(data).map(lodash_es_1.snakeCase);
|
|
122
|
+
const object = (0, lodash_es_1.omitBy)((0, lodash_es_1.omit)((0, lodash_es_1.pick)(this.converter.toHasura(data), fields), ['createdAt', 'updatedAt', 'created_at', 'updated_at']), value => typeof value === 'undefined');
|
|
123
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
124
|
+
console.debug('[Hasura Repository] update:', object);
|
|
125
|
+
return client.mutate({
|
|
126
|
+
mutation,
|
|
127
|
+
variables: {
|
|
128
|
+
id: data.id,
|
|
129
|
+
object,
|
|
130
|
+
},
|
|
131
|
+
}).catch(error => {
|
|
132
|
+
console.error(error.graphQLErrors);
|
|
133
|
+
throw error;
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
updateMany(data) {
|
|
138
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const mutationName = `update_${this.tableName}_many`;
|
|
140
|
+
const objects = data.map((item) => {
|
|
141
|
+
const fields = Object.keys(item).map(lodash_es_1.snakeCase);
|
|
142
|
+
const object = (0, lodash_es_1.pick)(this.converter.toHasura(item), fields);
|
|
143
|
+
return { where: { id: { _eq: item.id } }, _set: object };
|
|
144
|
+
});
|
|
145
|
+
const mutation = (0, core_2.gql) `
|
|
146
|
+
mutation ${mutationName}($objects: [${this.tableName}_updates!]!) {
|
|
147
|
+
${mutationName}(updates: $objects) {
|
|
148
|
+
affected_rows
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
`;
|
|
152
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
153
|
+
return client
|
|
154
|
+
.mutate({ mutation, variables: { objects } })
|
|
155
|
+
.then((result) => result.data[mutationName].affected_rows)
|
|
156
|
+
.catch((error) => {
|
|
157
|
+
console.error(error.graphQLErrors);
|
|
158
|
+
throw error;
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
delete(id) {
|
|
163
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
165
|
+
return client.mutate({
|
|
166
|
+
mutation: (0, core_2.gql) `mutation delete($id: String!) {
|
|
167
|
+
delete_${this.tableName}(where: {id: {_eq: $id}}) { affected_rows }
|
|
168
|
+
}`,
|
|
169
|
+
variables: { id },
|
|
170
|
+
}).catch(error => {
|
|
171
|
+
console.error(error.graphQLErrors);
|
|
172
|
+
throw error;
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
save(data) {
|
|
177
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
const object = (0, lodash_es_1.omit)(this.converter.toHasura(data), ['createdAt', 'updatedAt']);
|
|
179
|
+
const query = (0, core_2.gql) `mutation upsert($object: [${this.tableName}_insert_input!]!) {
|
|
180
|
+
insert_${this.tableName}(
|
|
181
|
+
objects: $object,
|
|
182
|
+
on_conflict: {
|
|
183
|
+
constraint: ${this.pkey},
|
|
184
|
+
update_columns: [${this.updateColumns}]
|
|
185
|
+
}
|
|
186
|
+
) { affected_rows }
|
|
187
|
+
}`;
|
|
188
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
189
|
+
console.debug('[Hasura Repository] save:', client);
|
|
190
|
+
return client.mutate({
|
|
191
|
+
mutation: query,
|
|
192
|
+
variables: {
|
|
193
|
+
object: object,
|
|
194
|
+
},
|
|
195
|
+
}).catch(error => {
|
|
196
|
+
console.error(error.graphQLErrors);
|
|
197
|
+
throw error;
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
saveMany(entities) {
|
|
202
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
const query = (0, core_2.gql) `mutation upsert($objects: [${this.tableName}_insert_input!]!) {
|
|
204
|
+
insert_${this.tableName}(
|
|
205
|
+
objects: $objects,
|
|
206
|
+
on_conflict: {
|
|
207
|
+
constraint: ${this.pkey},
|
|
208
|
+
update_columns: [${this.updateColumns}]
|
|
209
|
+
}
|
|
210
|
+
) { affected_rows }
|
|
211
|
+
}`;
|
|
212
|
+
const objects = entities.map(entity => this.converter.toHasura(entity));
|
|
213
|
+
console.debug('[Hasura Repository] objects:', objects);
|
|
214
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
215
|
+
return client.mutate({
|
|
216
|
+
mutation: query,
|
|
217
|
+
variables: { objects },
|
|
218
|
+
}).catch(error => {
|
|
219
|
+
console.error(error);
|
|
220
|
+
// console.error(error.graphQLErrors?.[0]?.extensions?.internal);
|
|
221
|
+
throw error;
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
deleteMany(params) {
|
|
226
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
const mutationName = `delete_${this.tableName}`;
|
|
228
|
+
const mutation = (0, core_2.gql) `
|
|
229
|
+
mutation deleteMany($ids: [String!]!) {
|
|
230
|
+
${mutationName}(where: {id: {_in: $ids}}) {
|
|
231
|
+
affected_rows
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
`;
|
|
235
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
236
|
+
return client.mutate({
|
|
237
|
+
mutation,
|
|
238
|
+
variables: { ids: params.map(param => param.id) },
|
|
239
|
+
}).then((result) => result.data[mutationName].affected_rows).catch((error) => {
|
|
240
|
+
console.error(error.graphQLErrors);
|
|
241
|
+
throw error;
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
deleteAll() {
|
|
246
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
247
|
+
const client = yield (0, rxjs_1.lastValueFrom)(this.hasura.getApolloClient());
|
|
248
|
+
return client.mutate({
|
|
249
|
+
mutation: (0, core_2.gql) `mutation delete_all {
|
|
250
|
+
delete_${this.tableName} (where: {}) { affected_rows }
|
|
251
|
+
}`,
|
|
252
|
+
variables: {},
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
exports.HasuraRepository = HasuraRepository;
|
|
258
|
+
exports.HasuraRepository = HasuraRepository = tslib_1.__decorate([
|
|
259
|
+
(0, core_1.Injectable)()
|
|
260
|
+
], HasuraRepository);
|
|
261
|
+
//# sourceMappingURL=hasura.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.repository.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Apollo } from "apollo-angular";
|
|
2
|
+
import { ApolloClient } from "@apollo/client/core";
|
|
3
|
+
import { Observable } from "rxjs";
|
|
4
|
+
import { ApolloMultiService } from "./apollo-multi.service";
|
|
5
|
+
export declare class HasuraService {
|
|
6
|
+
private http;
|
|
7
|
+
readonly apollo: Apollo;
|
|
8
|
+
readonly config: import("./hasura.config").HasuraConfig;
|
|
9
|
+
readonly apolloMulti: ApolloMultiService;
|
|
10
|
+
readonly _getApolloClient: import("./apollo-multi.service").GetApolloClient<any>;
|
|
11
|
+
getApolloClient(): Observable<ApolloClient<any>>;
|
|
12
|
+
graphql<T = any>(args: {
|
|
13
|
+
query: string;
|
|
14
|
+
variables?: object;
|
|
15
|
+
}): Observable<T>;
|
|
16
|
+
post<T>(endpoint: string, body: object): Observable<T>;
|
|
17
|
+
delete<T>(endpoint: string): Observable<T>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HasuraService = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const http_1 = require("@angular/common/http");
|
|
6
|
+
const core_1 = require("@angular/core");
|
|
7
|
+
const apollo_angular_1 = require("apollo-angular");
|
|
8
|
+
const hasura_config_1 = require("./hasura.config");
|
|
9
|
+
const rxjs_1 = require("rxjs");
|
|
10
|
+
const apollo_multi_service_1 = require("./apollo-multi.service");
|
|
11
|
+
let HasuraService = class HasuraService {
|
|
12
|
+
constructor() {
|
|
13
|
+
var _a;
|
|
14
|
+
this.http = (0, core_1.inject)(http_1.HttpClient);
|
|
15
|
+
this.apollo = (0, core_1.inject)(apollo_angular_1.Apollo);
|
|
16
|
+
this.config = (0, core_1.inject)(hasura_config_1.HASURA_CONFIG);
|
|
17
|
+
this.apolloMulti = (0, core_1.inject)(apollo_multi_service_1.ApolloMultiService);
|
|
18
|
+
this._getApolloClient = (_a = apollo_multi_service_1.GET_APOLLO_CLIENT.inject()) !== null && _a !== void 0 ? _a : (() => this.apollo.client);
|
|
19
|
+
}
|
|
20
|
+
getApolloClient() {
|
|
21
|
+
const clientOrObsOrPromise = this._getApolloClient(this.config);
|
|
22
|
+
if ((0, rxjs_1.isObservable)(clientOrObsOrPromise)) {
|
|
23
|
+
return clientOrObsOrPromise;
|
|
24
|
+
}
|
|
25
|
+
else if (clientOrObsOrPromise instanceof Promise) {
|
|
26
|
+
return (0, rxjs_1.from)(clientOrObsOrPromise);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return (0, rxjs_1.of)(clientOrObsOrPromise);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
graphql(args) {
|
|
33
|
+
return this.post('/v1/graphql', {
|
|
34
|
+
query: args.query,
|
|
35
|
+
variables: args.variables,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
post(endpoint, body) {
|
|
39
|
+
return this.http.post(`${this.config.url}${endpoint}`, body, {});
|
|
40
|
+
}
|
|
41
|
+
delete(endpoint) {
|
|
42
|
+
return this.http.delete(`${this.config.url}${endpoint}`);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.HasuraService = HasuraService;
|
|
46
|
+
exports.HasuraService = HasuraService = tslib_1.__decorate([
|
|
47
|
+
(0, core_1.Injectable)({ providedIn: 'root' })
|
|
48
|
+
], HasuraService);
|
|
49
|
+
//# sourceMappingURL=hasura.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasura.service.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/hasura.service.ts"],"names":[],"mappings":";;;;AAAA,+CAAkD;AAClD,wCAAmD;AACnD,mDAAwC;AACxC,mDAAgD;AAEhD,+BAA0D;AAC1D,iEAA+E;AAIxE,IAAM,aAAa,GAAnB,MAAM,aAAa;IAAnB;;QACG,SAAI,GAAG,IAAA,aAAM,EAAC,iBAAU,CAAC,CAAC;QACzB,WAAM,GAAG,IAAA,aAAM,EAAC,uBAAM,CAAC,CAAC;QACxB,WAAM,GAAG,IAAA,aAAM,EAAC,6BAAa,CAAC,CAAC;QAC/B,gBAAW,GAAG,IAAA,aAAM,EAAC,yCAAkB,CAAC,CAAC;QACzC,qBAAgB,GAAG,MAAA,wCAAiB,CAAC,MAAM,EAAE,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IA2BvF,CAAC;IAzBC,eAAe;QACb,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,IAAA,mBAAY,EAAC,oBAAoB,CAAC,EAAE,CAAC;YACvC,OAAO,oBAAoB,CAAC;QAC9B,CAAC;aAAM,IAAI,oBAAoB,YAAY,OAAO,EAAE,CAAC;YACnD,OAAO,IAAA,WAAI,EAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,IAAA,SAAE,EAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,CAAU,IAAyC;QACxD,OAAO,IAAI,CAAC,IAAI,CAAI,aAAa,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAI,QAAgB,EAAE,IAAY;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAI,QAAgB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAhCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,iBAAU,EAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAC;GACpB,aAAa,CAgCzB"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './apollo-multi.service';
|
|
2
|
+
export * from './decorators';
|
|
3
|
+
export * from './hasura.config';
|
|
4
|
+
export * from './hasura.converter';
|
|
5
|
+
export * from './hasura.di';
|
|
6
|
+
export * from './hasura.interceptor';
|
|
7
|
+
export * from './hasura.repository';
|
|
8
|
+
export * from './hasura.service';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./apollo-multi.service"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./decorators"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./hasura.config"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./hasura.converter"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./hasura.di"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./hasura.interceptor"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./hasura.repository"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./hasura.service"), exports);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,uDAA6B;AAC7B,0DAAgC;AAChC,6DAAmC;AACnC,sDAA4B;AAC5B,+DAAqC;AACrC,8DAAoC;AACpC,2DAAiC"}
|
package/lib/links.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WebSocketLink } from "@apollo/client/link/ws";
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
type PromiseOrObservable<T> = Promise<T> | Observable<T> | T;
|
|
4
|
+
export type GetHeaders = () => PromiseOrObservable<Record<string, string>>;
|
|
5
|
+
export declare function resolve(getHeaders: GetHeaders): Promise<Record<string, string>>;
|
|
6
|
+
export declare function buildWebsocketLink(endpoint: string, getHeaders: GetHeaders): WebSocketLink;
|
|
7
|
+
export {};
|
package/lib/links.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolve = resolve;
|
|
4
|
+
exports.buildWebsocketLink = buildWebsocketLink;
|
|
5
|
+
const ws_1 = require("@apollo/client/link/ws");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
function wrap(token) {
|
|
8
|
+
return (0, rxjs_1.isObservable)(token) ? token : token instanceof Promise ? (0, rxjs_1.from)(token) : (0, rxjs_1.of)(token);
|
|
9
|
+
}
|
|
10
|
+
function resolve(getHeaders) {
|
|
11
|
+
const headers = wrap(getHeaders());
|
|
12
|
+
return (0, rxjs_1.firstValueFrom)(headers.pipe((0, rxjs_1.filter)((headers) => !!headers), (0, rxjs_1.distinctUntilChanged)(), (0, rxjs_1.tap)((headers) => console.debug('[resolve] headers:', headers))));
|
|
13
|
+
}
|
|
14
|
+
function buildWebsocketLink(endpoint, getHeaders) {
|
|
15
|
+
return new ws_1.WebSocketLink({
|
|
16
|
+
uri: endpoint.replace('http', 'ws'),
|
|
17
|
+
options: {
|
|
18
|
+
reconnect: true,
|
|
19
|
+
connectionParams: () => resolve(getHeaders).then((headers) => ({ headers })),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=links.js.map
|
package/lib/links.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/links.ts"],"names":[],"mappings":";;AAUA,0BAOC;AAED,gDAQC;AA3BD,+CAAuD;AACvD,+BAA6G;AAK7G,SAAS,IAAI,CAAI,KAAqC;IACpD,OAAO,IAAA,mBAAY,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,SAAgB,OAAO,CAAC,UAAsB;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnC,OAAO,IAAA,qBAAc,EAAC,OAAO,CAAC,IAAI,CAChC,IAAA,aAAM,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9B,IAAA,2BAAoB,GAAE,EACtB,IAAA,UAAG,EAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAC/D,CAAC,CAAA;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,UAAsB;IACzE,OAAO,IAAI,kBAAa,CAAC;QACvB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACnC,OAAO,EAAE;YACP,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SAC7E;KACF,CAAC,CAAC;AACL,CAAC"}
|