{"version":3,"file":"xxmachina-components-features-query.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/features/query/actions.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/update/update.feature.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/graphql/variables-form/variables-form.feature.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/resolvers/base/base.resolver.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/resolvers/graphql/graphql.resolver.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/query.feature.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/graphql/schema/schema.feature.ts","../../../../../packages/@xxmachina/components/src/lib/features/query/xxmachina-components-features-query.ts"],"sourcesContent":["export enum ActionId {\n  クエリの実行 = 'クエリの実行',\n  クエリの生成 = 'クエリの生成',\n  クエリの更新 = 'クエリの更新',\n}\n","import { inject, Injectable, Provider } from \"@angular/core\";\nimport { injectEntityStore } from \"@ng-atomic/common/stores/entities\";\nimport { provideEffect } from \"@ng-atomic/core\";\nimport { Query } from \"@xxmachina/common/domain\";\nimport { ActionId } from \"../actions\";\nimport { AppService } from \"@ng-atomic/common/services/app\";\nimport { QueryFeature } from \"../query.feature\";\n\n\n@Injectable()\nexport class QueryUpdateFeature {\n  static provideUpdateQueryEffect(): Provider[] {\n    return [\n      provideEffect(ActionId.クエリの更新, () => {\n        const feature = inject(QueryUpdateFeature);\n        return () => feature.update();\n      }),\n    ];\n  }\n\n  protected readonly queryEntityStore = injectEntityStore(Query);\n  protected readonly app = inject(AppService);\n  protected readonly feature = inject(QueryFeature);\n\n  update() {\n    const value = this.feature.form.getRawValue();\n    this.app.loading.await(() => {\n      return this.queryEntityStore.save({\n        ...value,\n        projectId: 'default',\n        summary: 'deprecated',\n        type: 'graphql',\n        createdAt: undefined as never,\n        updatedAt: undefined as never,\n      } as never).then(() => {\n        this.app.snackBar.open('クエリを更新しました');\n      }).catch((error) => {\n        console.error(error);\n        this.app.snackBar.open(`ERROR: ${error.message}`);\n      });\n    });\n  }\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { QueryFeature } from \"../../query.feature\";\nimport { combineLatest, filter, map, shareReplay } from \"rxjs\";\nimport { QueryHelper } from \"@xxmachina/common/domain\";\nimport { takeUntilDestroyed, toSignal } from \"@angular/core/rxjs-interop\";\nimport { VariablesFromService } from \"@xxmachina/components/services/forms/variables\";\nimport { getRawValue$ } from \"@ng-atomic/common/utils\";\n\n@Injectable()\nexport class QueryGraphqlVariablesFormFeature {\n  protected readonly feature = inject(QueryFeature);\n  protected readonly variablesFromService = inject(VariablesFromService);\n\n  protected readonly queryGraphqlVariables$ = this.feature.query$.pipe(\n    map((query) => JSON.parse(query!.graphql!.variablesJson!)),\n  );\n  protected readonly variablesValue$ = this.feature.query$.pipe(\n    map((query) => query?.graphql?.variables ?? {}),\n    shareReplay(1),\n  );\n  readonly variablesValue = toSignal(this.variablesValue$, {initialValue: {}});\n\n  protected readonly variablesForm$ = this.variablesValue$.pipe(\n    map((value) => this.variablesFromService.build(value)),\n    shareReplay(1),\n  );\n  readonly variablesForm = toSignal(this.variablesForm$);\n  readonly variablesFormValue$ = this.variablesForm$.pipe(\n    map((form) => getRawValue$(form)),\n    shareReplay(1),\n  );\n\n  constructor() {\n    combineLatest({\n      pre: this.queryGraphqlVariables$,\n      current: this.variablesFormValue$,\n    }).pipe(\n      takeUntilDestroyed(),\n      filter(({current}) => !!current),\n      map(({current, pre}) => ({ pre, next: QueryHelper.overwrite(current, pre) })),\n      filter(({pre, next}) => JSON.stringify(pre) !== JSON.stringify(next)),\n      shareReplay(1),\n    ).subscribe((mergedVariables) => {\n      this.feature.form.get(['graphql', 'variablesJson'])!.setValue(JSON.stringify(mergedVariables, null, 2));\n    });\n  }\n}\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Query } from '@xxmachina/common/domain/models';\n\nexport interface QueryResult {\n  [key: string]: any[];\n}\n\nexport interface QueryResolver {\n  /**\n   * このResolverが指定されたクエリを処理できるか判定\n   */\n  canResolve(query: Query): boolean;\n\n  /**\n   * データを取得・購読（Resolver内部でquery/subscriptionを判定）\n   */\n  resolve(query: Query): Observable<QueryResult>;\n}\n\nexport const QUERY_RESOLVERS = new InjectionToken<QueryResolver[]>('QUERY_RESOLVERS');\n\n/**\n * QueryResolverを登録する（multi: trueパターン）\n *\n * @example\n * // app.config.ts\n * providers: [\n *   provideQueryResolver(GraphqlResolver),\n *   provideQueryResolver(MachinaResolver),\n *   provideQueryResolver(HttpResolver),\n * ]\n */\nexport function provideQueryResolver(resolver: Type<QueryResolver>): Provider[] {\n  return [\n    resolver,\n    { provide: QUERY_RESOLVERS, useExisting: resolver, multi: true },\n  ];\n}\n","import { Injectable, inject } from '@angular/core';\nimport { QueryService } from '@xxmachina/common/services/query';\nimport { Query } from '@xxmachina/common/domain/models';\nimport { QueryResolver, QueryResult } from '../base';\nimport { Observable } from 'rxjs';\n\n/**\n * GraphQLクエリ文字列がquery型かどうかを判定\n * subscription型以外はquery型として扱う\n */\nexport function isQuery(query: string): boolean {\n  const queryString = query || '';\n  const isQuery = /^\\s*(query|{)/i.test(queryString.trim());\n  return isQuery;\n}\n\n@Injectable()\nexport class GraphqlResolver implements QueryResolver {\n  private readonly queryService = inject(QueryService);\n\n  canResolve(query: Query): boolean {\n    return query?.type === 'graphql' || !!query?.graphql?.query;\n  }\n\n  resolve(query: Query): Observable<QueryResult> {\n    // GraphQL固有のquery/subscription判定はResolver内部で行う\n    return isQuery(query.graphql!.query!)\n      ? this.queryService.query(query)\n      : this.queryService.subscribe(query);\n  }\n}\n","import { DestroyRef, inject, Injectable, Provider } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { AuthService } from '@xxmachina/common/auth';\nimport { Query, QueryHelper } from '@xxmachina/common/domain/models';\nimport { QueryFormService } from '@xxmachina/components/services/forms/query';\nimport { QueryService } from '@xxmachina/common/services/query';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { injectEntityStore } from '@ng-atomic/common/stores/entities';\nimport { getValue$ } from '@ng-atomic/common/utils';\nimport { EditingStateManager, pauseWhenEditing } from '@ng-atomic/common';\nimport { provideEffect } from '@ng-atomic/core';\nimport { isEqual } from 'lodash-es';\nimport { catchError, debounceTime, distinctUntilChanged, filter, map, of, ReplaySubject, shareReplay, switchMap, take } from 'rxjs';\nimport dayjs from 'dayjs';\nimport { QueryUpdateFeature } from './update';\nimport { ActionId } from './actions';\nimport { QueryGraphqlSchemaFeature } from './graphql/schema';\nimport { QueryGraphqlVariablesFormFeature } from './graphql/variables-form';\nimport { QUERY_RESOLVERS, QueryResolver, isQuery } from './resolvers';\n\n@Injectable()\nexport class QueryFeature {\n  static readonly ActionId = ActionId;\n\n  static provideDefault(): Provider[] {\n    return [\n      QueryFeature,\n      QueryGraphqlSchemaFeature,\n      QueryGraphqlVariablesFormFeature,\n      QueryUpdateFeature,\n    ];\n  }\n\n  static provideDefaultEffects(): Provider[] {\n    return [\n      QueryFeature.provideExecuteQueryEffect(),\n      QueryFeature.provideGenerateQueryEffect(),\n      QueryUpdateFeature.provideUpdateQueryEffect(),\n    ]\n  }\n\n  static provideExecuteQueryEffect() {\n    return provideEffect(ActionId.クエリの実行, () => {\n      const feature = inject(QueryFeature);\n      const app = inject(AppService);\n      const entityStore = injectEntityStore(Query);\n      return () => {\n        const value = feature.form.getRawValue();\n        app.loading.await(() => entityStore.create({\n          ...value,\n          id: undefined as unknown as string,\n          type: 'graphql',\n          projectId: 'default',\n          title: dayjs().toISOString(),\n          summary: 'クエリの実行',\n          createdAt: null as unknown as dayjs.Dayjs,\n          updatedAt: null as unknown as dayjs.Dayjs,\n        } as never), 'progress');\n        feature.refresh();\n      }\n    });\n  }\n\n  static provideGenerateQueryEffect(): Provider {\n    return provideEffect(ActionId.クエリの生成, () => {\n      return () => {};\n    });\n  }\n\n  protected readonly app = inject(AppService);\n  protected readonly auth = inject(AuthService);\n  protected readonly service = inject(QueryService);\n  protected readonly editingStateManager = inject(EditingStateManager);\n  // multi: trueで登録されたResolver配列（オプショナル）\n  protected readonly resolvers = inject(QUERY_RESOLVERS, { optional: true }) ?? [];\n  readonly form = inject(QueryFormService).build();\n\n  protected readonly refresh$ = new ReplaySubject<void>();\n  protected readonly formValue$ = getValue$(this.form).pipe(shareReplay(1));\n  readonly formValue = toSignal(this.formValue$);\n\n  readonly query$ = this.formValue$.pipe(\n    map((query) => QueryFormService.parse(query as never)),\n    shareReplay(1),\n  );\n  readonly query = toSignal(this.query$);\n\n  readonly destroyRef = inject(DestroyRef);\n  readonly result$ = this.refresh$.pipe(\n    takeUntilDestroyed(),\n    // まずqueryを取得\n    switchMap(() => this.query$.pipe(\n      filter((query) => {\n        // Resolverがある場合はResolverのcanResolveで判定\n        const resolver = this.resolvers.find(r => r.canResolve(query));\n        return resolver ? true : QueryHelper.validate(query);\n      }),\n      shareReplay(1),\n      take(1)\n    )),\n    // Resolverがない場合のみ認証を待つ\n    switchMap((query) => {\n      const resolver = this.resolvers.find(r => r.canResolve(query));\n      if (resolver) {\n        // Resolverがある場合は認証不要（WebRTC等の独自認証）\n        return of(query);\n      }\n      // GraphQL等は認証を待つ\n      return this.auth.accessToken$.pipe(\n        filter(accessToken => !!accessToken),\n        map(() => query),\n      );\n    }),\n    distinctUntilChanged((a, b) => isEqual(a, b)),\n    debounceTime(500),\n    this.app.loading.switchMap((query) => this.executeQuery(query), 'progress'),\n    filter((result) => !!result),\n    // Pause data updates when editing\n    pauseWhenEditing(this.editingStateManager),\n    shareReplay(1),\n  );\n  readonly result = toSignal<Record<string, any[]> & Record<`${string}Length`, number> & { __meta__?: { title?: string } & any }>(this.result$);\n\n  constructor() {\n    this.form.get(['graphql', 'variablesJson'])!.valueChanges.pipe(\n      takeUntilDestroyed(),\n      debounceTime(300),\n      distinctUntilChanged(isEqual),\n    ).subscribe(() => this.refresh());\n  }\n\n  refresh(): void {\n    this.refresh$.next();\n  }\n\n  protected executeQuery(query: Query) {\n    const resolver = this.resolvers.find(r => r.canResolve(query));\n    const source$ = resolver\n      ? resolver.resolve(query)\n      : isQuery(query.graphql!.query!) ? this.service.query(query) : this.service.subscribe(query);\n\n    return source$.pipe(\n      takeUntilDestroyed(this.destroyRef),\n      catchError(error => {\n        this.app.snackBar.openError(error);\n        console.error(error);\n        return of(null);\n      }),\n    );\n  }\n}\n","import { inject, Injectable, Provider } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { QueryHelper } from \"@xxmachina/common/domain/models\";\nimport { QueryService } from \"@xxmachina/common/services/query\";\nimport { isEqual } from \"lodash-es\";\nimport { catchError, debounceTime, distinctUntilChanged, filter, NEVER, switchMap } from \"rxjs\";\nimport { QueryFeature } from \"../../query.feature\";\n\n\n@Injectable()\nexport class QueryGraphqlSchemaFeature {\n  protected readonly feature = inject(QueryFeature);\n  protected readonly service = inject(QueryService);\n\n  protected readonly graphqlSchema$ = this.feature.query$.pipe(\n    debounceTime(300),\n    filter(query => QueryHelper.isExecutableGetSchemaGraphql(query)),\n    switchMap((query) => this.service.getSchema(query).pipe(\n      catchError(error => (console.error('[QueryFeature] error', error), NEVER)),\n    )),\n    distinctUntilChanged((a, b) => isEqual(a, b)),\n  );\n  readonly graphqlSchema = toSignal(this.graphqlSchema$);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Query","QueryHelper"],"mappings":"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"}