@nx-ddd/hasura 19.0.0-preview.35 → 19.0.0-preview.36

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.
@@ -172,9 +172,11 @@ function deepSnakeToCamelCase(obj) {
172
172
  return obj;
173
173
  if (obj && typeof obj === "object") {
174
174
  const result = {};
175
- for (const key in obj)
176
- if (Object.prototype.hasOwnProperty.call(obj, key))
175
+ for (const key in obj) {
176
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
177
177
  result[camelCase(key)] = deepSnakeToCamelCase(obj[key]);
178
+ }
179
+ }
178
180
  return result;
179
181
  }
180
182
  return obj;
@@ -1 +1 @@
1
- {"version":3,"file":"nx-ddd-hasura.mjs","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/links.ts","../../../../../packages/@nx-ddd/hasura/src/lib/apollo-multi.service.ts","../../../../../packages/@nx-ddd/hasura/src/lib/decorators.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.interceptor.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.config.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.converter.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.di.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/queries/get.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/queries/queries.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/create.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/delete.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/save.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/update.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/mutations.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/parts.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/query-builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.service.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.repository.ts","../../../../../packages/@nx-ddd/hasura/src/lib/nx-ddd-hasura.ts"],"sourcesContent":["import { WebSocketLink } from \"@apollo/client/link/ws\";\nimport { distinctUntilChanged, filter, from, isObservable, lastValueFrom, Observable, of, take, tap } from 'rxjs';\n\ntype PromiseOrObservable<T> = Promise<T> | Observable<T> | T;\nexport type GetHeaders = () => PromiseOrObservable<Record<string, string>>;\n\nfunction wrap<T>(token: Promise<T> | Observable<T> | T): Observable<T> {\n return isObservable(token) ? token : token instanceof Promise ? from(token) : of(token);\n}\n\nexport function resolve(getHeaders: GetHeaders): Promise<Record<string, string>> {\n const headers$ = wrap(getHeaders());\n return lastValueFrom(headers$.pipe(\n filter((headers) => !!headers),\n take(1),\n distinctUntilChanged(),\n tap((headers) => console.debug('[resolve] headers:', headers)),\n ))\n}\n\nexport function buildWebsocketLink(endpoint: string, getHeaders: GetHeaders) {\n return new WebSocketLink({\n uri: endpoint.replace('http', 'ws'),\n options: {\n reconnect: true,\n connectionParams: () => resolve(getHeaders).then((headers) => ({ headers })),\n },\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { Apollo, ApolloBase } from \"apollo-angular\";\nimport { HasuraConfig } from \"./hasura.config\";\nimport { HttpLink } from 'apollo-angular/http';\nimport { InMemoryCache } from \"@apollo/client/cache\";\nimport { setContext } from '@apollo/client/link/context';\nimport { ApolloClient, ApolloLink, DocumentNode, split } from \"@apollo/client/core\";\nimport { getMainDefinition } from \"@apollo/client/utilities\";\nimport { makeDI } from \"@nx-ddd/core\";\nimport { Observable } from \"rxjs\";\nimport { buildWebsocketLink, GetHeaders, resolve } from \"./links\";\n\nfunction isSubscription(query: DocumentNode) {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApolloMultiService {\n readonly apollo = inject(Apollo);\n readonly httpLink = inject(HttpLink);\n\n protected createClient(name: string, baseUrl: string, getHeaders: GetHeaders) {\n const wsLink = buildWebsocketLink(baseUrl, getHeaders);\n const link = split(\n ({ query }) => isSubscription(query),\n wsLink,\n ApolloLink.from([\n setContext(async () => {\n const headers = await resolve(getHeaders);\n return { headers }\n }),\n this.httpLink.create({ uri: baseUrl, }),\n ])\n );\n\n this.apollo.removeClient(name);\n this.apollo.createNamed(name, { link, cache: new InMemoryCache() });\n }\n\n getClient(endpoint: string, getHeaders: GetHeaders): ApolloBase {\n const name = endpoint;\n let client = this.apollo.use(name);\n console.debug('[ApolloMultiService] getClient:', name);\n if (!client) {\n this.createClient(name, endpoint, getHeaders);\n client = this.apollo.use(name);\n }\n return client;\n }\n}\n\n\nexport type GetApolloClient<E extends {id: string}> = (config: HasuraConfig) => ApolloClient<E> | Promise<ApolloClient<E>> | Observable<ApolloClient<E>>;\nexport const GET_APOLLO_CLIENT = makeDI<GetApolloClient<any>>('GET_APOLLO_CLIENT');","import { makeDecoratorFactories } from \"@nx-ddd/core\";\nimport { camelCase, snakeCase } from 'lodash-es';\n\nconst {\n createDecorator,\n getAnnotations,\n} = makeDecoratorFactories(\n (type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }),\n '[@nx-ddd/hasura] annotations'\n);\n\nexport function getFlattenFieldAnnotations<Annotation>(T: any, prefix: string = ''): Record<string, Annotation> {\n const annotations = Hasura.getAnnotations(T);\n return (annotations ?? []).reduce((acc, annotation) => {\n const currentKey = prefix ? camelCase(`${prefix}_${annotation.fieldName}`) : annotation.fieldName;\n if (annotation.childType) {\n return {\n ...acc,\n ...getFlattenFieldAnnotations(annotation.childType(), currentKey)\n };\n }\n return {\n ...acc,\n [currentKey]: annotation\n };\n }, {});\n}\n\nexport function getFields(T: any, options: {\n prefix?: string;\n case?: 'snake' | 'camel';\n} = {\n prefix: '',\n case: 'snake'\n}): string[] {\n const annotations = Hasura.getAnnotations(T);\n const changeCase = options?.case === 'snake' ? snakeCase : camelCase;\n const fields = (annotations ?? []).flatMap((annotation) => {\n const currentKey = changeCase(options?.prefix ? `${options?.prefix}_${annotation.fieldName}` : annotation.fieldName);\n if (annotation.childType) {\n return [\n ...getFields(annotation.childType(), {\n prefix: currentKey,\n case: options?.case,\n })\n ];\n }\n return [currentKey];\n });\n return fields;\n}\n\nexport const Hasura = {\n Text: createDecorator('text'),\n Timestamp: createDecorator('timestamp'),\n Date: createDecorator('date'),\n Integer: createDecorator('integer'),\n Numeric: createDecorator('numeric'),\n Boolean: createDecorator('boolean'),\n Map: (childType: () => any) => createDecorator('map', {childType})(),\n JSON: createDecorator('json'),\n getAnnotations,\n};\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { HASURA_CONFIG } from \"./hasura.config\";\n\n@Injectable()\nexport class HasuraInterceptor implements HttpInterceptor {\n private config = inject(HASURA_CONFIG);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.url.startsWith(this.config.url)) {\n return next.handle(req.clone({\n headers: req.headers.set('x-hasura-admin-secret', this.config.adminSecret),\n }));\n }\n return next.handle(req);\n }\n}","import { HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { InjectionToken } from \"@angular/core\";\nimport { Provider } from \"@angular/core\";\nimport { HasuraInterceptor } from \"./hasura.interceptor\";\n\nexport interface HasuraConfig {\n adminSecret?: string;\n url: string;\n}\n\nexport const HASURA_CONFIG = new InjectionToken<HasuraConfig>('HASURA_CONFIG');\n\nexport function provideHasuraConfig(config: HasuraConfig): Provider[] {\n return [\n { provide: HASURA_CONFIG, useValue: config },\n config.adminSecret ? { provide: HTTP_INTERCEPTORS, useClass: HasuraInterceptor, multi: true} : [],\n ];\n}\n","import { getFlattenFieldAnnotations } from './decorators';\nimport { get, snakeCase } from 'lodash-es';\nimport { plainToInstanceWithValid } from '@nx-ddd/core';\nimport { ClassConstructor } from 'class-transformer';\nimport dayjs from 'dayjs';\nimport { format } from 'date-fns';\n\nexport interface HasuraConverter<E> {\n toHasura(entity: E): object;\n toHasuraMany(entities: E[]): object[];\n fromHasura(entity: object): E;\n fromHasuraMany(entities: object[]): E[];\n}\n\ntype CamelToSnakeCase<S extends string> =\n S extends `${infer T}${infer U}`\n ? U extends Uncapitalize<U>\n ? `${Lowercase<T>}${CamelToSnakeCase<U>}`\n : `${Lowercase<T>}_${CamelToSnakeCase<U>}`\n : S;\ntype DeepCamelToSnake<T> = T extends Date\n ? T\n : T extends Array<infer U>\n ? DeepCamelToSnake<U>[]\n : T extends object\n ? { [K in keyof T as K extends string ? CamelToSnakeCase<K> : K]: DeepCamelToSnake<T[K]> }\n : T;\n\nexport function deepCamelToSnakeCase<T>(obj: T): DeepCamelToSnake<T> {\n if (Array.isArray(obj)) return obj.map(deepCamelToSnakeCase) as DeepCamelToSnake<T>;\n if (obj instanceof Date) return obj as DeepCamelToSnake<T>;\n if (obj && typeof obj === \"object\") {\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n result[snakeCase(key)] = deepCamelToSnakeCase((obj as any)[key]);\n }\n return result;\n }\n return obj as DeepCamelToSnake<T>;\n}\n\ntype SnakeToCamelCase<S extends string> =\n S extends `${infer T}_${infer U}`\n ? `${T}${Capitalize<SnakeToCamelCase<U>>}`\n : S;\ntype DeepSnakeToCamel<T> = T extends Date\n ? T\n : T extends Array<infer U>\n ? DeepSnakeToCamel<U>[]\n : T extends object\n ? { [K in keyof T as K extends string ? SnakeToCamelCase<K> : K]: DeepSnakeToCamel<T[K]> }\n : T;\nfunction camelCase(str: string): string {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\nexport function deepSnakeToCamelCase<T>(obj: T): DeepSnakeToCamel<T> {\n if (Array.isArray(obj)) return obj.map(deepSnakeToCamelCase) as DeepSnakeToCamel<T>;\n if (obj instanceof Date) return obj as DeepSnakeToCamel<T>;\n if (obj && typeof obj === \"object\") {\n const result: any = {};\n for (const key in obj)\n if (Object.prototype.hasOwnProperty.call(obj, key))\n result[camelCase(key)] = deepSnakeToCamelCase((obj as any)[key]);\n return result;\n }\n return obj as DeepSnakeToCamel<T>;\n}\n\nexport function fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T {\n return HasuraUtils.fromHasura(_object, type);\n}\n\nexport function toHasura(object: object, type: any, {\n extraFunc = deepCamelToSnakeCase\n}: {\n extraFunc?: (obj: any) => any;\n} = { }) {\n return HasuraUtils.toHasura(object, type, { extraFunc });\n}\n\nexport function getConverter<T extends object>(type: {new(): T}): HasuraConverter<T> {\n return {\n toHasura(entity: T) {\n return toHasura(entity, type);\n },\n toHasuraMany(entities: T[]) {\n return entities.map((entity) => this.toHasura(entity));\n },\n fromHasura(entity: object) {\n return fromHasura(entity, type) as T;\n },\n fromHasuraMany(entities: object[]) {\n return entities.map((entity) => this.fromHasura(entity));\n },\n }\n}\n\n/** @deprecated use `getConverter` instead */\nexport const makeConverter = getConverter;\n\nexport class HasuraUtils {\n static toTimestamp(date: dayjs.Dayjs | Date | null): string | null {\n if (dayjs.isDayjs(date)) {\n return date.toISOString();\n } else if (date instanceof Date) {\n return format(date, 'yyyy-MM-dd HH:mm:ss');\n } else {\n return null;\n }\n }\n\n static toDate(date: dayjs.Dayjs | Date | string | null | undefined): string | null | undefined {\n if (typeof date === 'undefined') {\n return undefined;\n } else if (dayjs.isDayjs(date)) {\n return format(date.toDate(), 'yyyy-MM-dd');\n } else if (date instanceof Date) {\n return format(date, 'yyyy-MM-dd');\n } else if (typeof date === 'string') {\n return date;\n } else {\n return null;\n }\n }\n\n static fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T {\n const object = deepSnakeToCamelCase(_object);\n return plainToInstanceWithValid(type, object);\n }\n\n static toNumber(value: any): number | null | undefined {\n if (typeof value === 'undefined') return undefined\n return isNaN(Number(value)) ? null : Number(value);\n }\n \n static toHasura(object: object, type: any, {\n extraFunc = deepCamelToSnakeCase\n }: {\n extraFunc?: (obj: any) => any;\n } = { }) {\n const fields = getFlattenFieldAnnotations<{\n type: 'text' | 'timestamp' | 'date' | 'numeric' | 'integer' | 'json' | 'map';\n fieldName: string;\n childType?: () => any;\n }>(type);\n const obj = Object.entries(fields).reduce((acc, [key, annotation]) => {\n const value = get(object, annotation.fieldName);\n if (typeof value === 'undefined') return acc;\n switch (annotation.type) {\n case 'text': return { ...acc, [key]: value };\n case 'timestamp': return { ...acc, [key]: this.toTimestamp(value) };\n case 'date': return { ...acc, [key]: this.toDate(value) };\n case 'numeric': return { ...acc, [key]: this.toNumber(value) };\n case 'integer': return { ...acc, [key]: this.toNumber(value) };\n case 'json': return { ...acc, [key]: value };\n case 'map': return {...acc};\n default: return { ...acc, [key]: value };\n }\n }, {});\n return extraFunc(obj);\n }\n}\n","export { DeepPartial } from '@nx-ddd/common/domain';\nexport { TransformToDayjs } from '@nx-ddd/common/domain';\nexport { IsDayjs } from 'class-validator-extended';\nimport { EnvironmentProviders, InjectionToken, Provider, importProvidersFrom, inject } from '@angular/core';\nimport { ApolloLink, HttpLink, InMemoryCache } from '@apollo/client/core';\nimport { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HASURA_CONFIG, HasuraConfig, provideHasuraConfig } from './hasura.config';\nimport { buildWebsocketLink, GetHeaders } from './links';\nimport { Observable } from 'rxjs';\n\nexport function provideHttpLink() {\n return {\n provide: ApolloLink,\n useFactory: (config: HasuraConfig) => new HttpLink({\n uri: config.url,\n headers: config?.adminSecret && { 'x-hasura-admin-secret': config.adminSecret },\n }),\n deps: [HASURA_CONFIG],\n };\n}\n\ntype HasuraAuthorization = Promise<string> | Observable<string> | string;\n\nconst HASURA_AUTHORIZATION = new InjectionToken<HasuraAuthorization>('HASURA_AUTHORIZATION');\n\nexport function provideHasuraAuthorization(useFactory: () => HasuraAuthorization) {\n return {\n provide: HASURA_AUTHORIZATION,\n useFactory,\n };\n}\n\ntype PromiseOrObservable<T> = Promise<T> | Observable<T> | T;\n\nconst GRAPHQL_HEADERS = new InjectionToken<GetHeaders>('GRAPHQL_HEADERS', {\n providedIn: 'root',\n factory: () => () => ({}),\n});\n\nexport function provideGraphqlHeaders(\n useFactory: () => () => PromiseOrObservable<Record<string, string>>,\n): Provider {\n return [\n { provide: GRAPHQL_HEADERS, useFactory },\n ];\n}\n\nexport function provideWebsocketLink() {\n return {\n provide: ApolloLink,\n useFactory: () => {\n const config = inject(HASURA_CONFIG);\n const _getHeaders = inject(GRAPHQL_HEADERS);\n return buildWebsocketLink(config.url, _getHeaders);\n },\n };\n}\n\nexport function provideApolloOptions() {\n return {\n provide: APOLLO_OPTIONS,\n useFactory: (link: ApolloLink) => ({ cache: new InMemoryCache(), link }),\n deps: [ApolloLink],\n };\n}\n\nexport function provideHasura(config: HasuraConfig): (Provider | EnvironmentProviders)[] {\n return [\n importProvidersFrom(ApolloModule),\n provideHasuraConfig(config),\n provideApolloOptions(),\n provideHttpLink(),\n ]\n}\n\nexport function provideHasuraWithWebSocket(config: HasuraConfig): (Provider | EnvironmentProviders)[] {\n return [\n importProvidersFrom(ApolloModule),\n provideHasuraConfig(config),\n provideApolloOptions(),\n provideWebsocketLink(),\n ]\n}\n\n","import { TableConfig, TransactionQueryPart } from \"../_meta/graphql-query-part\";\n\nexport class GetQueryPartBuilder {\n constructor (protected config: TableConfig) { }\n\n build(params: {id: string}): TransactionQueryPart {\n const queryName = `${this.config.tableName}_by_pk`;\n const variableDefinitions = ['$id: String!'];\n const queryPart = `${queryName}(id: $id) { ${this.config.columns.join(' ')} }`;\n return { queryPart, variableDefinitions, variables: params, operationName: queryName };\n }\n\n buildMany(): TransactionQueryPart {\n const queryName = this.config.tableName;\n const queryPart = `${queryName} { ${this.config.columns.join(' ')} }`;\n return { queryPart, variableDefinitions: [], variables: {}, operationName: queryName };\n }\n}\n","import { TableConfig } from \"../_meta/graphql-query-part\";\nimport { GetQueryPartBuilder } from \"./get.builder\";\n\nexport function makeSubscription(query: any) {\n const { kind, definitions } = query;\n const subscriptionDefinitions = definitions.map((definition: any) => {\n if (definition.kind === 'OperationDefinition' && definition.operation === 'query') {\n return {\n ...definition,\n operation: 'subscription',\n };\n }\n return definition;\n });\n return { kind, definitions: subscriptionDefinitions };\n};\n\nexport class QueriesBuilder<E extends { id: string }> {\n readonly get: GetQueryPartBuilder;\n\n constructor (config: TableConfig) {\n this.get = new GetQueryPartBuilder(config);\n }\n\n makeSubscription(query: any) {\n return makeSubscription(query);\n };\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from 'lodash-es';\n\ntype CreateData<E> = Omit<E, 'id' | 'createdAt' | 'updatedAt'>;\n\nexport class CreateMutationBuilder<E extends {id: string}> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: CreateData<E>, alias = 'create'): TransactionQueryPart {\n const object = this.convertToObject(data);\n const mutationName = `insert_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: ${this.config.tableName}_insert_input!`];\n const queryPart = `${alias}: ${mutationName}(objects: [$${alias}]) { affected_rows returning { ${this.config.columns.join(' ')} } }`;\n const variables = { [alias]: object };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n buildMany(data: CreateData<E>[], alias = 'createMany'): TransactionQueryPart {\n const objects = this.convertToObjects(data);\n const mutationName = `insert_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: [${this.config.tableName}_insert_input!]!`];\n const queryPart = `${alias}: ${mutationName}(objects: $${alias}) { affected_rows returning { ${this.config.columns.join(' ')} } }`;\n const variables = { [alias]: objects };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n protected convertToObject(item: CreateData<E>) {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, [...fields]);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected convertToObjects(items: CreateData<E>[]) {\n return items.map((item) => this.convertToObject(item));\n }\n}\n","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\n\nexport class DeleteMutationBuilder {\n constructor(protected readonly config: TableConfig) { }\n\n build({ id }): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const queryPart = `${operationName}(where: {id: {_eq: $id}}) { affected_rows }`;\n const variableDefinitions = ['$id: String!'];\n return { queryPart, variableDefinitions, variables: { id }, operationName };\n }\n\n buildMany(params: { id: string }[], alias = 'deleteMany'): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: [String!]!`];\n const queryPart = `${alias}: ${operationName}(where: {id: {_in: $${alias}}}) { affected_rows }`;\n const variables = { [alias]: params.map((p) => p.id) };\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n\n buildAll(alias = 'deleteAll'): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const uniqueAlias = `${alias}_${this.config.tableName}`;\n const variableDefinitions: string[] = [];\n const queryPart = `${uniqueAlias}: ${operationName}(where: {}) { affected_rows }`;\n const variables = {};\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from \"lodash-es\";\n\ninterface Options {\n operationName?: string;\n constraint?: string;\n columns?: string[];\n returningColumns?: string[];\n alias?: string;\n}\n\nexport class SaveMutationBuilder<E = any> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: Omit<E, 'createdAt' | 'updatedAt'>, {\n operationName = `insert_${this.config.tableName}`,\n constraint = this.config.pk,\n columns = this.config.columns,\n returningColumns = this.config.columns,\n alias = operationName,\n }: Options = {}): TransactionQueryPart {\n const object = this.buildObject(data);\n const onConflict = this.buildOnConflict(data, constraint, columns);\n const variableDefinitions = [\n `$${alias}Object: ${this.config.tableName}_insert_input!`,\n `$${alias}OnConflict: ${this.config.tableName}_on_conflict!`\n ];\n const queryPart = `${alias}: ${operationName}( objects: [$${alias}Object] on_conflict: $${alias}OnConflict) { affected_rows returning { ${returningColumns.join(', ')} } }`;\n const variables = { [`${alias}Object`]: object, [`${alias}OnConflict`]: onConflict };\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n\n buildMany(entities: E[], {\n operationName = `insert_${this.config.tableName}`,\n constraint = this.config.pk,\n columns = this.config.columns,\n returningColumns = this.config.columns,\n alias = 'save'\n }: Options = {}): TransactionQueryPart {\n const objects = this.buildObjects(entities);\n const onConflict = this.buildOnConflict(entities[0] as any, constraint, columns);\n const variableDefinitions = [\n `$${alias}Objects: [${this.config.tableName}_insert_input!]!`,\n `$${alias}OnConflict: ${this.config.tableName}_on_conflict!`\n ];\n const queryPart = `${alias}: ${operationName}(objects: $${alias}Objects on_conflict: $${alias}OnConflict) {\n affected_rows returning { ${returningColumns.join(', ')} }\n }`;\n const variables = { [`${alias}Objects`]: objects, [`${alias}OnConflict`]: onConflict };\n return { queryPart, variableDefinitions, variables, operationName: operationName, alias };\n }\n\n protected buildObject(item: Omit<E, 'createdAt' | 'updatedAt'>) {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, [...fields]);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected buildObjects(items: Omit<E, 'createdAt' | 'updatedAt'>[]) {\n return items.map((item) => this.buildObject(item));\n }\n\n protected buildOnConflict(data: Omit<E, 'createdAt' | 'updatedAt'>, constraint: string, columns: string[]) {\n const fields = Object.keys(this.buildObject(data));\n const updateColumns = fields.filter(column => columns.includes(column));\n return { constraint, update_columns: updateColumns };\n }\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from \"lodash-es\";\n\nexport class UpdateMutationBuilder<E extends {id: string} = any> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: Partial<E> & { id: string }, alias = 'update'): TransactionQueryPart {\n const mutationName = `update_${this.config.tableName}`;\n const object = this.buildObject(data);\n const variableDefinitions = [`$${alias}Id: String!`, `$${alias}Object: ${this.config.tableName}_set_input!`];\n const queryPart = `${alias}: ${mutationName}(where: {id: {_eq: $${alias}Id}} _set: $${alias}Object) { affected_rows returning { id } }`;\n const variables = { [`${alias}Id`]: data.id, [`${alias}Object`]: object };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n buildMany(\n data: Partial<E>[],\n alias = 'updateMany'\n ): TransactionQueryPart {\n const mutationName = `update_${this.config.tableName}_many`;\n const objects = this.buildObjects(data);\n const variableDefinitions = [`$${alias}Objects: [${this.config.tableName}_updates!]!`];\n const queryPart = `${alias}: ${mutationName}(updates: $${alias}Objects) { affected_rows returning { id } }`;\n const variables = { [`${alias}Objects`]: objects };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n protected buildObject(item: Partial<E>): any {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, fields);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected buildObjects(items: Partial<E>[]): any[] {\n return items.map((item) => ({ where: { id: { _eq: item.id } }, _set: this.buildObject(item) }));\n }\n}","import { CreateMutationBuilder } from \"./create.builder\";\nimport { UpdateMutationBuilder } from \"./update.builder\";\nimport { SaveMutationBuilder } from \"./save.builder\";\nimport { DeleteMutationBuilder } from \"./delete.builder\";\nimport { TableConfig } from \"../_meta/graphql-query-part\";\n\nexport class HasuraMutationBuilder<E extends { id: string }> {\n readonly create: CreateMutationBuilder<E>;\n readonly update: UpdateMutationBuilder<E>;\n readonly save: SaveMutationBuilder<E>;\n readonly delete_: DeleteMutationBuilder;\n \n constructor(config: TableConfig) {\n this.create = new CreateMutationBuilder(config);\n this.update = new UpdateMutationBuilder(config);\n this.save = new SaveMutationBuilder(config);\n this.delete_ = new DeleteMutationBuilder(config);\n }\n}\n","import { HasuraMutationBuilder } from './mutations';\nimport { QueriesBuilder } from \"./queries\";\nimport { TableConfig } from \"./_meta/graphql-query-part\";\n\nexport class HasuraQueryPartsBuilder<E extends { id: string }> {\n readonly mutations: HasuraMutationBuilder<E>;\n readonly queries: QueriesBuilder<E>;\n\n constructor(config: TableConfig) {\n this.mutations = new HasuraMutationBuilder(config);\n this.queries = new QueriesBuilder(config);\n }\n}\n","import { TableConfig, TransactionQueryPart } from './parts/_meta/graphql-query-part';\nimport { HasuraQueryPartsBuilder } from './parts/parts.builder';\n\nexport class HasuraQueryBuilder<E extends {id: string}> {\n readonly parts: HasuraQueryPartsBuilder<E>\n\n constructor(config: TableConfig) {\n this.parts = new HasuraQueryPartsBuilder(config);\n }\n \n\n buildQuery(part: TransactionQueryPart): string {\n const operationNameStr = part.operationName ? `${part.operationName} ` : '';\n const variablesStr = part.variableDefinitions?.length ? `(${part.variableDefinitions.join(', ')}) ` : '';\n return `query ${operationNameStr}${variablesStr}{ ${part.queryPart} }`;\n }\n\n static buildMutation(part: TransactionQueryPart): string {\n return `mutation ${part.operationName}(${part.variableDefinitions.join(', ')}) { ${part.queryPart} }`;\n }\n\n buildMutation(part: TransactionQueryPart): string {\n return HasuraQueryBuilder.buildMutation(part);\n }\n\n buildTransactionQuery(parts: TransactionQueryPart[]): {query: string, variables: Record<string, any>} {\n const operationName = `Transaction`;\n const variableDefinitions = parts.reduce((acc, m) => [...acc, ...m.variableDefinitions], [] as string[]);\n const mutationParts = parts.map(m => m.queryPart);\n const query = `mutation ${operationName} (${ variableDefinitions.join(', ') }) { ${mutationParts.join('\\n')} }`;\n const variables = parts.reduce((acc, m) => ({ ...acc, ...m.variables }), {} as Record<string, any>);\n return { query, variables };\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Apollo, gql } from \"apollo-angular\";\nimport { HASURA_CONFIG } from \"./hasura.config\";\nimport { ApolloClient, FetchResult, OperationVariables } from \"@apollo/client/core\";\nimport { from, isObservable, lastValueFrom, Observable, of, switchMap } from \"rxjs\";\nimport { ApolloMultiService, GET_APOLLO_CLIENT } from \"./apollo-multi.service\";\nimport { makeSubscription, QueriesBuilder } from \"./builders/parts/queries\";\nimport { HasuraQueryBuilder, TransactionQueryPart } from \"./builders\";\n\n\n@Injectable({providedIn: 'root'})\nexport class HasuraService {\n private http = inject(HttpClient);\n protected readonly apollo = inject(Apollo);\n readonly config = inject(HASURA_CONFIG);\n readonly apolloMulti = inject(ApolloMultiService);\n readonly _getApolloClient = GET_APOLLO_CLIENT.inject() ?? (() => this.apollo.client);\n\n getApolloClient(): Observable<ApolloClient<any>> {\n const clientOrObsOrPromise = this._getApolloClient(this.config);\n if (isObservable(clientOrObsOrPromise)) {\n return clientOrObsOrPromise;\n } else if (clientOrObsOrPromise instanceof Promise) {\n return from(clientOrObsOrPromise);\n } else {\n return of(clientOrObsOrPromise);\n }\n }\n\n /** @deprecated */\n graphql<T = any>(args: {query: string, variables?: object}) {\n return this.post<T>('/v1/graphql', {\n query: args.query,\n variables: args.variables,\n });\n }\n\n /** @deprecated */\n post<T>(endpoint: string, body: object) {\n return this.http.post<T>(`${this.config.url}${endpoint}`, body, {});\n }\n\n /** @deprecated */\n delete<T>(endpoint: string) {\n return this.http.delete<T>(`${this.config.url}${endpoint}`);\n }\n\n subscribe<\n T = any,\n TVariables extends OperationVariables = OperationVariables\n >({query, variables}: {query: any, variables: any}): Observable<FetchResult<T>> {\n return this.getApolloClient().pipe(\n switchMap((client) => client.subscribe<T, TVariables>({\n query: makeSubscription(query),\n variables: variables,\n fetchPolicy: 'network-only'\n })),\n );\n }\n\n async mutate<T = any>(...args: Parameters<typeof ApolloClient.prototype.mutate<T>>) {\n const client = await lastValueFrom(this.getApolloClient());\n return client.mutate<T>(...args).catch((error) => {\n console.error(error.graphQLErrors);\n throw error;\n });\n }\n\n async mutateByQueryPart<T = any>(part: TransactionQueryPart): Promise<T> {\n return this.mutate<T>({\n mutation: gql`${HasuraQueryBuilder.buildMutation(part) }`,\n variables: part.variables,\n }).then((res) => {\n console.debug('[HasuraService] mutateByQueryPart:', res);\n return res.data[part?.alias ?? part.operationName]\n });\n }\n\n async query(...args: Parameters<typeof ApolloClient.prototype.query>) {\n const client = await lastValueFrom(this.getApolloClient());\n return client.query(...args).catch((error) => {\n console.error(error.graphQLErrors);\n throw error;\n });\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { Repository } from \"@nx-ddd/common/domain\";\nimport { gql } from \"@apollo/client/core\";\nimport { HasuraConverter } from \"./hasura.converter\";\nimport { HasuraService } from \"./hasura.service\";\nimport { map, Observable } from \"rxjs\";\nimport { HasuraQueryBuilder } from \"./builders\";\n\n@Injectable()\nexport abstract class HasuraRepository<E extends {id: string}> extends Repository<E> {\n protected hasura = inject(HasuraService);\n protected abstract converter: HasuraConverter<E>;\n readonly abstract updateColumns: string[];\n readonly abstract tableName: string;\n\n get pkey(): string {\n return `${this.tableName}_pkey`;\n }\n\n getQueryBuilder() {\n return new HasuraQueryBuilder({ tableName: this.tableName, pk: this.pkey, columns: this.updateColumns });\n }\n\n async get(params: {id: string}) {\n const part = this.getQueryBuilder().parts.queries.get.build({id: params.id});\n return this.hasura.query({\n query: gql`${this.getQueryBuilder().buildQuery(part)}`,\n variables: part.variables,\n fetchPolicy: 'network-only',\n })\n .then((res) => this.converter.fromHasura(res.data[part.operationName]))\n .then(data => data ? this.converter.fromHasura(data) : data);\n }\n\n async list(): Promise<E[]> {\n const part = this.getQueryBuilder().parts.queries.get.buildMany();\n return this.hasura.query({\n query: gql`${this.getQueryBuilder().buildQuery(part)}`,\n fetchPolicy: 'network-only'\n }).then(res => this.converter.fromHasuraMany(res.data[part.operationName]));\n }\n\n listChanges(): Observable<E[]> {\n const part = this.getQueryBuilder().parts.queries.get.buildMany();\n const query = this.getQueryBuilder().buildQuery(part);\n return this.hasura.subscribe({ query: gql`${query}`, variables: {} }).pipe(\n map(res => this.converter.fromHasuraMany(res.data[part.operationName])),\n );\n }\n\n async create(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'> & Partial<Pick<E, 'id'>>): Promise<E> {\n const converted = this.converter.toHasura(data as E);\n const part = this.getQueryBuilder().parts.mutations.create.build(converted as any);\n return this.hasura.mutateByQueryPart(part).then(result => this.converter.fromHasura(result.returning[0]));\n }\n\n async createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]> {\n const items = this.converter.toHasuraMany(data as E[]);\n const part = this.getQueryBuilder().parts.mutations.create.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then((result) => this.converter.fromHasuraMany(result.returning));\n }\n\n async update(data: Partial<E> & {id: string}): Promise<void>{\n console.debug('data:', data);\n const item = this.converter.toHasura(data as E);\n console.debug('item:', item);\n const part = this.getQueryBuilder().parts.mutations.update.build(item as any);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async updateMany(data: Partial<E>[]): Promise<void> {\n const items = this.converter.toHasuraMany(data as E[]);\n const part = this.getQueryBuilder().parts.mutations.update.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then((result) => result.affected_rows).then(() => {});\n }\n\n async delete(params: {id: string}): Promise<void> {\n const part = this.getQueryBuilder().parts.mutations.delete_.build(params);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async deleteMany(params: {id: string}[]): Promise<number> {\n const part = this.getQueryBuilder().parts.mutations.delete_.buildMany(params);\n return this.hasura.mutateByQueryPart(part).then((result) => result.affected_rows);\n }\n\n async deleteAll(): Promise<void> {\n const part = this.getQueryBuilder().parts.mutations.delete_.buildAll();\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async save(data: Partial<E>) {\n const item = this.converter.toHasura(data as E);\n const part = this.getQueryBuilder().parts.mutations.save.build(item as any);\n return this.hasura.mutateByQueryPart(part).then((res) => res.returning[0]);\n }\n\n async saveMany(entities: E[]): Promise<void> {\n const items = this.converter.toHasuraMany(entities as E[]);\n const part = this.getQueryBuilder().parts.mutations.save.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["camelCase","HttpLink","InMemoryCache","gql"],"mappings":"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"}
1
+ {"version":3,"file":"nx-ddd-hasura.mjs","sources":["../../../../../packages/@nx-ddd/hasura/src/lib/links.ts","../../../../../packages/@nx-ddd/hasura/src/lib/apollo-multi.service.ts","../../../../../packages/@nx-ddd/hasura/src/lib/decorators.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.interceptor.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.config.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.converter.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.di.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/queries/get.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/queries/queries.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/create.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/delete.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/save.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/update.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/mutations/mutations.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/parts/parts.builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/builders/query-builder.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.service.ts","../../../../../packages/@nx-ddd/hasura/src/lib/hasura.repository.ts","../../../../../packages/@nx-ddd/hasura/src/lib/nx-ddd-hasura.ts"],"sourcesContent":["import { WebSocketLink } from \"@apollo/client/link/ws\";\nimport { distinctUntilChanged, filter, from, isObservable, lastValueFrom, Observable, of, take, tap } from 'rxjs';\n\ntype PromiseOrObservable<T> = Promise<T> | Observable<T> | T;\nexport type GetHeaders = () => PromiseOrObservable<Record<string, string>>;\n\nfunction wrap<T>(token: Promise<T> | Observable<T> | T): Observable<T> {\n return isObservable(token) ? token : token instanceof Promise ? from(token) : of(token);\n}\n\nexport function resolve(getHeaders: GetHeaders): Promise<Record<string, string>> {\n const headers$ = wrap(getHeaders());\n return lastValueFrom(headers$.pipe(\n filter((headers) => !!headers),\n take(1),\n distinctUntilChanged(),\n tap((headers) => console.debug('[resolve] headers:', headers)),\n ))\n}\n\nexport function buildWebsocketLink(endpoint: string, getHeaders: GetHeaders) {\n return new WebSocketLink({\n uri: endpoint.replace('http', 'ws'),\n options: {\n reconnect: true,\n connectionParams: () => resolve(getHeaders).then((headers) => ({ headers })),\n },\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { Apollo, ApolloBase } from \"apollo-angular\";\nimport { HasuraConfig } from \"./hasura.config\";\nimport { HttpLink } from 'apollo-angular/http';\nimport { InMemoryCache } from \"@apollo/client/cache\";\nimport { setContext } from '@apollo/client/link/context';\nimport { ApolloClient, ApolloLink, DocumentNode, split } from \"@apollo/client/core\";\nimport { getMainDefinition } from \"@apollo/client/utilities\";\nimport { makeDI } from \"@nx-ddd/core\";\nimport { Observable } from \"rxjs\";\nimport { buildWebsocketLink, GetHeaders, resolve } from \"./links\";\n\nfunction isSubscription(query: DocumentNode) {\n const definition = getMainDefinition(query);\n return (\n definition.kind === 'OperationDefinition' &&\n definition.operation === 'subscription'\n );\n}\n\n@Injectable({providedIn: 'root'})\nexport class ApolloMultiService {\n readonly apollo = inject(Apollo);\n readonly httpLink = inject(HttpLink);\n\n protected createClient(name: string, baseUrl: string, getHeaders: GetHeaders) {\n const wsLink = buildWebsocketLink(baseUrl, getHeaders);\n const link = split(\n ({ query }) => isSubscription(query),\n wsLink,\n ApolloLink.from([\n setContext(async () => {\n const headers = await resolve(getHeaders);\n return { headers }\n }),\n this.httpLink.create({ uri: baseUrl, }),\n ])\n );\n\n this.apollo.removeClient(name);\n this.apollo.createNamed(name, { link, cache: new InMemoryCache() });\n }\n\n getClient(endpoint: string, getHeaders: GetHeaders): ApolloBase {\n const name = endpoint;\n let client = this.apollo.use(name);\n console.debug('[ApolloMultiService] getClient:', name);\n if (!client) {\n this.createClient(name, endpoint, getHeaders);\n client = this.apollo.use(name);\n }\n return client;\n }\n}\n\n\nexport type GetApolloClient<E extends {id: string}> = (config: HasuraConfig) => ApolloClient<E> | Promise<ApolloClient<E>> | Observable<ApolloClient<E>>;\nexport const GET_APOLLO_CLIENT = makeDI<GetApolloClient<any>>('GET_APOLLO_CLIENT');","import { makeDecoratorFactories } from \"@nx-ddd/core\";\nimport { camelCase, snakeCase } from 'lodash-es';\n\nconst {\n createDecorator,\n getAnnotations,\n} = makeDecoratorFactories(\n (type, fieldName, propName, options) => ({ type, fieldName, propName, childType: options.childType }),\n '[@nx-ddd/hasura] annotations'\n);\n\nexport function getFlattenFieldAnnotations<Annotation>(T: any, prefix: string = ''): Record<string, Annotation> {\n const annotations = Hasura.getAnnotations(T);\n return (annotations ?? []).reduce((acc, annotation) => {\n const currentKey = prefix ? camelCase(`${prefix}_${annotation.fieldName}`) : annotation.fieldName;\n if (annotation.childType) {\n return {\n ...acc,\n ...getFlattenFieldAnnotations(annotation.childType(), currentKey)\n };\n }\n return {\n ...acc,\n [currentKey]: annotation\n };\n }, {});\n}\n\nexport function getFields(T: any, options: {\n prefix?: string;\n case?: 'snake' | 'camel';\n} = {\n prefix: '',\n case: 'snake'\n}): string[] {\n const annotations = Hasura.getAnnotations(T);\n const changeCase = options?.case === 'snake' ? snakeCase : camelCase;\n const fields = (annotations ?? []).flatMap((annotation) => {\n const currentKey = changeCase(options?.prefix ? `${options?.prefix}_${annotation.fieldName}` : annotation.fieldName);\n if (annotation.childType) {\n return [\n ...getFields(annotation.childType(), {\n prefix: currentKey,\n case: options?.case,\n })\n ];\n }\n return [currentKey];\n });\n return fields;\n}\n\nexport const Hasura = {\n Text: createDecorator('text'),\n Timestamp: createDecorator('timestamp'),\n Date: createDecorator('date'),\n Integer: createDecorator('integer'),\n Numeric: createDecorator('numeric'),\n Boolean: createDecorator('boolean'),\n Map: (childType: () => any) => createDecorator('map', {childType})(),\n JSON: createDecorator('json'),\n getAnnotations,\n};\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { HASURA_CONFIG } from \"./hasura.config\";\n\n@Injectable()\nexport class HasuraInterceptor implements HttpInterceptor {\n private config = inject(HASURA_CONFIG);\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (req.url.startsWith(this.config.url)) {\n return next.handle(req.clone({\n headers: req.headers.set('x-hasura-admin-secret', this.config.adminSecret),\n }));\n }\n return next.handle(req);\n }\n}","import { HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { InjectionToken } from \"@angular/core\";\nimport { Provider } from \"@angular/core\";\nimport { HasuraInterceptor } from \"./hasura.interceptor\";\n\nexport interface HasuraConfig {\n adminSecret?: string;\n url: string;\n}\n\nexport const HASURA_CONFIG = new InjectionToken<HasuraConfig>('HASURA_CONFIG');\n\nexport function provideHasuraConfig(config: HasuraConfig): Provider[] {\n return [\n { provide: HASURA_CONFIG, useValue: config },\n config.adminSecret ? { provide: HTTP_INTERCEPTORS, useClass: HasuraInterceptor, multi: true} : [],\n ];\n}\n","import { getFlattenFieldAnnotations } from './decorators';\nimport { get, snakeCase } from 'lodash-es';\nimport { plainToInstanceWithValid } from '@nx-ddd/core';\nimport { ClassConstructor } from 'class-transformer';\nimport dayjs from 'dayjs';\nimport { format } from 'date-fns';\n\nexport interface HasuraConverter<E> {\n toHasura(entity: E): object;\n toHasuraMany(entities: E[]): object[];\n fromHasura(entity: object): E;\n fromHasuraMany(entities: object[]): E[];\n}\n\ntype CamelToSnakeCase<S extends string> =\n S extends `${infer T}${infer U}`\n ? U extends Uncapitalize<U>\n ? `${Lowercase<T>}${CamelToSnakeCase<U>}`\n : `${Lowercase<T>}_${CamelToSnakeCase<U>}`\n : S;\ntype DeepCamelToSnake<T> = T extends Date\n ? T\n : T extends Array<infer U>\n ? DeepCamelToSnake<U>[]\n : T extends object\n ? { [K in keyof T as K extends string ? CamelToSnakeCase<K> : K]: DeepCamelToSnake<T[K]> }\n : T;\n\nexport function deepCamelToSnakeCase<T>(obj: T): DeepCamelToSnake<T> {\n if (Array.isArray(obj)) return obj.map(deepCamelToSnakeCase) as DeepCamelToSnake<T>;\n if (obj instanceof Date) return obj as DeepCamelToSnake<T>;\n if (obj && typeof obj === \"object\") {\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n result[snakeCase(key)] = deepCamelToSnakeCase((obj as any)[key]);\n }\n return result;\n }\n return obj as DeepCamelToSnake<T>;\n}\n\ntype SnakeToCamelCase<S extends string> =\n S extends `${infer T}_${infer U}`\n ? `${T}${Capitalize<SnakeToCamelCase<U>>}`\n : S;\ntype DeepSnakeToCamel<T> = T extends Date\n ? T\n : T extends Array<infer U>\n ? DeepSnakeToCamel<U>[]\n : T extends object\n ? { [K in keyof T as K extends string ? SnakeToCamelCase<K> : K]: DeepSnakeToCamel<T[K]> }\n : T;\nfunction camelCase(str: string): string {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\nexport function deepSnakeToCamelCase<T>(obj: T): DeepSnakeToCamel<T> {\n if (Array.isArray(obj)) return obj.map(deepSnakeToCamelCase) as DeepSnakeToCamel<T>;\n if (obj instanceof Date) return obj as DeepSnakeToCamel<T>;\n if (obj && typeof obj === \"object\") {\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[camelCase(key)] = deepSnakeToCamelCase((obj as any)[key]);\n }\n }\n return result;\n }\n return obj as DeepSnakeToCamel<T>;\n}\n\nexport function fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T {\n return HasuraUtils.fromHasura(_object, type);\n}\n\nexport function toHasura(object: object, type: any, {\n extraFunc = deepCamelToSnakeCase\n}: {\n extraFunc?: (obj: any) => any;\n} = { }) {\n return HasuraUtils.toHasura(object, type, { extraFunc });\n}\n\nexport function getConverter<T extends object>(type: {new(): T}): HasuraConverter<T> {\n return {\n toHasura(entity: T) {\n return toHasura(entity, type);\n },\n toHasuraMany(entities: T[]) {\n return entities.map((entity) => this.toHasura(entity));\n },\n fromHasura(entity: object) {\n return fromHasura(entity, type) as T;\n },\n fromHasuraMany(entities: object[]) {\n return entities.map((entity) => this.fromHasura(entity));\n },\n }\n}\n\n/** @deprecated use `getConverter` instead */\nexport const makeConverter = getConverter;\n\nexport class HasuraUtils {\n static toTimestamp(date: dayjs.Dayjs | Date | null): string | null {\n if (dayjs.isDayjs(date)) {\n return date.toISOString();\n } else if (date instanceof Date) {\n return format(date, 'yyyy-MM-dd HH:mm:ss');\n } else {\n return null;\n }\n }\n\n static toDate(date: dayjs.Dayjs | Date | string | null | undefined): string | null | undefined {\n if (typeof date === 'undefined') {\n return undefined;\n } else if (dayjs.isDayjs(date)) {\n return format(date.toDate(), 'yyyy-MM-dd');\n } else if (date instanceof Date) {\n return format(date, 'yyyy-MM-dd');\n } else if (typeof date === 'string') {\n return date;\n } else {\n return null;\n }\n }\n\n static fromHasura<T extends object>(_object: object, type: ClassConstructor<T>): T {\n const object = deepSnakeToCamelCase(_object);\n return plainToInstanceWithValid(type, object);\n }\n\n static toNumber(value: any): number | null | undefined {\n if (typeof value === 'undefined') return undefined\n return isNaN(Number(value)) ? null : Number(value);\n }\n \n static toHasura(object: object, type: any, {\n extraFunc = deepCamelToSnakeCase\n }: {\n extraFunc?: (obj: any) => any;\n } = { }) {\n const fields = getFlattenFieldAnnotations<{\n type: 'text' | 'timestamp' | 'date' | 'numeric' | 'integer' | 'json' | 'map';\n fieldName: string;\n childType?: () => any;\n }>(type);\n const obj = Object.entries(fields).reduce((acc, [key, annotation]) => {\n const value = get(object, annotation.fieldName);\n if (typeof value === 'undefined') return acc;\n switch (annotation.type) {\n case 'text': return { ...acc, [key]: value };\n case 'timestamp': return { ...acc, [key]: this.toTimestamp(value) };\n case 'date': return { ...acc, [key]: this.toDate(value) };\n case 'numeric': return { ...acc, [key]: this.toNumber(value) };\n case 'integer': return { ...acc, [key]: this.toNumber(value) };\n case 'json': return { ...acc, [key]: value };\n case 'map': return {...acc};\n default: return { ...acc, [key]: value };\n }\n }, {});\n return extraFunc(obj);\n }\n}\n","export { DeepPartial } from '@nx-ddd/common/domain';\nexport { TransformToDayjs } from '@nx-ddd/common/domain';\nexport { IsDayjs } from 'class-validator-extended';\nimport { EnvironmentProviders, InjectionToken, Provider, importProvidersFrom, inject } from '@angular/core';\nimport { ApolloLink, HttpLink, InMemoryCache } from '@apollo/client/core';\nimport { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';\nimport { HASURA_CONFIG, HasuraConfig, provideHasuraConfig } from './hasura.config';\nimport { buildWebsocketLink, GetHeaders } from './links';\nimport { Observable } from 'rxjs';\n\nexport function provideHttpLink() {\n return {\n provide: ApolloLink,\n useFactory: (config: HasuraConfig) => new HttpLink({\n uri: config.url,\n headers: config?.adminSecret && { 'x-hasura-admin-secret': config.adminSecret },\n }),\n deps: [HASURA_CONFIG],\n };\n}\n\ntype HasuraAuthorization = Promise<string> | Observable<string> | string;\n\nconst HASURA_AUTHORIZATION = new InjectionToken<HasuraAuthorization>('HASURA_AUTHORIZATION');\n\nexport function provideHasuraAuthorization(useFactory: () => HasuraAuthorization) {\n return {\n provide: HASURA_AUTHORIZATION,\n useFactory,\n };\n}\n\ntype PromiseOrObservable<T> = Promise<T> | Observable<T> | T;\n\nconst GRAPHQL_HEADERS = new InjectionToken<GetHeaders>('GRAPHQL_HEADERS', {\n providedIn: 'root',\n factory: () => () => ({}),\n});\n\nexport function provideGraphqlHeaders(\n useFactory: () => () => PromiseOrObservable<Record<string, string>>,\n): Provider {\n return [\n { provide: GRAPHQL_HEADERS, useFactory },\n ];\n}\n\nexport function provideWebsocketLink() {\n return {\n provide: ApolloLink,\n useFactory: () => {\n const config = inject(HASURA_CONFIG);\n const _getHeaders = inject(GRAPHQL_HEADERS);\n return buildWebsocketLink(config.url, _getHeaders);\n },\n };\n}\n\nexport function provideApolloOptions() {\n return {\n provide: APOLLO_OPTIONS,\n useFactory: (link: ApolloLink) => ({ cache: new InMemoryCache(), link }),\n deps: [ApolloLink],\n };\n}\n\nexport function provideHasura(config: HasuraConfig): (Provider | EnvironmentProviders)[] {\n return [\n importProvidersFrom(ApolloModule),\n provideHasuraConfig(config),\n provideApolloOptions(),\n provideHttpLink(),\n ]\n}\n\nexport function provideHasuraWithWebSocket(config: HasuraConfig): (Provider | EnvironmentProviders)[] {\n return [\n importProvidersFrom(ApolloModule),\n provideHasuraConfig(config),\n provideApolloOptions(),\n provideWebsocketLink(),\n ]\n}\n\n","import { TableConfig, TransactionQueryPart } from \"../_meta/graphql-query-part\";\n\nexport class GetQueryPartBuilder {\n constructor (protected config: TableConfig) { }\n\n build(params: {id: string}): TransactionQueryPart {\n const queryName = `${this.config.tableName}_by_pk`;\n const variableDefinitions = ['$id: String!'];\n const queryPart = `${queryName}(id: $id) { ${this.config.columns.join(' ')} }`;\n return { queryPart, variableDefinitions, variables: params, operationName: queryName };\n }\n\n buildMany(): TransactionQueryPart {\n const queryName = this.config.tableName;\n const queryPart = `${queryName} { ${this.config.columns.join(' ')} }`;\n return { queryPart, variableDefinitions: [], variables: {}, operationName: queryName };\n }\n}\n","import { TableConfig } from \"../_meta/graphql-query-part\";\nimport { GetQueryPartBuilder } from \"./get.builder\";\n\nexport function makeSubscription(query: any) {\n const { kind, definitions } = query;\n const subscriptionDefinitions = definitions.map((definition: any) => {\n if (definition.kind === 'OperationDefinition' && definition.operation === 'query') {\n return {\n ...definition,\n operation: 'subscription',\n };\n }\n return definition;\n });\n return { kind, definitions: subscriptionDefinitions };\n};\n\nexport class QueriesBuilder<E extends { id: string }> {\n readonly get: GetQueryPartBuilder;\n\n constructor (config: TableConfig) {\n this.get = new GetQueryPartBuilder(config);\n }\n\n makeSubscription(query: any) {\n return makeSubscription(query);\n };\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from 'lodash-es';\n\ntype CreateData<E> = Omit<E, 'id' | 'createdAt' | 'updatedAt'>;\n\nexport class CreateMutationBuilder<E extends {id: string}> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: CreateData<E>, alias = 'create'): TransactionQueryPart {\n const object = this.convertToObject(data);\n const mutationName = `insert_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: ${this.config.tableName}_insert_input!`];\n const queryPart = `${alias}: ${mutationName}(objects: [$${alias}]) { affected_rows returning { ${this.config.columns.join(' ')} } }`;\n const variables = { [alias]: object };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n buildMany(data: CreateData<E>[], alias = 'createMany'): TransactionQueryPart {\n const objects = this.convertToObjects(data);\n const mutationName = `insert_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: [${this.config.tableName}_insert_input!]!`];\n const queryPart = `${alias}: ${mutationName}(objects: $${alias}) { affected_rows returning { ${this.config.columns.join(' ')} } }`;\n const variables = { [alias]: objects };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n protected convertToObject(item: CreateData<E>) {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, [...fields]);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected convertToObjects(items: CreateData<E>[]) {\n return items.map((item) => this.convertToObject(item));\n }\n}\n","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\n\nexport class DeleteMutationBuilder {\n constructor(protected readonly config: TableConfig) { }\n\n build({ id }): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const queryPart = `${operationName}(where: {id: {_eq: $id}}) { affected_rows }`;\n const variableDefinitions = ['$id: String!'];\n return { queryPart, variableDefinitions, variables: { id }, operationName };\n }\n\n buildMany(params: { id: string }[], alias = 'deleteMany'): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const variableDefinitions = [`$${alias}: [String!]!`];\n const queryPart = `${alias}: ${operationName}(where: {id: {_in: $${alias}}}) { affected_rows }`;\n const variables = { [alias]: params.map((p) => p.id) };\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n\n buildAll(alias = 'deleteAll'): TransactionQueryPart {\n const operationName = `delete_${this.config.tableName}`;\n const uniqueAlias = `${alias}_${this.config.tableName}`;\n const variableDefinitions: string[] = [];\n const queryPart = `${uniqueAlias}: ${operationName}(where: {}) { affected_rows }`;\n const variables = {};\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from \"lodash-es\";\n\ninterface Options {\n operationName?: string;\n constraint?: string;\n columns?: string[];\n returningColumns?: string[];\n alias?: string;\n}\n\nexport class SaveMutationBuilder<E = any> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: Omit<E, 'createdAt' | 'updatedAt'>, {\n operationName = `insert_${this.config.tableName}`,\n constraint = this.config.pk,\n columns = this.config.columns,\n returningColumns = this.config.columns,\n alias = operationName,\n }: Options = {}): TransactionQueryPart {\n const object = this.buildObject(data);\n const onConflict = this.buildOnConflict(data, constraint, columns);\n const variableDefinitions = [\n `$${alias}Object: ${this.config.tableName}_insert_input!`,\n `$${alias}OnConflict: ${this.config.tableName}_on_conflict!`\n ];\n const queryPart = `${alias}: ${operationName}( objects: [$${alias}Object] on_conflict: $${alias}OnConflict) { affected_rows returning { ${returningColumns.join(', ')} } }`;\n const variables = { [`${alias}Object`]: object, [`${alias}OnConflict`]: onConflict };\n return { queryPart, variableDefinitions, variables, operationName, alias };\n }\n\n buildMany(entities: E[], {\n operationName = `insert_${this.config.tableName}`,\n constraint = this.config.pk,\n columns = this.config.columns,\n returningColumns = this.config.columns,\n alias = 'save'\n }: Options = {}): TransactionQueryPart {\n const objects = this.buildObjects(entities);\n const onConflict = this.buildOnConflict(entities[0] as any, constraint, columns);\n const variableDefinitions = [\n `$${alias}Objects: [${this.config.tableName}_insert_input!]!`,\n `$${alias}OnConflict: ${this.config.tableName}_on_conflict!`\n ];\n const queryPart = `${alias}: ${operationName}(objects: $${alias}Objects on_conflict: $${alias}OnConflict) {\n affected_rows returning { ${returningColumns.join(', ')} }\n }`;\n const variables = { [`${alias}Objects`]: objects, [`${alias}OnConflict`]: onConflict };\n return { queryPart, variableDefinitions, variables, operationName: operationName, alias };\n }\n\n protected buildObject(item: Omit<E, 'createdAt' | 'updatedAt'>) {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, [...fields]);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected buildObjects(items: Omit<E, 'createdAt' | 'updatedAt'>[]) {\n return items.map((item) => this.buildObject(item));\n }\n\n protected buildOnConflict(data: Omit<E, 'createdAt' | 'updatedAt'>, constraint: string, columns: string[]) {\n const fields = Object.keys(this.buildObject(data));\n const updateColumns = fields.filter(column => columns.includes(column));\n return { constraint, update_columns: updateColumns };\n }\n}","import { TableConfig, TransactionQueryPart } from '../../parts/_meta/graphql-query-part';\nimport { omitBy, pick, snakeCase } from \"lodash-es\";\n\nexport class UpdateMutationBuilder<E extends {id: string} = any> {\n constructor(protected readonly config: TableConfig) { }\n\n build(data: Partial<E> & { id: string }, alias = 'update'): TransactionQueryPart {\n const mutationName = `update_${this.config.tableName}`;\n const object = this.buildObject(data);\n const variableDefinitions = [`$${alias}Id: String!`, `$${alias}Object: ${this.config.tableName}_set_input!`];\n const queryPart = `${alias}: ${mutationName}(where: {id: {_eq: $${alias}Id}} _set: $${alias}Object) { affected_rows returning { id } }`;\n const variables = { [`${alias}Id`]: data.id, [`${alias}Object`]: object };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n buildMany(\n data: Partial<E>[],\n alias = 'updateMany'\n ): TransactionQueryPart {\n const mutationName = `update_${this.config.tableName}_many`;\n const objects = this.buildObjects(data);\n const variableDefinitions = [`$${alias}Objects: [${this.config.tableName}_updates!]!`];\n const queryPart = `${alias}: ${mutationName}(updates: $${alias}Objects) { affected_rows returning { id } }`;\n const variables = { [`${alias}Objects`]: objects };\n return { queryPart, variableDefinitions, variables, operationName: mutationName, alias };\n }\n\n protected buildObject(item: Partial<E>): any {\n const fields = Object.keys(item).map(snakeCase).filter((field) => !['created_at', 'updated_at'].includes(field));\n const picked = pick(item, fields);\n return omitBy(picked, (value) => typeof value === 'undefined');\n }\n\n protected buildObjects(items: Partial<E>[]): any[] {\n return items.map((item) => ({ where: { id: { _eq: item.id } }, _set: this.buildObject(item) }));\n }\n}","import { CreateMutationBuilder } from \"./create.builder\";\nimport { UpdateMutationBuilder } from \"./update.builder\";\nimport { SaveMutationBuilder } from \"./save.builder\";\nimport { DeleteMutationBuilder } from \"./delete.builder\";\nimport { TableConfig } from \"../_meta/graphql-query-part\";\n\nexport class HasuraMutationBuilder<E extends { id: string }> {\n readonly create: CreateMutationBuilder<E>;\n readonly update: UpdateMutationBuilder<E>;\n readonly save: SaveMutationBuilder<E>;\n readonly delete_: DeleteMutationBuilder;\n \n constructor(config: TableConfig) {\n this.create = new CreateMutationBuilder(config);\n this.update = new UpdateMutationBuilder(config);\n this.save = new SaveMutationBuilder(config);\n this.delete_ = new DeleteMutationBuilder(config);\n }\n}\n","import { HasuraMutationBuilder } from './mutations';\nimport { QueriesBuilder } from \"./queries\";\nimport { TableConfig } from \"./_meta/graphql-query-part\";\n\nexport class HasuraQueryPartsBuilder<E extends { id: string }> {\n readonly mutations: HasuraMutationBuilder<E>;\n readonly queries: QueriesBuilder<E>;\n\n constructor(config: TableConfig) {\n this.mutations = new HasuraMutationBuilder(config);\n this.queries = new QueriesBuilder(config);\n }\n}\n","import { TableConfig, TransactionQueryPart } from './parts/_meta/graphql-query-part';\nimport { HasuraQueryPartsBuilder } from './parts/parts.builder';\n\nexport class HasuraQueryBuilder<E extends {id: string}> {\n readonly parts: HasuraQueryPartsBuilder<E>\n\n constructor(config: TableConfig) {\n this.parts = new HasuraQueryPartsBuilder(config);\n }\n \n\n buildQuery(part: TransactionQueryPart): string {\n const operationNameStr = part.operationName ? `${part.operationName} ` : '';\n const variablesStr = part.variableDefinitions?.length ? `(${part.variableDefinitions.join(', ')}) ` : '';\n return `query ${operationNameStr}${variablesStr}{ ${part.queryPart} }`;\n }\n\n static buildMutation(part: TransactionQueryPart): string {\n return `mutation ${part.operationName}(${part.variableDefinitions.join(', ')}) { ${part.queryPart} }`;\n }\n\n buildMutation(part: TransactionQueryPart): string {\n return HasuraQueryBuilder.buildMutation(part);\n }\n\n buildTransactionQuery(parts: TransactionQueryPart[]): {query: string, variables: Record<string, any>} {\n const operationName = `Transaction`;\n const variableDefinitions = parts.reduce((acc, m) => [...acc, ...m.variableDefinitions], [] as string[]);\n const mutationParts = parts.map(m => m.queryPart);\n const query = `mutation ${operationName} (${ variableDefinitions.join(', ') }) { ${mutationParts.join('\\n')} }`;\n const variables = parts.reduce((acc, m) => ({ ...acc, ...m.variables }), {} as Record<string, any>);\n return { query, variables };\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Apollo, gql } from \"apollo-angular\";\nimport { HASURA_CONFIG } from \"./hasura.config\";\nimport { ApolloClient, FetchResult, OperationVariables } from \"@apollo/client/core\";\nimport { from, isObservable, lastValueFrom, Observable, of, switchMap } from \"rxjs\";\nimport { ApolloMultiService, GET_APOLLO_CLIENT } from \"./apollo-multi.service\";\nimport { makeSubscription, QueriesBuilder } from \"./builders/parts/queries\";\nimport { HasuraQueryBuilder, TransactionQueryPart } from \"./builders\";\n\n\n@Injectable({providedIn: 'root'})\nexport class HasuraService {\n private http = inject(HttpClient);\n protected readonly apollo = inject(Apollo);\n readonly config = inject(HASURA_CONFIG);\n readonly apolloMulti = inject(ApolloMultiService);\n readonly _getApolloClient = GET_APOLLO_CLIENT.inject() ?? (() => this.apollo.client);\n\n getApolloClient(): Observable<ApolloClient<any>> {\n const clientOrObsOrPromise = this._getApolloClient(this.config);\n if (isObservable(clientOrObsOrPromise)) {\n return clientOrObsOrPromise;\n } else if (clientOrObsOrPromise instanceof Promise) {\n return from(clientOrObsOrPromise);\n } else {\n return of(clientOrObsOrPromise);\n }\n }\n\n /** @deprecated */\n graphql<T = any>(args: {query: string, variables?: object}) {\n return this.post<T>('/v1/graphql', {\n query: args.query,\n variables: args.variables,\n });\n }\n\n /** @deprecated */\n post<T>(endpoint: string, body: object) {\n return this.http.post<T>(`${this.config.url}${endpoint}`, body, {});\n }\n\n /** @deprecated */\n delete<T>(endpoint: string) {\n return this.http.delete<T>(`${this.config.url}${endpoint}`);\n }\n\n subscribe<\n T = any,\n TVariables extends OperationVariables = OperationVariables\n >({query, variables}: {query: any, variables: any}): Observable<FetchResult<T>> {\n return this.getApolloClient().pipe(\n switchMap((client) => client.subscribe<T, TVariables>({\n query: makeSubscription(query),\n variables: variables,\n fetchPolicy: 'network-only'\n })),\n );\n }\n\n async mutate<T = any>(...args: Parameters<typeof ApolloClient.prototype.mutate<T>>) {\n const client = await lastValueFrom(this.getApolloClient());\n return client.mutate<T>(...args).catch((error) => {\n console.error(error.graphQLErrors);\n throw error;\n });\n }\n\n async mutateByQueryPart<T = any>(part: TransactionQueryPart): Promise<T> {\n return this.mutate<T>({\n mutation: gql`${HasuraQueryBuilder.buildMutation(part) }`,\n variables: part.variables,\n }).then((res) => {\n console.debug('[HasuraService] mutateByQueryPart:', res);\n return res.data[part?.alias ?? part.operationName]\n });\n }\n\n async query(...args: Parameters<typeof ApolloClient.prototype.query>) {\n const client = await lastValueFrom(this.getApolloClient());\n return client.query(...args).catch((error) => {\n console.error(error.graphQLErrors);\n throw error;\n });\n }\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { Repository } from \"@nx-ddd/common/domain\";\nimport { gql } from \"@apollo/client/core\";\nimport { HasuraConverter } from \"./hasura.converter\";\nimport { HasuraService } from \"./hasura.service\";\nimport { map, Observable } from \"rxjs\";\nimport { HasuraQueryBuilder } from \"./builders\";\n\n@Injectable()\nexport abstract class HasuraRepository<E extends {id: string}> extends Repository<E> {\n protected hasura = inject(HasuraService);\n protected abstract converter: HasuraConverter<E>;\n readonly abstract updateColumns: string[];\n readonly abstract tableName: string;\n\n get pkey(): string {\n return `${this.tableName}_pkey`;\n }\n\n getQueryBuilder() {\n return new HasuraQueryBuilder({ tableName: this.tableName, pk: this.pkey, columns: this.updateColumns });\n }\n\n async get(params: {id: string}) {\n const part = this.getQueryBuilder().parts.queries.get.build({id: params.id});\n return this.hasura.query({\n query: gql`${this.getQueryBuilder().buildQuery(part)}`,\n variables: part.variables,\n fetchPolicy: 'network-only',\n })\n .then((res) => this.converter.fromHasura(res.data[part.operationName]))\n .then(data => data ? this.converter.fromHasura(data) : data);\n }\n\n async list(): Promise<E[]> {\n const part = this.getQueryBuilder().parts.queries.get.buildMany();\n return this.hasura.query({\n query: gql`${this.getQueryBuilder().buildQuery(part)}`,\n fetchPolicy: 'network-only'\n }).then(res => this.converter.fromHasuraMany(res.data[part.operationName]));\n }\n\n listChanges(): Observable<E[]> {\n const part = this.getQueryBuilder().parts.queries.get.buildMany();\n const query = this.getQueryBuilder().buildQuery(part);\n return this.hasura.subscribe({ query: gql`${query}`, variables: {} }).pipe(\n map(res => this.converter.fromHasuraMany(res.data[part.operationName])),\n );\n }\n\n async create(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'> & Partial<Pick<E, 'id'>>): Promise<E> {\n const converted = this.converter.toHasura(data as E);\n const part = this.getQueryBuilder().parts.mutations.create.build(converted as any);\n return this.hasura.mutateByQueryPart(part).then(result => this.converter.fromHasura(result.returning[0]));\n }\n\n async createMany(data: Omit<E, 'id' | 'createdAt' | 'updatedAt'>[]): Promise<E[]> {\n const items = this.converter.toHasuraMany(data as E[]);\n const part = this.getQueryBuilder().parts.mutations.create.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then((result) => this.converter.fromHasuraMany(result.returning));\n }\n\n async update(data: Partial<E> & {id: string}): Promise<void>{\n console.debug('data:', data);\n const item = this.converter.toHasura(data as E);\n console.debug('item:', item);\n const part = this.getQueryBuilder().parts.mutations.update.build(item as any);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async updateMany(data: Partial<E>[]): Promise<void> {\n const items = this.converter.toHasuraMany(data as E[]);\n const part = this.getQueryBuilder().parts.mutations.update.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then((result) => result.affected_rows).then(() => {});\n }\n\n async delete(params: {id: string}): Promise<void> {\n const part = this.getQueryBuilder().parts.mutations.delete_.build(params);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async deleteMany(params: {id: string}[]): Promise<number> {\n const part = this.getQueryBuilder().parts.mutations.delete_.buildMany(params);\n return this.hasura.mutateByQueryPart(part).then((result) => result.affected_rows);\n }\n\n async deleteAll(): Promise<void> {\n const part = this.getQueryBuilder().parts.mutations.delete_.buildAll();\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n\n async save(data: Partial<E>) {\n const item = this.converter.toHasura(data as E);\n const part = this.getQueryBuilder().parts.mutations.save.build(item as any);\n return this.hasura.mutateByQueryPart(part).then((res) => res.returning[0]);\n }\n\n async saveMany(entities: E[]): Promise<void> {\n const items = this.converter.toHasuraMany(entities as E[]);\n const part = this.getQueryBuilder().parts.mutations.save.buildMany(items as any[]);\n return this.hasura.mutateByQueryPart(part).then(() => {});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["camelCase","HttpLink","InMemoryCache","gql"],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@nx-ddd/hasura",
3
- "version": "19.0.0-preview.35",
3
+ "version": "19.0.0-preview.36",
4
4
  "license": "MIT",
5
5
  "peerDependencies": {
6
- "@nx-ddd/core": "19.0.0-preview.35"
6
+ "@nx-ddd/core": "19.0.0-preview.36"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"