{"version":3,"file":"xxmachina-components-validators-query.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/validators/query/query.validators.ts","../../../../../packages/@xxmachina/components/src/lib/validators/query/xxmachina-components-validators-query.ts"],"sourcesContent":["import { inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AsyncValidatorFn, FormControl, FormGroup } from \"@angular/forms\";\nimport { AuthService } from \"@xxmachina/common/auth\";\nimport { QueryHelper } from \"@xxmachina/common/domain/models\";\nimport { QueryService } from \"@xxmachina/components/services/query\";\nimport { isEqual } from \"lodash-es\";\nimport { combineLatest, distinctUntilChanged, filter, map, ReplaySubject, shareReplay, startWith, switchMap, tap } from \"rxjs\";\n\nexport class QueryValidators {\n  static graphql(): AsyncValidatorFn {\n    const service = inject(QueryService);\n    const auth = inject(AuthService);\n    const params$ = new ReplaySubject<{endpoint: string, headersJson: string}>(1);\n    const result$ = params$.pipe(\n      distinctUntilChanged((a, b) => isEqual(a, b)),\n      filter(({endpoint}) => !!endpoint),\n      switchMap(({ endpoint, headersJson}) => {\n        return service.subscribeSchema(endpoint, {\n          headers: QueryHelper.tryParseJson(headersJson),\n        })\n      }),\n      shareReplay(1),\n      takeUntilDestroyed(),\n    );\n\n    return ((formGroup: FormGroup<{\n      endpoint: FormControl<string>,\n      headersJson: FormControl<string>,\n    }>) => {\n      return combineLatest({\n        accessToken: auth.accessToken$,\n        value: formGroup.valueChanges.pipe(startWith(formGroup.value)),\n      }).pipe(\n        switchMap(({accessToken, value}) => {\n          if (!accessToken ) return Promise.resolve(null);\n          params$.next({endpoint: value.endpoint!, headersJson: value.headersJson!});\n          return result$;\n        }),\n      )\n    }) as unknown as AsyncValidatorFn;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MASa,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,aAAa,CAA0C,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC7C,MAAM,CAAC,CAAC,EAAC,QAAQ,EAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAClC,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAC,KAAI;AACrC,YAAA,OAAO,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE;AACvC,gBAAA,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;AAC/C,aAAA,CAAC;QACJ,CAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB;AAED,QAAA,QAAQ,CAAC,SAGP,KAAI;AACJ,YAAA,OAAO,aAAa,CAAC;gBACnB,WAAW,EAAE,IAAI,CAAC,YAAY;AAC9B,gBAAA,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/D,aAAA,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,KAAI;AACjC,gBAAA,IAAI,CAAC,WAAW;AAAG,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/C,gBAAA,OAAO,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,KAAK,CAAC,QAAS,EAAE,WAAW,EAAE,KAAK,CAAC,WAAY,EAAC,CAAC;AAC1E,gBAAA,OAAO,OAAO;YAChB,CAAC,CAAC,CACH;AACH,QAAA,CAAC;IACH;AACD;;AC1CD;;AAEG;;;;"}