@nx-ddd/hasura 19.0.0-preview.28 → 19.0.0-preview.5
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/package.json +6 -20
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/{apollo-multi.service.d.ts → src/lib/apollo-multi.service.d.ts} +8 -4
- package/src/lib/apollo-multi.service.js +52 -0
- package/src/lib/apollo-multi.service.js.map +1 -0
- package/src/lib/decorators.js +50 -0
- package/src/lib/decorators.js.map +1 -0
- package/src/lib/hasura.config.js +15 -0
- package/src/lib/hasura.config.js.map +1 -0
- package/src/lib/hasura.converter.d.ts +24 -0
- package/src/lib/hasura.converter.js +82 -0
- package/src/lib/hasura.converter.js.map +1 -0
- package/{hasura.di.d.ts → src/lib/hasura.di.d.ts} +2 -2
- package/src/lib/hasura.di.js +79 -0
- package/src/lib/hasura.di.js.map +1 -0
- package/{hasura.interceptor.d.ts → src/lib/hasura.interceptor.d.ts} +0 -3
- package/src/lib/hasura.interceptor.js +24 -0
- package/src/lib/hasura.interceptor.js.map +1 -0
- package/src/lib/hasura.repository.d.ts +40 -0
- package/src/lib/hasura.repository.js +261 -0
- package/src/lib/hasura.repository.js.map +1 -0
- package/src/lib/hasura.service.d.ts +18 -0
- package/src/lib/hasura.service.js +49 -0
- package/src/lib/hasura.service.js.map +1 -0
- package/{index.d.ts → src/lib/index.d.ts} +0 -1
- package/src/lib/index.js +12 -0
- package/src/lib/index.js.map +1 -0
- package/src/lib/links.js +23 -0
- package/src/lib/links.js.map +1 -0
- package/builders/index.d.ts +0 -2
- package/builders/parts/_meta/graphql-query-part.d.ts +0 -12
- package/builders/parts/mutations/create.builder.d.ts +0 -13
- package/builders/parts/mutations/delete.builder.d.ts +0 -12
- package/builders/parts/mutations/index.d.ts +0 -5
- package/builders/parts/mutations/mutations.builder.d.ts +0 -14
- package/builders/parts/mutations/save.builder.d.ts +0 -21
- package/builders/parts/mutations/update.builder.d.ts +0 -13
- package/builders/parts/parts.builder.d.ts +0 -10
- package/builders/parts/queries/get.builder.d.ts +0 -9
- package/builders/parts/queries/index.d.ts +0 -2
- package/builders/parts/queries/queries.builder.d.ts +0 -16
- package/builders/query-builder.d.ts +0 -15
- package/fesm2022/nx-ddd-hasura.mjs +0 -707
- package/fesm2022/nx-ddd-hasura.mjs.map +0 -1
- package/hasura.converter.d.ts +0 -37
- package/hasura.repository.d.ts +0 -40
- package/hasura.service.d.ts +0 -32
- /package/{decorators.d.ts → src/lib/decorators.d.ts} +0 -0
- /package/{hasura.config.d.ts → src/lib/hasura.config.d.ts} +0 -0
- /package/{links.d.ts → src/lib/links.d.ts} +0 -0
package/README.md
ADDED
package/package.json
CHANGED
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nx-ddd/hasura",
|
|
3
|
-
"version": "19.0.0-preview.
|
|
4
|
-
"
|
|
5
|
-
"peerDependencies": {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"tslib": "^2.3.0"
|
|
10
|
-
},
|
|
11
|
-
"module": "fesm2022/nx-ddd-hasura.mjs",
|
|
12
|
-
"typings": "index.d.ts",
|
|
13
|
-
"exports": {
|
|
14
|
-
"./package.json": {
|
|
15
|
-
"default": "./package.json"
|
|
16
|
-
},
|
|
17
|
-
".": {
|
|
18
|
-
"types": "./index.d.ts",
|
|
19
|
-
"default": "./fesm2022/nx-ddd-hasura.mjs"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"sideEffects": false
|
|
3
|
+
"version": "19.0.0-preview.5",
|
|
4
|
+
"dependencies": {},
|
|
5
|
+
"peerDependencies": {},
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
7
|
+
"main": "./src/index.js",
|
|
8
|
+
"type": "commonjs"
|
|
23
9
|
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
package/src/index.js
ADDED
package/src/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"}
|
|
@@ -4,16 +4,20 @@ import { HttpLink } from 'apollo-angular/http';
|
|
|
4
4
|
import { ApolloClient } from "@apollo/client/core";
|
|
5
5
|
import { Observable } from "rxjs";
|
|
6
6
|
import { GetHeaders } from "./links";
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
7
|
export declare class ApolloMultiService {
|
|
9
8
|
readonly apollo: Apollo;
|
|
10
9
|
readonly httpLink: HttpLink;
|
|
11
10
|
protected createClient(name: string, baseUrl: string, getHeaders: GetHeaders): void;
|
|
12
11
|
getClient(endpoint: string, getHeaders: GetHeaders): ApolloBase;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ApolloMultiService, never>;
|
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ApolloMultiService>;
|
|
15
12
|
}
|
|
16
13
|
export type GetApolloClient<E extends {
|
|
17
14
|
id: string;
|
|
18
15
|
}> = (config: HasuraConfig) => ApolloClient<E> | Promise<ApolloClient<E>> | Observable<ApolloClient<E>>;
|
|
19
|
-
export declare const GET_APOLLO_CLIENT:
|
|
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,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,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":";;;AAaA,oDASC;AAED,oDASC;AAED,gCAEC;AAED,4BAMC;AAED,sCAeC;;AA9DD,6CAA0D;AAC1D,yCAAyE;AACzE,4CAA6D;AAE7D,0DAA0B;AAS1B,SAAgB,oBAAoB,CAAC,GAAQ;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,IAAA,oBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,mBAAO,EAAC,IAAA,qBAAS,EAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAC9D,IAAA,qBAAS,EAAC,GAAG,CAAC,CACf,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,oBAAoB,CAAC,GAAQ;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,IAAA,oBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,IAAA,mBAAO,EAAC,IAAA,qBAAS,EAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAC9D,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,UAAU,CAAmB,OAAe,EAAE,IAAyB;IACrF,OAAO,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,QAAQ,CAAC,MAAc,EAAE,IAAS,EAAE,EAClD,SAAS,GAAG,oBAAoB,KAG9B,EAAG;IACL,OAAO,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,aAAa,CAAmB,IAAgB;IAC9D,OAAO;QACL,QAAQ,CAAC,MAAS;YAChB,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,YAAY,CAAC,QAAa;YACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,UAAU,CAAC,MAAc;YACvB,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,CAAM,CAAC;QACvC,CAAC;QACD,cAAc,CAAC,QAAkB;YAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAa,WAAW;IACtB,MAAM,CAAC,WAAW,CAAC,IAAwB;QACzC,IAAI,CAAC,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,UAAU,CAAmB,OAAe,EAAE,IAAyB;QAC5E,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAA,+BAAwB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAS,EAAE,EACzC,SAAS,GAAG,oBAAoB,KAG9B,EAAG;QACL,MAAM,MAAM,GAAG,IAAA,uCAA0B,EAItC,IAAI,CAAC,CAAC;QACT,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE;YACnE,MAAM,KAAK,GAAG,IAAA,eAAG,EAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;YAChD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,MAAM,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAG;gBAC7C,KAAK,WAAW,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAG;gBACpE,KAAK,SAAS,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG;gBACtF,KAAK,SAAS,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAG;gBACtF,KAAK,MAAM,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAG;gBAC7C,KAAK,KAAK,CAAC,CAAC,yBAAW,GAAG,EAAE;gBAC5B,OAAO,CAAC,CAAC,uCAAY,GAAG,KAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAG;YAC3C,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;CACF;AAnCD,kCAmCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { DeepPartial } from '@nx-ddd/common/domain';
|
|
2
|
-
export { TransformToDayjs } from '@nx-ddd/common/domain';
|
|
1
|
+
export { DeepPartial } from '@nx-ddd/common/domain/models';
|
|
2
|
+
export { TransformToDayjs } from '@nx-ddd/common/domain/models';
|
|
3
3
|
export { IsDayjs } from 'class-validator-extended';
|
|
4
4
|
import { EnvironmentProviders, InjectionToken, Provider } from '@angular/core';
|
|
5
5
|
import { ApolloLink, HttpLink, InMemoryCache } from '@apollo/client/core';
|
|
@@ -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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from "@angular/common/http";
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class HasuraInterceptor implements HttpInterceptor {
|
|
5
4
|
private config;
|
|
6
5
|
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
7
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<HasuraInterceptor, never>;
|
|
8
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<HasuraInterceptor>;
|
|
9
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
|
+
}
|