@nx-ddd/hasura 19.0.0-preview.29 → 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.
Files changed (53) hide show
  1. package/README.md +11 -0
  2. package/package.json +6 -20
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +5 -0
  5. package/src/index.js.map +1 -0
  6. package/{apollo-multi.service.d.ts → src/lib/apollo-multi.service.d.ts} +8 -4
  7. package/src/lib/apollo-multi.service.js +52 -0
  8. package/src/lib/apollo-multi.service.js.map +1 -0
  9. package/src/lib/decorators.js +50 -0
  10. package/src/lib/decorators.js.map +1 -0
  11. package/src/lib/hasura.config.js +15 -0
  12. package/src/lib/hasura.config.js.map +1 -0
  13. package/src/lib/hasura.converter.d.ts +24 -0
  14. package/src/lib/hasura.converter.js +82 -0
  15. package/src/lib/hasura.converter.js.map +1 -0
  16. package/{hasura.di.d.ts → src/lib/hasura.di.d.ts} +2 -2
  17. package/src/lib/hasura.di.js +79 -0
  18. package/src/lib/hasura.di.js.map +1 -0
  19. package/{hasura.interceptor.d.ts → src/lib/hasura.interceptor.d.ts} +0 -3
  20. package/src/lib/hasura.interceptor.js +24 -0
  21. package/src/lib/hasura.interceptor.js.map +1 -0
  22. package/src/lib/hasura.repository.d.ts +40 -0
  23. package/src/lib/hasura.repository.js +261 -0
  24. package/src/lib/hasura.repository.js.map +1 -0
  25. package/src/lib/hasura.service.d.ts +18 -0
  26. package/src/lib/hasura.service.js +49 -0
  27. package/src/lib/hasura.service.js.map +1 -0
  28. package/{index.d.ts → src/lib/index.d.ts} +0 -1
  29. package/src/lib/index.js +12 -0
  30. package/src/lib/index.js.map +1 -0
  31. package/src/lib/links.js +23 -0
  32. package/src/lib/links.js.map +1 -0
  33. package/builders/index.d.ts +0 -2
  34. package/builders/parts/_meta/graphql-query-part.d.ts +0 -12
  35. package/builders/parts/mutations/create.builder.d.ts +0 -13
  36. package/builders/parts/mutations/delete.builder.d.ts +0 -12
  37. package/builders/parts/mutations/index.d.ts +0 -5
  38. package/builders/parts/mutations/mutations.builder.d.ts +0 -14
  39. package/builders/parts/mutations/save.builder.d.ts +0 -21
  40. package/builders/parts/mutations/update.builder.d.ts +0 -13
  41. package/builders/parts/parts.builder.d.ts +0 -10
  42. package/builders/parts/queries/get.builder.d.ts +0 -9
  43. package/builders/parts/queries/index.d.ts +0 -2
  44. package/builders/parts/queries/queries.builder.d.ts +0 -16
  45. package/builders/query-builder.d.ts +0 -15
  46. package/fesm2022/nx-ddd-hasura.mjs +0 -707
  47. package/fesm2022/nx-ddd-hasura.mjs.map +0 -1
  48. package/hasura.converter.d.ts +0 -37
  49. package/hasura.repository.d.ts +0 -40
  50. package/hasura.service.d.ts +0 -32
  51. /package/{decorators.d.ts → src/lib/decorators.d.ts} +0 -0
  52. /package/{hasura.config.d.ts → src/lib/hasura.config.d.ts} +0 -0
  53. /package/{links.d.ts → src/lib/links.d.ts} +0 -0
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # hasura
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build hasura` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test hasura` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json CHANGED
@@ -1,23 +1,9 @@
1
1
  {
2
2
  "name": "@nx-ddd/hasura",
3
- "version": "19.0.0-preview.29",
4
- "license": "MIT",
5
- "peerDependencies": {
6
- "@nx-ddd/core": "19.0.0-preview.29"
7
- },
8
- "dependencies": {
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
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -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: import("@nx-ddd/core").DiToken<GetApolloClient<any>>;
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":"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"}
@@ -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
+ }