@xxmachina/common 19.35.0 → 19.37.0

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 (48) hide show
  1. package/fesm2022/xxmachina-common-_shared-meta.mjs.map +1 -1
  2. package/fesm2022/xxmachina-common-auth-azure.mjs.map +1 -1
  3. package/fesm2022/xxmachina-common-auth-firebase.mjs +22 -11
  4. package/fesm2022/xxmachina-common-auth-firebase.mjs.map +1 -1
  5. package/fesm2022/xxmachina-common-domain-builder.mjs +1 -1
  6. package/fesm2022/xxmachina-common-domain-builder.mjs.map +1 -1
  7. package/fesm2022/xxmachina-common-domain-models.mjs +2 -1
  8. package/fesm2022/xxmachina-common-domain-models.mjs.map +1 -1
  9. package/fesm2022/xxmachina-common-infra-converters-google.mjs.map +1 -1
  10. package/fesm2022/xxmachina-common-infra-external-quick-js.mjs.map +1 -1
  11. package/fesm2022/xxmachina-common-infra-repository-dataconnect.mjs +2 -2
  12. package/fesm2022/xxmachina-common-infra-repository-dataconnect.mjs.map +1 -1
  13. package/fesm2022/xxmachina-common-infra-repository-notion.mjs.map +1 -1
  14. package/fesm2022/xxmachina-common-infra.mjs.map +1 -1
  15. package/fesm2022/xxmachina-common-invoice-domain-builders.mjs +1 -1
  16. package/fesm2022/xxmachina-common-invoice-domain-builders.mjs.map +1 -1
  17. package/fesm2022/xxmachina-common-invoice-domain-models.mjs.map +1 -1
  18. package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs.map +1 -1
  19. package/fesm2022/xxmachina-common-services-graphql.mjs +6 -5
  20. package/fesm2022/xxmachina-common-services-graphql.mjs.map +1 -1
  21. package/fesm2022/xxmachina-common-services-query.mjs.map +1 -1
  22. package/fesm2022/xxmachina-common-services-speech.mjs.map +1 -1
  23. package/fesm2022/xxmachina-common-usecase-database.mjs.map +1 -1
  24. package/fesm2022/xxmachina-common-usecase-graphql.mjs +1 -1
  25. package/fesm2022/xxmachina-common-usecase-graphql.mjs.map +1 -1
  26. package/fesm2022/xxmachina-common-usecase-spec.mjs.map +1 -1
  27. package/fesm2022/xxmachina-common-usecase.mjs +1 -1
  28. package/fesm2022/xxmachina-common-usecase.mjs.map +1 -1
  29. package/fesm2022/xxmachina-common-utils.mjs.map +1 -1
  30. package/package.json +11 -11
  31. package/types/xxmachina-common-_shared-auth.d.ts +1 -1
  32. package/types/xxmachina-common-auth-azure.d.ts +3 -3
  33. package/types/xxmachina-common-auth-azure.d.ts.map +1 -1
  34. package/types/xxmachina-common-auth-firebase.d.ts +7 -1
  35. package/types/xxmachina-common-auth-firebase.d.ts.map +1 -1
  36. package/types/xxmachina-common-domain-builder.d.ts +1 -1
  37. package/types/xxmachina-common-domain-builder.d.ts.map +1 -1
  38. package/types/xxmachina-common-domain-models.d.ts +26 -26
  39. package/types/xxmachina-common-domain-models.d.ts.map +1 -1
  40. package/types/xxmachina-common-infra-converters-google.d.ts +1 -1
  41. package/types/xxmachina-common-infra-converters-google.d.ts.map +1 -1
  42. package/types/xxmachina-common-infra-external-resend.d.ts +1 -1
  43. package/types/xxmachina-common-infra-repository-notion.d.ts.map +1 -1
  44. package/types/xxmachina-common-infra.d.ts.map +1 -1
  45. package/types/xxmachina-common-services-speech.d.ts +2 -2
  46. package/types/xxmachina-common-stores-firestore.d.ts +2 -2
  47. package/types/xxmachina-common-stores-hasura.d.ts +3 -3
  48. package/types/xxmachina-common-usecase-database.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-services-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/subscription-splitter/ast-splitter.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-enhanced.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-enhanced.provider.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/xxmachina-common-services-graphql.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { GetHeaders } from \"@nx-ddd/hasura\";\nimport { ApolloClientManagerService } from \"@nx-ddd/hasura\";\nimport { EMPTY, Observable, switchMap } from \"rxjs\";\nimport { gql } from \"apollo-angular\";\nimport { DocumentNode, getIntrospectionQuery } from \"graphql\";\n\nexport interface ExecutableGraphql {\n endpoint: string;\n query: string | DocumentNode;\n variables: object;\n headers: Record<string, string> | GetHeaders;\n}\n\nexport type ExecutableGetSchemaGraphql = Pick<ExecutableGraphql, 'endpoint' | 'headers'>;\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n readonly apolloClientManager = inject(ApolloClientManagerService);\n\n /**\n * @TODO\n * this.apolloMulti.getClientはendpoint単位でApolloClientを管理しているため、\n * _query.graphql.headersに認証情報などが含まれていないリクエストが初めに来ると、\n * {message: 'no subscriptions exist}のようなエラーが出る。\n * Headersが更新されるたびに、ApolloClientを再生成するような処理も必要。\n */\n subscribe(graphql: ExecutableGraphql) {\n if (!graphql.query) return EMPTY;\n const getHeaders: GetHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.subscribe<Record<string, any>>({\n query: gql`${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })),\n );\n }\n\n query(graphql: ExecutableGraphql) {\n if (!graphql.query) return EMPTY;\n const getHeaders: GetHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.query<Record<string, any>>({\n query: gql`${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })),\n );\n }\n\n getSchema(graphql: ExecutableGetSchemaGraphql): Observable<any> {\n const getHeaders: GetHeaders = typeof graphql.headers === 'function' \n ? graphql.headers \n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.query<Record<string, any>>({\n query: gql`${getIntrospectionQuery()}`,\n variables: {},\n fetchPolicy: 'network-only',\n })),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { \n DocumentNode, \n parse, \n print,\n visit,\n OperationDefinitionNode,\n FieldNode,\n VariableDefinitionNode,\n SelectionSetNode,\n ArgumentNode,\n Kind,\n OperationTypeNode\n} from 'graphql';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * AST-based subscription splitter service\n * GraphQL ASTを使用して正確にサブスクリプションを分割\n */\n@Injectable({ providedIn: 'root' })\nexport class AstSubscriptionSplitterService {\n \n splitSubscription(query: string | DocumentNode): { fieldName: string; query: string }[] {\n const document = typeof query === 'string' ? parse(query) : query;\n \n // Find the subscription operation\n let subscriptionOp: OperationDefinitionNode | undefined;\n visit(document, {\n OperationDefinition(node) {\n if (node.operation === OperationTypeNode.SUBSCRIPTION) {\n subscriptionOp = node;\n }\n }\n });\n \n if (!subscriptionOp || !subscriptionOp.selectionSet.selections.length) {\n return [];\n }\n \n const results: { fieldName: string; query: string }[] = [];\n \n // Process each field in the subscription\n subscriptionOp.selectionSet.selections.forEach(selection => {\n if (selection.kind === Kind.FIELD) {\n const field = selection as FieldNode;\n const fieldName = field.alias?.value || field.name.value;\n \n // Extract variables used in this field\n const usedVariables = this.extractUsedVariables(field);\n \n // Create a new subscription with only this field and its used variables\n const newDoc: DocumentNode = {\n kind: Kind.DOCUMENT,\n definitions: [{\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.SUBSCRIPTION,\n name: subscriptionOp.name ? {\n kind: Kind.NAME,\n value: subscriptionOp.name.value\n } : undefined,\n variableDefinitions: this.filterVariableDefinitions(\n subscriptionOp.variableDefinitions || [],\n usedVariables\n ),\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: [field]\n }\n }]\n };\n \n results.push({\n fieldName: field.name.value,\n query: print(newDoc)\n });\n }\n });\n \n return results;\n }\n \n /**\n * Extract variables used in a field and its subfields\n */\n private extractUsedVariables(field: FieldNode): Set<string> {\n const usedVars = new Set<string>();\n \n // Visit all nodes in the field to find variable references\n visit(field, {\n Variable(node) {\n usedVars.add(node.name.value);\n }\n });\n \n return usedVars;\n }\n \n /**\n * Filter variable definitions to only include used variables\n */\n private filterVariableDefinitions(\n definitions: ReadonlyArray<VariableDefinitionNode>,\n usedVariables: Set<string>\n ): VariableDefinitionNode[] {\n return definitions.filter(def => \n usedVariables.has(def.variable.name.value)\n );\n }\n \n /**\n * Combine multiple observables from split queries\n */\n combineResults(\n results: Observable<any>[],\n fieldNames: string[]\n ): Observable<any> {\n if (results.length === 0) {\n return of({});\n }\n \n if (results.length === 1) {\n return results[0];\n }\n \n return combineLatest(results).pipe(\n map(data => {\n const combined: any = {};\n fieldNames.forEach((fieldName, index) => {\n if (data[index] && typeof data[index] === 'object') {\n Object.keys(data[index]).forEach(key => {\n if (combined[key]) {\n if (Array.isArray(combined[key])) {\n combined[key] = [...combined[key], ...(Array.isArray(data[index][key]) ? data[index][key] : [data[index][key]])];\n } else {\n combined[key] = [combined[key], data[index][key]];\n }\n } else {\n combined[key] = data[index][key];\n }\n });\n }\n });\n return combined;\n })\n );\n }\n}","import { DocumentNode } from 'graphql';\nimport { ExecutableGraphql } from './graphql.service';\n\n/**\n * クエリがsubscriptionかどうかを判定\n */\nexport function isSubscription(query: string | DocumentNode): boolean {\n const queryStr = typeof query === 'string' ? query : query.loc?.source?.body || '';\n return queryStr.trim().startsWith('subscription');\n}\n\n/**\n * クエリから使用されている変数を抽出\n */\nexport function extractUsedVariablesFromQuery(query: string): Set<string> {\n const variables = new Set<string>();\n const regex = /\\$(\\w+)/g;\n let match;\n\n while ((match = regex.exec(query)) !== null) {\n variables.add(match[1]);\n }\n\n return variables;\n}\n\n/**\n * 変数値から使用される変数のみをフィルタリング\n */\nexport function filterVariableValues(variables: object, usedVars: Set<string>): object {\n const filtered: any = {};\n\n for (const [key, value] of Object.entries(variables)) {\n if (usedVars.has(key)) {\n filtered[key] = value;\n }\n }\n\n return filtered;\n}\n\n/**\n * GraphQLクエリから未使用の変数を削除\n */\nexport function removeUnusedVariables(graphql: ExecutableGraphql): ExecutableGraphql {\n if (!graphql.variables || Object.keys(graphql.variables).length === 0) {\n return graphql;\n }\n\n const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';\n const usedVars = extractUsedVariablesFromQuery(queryStr);\n const filteredVariables = filterVariableValues(graphql.variables, usedVars);\n\n return {\n ...graphql,\n variables: filteredVariables\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { GraphqlService, ExecutableGraphql } from './graphql.service';\nimport { AstSubscriptionSplitterService } from './subscription-splitter/ast-splitter.service';\nimport { FetchResult } from '@apollo/client/core';\nimport {\n isSubscription,\n extractUsedVariablesFromQuery,\n filterVariableValues,\n removeUnusedVariables\n} from './graphql-utils';\n\nexport interface ExecutableGraphqlWithSplitting extends ExecutableGraphql {\n enableSplitting?: boolean;\n}\n\n/**\n * GraphqlServiceを拡張して、subscription分割機能を追加\n *\n * GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、\n * 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。\n */\n@Injectable({ providedIn: 'root' })\nexport class GraphqlEnhancedService extends GraphqlService {\n private readonly splitter = inject(AstSubscriptionSplitterService);\n\n /**\n * subscriptionクエリを実行\n * デフォルトでsubscriptionは自動的に分割される\n */\n override subscribe(graphql: ExecutableGraphqlWithSplitting): Observable<FetchResult<any>> {\n const shouldSplit = graphql.enableSplitting !== false && isSubscription(graphql.query);\n\n if (!shouldSplit) {\n const filteredGraphql = removeUnusedVariables(graphql);\n return super.subscribe(filteredGraphql);\n }\n\n return this.subscribeSplit(graphql);\n }\n\n /**\n * subscriptionクエリを分割して並列実行し、結果を結合\n */\n private subscribeSplit(graphql: ExecutableGraphql): Observable<FetchResult<any>> {\n const splitQueries = this.splitter.splitSubscription(graphql.query);\n\n if (splitQueries.length <= 1) {\n return super.subscribe(graphql);\n }\n\n const observables = splitQueries.map((splitQuery) => {\n const usedVars = extractUsedVariablesFromQuery(splitQuery.query);\n const filteredVariables = filterVariableValues(graphql.variables, usedVars);\n\n const splitGraphql: ExecutableGraphql = {\n ...graphql,\n query: splitQuery.query,\n variables: filteredVariables\n };\n\n return super.subscribe(splitGraphql).pipe(\n map(result => ({ fieldName: splitQuery.fieldName, result }))\n );\n });\n\n return combineLatest(observables).pipe(\n map(results => {\n const combinedData: any = {};\n\n results.forEach(({ fieldName, result }) => {\n const data = result.data || result;\n if (data[fieldName] !== undefined) {\n combinedData[fieldName] = data[fieldName];\n }\n });\n\n return {\n data: combinedData,\n loading: false,\n networkStatus: 7\n } as FetchResult;\n })\n );\n }\n}\n","import { Provider } from '@angular/core';\nimport { GraphqlService } from './graphql.service';\nimport { GraphqlEnhancedService } from './graphql-enhanced.service';\n\n/**\n * GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー\n * \n * 使用方法:\n * ```typescript\n * export default <Routes>[\n * {\n * path: '',\n * component: YourComponent,\n * providers: [\n * provideGraphqlEnhancedLocally()\n * ]\n * }\n * ];\n * ```\n */\nexport function provideGraphqlEnhancedLocally(): Provider[] {\n return [\n {\n provide: GraphqlService,\n useClass: GraphqlEnhancedService\n }\n ];\n}\n\n/**\n * グローバルにGraphqlEnhancedServiceを提供\n * app.config.tsで使用\n */\nexport function provideGraphqlEnhancedGlobally(): Provider[] {\n return provideGraphqlEnhancedLocally();\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-common-services-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/subscription-splitter/ast-splitter.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-enhanced.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/graphql-enhanced.provider.ts","../../../../../packages/@xxmachina/common/src/lib/services/graphql/xxmachina-common-services-graphql.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { GetHeaders } from \"@nx-ddd/hasura\";\nimport { ApolloClientManagerService } from \"@nx-ddd/hasura\";\nimport { EMPTY, Observable, switchMap } from \"rxjs\";\nimport { gql } from \"apollo-angular\";\nimport { DocumentNode, getIntrospectionQuery } from \"graphql\";\n\nexport interface ExecutableGraphql {\n endpoint: string;\n query: string | DocumentNode;\n variables: object;\n headers: Record<string, string> | GetHeaders;\n}\n\nexport type ExecutableGetSchemaGraphql = Pick<ExecutableGraphql, 'endpoint' | 'headers'>;\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n readonly apolloClientManager = inject(ApolloClientManagerService);\n\n /**\n * @TODO\n * this.apolloMulti.getClientはendpoint単位でApolloClientを管理しているため、\n * _query.graphql.headersに認証情報などが含まれていないリクエストが初めに来ると、\n * {message: 'no subscriptions exist}のようなエラーが出る。\n * Headersが更新されるたびに、ApolloClientを再生成するような処理も必要。\n */\n subscribe(graphql: ExecutableGraphql) {\n if (!graphql.query) return EMPTY;\n const getHeaders: GetHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.subscribe<Record<string, any>>({\n query: gql`${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })),\n );\n }\n\n query(graphql: ExecutableGraphql) {\n if (!graphql.query) return EMPTY;\n const getHeaders: GetHeaders = typeof graphql.headers === 'function'\n ? graphql.headers\n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.query<Record<string, any>>({\n query: gql`${graphql.query}`,\n variables: graphql.variables,\n fetchPolicy: 'network-only',\n })),\n );\n }\n\n getSchema(graphql: ExecutableGetSchemaGraphql): Observable<any> {\n const getHeaders: GetHeaders = typeof graphql.headers === 'function' \n ? graphql.headers \n : () => Promise.resolve(graphql.headers as Record<string, string>);\n return this.apolloClientManager.getClient(graphql.endpoint, getHeaders).pipe(\n switchMap((client) => client.query<Record<string, any>>({\n query: gql`${getIntrospectionQuery()}`,\n variables: {},\n fetchPolicy: 'network-only',\n })),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { \n DocumentNode, \n parse, \n print,\n visit,\n OperationDefinitionNode,\n FieldNode,\n VariableDefinitionNode,\n SelectionSetNode,\n ArgumentNode,\n Kind,\n OperationTypeNode\n} from 'graphql';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * AST-based subscription splitter service\n * GraphQL ASTを使用して正確にサブスクリプションを分割\n */\n@Injectable({ providedIn: 'root' })\nexport class AstSubscriptionSplitterService {\n \n splitSubscription(query: string | DocumentNode): { fieldName: string; query: string }[] {\n const document = typeof query === 'string' ? parse(query) : query;\n \n // Find the subscription operation\n let subscriptionOp: OperationDefinitionNode | undefined;\n visit(document, {\n OperationDefinition(node) {\n if (node.operation === OperationTypeNode.SUBSCRIPTION) {\n subscriptionOp = node;\n }\n }\n });\n \n if (!subscriptionOp || !subscriptionOp.selectionSet.selections.length) {\n return [];\n }\n\n const op = subscriptionOp;\n const results: { fieldName: string; query: string }[] = [];\n\n // Process each field in the subscription\n op.selectionSet.selections.forEach(selection => {\n if (selection.kind === Kind.FIELD) {\n const field = selection as FieldNode;\n const fieldName = field.alias?.value || field.name.value;\n \n // Extract variables used in this field\n const usedVariables = this.extractUsedVariables(field);\n \n // Create a new subscription with only this field and its used variables\n const newDoc: DocumentNode = {\n kind: Kind.DOCUMENT,\n definitions: [{\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.SUBSCRIPTION,\n name: op.name ? {\n kind: Kind.NAME,\n value: op.name.value\n } : undefined,\n variableDefinitions: this.filterVariableDefinitions(\n op.variableDefinitions || [],\n usedVariables\n ),\n selectionSet: {\n kind: Kind.SELECTION_SET,\n selections: [field]\n }\n }]\n };\n \n results.push({\n fieldName: field.name.value,\n query: print(newDoc)\n });\n }\n });\n \n return results;\n }\n \n /**\n * Extract variables used in a field and its subfields\n */\n private extractUsedVariables(field: FieldNode): Set<string> {\n const usedVars = new Set<string>();\n \n // Visit all nodes in the field to find variable references\n visit(field, {\n Variable(node) {\n usedVars.add(node.name.value);\n }\n });\n \n return usedVars;\n }\n \n /**\n * Filter variable definitions to only include used variables\n */\n private filterVariableDefinitions(\n definitions: ReadonlyArray<VariableDefinitionNode>,\n usedVariables: Set<string>\n ): VariableDefinitionNode[] {\n return definitions.filter(def => \n usedVariables.has(def.variable.name.value)\n );\n }\n \n /**\n * Combine multiple observables from split queries\n */\n combineResults(\n results: Observable<any>[],\n fieldNames: string[]\n ): Observable<any> {\n if (results.length === 0) {\n return of({});\n }\n \n if (results.length === 1) {\n return results[0];\n }\n \n return combineLatest(results).pipe(\n map(data => {\n const combined: any = {};\n fieldNames.forEach((fieldName, index) => {\n if (data[index] && typeof data[index] === 'object') {\n Object.keys(data[index]).forEach(key => {\n if (combined[key]) {\n if (Array.isArray(combined[key])) {\n combined[key] = [...combined[key], ...(Array.isArray(data[index][key]) ? data[index][key] : [data[index][key]])];\n } else {\n combined[key] = [combined[key], data[index][key]];\n }\n } else {\n combined[key] = data[index][key];\n }\n });\n }\n });\n return combined;\n })\n );\n }\n}","import { DocumentNode } from 'graphql';\nimport { ExecutableGraphql } from './graphql.service';\n\n/**\n * クエリがsubscriptionかどうかを判定\n */\nexport function isSubscription(query: string | DocumentNode): boolean {\n const queryStr = typeof query === 'string' ? query : query.loc?.source?.body || '';\n return queryStr.trim().startsWith('subscription');\n}\n\n/**\n * クエリから使用されている変数を抽出\n */\nexport function extractUsedVariablesFromQuery(query: string): Set<string> {\n const variables = new Set<string>();\n const regex = /\\$(\\w+)/g;\n let match;\n\n while ((match = regex.exec(query)) !== null) {\n variables.add(match[1]);\n }\n\n return variables;\n}\n\n/**\n * 変数値から使用される変数のみをフィルタリング\n */\nexport function filterVariableValues(variables: object, usedVars: Set<string>): object {\n const filtered: any = {};\n\n for (const [key, value] of Object.entries(variables)) {\n if (usedVars.has(key)) {\n filtered[key] = value;\n }\n }\n\n return filtered;\n}\n\n/**\n * GraphQLクエリから未使用の変数を削除\n */\nexport function removeUnusedVariables(graphql: ExecutableGraphql): ExecutableGraphql {\n if (!graphql.variables || Object.keys(graphql.variables).length === 0) {\n return graphql;\n }\n\n const queryStr = typeof graphql.query === 'string' ? graphql.query : graphql.query.loc?.source?.body || '';\n const usedVars = extractUsedVariablesFromQuery(queryStr);\n const filteredVariables = filterVariableValues(graphql.variables, usedVars);\n\n return {\n ...graphql,\n variables: filteredVariables\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { GraphqlService, ExecutableGraphql } from './graphql.service';\nimport { AstSubscriptionSplitterService } from './subscription-splitter/ast-splitter.service';\nimport { FetchResult } from '@apollo/client/core';\nimport {\n isSubscription,\n extractUsedVariablesFromQuery,\n filterVariableValues,\n removeUnusedVariables\n} from './graphql-utils';\n\nexport interface ExecutableGraphqlWithSplitting extends ExecutableGraphql {\n enableSplitting?: boolean;\n}\n\n/**\n * GraphqlServiceを拡張して、subscription分割機能を追加\n *\n * GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、\n * 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。\n */\n@Injectable({ providedIn: 'root' })\nexport class GraphqlEnhancedService extends GraphqlService {\n private readonly splitter = inject(AstSubscriptionSplitterService);\n\n /**\n * subscriptionクエリを実行\n * デフォルトでsubscriptionは自動的に分割される\n */\n override subscribe(graphql: ExecutableGraphqlWithSplitting): Observable<FetchResult<any>> {\n const shouldSplit = graphql.enableSplitting !== false && isSubscription(graphql.query);\n\n if (!shouldSplit) {\n const filteredGraphql = removeUnusedVariables(graphql);\n return super.subscribe(filteredGraphql);\n }\n\n return this.subscribeSplit(graphql);\n }\n\n /**\n * subscriptionクエリを分割して並列実行し、結果を結合\n */\n private subscribeSplit(graphql: ExecutableGraphql): Observable<FetchResult<any>> {\n const splitQueries = this.splitter.splitSubscription(graphql.query);\n\n if (splitQueries.length <= 1) {\n return super.subscribe(graphql);\n }\n\n const observables = splitQueries.map((splitQuery) => {\n const usedVars = extractUsedVariablesFromQuery(splitQuery.query);\n const filteredVariables = filterVariableValues(graphql.variables, usedVars);\n\n const splitGraphql: ExecutableGraphql = {\n ...graphql,\n query: splitQuery.query,\n variables: filteredVariables\n };\n\n return super.subscribe(splitGraphql).pipe(\n map(result => ({ fieldName: splitQuery.fieldName, result }))\n );\n });\n\n return combineLatest(observables).pipe(\n map(results => {\n const combinedData: any = {};\n\n results.forEach(({ fieldName, result }) => {\n const data = (result.data || result) as Record<string, any>;\n if (data[fieldName] !== undefined) {\n combinedData[fieldName] = data[fieldName];\n }\n });\n\n return {\n data: combinedData,\n loading: false,\n networkStatus: 7\n } as FetchResult;\n })\n );\n }\n}\n","import { Provider } from '@angular/core';\nimport { GraphqlService } from './graphql.service';\nimport { GraphqlEnhancedService } from './graphql-enhanced.service';\n\n/**\n * GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー\n * \n * 使用方法:\n * ```typescript\n * export default <Routes>[\n * {\n * path: '',\n * component: YourComponent,\n * providers: [\n * provideGraphqlEnhancedLocally()\n * ]\n * }\n * ];\n * ```\n */\nexport function provideGraphqlEnhancedLocally(): Provider[] {\n return [\n {\n provide: GraphqlService,\n useClass: GraphqlEnhancedService\n }\n ];\n}\n\n/**\n * グローバルにGraphqlEnhancedServiceを提供\n * app.config.tsで使用\n */\nexport function provideGraphqlEnhancedGlobally(): Provider[] {\n return provideGraphqlEnhancedLocally();\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-services-query.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/query/resolver/resolver.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/query/query.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/query/xxmachina-common-services-query.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { Query, QueryHelper } from \"@xxmachina/common/domain\";\nimport { ExecutableGraphql } from \"@xxmachina/common/services/graphql\";\nimport { filter, map, Observable } from \"rxjs\";\nimport { QueryConfigService } from \"@xxmachina/common/services/query/config\";\n\nexport interface ExecutableQuery {\n graphql: ExecutableGraphql;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class QueryResolverService {\n readonly config = inject(QueryConfigService);\n\n resolve(query: Query): Observable<ExecutableQuery> {\n return this.config.resolve(query).pipe(\n filter((rq) => !!rq.graphql?.query?.trim()),\n map((resolvedQuery) => ({\n graphql: {\n endpoint: resolvedQuery.graphql.endpoint,\n query: resolvedQuery.graphql.query,\n variables: QueryHelper.pruneUnusedVariables(resolvedQuery.graphql.variables, resolvedQuery.graphql.query),\n headers: () => this.config.resolve(query.graphql.headers),\n }\n })),\n );\n }\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, switchMap } from \"rxjs\";\nimport { Query } from \"@xxmachina/common/domain\";\nimport { QueryHelper } from \"@xxmachina/common/domain\";\nimport { ExecutableQuery, QueryResolverService } from \"./resolver\";\nimport { GraphqlService } from \"@xxmachina/common/services/graphql\";\nimport { TransformerService } from \"@xxmachina/common/services/transformer\";\n\n\n@Injectable({ providedIn: 'root' })\nexport class QueryService {\n protected readonly resolver = inject(QueryResolverService);\n protected readonly graphql = inject(GraphqlService);\n protected readonly transformer = inject(TransformerService);\n\n subscribe<R extends object = any>(query: Query): Observable<R> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => {\n return this.graphql.subscribe(executableQuery.graphql).pipe(\n switchMap(async (result: any) => this.transformer.transform({\n transformerTs: query.graphql?.transformerTs,\n transformer: query.graphql?.transformer,\n }, QueryHelper.parseResult(result))),\n );\n }),\n );\n }\n\n query<R extends object = any>(query: Query): Observable<R> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => {\n return this.graphql.query(executableQuery.graphql).pipe(\n switchMap(async (result: any) => this.transformer.transform({\n transformerTs: query.graphql?.transformerTs,\n transformer: query.graphql?.transformer,\n }, QueryHelper.parseResult(result))),\n );\n }),\n );\n }\n\n getSchema(query: Query): Observable<any> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => this.graphql.getSchema(executableQuery.graphql)),\n map((result: any) => result?.['data']),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-common-services-query.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/query/resolver/resolver.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/query/query.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/query/xxmachina-common-services-query.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { Query, QueryHelper } from \"@xxmachina/common/domain\";\nimport { ExecutableGraphql } from \"@xxmachina/common/services/graphql\";\nimport { filter, map, Observable } from \"rxjs\";\nimport { QueryConfigService } from \"@xxmachina/common/services/query/config\";\n\nexport interface ExecutableQuery {\n graphql: ExecutableGraphql;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class QueryResolverService {\n readonly config = inject(QueryConfigService);\n\n resolve(query: Query): Observable<ExecutableQuery> {\n return (this.config.resolve(query) as Observable<Query>).pipe(\n filter((rq: Query) => !!rq.graphql?.query?.trim()),\n map((resolvedQuery: Query) => ({\n graphql: {\n endpoint: resolvedQuery.graphql!.endpoint,\n query: resolvedQuery.graphql!.query,\n variables: QueryHelper.pruneUnusedVariables(resolvedQuery.graphql!.variables as object, resolvedQuery.graphql!.query),\n headers: () => this.config.resolve(query.graphql!.headers as object),\n }\n })),\n ) as unknown as Observable<ExecutableQuery>;\n }\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, switchMap } from \"rxjs\";\nimport { Query } from \"@xxmachina/common/domain\";\nimport { QueryHelper } from \"@xxmachina/common/domain\";\nimport { ExecutableQuery, QueryResolverService } from \"./resolver\";\nimport { GraphqlService } from \"@xxmachina/common/services/graphql\";\nimport { TransformerService } from \"@xxmachina/common/services/transformer\";\n\n\n@Injectable({ providedIn: 'root' })\nexport class QueryService {\n protected readonly resolver = inject(QueryResolverService);\n protected readonly graphql = inject(GraphqlService);\n protected readonly transformer = inject(TransformerService);\n\n subscribe<R extends object = any>(query: Query): Observable<R> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => {\n return this.graphql.subscribe(executableQuery.graphql).pipe(\n switchMap(async (result: any) => this.transformer.transform({\n transformerTs: query.graphql?.transformerTs,\n transformer: query.graphql?.transformer,\n }, QueryHelper.parseResult(result))),\n );\n }),\n );\n }\n\n query<R extends object = any>(query: Query): Observable<R> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => {\n return this.graphql.query(executableQuery.graphql).pipe(\n switchMap(async (result: any) => this.transformer.transform({\n transformerTs: query.graphql?.transformerTs,\n transformer: query.graphql?.transformer,\n }, QueryHelper.parseResult(result))),\n );\n }),\n );\n }\n\n getSchema(query: Query): Observable<any> {\n return this.resolver.resolve(query).pipe(\n switchMap((executableQuery: ExecutableQuery) => this.graphql.getSchema(executableQuery.graphql)),\n map((result: any) => result?.['data']),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-services-speech.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/speech/speech-recognition-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/speech.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/xxmachina-common-services-speech.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\n\n/**\n * SpeechRecognition APIの初期化\n */\nexport function initializeSpeechRecognitionAPI(): SpeechRecognition | null {\n if (typeof window === 'undefined') return null;\n if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {\n console.warn('[SpeechService] SpeechRecognition API is not supported in this browser');\n return null;\n }\n\n const SpeechRecognitionAPI = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n const recognition = new SpeechRecognitionAPI();\n recognition.continuous = true;\n recognition.interimResults = true;\n recognition.lang = 'ja-JP';\n return recognition;\n}\n\n/**\n * SpeechRecognitionイベントをパースして中間結果と確定結果を返す\n * @param startIndex - 読み取り開始インデックス(指定時はevent.resultIndexより優先)\n */\nexport function parseSpeechRecognitionEvent(\n event: SpeechRecognitionEvent,\n startIndex?: number,\n): { interim: string; finalized: string } {\n const from = startIndex ?? event.resultIndex;\n const results: SpeechRecognitionAlternative[] = [];\n for (let i = from; i < event.results.length; i++) {\n results.push({\n transcript: event.results[i][0].transcript,\n confidence: event.results[i][0].confidence,\n isFinal: event.results[i].isFinal,\n } as any);\n }\n return {\n interim: results.filter((result: any) => !result.isFinal).map((result) => result.transcript).join(''),\n finalized: results.filter((result: any) => result.isFinal).map((result) => result.transcript).join(''),\n };\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\nimport { Injectable, signal, effect, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, interval } from 'rxjs';\nimport { initializeSpeechRecognitionAPI, parseSpeechRecognitionEvent } from './speech-recognition-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeechService {\n private static instanceCounter = 0;\n private readonly PAUSE_THRESHOLD = 1000;\n private recognition: SpeechRecognition | null = null;\n private lastSpeechTime = signal(Date.now());\n private ignoreResults = false;\n private lastKnownResultsLength = 0;\n private resultIndexThreshold = 0;\n\n readonly transcript = signal<{ finalized: string; interim: string }>({ finalized: '', interim: '' });\n readonly transcript$ = toObservable(this.transcript);\n readonly isListening = signal(false);\n readonly activeComponentId = signal<string | null>(null);\n readonly isSupported = typeof window !== 'undefined' &&\n (('SpeechRecognition' in window) || ('webkitSpeechRecognition' in window));\n\n readonly finalized = computed(() => this.transcript().finalized);\n readonly finalized$ = toObservable(this.finalized);\n\n // 自動モード: セッション選択時に自動的に音声入力を開始\n readonly autoModeEnabled = signal(false);\n // 選択中のセッションID(自動音声入力制御用)\n readonly selectedSessionId = signal<string | null>(null);\n\n constructor() {\n interval(this.PAUSE_THRESHOLD).pipe(\n filter(() => this.isListening() && (Date.now() - this.lastSpeechTime()) >= this.PAUSE_THRESHOLD),\n ).subscribe(() => {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n });\n\n effect(() => {\n if (!this.isListening()) {\n this.stopRecognition();\n }\n });\n }\n\n generateComponentId(): string {\n return `speech-${++SpeechService.instanceCounter}`;\n }\n\n isActiveComponent(componentId: string): boolean {\n return this.activeComponentId() === componentId;\n }\n\n start(componentId: string): void {\n if (!this.isSupported) {\n console.warn('[SpeechService] Speech recognition is not supported');\n return;\n }\n this.stopRecognition();\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n this.isListening.set(true);\n this.startRecognition();\n }\n\n stop(): void {\n this.isListening.set(false);\n this.activeComponentId.set(null);\n }\n\n toggle(componentId: string): void {\n if (this.isActiveComponent(componentId) && this.isListening()) {\n this.stop();\n } else {\n this.start(componentId);\n }\n }\n\n clear(): void {\n this.transcript.set({ interim: '', finalized: '' });\n\n if (this.autoModeEnabled() && this.recognition && this.isListening()) {\n // Auto mode: Speech APIを止めない。result indexで古い結果をフィルタ\n this.resultIndexThreshold = this.lastKnownResultsLength;\n return;\n }\n\n // Non-auto mode: stop → onend → restart で確実にリセット\n this.ignoreResults = true;\n if (this.recognition && this.isListening()) {\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error restarting recognition:', error);\n }\n }\n }\n\n // 自動モードのトグル\n toggleAutoMode(enabled: boolean): void {\n this.autoModeEnabled.set(enabled);\n if (enabled) {\n // 自動モードON → セッション選択済みならSpeech API有効化\n if (this.selectedSessionId()) {\n this.isListening.set(true);\n this.startRecognition();\n }\n } else {\n this.stop();\n }\n }\n\n // セッション選択時の自動音声入力制御(Speech APIは止めない)\n selectSession(sessionId: string | null): void {\n const prevId = this.selectedSessionId();\n this.selectedSessionId.set(sessionId);\n if (!this.autoModeEnabled()) return;\n\n if (!sessionId) {\n this.stop();\n return;\n }\n\n // セッション切り替え時: 前のテキストを確定→書き込み先は各コンポーネントが切り替える\n if (prevId && prevId !== sessionId) {\n this.finalizeCurrentTranscript();\n }\n }\n\n // 書き込み先の切り替え専用(Speech APIは触らない)\n activateComponent(componentId: string): void {\n if (this.activeComponentId() === componentId) return;\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n }\n\n private finalizeCurrentTranscript(): void {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n }\n\n private setupRecognition(): void {\n if (!this.isSupported) return;\n\n this.recognition = initializeSpeechRecognitionAPI();\n if (!this.recognition) return;\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n if (this.ignoreResults) return;\n this.lastKnownResultsLength = event.results.length;\n\n // auto mode clear後: threshold未満のresultをスキップ\n const startIndex = Math.max(event.resultIndex, this.resultIndexThreshold);\n if (startIndex >= event.results.length) return;\n\n const { interim, finalized } = parseSpeechRecognitionEvent(event, startIndex);\n this.transcript.update((current) => ({\n interim,\n finalized: finalized.length ? `${current.finalized}${finalized}` : current.finalized\n }));\n this.lastSpeechTime.set(Date.now());\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n console.error('[SpeechService] Recognition error:', event.error);\n if (event.error === 'not-allowed') {\n this.stop();\n }\n };\n\n this.recognition.onend = () => {\n if (this.isListening()) {\n this.startRecognition();\n }\n };\n }\n\n private startRecognition(): void {\n this.ignoreResults = false;\n this.resultIndexThreshold = 0;\n this.lastKnownResultsLength = 0;\n if (!this.recognition) {\n this.setupRecognition();\n }\n\n try {\n this.recognition?.start();\n } catch (error) {\n console.error('[SpeechService] Failed to start recognition:', error);\n this.recognition = null;\n this.setupRecognition();\n this.recognition?.start();\n }\n }\n\n private stopRecognition(): void {\n if (this.recognition) {\n this.recognition.onend = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error stopping recognition:', error);\n }\n this.recognition = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-common-services-speech.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/speech/speech-recognition-utils.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/speech.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/speech/xxmachina-common-services-speech.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\n\n/**\n * SpeechRecognition APIの初期化\n */\nexport function initializeSpeechRecognitionAPI(): SpeechRecognition | null {\n if (typeof window === 'undefined') return null;\n if (!('SpeechRecognition' in window) && !('webkitSpeechRecognition' in window)) {\n console.warn('[SpeechService] SpeechRecognition API is not supported in this browser');\n return null;\n }\n\n const SpeechRecognitionAPI = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n const recognition = new SpeechRecognitionAPI();\n recognition.continuous = true;\n recognition.interimResults = true;\n recognition.lang = 'ja-JP';\n return recognition;\n}\n\n/**\n * SpeechRecognitionイベントをパースして中間結果と確定結果を返す\n * @param startIndex - 読み取り開始インデックス(指定時はevent.resultIndexより優先)\n */\nexport function parseSpeechRecognitionEvent(\n event: SpeechRecognitionEvent,\n startIndex?: number,\n): { interim: string; finalized: string } {\n const from = startIndex ?? event.resultIndex;\n const results: SpeechRecognitionAlternative[] = [];\n for (let i = from; i < event.results.length; i++) {\n results.push({\n transcript: event.results[i][0].transcript,\n confidence: event.results[i][0].confidence,\n isFinal: event.results[i].isFinal,\n } as any);\n }\n return {\n interim: results.filter((result: any) => !result.isFinal).map((result) => result.transcript).join(''),\n finalized: results.filter((result: any) => result.isFinal).map((result) => result.transcript).join(''),\n };\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./speech-recognition.d.ts\" />\nimport { Injectable, signal, effect, computed } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { filter, interval } from 'rxjs';\nimport { initializeSpeechRecognitionAPI, parseSpeechRecognitionEvent } from './speech-recognition-utils';\n\n@Injectable({ providedIn: 'root' })\nexport class SpeechService {\n private static instanceCounter = 0;\n private readonly PAUSE_THRESHOLD = 1000;\n private recognition: SpeechRecognition | null = null;\n private lastSpeechTime = signal(Date.now());\n private ignoreResults = false;\n private lastKnownResultsLength = 0;\n private resultIndexThreshold = 0;\n\n readonly transcript = signal<{ finalized: string; interim: string }>({ finalized: '', interim: '' });\n readonly transcript$ = toObservable(this.transcript);\n readonly isListening = signal(false);\n readonly activeComponentId = signal<string | null>(null);\n readonly isSupported = typeof window !== 'undefined' &&\n (('SpeechRecognition' in window) || ('webkitSpeechRecognition' in window));\n\n readonly finalized = computed(() => this.transcript().finalized);\n readonly finalized$ = toObservable(this.finalized);\n\n // 自動モード: セッション選択時に自動的に音声入力を開始\n readonly autoModeEnabled = signal(false);\n // 選択中のセッションID(自動音声入力制御用)\n readonly selectedSessionId = signal<string | null>(null);\n\n constructor() {\n interval(this.PAUSE_THRESHOLD).pipe(\n filter(() => this.isListening() && (Date.now() - this.lastSpeechTime()) >= this.PAUSE_THRESHOLD),\n ).subscribe(() => {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n });\n\n effect(() => {\n if (!this.isListening()) {\n this.stopRecognition();\n }\n });\n }\n\n generateComponentId(): string {\n return `speech-${++SpeechService.instanceCounter}`;\n }\n\n isActiveComponent(componentId: string): boolean {\n return this.activeComponentId() === componentId;\n }\n\n start(componentId: string): void {\n if (!this.isSupported) {\n console.warn('[SpeechService] Speech recognition is not supported');\n return;\n }\n this.stopRecognition();\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n this.isListening.set(true);\n this.startRecognition();\n }\n\n stop(): void {\n this.isListening.set(false);\n this.activeComponentId.set(null);\n }\n\n toggle(componentId: string): void {\n if (this.isActiveComponent(componentId) && this.isListening()) {\n this.stop();\n } else {\n this.start(componentId);\n }\n }\n\n clear(): void {\n this.transcript.set({ interim: '', finalized: '' });\n\n if (this.autoModeEnabled() && this.recognition && this.isListening()) {\n // Auto mode: Speech APIを止めない。result indexで古い結果をフィルタ\n this.resultIndexThreshold = this.lastKnownResultsLength;\n return;\n }\n\n // Non-auto mode: stop → onend → restart で確実にリセット\n this.ignoreResults = true;\n if (this.recognition && this.isListening()) {\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error restarting recognition:', error);\n }\n }\n }\n\n // 自動モードのトグル\n toggleAutoMode(enabled: boolean): void {\n this.autoModeEnabled.set(enabled);\n if (enabled) {\n // 自動モードON → セッション選択済みならSpeech API有効化\n if (this.selectedSessionId()) {\n this.isListening.set(true);\n this.startRecognition();\n }\n } else {\n this.stop();\n }\n }\n\n // セッション選択時の自動音声入力制御(Speech APIは止めない)\n selectSession(sessionId: string | null): void {\n const prevId = this.selectedSessionId();\n this.selectedSessionId.set(sessionId);\n if (!this.autoModeEnabled()) return;\n\n if (!sessionId) {\n this.stop();\n return;\n }\n\n // セッション切り替え時: 前のテキストを確定→書き込み先は各コンポーネントが切り替える\n if (prevId && prevId !== sessionId) {\n this.finalizeCurrentTranscript();\n }\n }\n\n // 書き込み先の切り替え専用(Speech APIは触らない)\n activateComponent(componentId: string): void {\n if (this.activeComponentId() === componentId) return;\n this.activeComponentId.set(componentId);\n this.transcript.set({ interim: '', finalized: '' });\n }\n\n private finalizeCurrentTranscript(): void {\n this.transcript.update(current => ({\n interim: '',\n finalized: current.finalized + (current.interim || '')\n }));\n }\n\n private setupRecognition(): void {\n if (!this.isSupported) return;\n\n this.recognition = initializeSpeechRecognitionAPI();\n if (!this.recognition) return;\n\n this.recognition.onresult = (event: SpeechRecognitionEvent) => {\n if (this.ignoreResults) return;\n this.lastKnownResultsLength = event.results.length;\n\n // auto mode clear後: threshold未満のresultをスキップ\n const startIndex = Math.max(event.resultIndex, this.resultIndexThreshold);\n if (startIndex >= event.results.length) return;\n\n const { interim, finalized } = parseSpeechRecognitionEvent(event, startIndex);\n this.transcript.update((current) => ({\n interim,\n finalized: finalized.length ? `${current.finalized}${finalized}` : current.finalized\n }));\n this.lastSpeechTime.set(Date.now());\n };\n\n this.recognition.onerror = (event: SpeechRecognitionErrorEvent) => {\n console.error('[SpeechService] Recognition error:', event.error);\n if (event.error === 'not-allowed') {\n this.stop();\n }\n };\n\n this.recognition.onend = () => {\n if (this.isListening()) {\n this.startRecognition();\n }\n };\n }\n\n private startRecognition(): void {\n this.ignoreResults = false;\n this.resultIndexThreshold = 0;\n this.lastKnownResultsLength = 0;\n if (!this.recognition) {\n this.setupRecognition();\n }\n\n try {\n this.recognition?.start();\n } catch (error) {\n console.error('[SpeechService] Failed to start recognition:', error);\n this.recognition = null;\n this.setupRecognition();\n (this.recognition as SpeechRecognition | null)?.start();\n }\n }\n\n private stopRecognition(): void {\n if (this.recognition) {\n this.recognition.onend = null;\n this.recognition.onresult = null;\n this.recognition.onerror = null;\n try {\n this.recognition.stop();\n } catch (error) {\n console.error('[SpeechService] Error stopping recognition:', error);\n }\n this.recognition = null;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAEA;;AAEG;SACa,8BAA8B,GAAA;IAC5C,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,QAAA,OAAO,IAAI;AAC9C,IAAA,IAAI,EAAE,mBAAmB,IAAI,MAAM,CAAC,IAAI,EAAE,yBAAyB,IAAI,MAAM,CAAC,EAAE;AAC9E,QAAA,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC;AACtF,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,oBAAoB,GAAI,MAAc,CAAC,iBAAiB,IAAK,MAAc,CAAC,uBAAuB;AACzG,IAAA,MAAM,WAAW,GAAG,IAAI,oBAAoB,EAAE;AAC9C,IAAA,WAAW,CAAC,UAAU,GAAG,IAAI;AAC7B,IAAA,WAAW,CAAC,cAAc,GAAG,IAAI;AACjC,IAAA,WAAW,CAAC,IAAI,GAAG,OAAO;AAC1B,IAAA,OAAO,WAAW;AACpB;AAEA;;;AAGG;AACG,SAAU,2BAA2B,CACzC,KAA6B,EAC7B,UAAmB,EAAA;AAEnB,IAAA,MAAM,IAAI,GAAG,UAAU,IAAI,KAAK,CAAC,WAAW;IAC5C,MAAM,OAAO,GAAmC,EAAE;AAClD,IAAA,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChD,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAC1C,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAC1C,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AAC3B,SAAA,CAAC;IACX;IACA,OAAO;AACL,QAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAW,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrG,QAAA,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;KACvG;AACH;;AC1CA;AACA;MAOa,aAAa,CAAA;AAChB,IAAA,OAAO,eAAe,GAAG,CAAC;IACjB,eAAe,GAAG,IAAI;IAC/B,WAAW,GAA6B,IAAI;IAC5C,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,0DAAC;IACnC,aAAa,GAAG,KAAK;IACrB,sBAAsB,GAAG,CAAC;IAC1B,oBAAoB,GAAG,CAAC;AAEvB,IAAA,UAAU,GAAG,MAAM,CAAyC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,sDAAC;AAC3F,IAAA,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,iBAAiB,GAAG,MAAM,CAAgB,IAAI,6DAAC;AAC/C,IAAA,WAAW,GAAG,OAAO,MAAM,KAAK,WAAW;AAClD,SAAC,CAAC,mBAAmB,IAAI,MAAM,MAAM,yBAAyB,IAAI,MAAM,CAAC,CAAC;AAEnE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,qDAAC;AACvD,IAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;;AAGzC,IAAA,eAAe,GAAG,MAAM,CAAC,KAAK,2DAAC;;AAE/B,IAAA,iBAAiB,GAAG,MAAM,CAAgB,IAAI,6DAAC;AAExD,IAAA,WAAA,GAAA;AACE,QAAA,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CACjC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CACjG,CAAC,SAAS,CAAC,MAAK;YACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,KAAK;AACjC,gBAAA,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AACtD,aAAA,CAAC,CAAC;AACL,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;gBACvB,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,mBAAmB,GAAA;AACjB,QAAA,OAAO,UAAU,EAAE,aAAa,CAAC,eAAe,EAAE;IACpD;AAEA,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,KAAK,WAAW;IACjD;AAEA,IAAA,KAAK,CAAC,WAAmB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC;YACnE;QACF;QACA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,MAAM,CAAC,WAAmB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YAC7D,IAAI,CAAC,IAAI,EAAE;QACb;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACzB;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AAEpE,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,sBAAsB;YACvD;QACF;;AAGA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC1C,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACzB;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC;YACvE;QACF;IACF;;AAGA,IAAA,cAAc,CAAC,OAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,IAAI,OAAO,EAAE;;AAEX,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,EAAE;YACzB;QACF;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;;AAGA,IAAA,aAAa,CAAC,SAAwB,EAAA;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAAE;QAE7B,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,IAAI,EAAE;YACX;QACF;;AAGA,QAAA,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE;YAClC,IAAI,CAAC,yBAAyB,EAAE;QAClC;IACF;;AAGA,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,WAAW;YAAE;AAC9C,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACrD;IAEQ,yBAAyB,GAAA;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,KAAK;AACjC,YAAA,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE;AACtD,SAAA,CAAC,CAAC;IACL;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;AAEvB,QAAA,IAAI,CAAC,WAAW,GAAG,8BAA8B,EAAE;QACnD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;QAEvB,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAA6B,KAAI;YAC5D,IAAI,IAAI,CAAC,aAAa;gBAAE;YACxB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;;AAGlD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC;AACzE,YAAA,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;gBAAE;AAExC,YAAA,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,2BAA2B,CAAC,KAAK,EAAE,UAAU,CAAC;YAC7E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,MAAM;gBACnC,OAAO;AACP,gBAAA,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAA,EAAG,OAAO,CAAC,SAAS,CAAA,EAAG,SAAS,CAAA,CAAE,GAAG,OAAO,CAAC;AAC5E,aAAA,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,QAAA,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,KAAkC,KAAI;YAChE,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,KAAK,CAAC;AAChE,YAAA,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE;gBACjC,IAAI,CAAC,IAAI,EAAE;YACb;AACF,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,MAAK;AAC5B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,IAAI,CAAC,gBAAgB,EAAE;YACzB;AACF,QAAA,CAAC;IACH;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC7B,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE;QACzB;AAEA,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;QAC3B;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC;AACpE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,gBAAgB,EAAE;AACtB,YAAA,IAAI,CAAC,WAAwC,EAAE,KAAK,EAAE;QACzD;IACF;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI;AAC/B,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACzB;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC;YACrE;AACA,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;IACF;uGA7MW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACPlC;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-usecase-database.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/database/database.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/database/xxmachina-common-usecase-database.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { ErBuilder } from '@xxmachina/common/domain/builder';\nimport { ScreenItemBuilder } from '@xxmachina/common/domain/builder/screen-item';\nimport { Database, ScreenItem } from '@xxmachina/common/domain/models';\nimport { omit } from 'lodash-es';\nimport { injectNotion } from '@nx-ddd/notion';\n\nfunction listDatabaseProperties(database: Database, dbName: string): ScreenItem[] {\n return new ScreenItemBuilder().build(database).map(item => ({...item, dbName}));\n}\n\nexport interface DatabaseConfig {\n notionApiKey: string;\n databaseIdToName: { [key: string]: string };\n}\n\nconst DATABASE_CONFIG = new InjectionToken<DatabaseConfig>('DATABASE_CONFIG');\n\nexport function provideDatabaseConfig(useFactory: () => DatabaseConfig) {\n return { provide: DATABASE_CONFIG, useFactory };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DatabaseService {\n private config = inject(DATABASE_CONFIG);\n private notion = injectNotion();\n\n async get(databaseId: string) {\n return this.notion.retrieveDatabase(databaseId);\n }\n\n async update(databaseId: string, body: any) {\n return this.notion.updateDatabase(databaseId, omit({\n ...body.properties,\n }, []));\n }\n\n async listDatabases() {\n let start_cursor;\n const databases = [];\n\n while (true) {\n const _databases = await this.notion.search({\n filter: {\n property: 'object',\n value: 'database',\n },\n start_cursor,\n });\n for (const db of _databases.results) {\n databases.push({\n ...db,\n _title: db['title']?.[0]?.plain_text,\n });\n }\n\n if (!_databases.has_more) break;\n start_cursor = _databases.next_cursor;\n }\n\n const resolve = async (item) => ({...item, path: await this.getPath(item)});\n\n return Promise.all(databases.map(db => resolve(db)));\n }\n\n async generateMermaidER(): Promise<string> {\n const databases = await this.listDatabases();\n return new ErBuilder().build(databases); \n }\n\n async getPageItems(dbId: string, name: string) {\n // const dbDetails = await this.notion.retrieveDatabase(dbId);\n // const items = listDatabaseProperties(dbDetails, name);\n // return items;\n return [];\n }\n\n async getParent(parent: {\n type: 'database_id',\n database_id: string\n } | {\n type: 'page_id',\n page_id: string\n } | {\n type: 'block_id',\n block_id: string\n }) {\n switch (parent.type) {\n case 'database_id': return this.notion.retrieveDatabase(parent.database_id)\n case 'page_id': return this.notion.retrievePage(parent.page_id);\n case 'block_id': return this.notion.retrieveBlock(parent.block_id);\n }\n }\n\n async getPath(obj: any) {\n const objects = [obj];\n return objects.map(obj => getTitle(obj)).filter(Boolean).reverse().join('/');\n }\n}\n\nfunction getTitle(obj: any) {\n if (obj.object === 'page') {\n return obj.properties?.title?.title?.[0]?.plain_text;\n } else if (obj.object === 'database') {\n return obj._title;\n } else {\n return null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAOA,SAAS,sBAAsB,CAAC,QAAkB,EAAE,MAAc,EAAA;IAChE,OAAO,IAAI,iBAAiB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;AACjF;AAOA,MAAM,eAAe,GAAG,IAAI,cAAc,CAAiB,iBAAiB,CAAC;AAEvE,SAAU,qBAAqB,CAAC,UAAgC,EAAA;AACpE,IAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE;AACjD;MAGa,eAAe,CAAA;AAClB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAChC,MAAM,GAAG,YAAY,EAAE;IAE/B,MAAM,GAAG,CAAC,UAAkB,EAAA;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACjD;AAEA,IAAA,MAAM,MAAM,CAAC,UAAkB,EAAE,IAAS,EAAA;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC;YACjD,GAAG,IAAI,CAAC,UAAU;SACnB,EAAE,EAAE,CAAC,CAAC;IACT;AAEA,IAAA,MAAM,aAAa,GAAA;AACjB,QAAA,IAAI,YAAY;QAChB,MAAM,SAAS,GAAG,EAAE;QAEpB,OAAO,IAAI,EAAE;YACX,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,gBAAA,MAAM,EAAE;AACN,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,KAAK,EAAE,UAAU;AAClB,iBAAA;gBACD,YAAY;AACb,aAAA,CAAC;AACF,YAAA,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE;gBACnC,SAAS,CAAC,IAAI,CAAC;AACb,oBAAA,GAAG,EAAE;oBACL,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU;AACrC,iBAAA,CAAC;YACJ;YAEA,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAAE;AAC1B,YAAA,YAAY,GAAG,UAAU,CAAC,WAAW;QACvC;QAEA,MAAM,OAAO,GAAG,OAAO,IAAI,MAAM,EAAC,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC;AAE3E,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD;AAEA,IAAA,MAAM,iBAAiB,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE;QAC5C,OAAO,IAAI,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACzC;AAEA,IAAA,MAAM,YAAY,CAAC,IAAY,EAAE,IAAY,EAAA;;;;AAI3C,QAAA,OAAO,EAAE;IACX;IAEA,MAAM,SAAS,CAAC,MASf,EAAA;AACC,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,aAAa,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3E,YAAA,KAAK,SAAS,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/D,YAAA,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;;IAEtE;IAEA,MAAM,OAAO,CAAC,GAAQ,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;QACrB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9E;uGA1EW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA8ElC,SAAS,QAAQ,CAAC,GAAQ,EAAA;AACxB,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AACzB,QAAA,OAAO,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU;IACtD;AAAO,SAAA,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;QACpC,OAAO,GAAG,CAAC,MAAM;IACnB;SAAO;AACL,QAAA,OAAO,IAAI;IACb;AACF;;AC5GA;;AAEG;;;;"}
1
+ {"version":3,"file":"xxmachina-common-usecase-database.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/database/database.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/database/xxmachina-common-usecase-database.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { ErBuilder } from '@xxmachina/common/domain/builder';\nimport { ScreenItemBuilder } from '@xxmachina/common/domain/builder/screen-item';\nimport { Database, ScreenItem } from '@xxmachina/common/domain/models';\nimport { omit } from 'lodash-es';\nimport { injectNotion } from '@nx-ddd/notion';\n\nfunction listDatabaseProperties(database: Database, dbName: string): ScreenItem[] {\n return new ScreenItemBuilder().build(database).map(item => ({...item, dbName}));\n}\n\nexport interface DatabaseConfig {\n notionApiKey: string;\n databaseIdToName: { [key: string]: string };\n}\n\nconst DATABASE_CONFIG = new InjectionToken<DatabaseConfig>('DATABASE_CONFIG');\n\nexport function provideDatabaseConfig(useFactory: () => DatabaseConfig) {\n return { provide: DATABASE_CONFIG, useFactory };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DatabaseService {\n private config = inject(DATABASE_CONFIG);\n private notion = injectNotion();\n\n async get(databaseId: string) {\n return this.notion!.retrieveDatabase(databaseId);\n }\n\n async update(databaseId: string, body: any) {\n return this.notion!.updateDatabase(databaseId, omit({\n ...body.properties,\n }, []));\n }\n\n async listDatabases() {\n let start_cursor: string | undefined;\n const databases: any[] = [];\n\n while (true) {\n const _databases = await this.notion!.search({\n filter: {\n property: 'object',\n value: 'database',\n },\n start_cursor,\n });\n for (const db of _databases.results) {\n databases.push({\n ...db,\n _title: (db as any)['title']?.[0]?.plain_text,\n });\n }\n\n if (!_databases.has_more) break;\n start_cursor = _databases.next_cursor as string | undefined;\n }\n\n const resolve = async (item: any) => ({...item, path: await this.getPath(item)});\n\n return Promise.all(databases.map(db => resolve(db)));\n }\n\n async generateMermaidER(): Promise<string> {\n const databases = await this.listDatabases();\n return new ErBuilder().build(databases); \n }\n\n async getPageItems(dbId: string, name: string) {\n // const dbDetails = await this.notion.retrieveDatabase(dbId);\n // const items = listDatabaseProperties(dbDetails, name);\n // return items;\n return [];\n }\n\n async getParent(parent: {\n type: 'database_id',\n database_id: string\n } | {\n type: 'page_id',\n page_id: string\n } | {\n type: 'block_id',\n block_id: string\n }) {\n switch (parent.type) {\n case 'database_id': return this.notion!.retrieveDatabase(parent.database_id)\n case 'page_id': return this.notion!.retrievePage(parent.page_id);\n case 'block_id': return this.notion!.retrieveBlock(parent.block_id);\n }\n }\n\n async getPath(obj: any) {\n const objects = [obj];\n return objects.map(obj => getTitle(obj)).filter(Boolean).reverse().join('/');\n }\n}\n\nfunction getTitle(obj: any) {\n if (obj.object === 'page') {\n return obj.properties?.title?.title?.[0]?.plain_text;\n } else if (obj.object === 'database') {\n return obj._title;\n } else {\n return null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ class GraphqlService {
33
33
  `,
34
34
  model: 'gpt-4o-mini',
35
35
  validator: async (output) => this.graphql(output.query).then(() => []).catch(error => [error.message]),
36
- }).then(result => result.query);
36
+ }).then((result) => result.query);
37
37
  }
38
38
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: GraphqlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
39
39
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: GraphqlService, providedIn: 'root' });
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-usecase-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/xxmachina-common-usecase-graphql.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n // return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));\n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then(result => result.query);\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,MAAM,MAAM,CAAA;AAEV,IAAA,KAAK;AACN;AADC,UAAA,CAAA;AADC,IAAA,QAAQ,EAAE;;AACG,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;MAIH,cAAc,CAAA;AACf,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzB,OAAO,GAAG,aAAa,EAAE;IACzB,EAAE,GAAG,wBAAwB,EAAE;AAEzC,IAAA,WAAA,GAAA,EAAe;IAEf,MAAM,OAAO,CAAC,KAAa,EAAA;;QAEzB,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC1C;IAEA,MAAM,SAAS,CAAC,YAAoB,EAAA;QAClC,MAAM,WAAW,GAAG,CAAA,6DAAA,CAA+D;QACnF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AAC7C,YAAA,YAAY,EAAE;;;UAGV,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,MAAA,CAAA;AACD,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,SAAS,EAAE,OAAO,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACvG,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IACjC;uGAxBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACXhC;;AAEG;;;;"}
1
+ {"version":3,"file":"xxmachina-common-usecase-graphql.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/xxmachina-common-usecase-graphql.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n // return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));\n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output: any) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then((result: any) => result.query);\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAMA,MAAM,MAAM,CAAA;AAEV,IAAA,KAAK;AACN;AADC,UAAA,CAAA;AADC,IAAA,QAAQ,EAAE;;AACI,CAAA,EAAA,MAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;MAIJ,cAAc,CAAA;AACf,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzB,OAAO,GAAG,aAAa,EAAE;IACzB,EAAE,GAAG,wBAAwB,EAAE;AAEzC,IAAA,WAAA,GAAA,EAAe;IAEf,MAAM,OAAO,CAAC,KAAa,EAAA;;QAEzB,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC1C;IAEA,MAAM,SAAS,CAAC,YAAoB,EAAA;QAClC,MAAM,WAAW,GAAG,CAAA,6DAAA,CAA+D;QACnF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AAC7C,YAAA,YAAY,EAAE;;;UAGV,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,MAAA,CAAA;AACD,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,SAAS,EAAE,OAAO,MAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5G,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,KAAK,CAAC;IACxC;uGAxBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADF,MAAM,EAAA,CAAA;;2FAClB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACXhC;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-usecase-spec.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/xxmachina-common-usecase-spec.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,WAAW,CAAA;AAEZ,IAAA,KAAA;AADV,IAAA,WAAA,CACU,KAA4B,EAAA;QAA5B,IAAA,CAAA,KAAK,GAAL,KAAK;IACX;AAEJ,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;IAC1C;IAEA,MAAM,GAAG,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C;IAEA,MAAM,MAAM,CAAC,IAAU,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACpG,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC;IACvF;IAEA,MAAM,MAAM,CAAC,IAAmB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACpG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;AACpF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAE,UAAU,EAAC,CAAC;IACjE;IAEA,MAAM,MAAM,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9C;uGA5BW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADC,MAAM,EAAA,CAAA;;2FAClB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACLhC;;AAEG;;;;"}
1
+ {"version":3,"file":"xxmachina-common-usecase-spec.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/xxmachina-common-usecase-spec.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input as string)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,WAAW,CAAA;AAEZ,IAAA,KAAA;AADV,IAAA,WAAA,CACU,KAA4B,EAAA;QAA5B,IAAA,CAAA,KAAK,GAAL,KAAK;IACX;AAEJ,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;IAC1C;IAEA,MAAM,GAAG,CAAC,EAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3C;IAEA,MAAM,MAAM,CAAC,IAAU,EAAA;AACrB,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AACpG,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAC,CAAC;IACvF;IAEA,MAAM,MAAM,CAAC,IAAmB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACpG,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;AAC9F,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,GAAG,IAAI,EAAE,UAAU,EAAC,CAAC;IACjE;IAEA,MAAM,MAAM,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9C;uGA5BW,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADC,MAAM,EAAA,CAAA;;2FAClB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACLhC;;AAEG;;;;"}
@@ -166,7 +166,7 @@ class GraphqlService {
166
166
  `,
167
167
  model: 'gpt-4o-mini',
168
168
  validator: async (output) => this.graphql(output.query).then(() => []).catch(error => [error.message]),
169
- }).then(result => result.query);
169
+ }).then((result) => result.query);
170
170
  }
171
171
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: GraphqlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
172
172
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: GraphqlService, providedIn: 'root' });
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-usecase.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/assistant/assistant.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/project/project.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/link/link.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/usecase.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/xxmachina-common-usecase.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { AssistantOperator } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n\n@Injectable({providedIn: 'root'})\nexport class AssistantService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<AssistantOperator[]> {\n return await this.infra.repo.redis.operator.list() as AssistantOperator[];\n }\n\n async create(assistant: AssistantOperator): Promise<AssistantOperator> {\n return this.infra.repo.redis.operator.create(assistant) as any;\n }\n\n async update(assistant: AssistantOperator): Promise<void> {\n return this.infra.repo.redis.operator.update(assistant);\n }\n\n async delete(assistantid: string): Promise<void> {\n return this.infra.repo.redis.operator.delete(assistantid);\n }\n\n async operate(assistantId: string, input: string): Promise<string> {\n const project = await this.infra.repo.redis.project.get('default');\n const assistant = await this.infra.repo.redis.operator.get(assistantId);\n const adapter = this.infra.external.getAiAdapter(project.settings.ai)\n const embeddings = await adapter.embedding(input);\n const specs = await this.infra.repo.redis.spec.search(assistant.id, embeddings);\n\n const messages = [\n {role: 'system', content: assistant.description},\n ...specs.map(spec => [\n {role: 'system', content: spec.input},\n {role: 'assistant', content: spec.output},\n ]).flat(),\n {role: 'user', content: input},\n ];\n\n console.debug('messages', messages);\n const output_ = await adapter.chatComplete(messages);\n const output = this.scrape(assistant.outputInterfaceId, output_);\n await this.infra.repo.redis.spec.create({\n input, output, embeddings, id: hash(input), operatorId: assistant.id,\n }).catch(() => {});\n\n return output;\n }\n\n private scrape(interface_: string, output: string): string {\n if (interface_ === 'interface:codeblock') {\n const [_, ...lines] = (output.split('```')?.[1] ?? '').split('\\n');\n return `\\`\\`\\`\\n${lines.join('\\n')}\\n\\`\\`\\``;\n } else {\n return output;\n }\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Project } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\n\n\n@Injectable({providedIn: 'root'})\nexport class ProjectService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Project[]> {\n return await this.infra.repo.redis.project.list() as Project[];\n }\n\n async get(projectId: string): Promise<Project> {\n return this.infra.repo.redis.project.get(projectId);\n }\n\n async create(project: Project): Promise<Project> {\n return this.infra.repo.redis.project.create(project);\n }\n\n async update(project: Project): Promise<void> {\n return this.infra.repo.redis.project.update(project);\n }\n}\n","import { Google } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class LinkService {\n constructor(\n public infra: InfrastructureService,\n ) { }\n\n saveGoogleLink(google: Google) {\n return this.infra.repo.firestore.link.google.save(google);\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n // return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));\n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then(result => result.query);\n }\n\n}","import { inject, Injectable } from \"@angular/core\";\nimport { AssistantService } from \"./assistant\";\nimport { SpecService } from \"./spec\";\nimport { ProjectService } from \"./project\";\nimport { LinkService } from \"./link\";\nimport { GraphqlService } from \"./graphql\";\n\n@Injectable({providedIn: 'root'})\nexport class UsecaseService {\n readonly assistant = inject(AssistantService)\n readonly link = inject(LinkService)\n readonly project = inject(ProjectService)\n readonly spec = inject(SpecService)\n readonly graphql = inject(GraphqlService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xxmachina-common-usecase.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/usecase/assistant/assistant.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/spec/spec.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/project/project.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/link/link.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/graphql/graphql.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/usecase.service.ts","../../../../../packages/@xxmachina/common/src/lib/usecase/xxmachina-common-usecase.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { AssistantOperator } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n\n@Injectable({providedIn: 'root'})\nexport class AssistantService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<AssistantOperator[]> {\n return await this.infra.repo.redis.operator.list() as AssistantOperator[];\n }\n\n async create(assistant: AssistantOperator): Promise<AssistantOperator> {\n return this.infra.repo.redis.operator.create(assistant) as any;\n }\n\n async update(assistant: AssistantOperator): Promise<void> {\n return this.infra.repo.redis.operator.update(assistant);\n }\n\n async delete(assistantid: string): Promise<void> {\n return this.infra.repo.redis.operator.delete(assistantid);\n }\n\n async operate(assistantId: string, input: string): Promise<string> {\n const project = await this.infra.repo.redis.project.get('default');\n const assistant = await this.infra.repo.redis.operator.get(assistantId);\n const adapter = this.infra.external.getAiAdapter(project.settings.ai)\n const embeddings = await adapter.embedding(input);\n const specs = await this.infra.repo.redis.spec.search(assistant.id, embeddings);\n\n const messages = [\n {role: 'system', content: assistant.description},\n ...specs.map(spec => [\n {role: 'system', content: spec.input},\n {role: 'assistant', content: spec.output},\n ]).flat(),\n {role: 'user', content: input},\n ];\n\n console.debug('messages', messages);\n const output_ = await adapter.chatComplete(messages);\n const output = this.scrape(assistant.outputInterfaceId, output_);\n await this.infra.repo.redis.spec.create({\n input, output, embeddings, id: hash(input), operatorId: assistant.id,\n }).catch(() => {});\n\n return output;\n }\n\n private scrape(interface_: string, output: string): string {\n if (interface_ === 'interface:codeblock') {\n const [_, ...lines] = (output.split('```')?.[1] ?? '').split('\\n');\n return `\\`\\`\\`\\n${lines.join('\\n')}\\n\\`\\`\\``;\n } else {\n return output;\n }\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Spec } from \"@xxmachina/common/domain/models\";\nimport { hash } from \"@xxmachina/common/utils/crypto\";\n\n@Injectable({providedIn: 'root'})\nexport class SpecService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Spec[]> {\n return this.infra.repo.redis.spec.list();\n }\n\n async get(id: string): Promise<Spec> {\n return this.infra.repo.redis.spec.get(id);\n }\n\n async create(spec: Spec): Promise<Spec> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n return this.infra.repo.redis.spec.create({...spec, embeddings, id: hash(spec.input)});\n }\n\n async update(spec: Partial<Spec>): Promise<void> {\n const project = await this.infra.repo.redis.project.get('default');\n const embeddings = await this.infra.external.getAiAdapter(project.settings.ai).embedding(spec.input);\n if (spec.id !== hash(spec.input as string)) throw new Error('id is not match with input hash');\n return this.infra.repo.redis.spec.update({...spec, embeddings});\n }\n\n async delete(id: string): Promise<void> {\n return this.infra.repo.redis.spec.delete(id);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { Project } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\n\n\n@Injectable({providedIn: 'root'})\nexport class ProjectService {\n constructor(\n private infra: InfrastructureService,\n ) { }\n\n async list(): Promise<Project[]> {\n return await this.infra.repo.redis.project.list() as Project[];\n }\n\n async get(projectId: string): Promise<Project> {\n return this.infra.repo.redis.project.get(projectId);\n }\n\n async create(project: Project): Promise<Project> {\n return this.infra.repo.redis.project.create(project);\n }\n\n async update(project: Project): Promise<void> {\n return this.infra.repo.redis.project.update(project);\n }\n}\n","import { Google } from \"@xxmachina/common/domain/models\";\nimport { InfrastructureService } from \"@xxmachina/common/infra\";\nimport { Injectable } from \"@angular/core\";\n\n@Injectable({providedIn: 'root'})\nexport class LinkService {\n constructor(\n public infra: InfrastructureService,\n ) { }\n\n saveGoogleLink(google: Google) {\n return this.infra.repo.firestore.link.google.save(google);\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { injectAnyFunc } from '@nx-ddd/any-func';\nimport { injectDataConnectService } from '@xxmachina/common/infra/external/data-connect';\nimport { IsString } from 'class-validator';\n\nclass Result {\n @IsString()\n query!: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GraphqlService {\n protected http = inject(HttpClient);\n protected anyFunc = injectAnyFunc();\n protected dc = injectDataConnectService();\n\n constructor() {}\n\n async graphql(query: string) {\n // return lastValueFrom(this.http.post('http://localhost:3330/api/dataConnect', {query}));\n return this.dc.executeGraphqlRead(query);\n }\n\n async makeQuery(instructions: string) {\n const schemaQuery = `{ __schema { types { name fields { name type { name } } } } }`;\n const schemaResult = await this.graphql(schemaQuery);\n return this.anyFunc.call(instructions, Result, {\n instructions: `\n アシスタントはユーザーの要求を満たすGraphQLクエリを下記のサーバーのスキーマを元に生成します。\n\n ${JSON.stringify(schemaResult, null, 2)}\n `,\n model: 'gpt-4o-mini',\n validator: async (output: any) => this.graphql(output.query).then(() => []).catch(error => [error.message]),\n }).then((result: any) => result.query);\n }\n\n}","import { inject, Injectable } from \"@angular/core\";\nimport { AssistantService } from \"./assistant\";\nimport { SpecService } from \"./spec\";\nimport { ProjectService } from \"./project\";\nimport { LinkService } from \"./link\";\nimport { GraphqlService } from \"./graphql\";\n\n@Injectable({providedIn: 'root'})\nexport class UsecaseService {\n readonly assistant = inject(AssistantService)\n readonly link = inject(LinkService)\n readonly project = inject(ProjectService)\n readonly spec = inject(SpecService)\n readonly graphql = inject(GraphqlService);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-utils.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/utils/extract-display-fields.ts","../../../../../packages/@xxmachina/common/src/lib/utils/xxmachina-common-utils.ts"],"sourcesContent":["import { JsonSchema } from 'json-schema-library';\n\n// JSONスキーマを受け取り、表示項目のリストを生成する関数\nexport function extractDisplayFields(schema: JsonSchema, prefix = '', childrenKey = 'children'): string[] {\n const fields: string[] = [];\n\n if (schema.type === 'object' && schema.properties) {\n for (const key in schema.properties) {\n const propertySchema = schema.properties[key];\n const path = prefix ? `${prefix}.${key}` : key;\n\n // anyOfを処理\n if (propertySchema.anyOf) {\n propertySchema.anyOf.forEach((subSchema) => {\n if (subSchema.type === 'object' || subSchema.type === 'array') {\n const nestedFields = extractDisplayFields(subSchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n });\n } else if (propertySchema.type === 'array' && propertySchema.items) {\n // 配列を処理\n if (key === childrenKey) {\n // childrenKeyに一致する場合、再帰的に処理\n const arrayFields = extractDisplayFields(propertySchema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n } else if (propertySchema.type !== 'object') {\n // 基本的なプロパティはそのまま追加\n fields.push(path);\n } else {\n // ネストされたオブジェクトに対して再帰的に呼び出す\n const nestedFields = extractDisplayFields(propertySchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n\n // 特定のプロパティ(costAttribute)を処理\n if (key === 'costAttribute' && propertySchema.type === 'object') {\n fields.push(path);\n }\n }\n } else if (schema.type === 'array' && schema.items) {\n // ルートが配列の場合を処理\n const arrayFields = extractDisplayFields(schema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n\n return [...new Set(fields).keys()]\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEA;AACM,SAAU,oBAAoB,CAAC,MAAkB,EAAE,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,UAAU,EAAA;IAC5F,MAAM,MAAM,GAAa,EAAE;IAE3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;AACjD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACnC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,GAAG;;AAG9C,YAAA,IAAI,cAAc,CAAC,KAAK,EAAE;gBACxB,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AACzC,oBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;wBAC7D,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC;AACvE,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE;;AAElE,gBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;;AAEvB,oBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/E,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC7B;YACF;AAAO,iBAAA,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;;AAE3C,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;iBAAO;;gBAEL,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC;AAC5E,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;YAC9B;;YAGA,IAAI,GAAG,KAAK,eAAe,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;QACF;IACF;SAAO,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE;;AAElD,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AACvE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC7B;IAEA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC;;AC/CA;;AAEG;;;;"}
1
+ {"version":3,"file":"xxmachina-common-utils.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/utils/extract-display-fields.ts","../../../../../packages/@xxmachina/common/src/lib/utils/xxmachina-common-utils.ts"],"sourcesContent":["import { JsonSchema } from 'json-schema-library';\n\n// JSONスキーマを受け取り、表示項目のリストを生成する関数\nexport function extractDisplayFields(schema: JsonSchema, prefix = '', childrenKey = 'children'): string[] {\n const fields: string[] = [];\n\n if (schema.type === 'object' && schema.properties) {\n for (const key in schema.properties) {\n const propertySchema = schema.properties[key];\n const path = prefix ? `${prefix}.${key}` : key;\n\n // anyOfを処理\n if (propertySchema.anyOf) {\n propertySchema.anyOf.forEach((subSchema: any) => {\n if (subSchema.type === 'object' || subSchema.type === 'array') {\n const nestedFields = extractDisplayFields(subSchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n });\n } else if (propertySchema.type === 'array' && propertySchema.items) {\n // 配列を処理\n if (key === childrenKey) {\n // childrenKeyに一致する場合、再帰的に処理\n const arrayFields = extractDisplayFields(propertySchema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n } else if (propertySchema.type !== 'object') {\n // 基本的なプロパティはそのまま追加\n fields.push(path);\n } else {\n // ネストされたオブジェクトに対して再帰的に呼び出す\n const nestedFields = extractDisplayFields(propertySchema, path, childrenKey);\n fields.push(...nestedFields);\n }\n\n // 特定のプロパティ(costAttribute)を処理\n if (key === 'costAttribute' && propertySchema.type === 'object') {\n fields.push(path);\n }\n }\n } else if (schema.type === 'array' && schema.items) {\n // ルートが配列の場合を処理\n const arrayFields = extractDisplayFields(schema.items, '', childrenKey);\n fields.push(...arrayFields);\n }\n\n return [...new Set(fields).keys()]\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEA;AACM,SAAU,oBAAoB,CAAC,MAAkB,EAAE,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,UAAU,EAAA;IAC5F,MAAM,MAAM,GAAa,EAAE;IAE3B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE;AACjD,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACnC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAC7C,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,GAAG;;AAG9C,YAAA,IAAI,cAAc,CAAC,KAAK,EAAE;gBACxB,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAc,KAAI;AAC9C,oBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;wBAC7D,MAAM,YAAY,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC;AACvE,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;oBAC9B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE;;AAElE,gBAAA,IAAI,GAAG,KAAK,WAAW,EAAE;;AAEvB,oBAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AAC/E,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBAC7B;YACF;AAAO,iBAAA,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;;AAE3C,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;iBAAO;;gBAEL,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC;AAC5E,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;YAC9B;;YAGA,IAAI,GAAG,KAAK,eAAe,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/D,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACnB;QACF;IACF;SAAO,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE;;AAElD,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC;AACvE,QAAA,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC7B;IAEA,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC;;AC/CA;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xxmachina/common",
3
- "version": "19.35.0",
3
+ "version": "19.37.0",
4
4
  "license": "MIT",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -13,11 +13,11 @@
13
13
  "@nestjs/common": "10.2.8",
14
14
  "@nestjs/graphql": "^11.0.0",
15
15
  "@nestjs/passport": "^9.0.3",
16
- "@ng-atomic/common": "19.35.0",
17
- "@ng-atomic/components": "19.35.0",
18
- "@ng-atomic/core": "19.35.0",
19
- "@nx-ddd/common": "19.35.0",
20
- "@nx-ddd/core": "19.35.0",
16
+ "@ng-atomic/common": "19.37.0",
17
+ "@ng-atomic/components": "19.37.0",
18
+ "@ng-atomic/core": "19.37.0",
19
+ "@nx-ddd/common": "19.37.0",
20
+ "@nx-ddd/core": "19.37.0",
21
21
  "@tfarras/nestjs-firebase-auth": "^2.0.0",
22
22
  "apollo-angular": "^7.0.2",
23
23
  "class-transformer": "^0.5.1",
@@ -43,11 +43,11 @@
43
43
  "validate-azure-ad-token": "^2.2.0"
44
44
  },
45
45
  "optionalDependencies": {
46
- "@nx-ddd/any-func": "19.35.0",
47
- "@nx-ddd/firestore": "19.35.0",
48
- "@nx-ddd/google": "19.35.0",
49
- "@nx-ddd/hasura": "19.35.0",
50
- "@nx-ddd/notion": "19.35.0",
46
+ "@nx-ddd/any-func": "19.37.0",
47
+ "@nx-ddd/firestore": "19.37.0",
48
+ "@nx-ddd/google": "19.37.0",
49
+ "@nx-ddd/hasura": "19.37.0",
50
+ "@nx-ddd/notion": "19.37.0",
51
51
  "@notionhq/client": "^2.2.15"
52
52
  },
53
53
  "dependencies": {
@@ -1,7 +1,7 @@
1
1
  declare class AuthModule {
2
2
  static forRoot(): {
3
3
  module: typeof AuthModule;
4
- providers: any[];
4
+ providers: never[];
5
5
  };
6
6
  }
7
7
 
@@ -20,9 +20,9 @@ declare class AzureAuthService extends AuthService {
20
20
  msal: MsalService;
21
21
  protected readonly config: AzureAuthConfig;
22
22
  readonly auth$: ReplaySubject<AccountInfo>;
23
- readonly auth: _angular_core.Signal<AccountInfo>;
24
- readonly accessToken: _angular_core.WritableSignal<any>;
25
- readonly accessToken$: Observable<any>;
23
+ readonly auth: _angular_core.Signal<AccountInfo | undefined>;
24
+ readonly accessToken: _angular_core.WritableSignal<string | null>;
25
+ readonly accessToken$: Observable<string>;
26
26
  readonly http: HttpClient;
27
27
  constructor(msal: MsalService);
28
28
  initialize(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-auth-azure.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/azure/auth.service.ts","../../../../../packages/@xxmachina/common/src/lib/auth/azure/auth.di.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;AAOA;;;AAIE;AACA;AACD;;;;AAKA;AAED;AAEA;AASqB;AAPnB;;;;;;AAOmB;;AAoCb;AAgBA;AAWU;AAWV;;;AAaP;;AC7GD;AAWA;;;"}
1
+ {"version":3,"file":"xxmachina-common-auth-azure.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/azure/auth.service.ts","../../../../../packages/@xxmachina/common/src/lib/auth/azure/auth.di.ts"],"sourcesContent":[null,null],"names":[],"mappings":";;;;;;;AAOA;;;AAIE;AACA;AACD;;;;AAKA;AAED;AAEA;AASqB;AAPnB;;;;AAIA;;AAGmB;;AAoCb;AAgBA;AAWU;AAWV;;;AAaP;;AC7GD;AAWA;;;"}
@@ -1,7 +1,13 @@
1
1
  import { EnvironmentProviders } from '@angular/core';
2
2
  export { AuthService as FirebaseAuthService } from '@ng-atomic/common/services/auth';
3
3
 
4
+ declare const LOGOUT_CONFIRM_MESSAGE = "\u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3059\u304B\uFF1F";
5
+ /**
6
+ * SIGN_OUT effect factory。window.confirm で確認ダイアログを表示し、
7
+ * OK の時のみ signOut() を実行する。
8
+ */
9
+ declare function createSignOutEffect(): () => Promise<void> | undefined;
4
10
  declare function provideAuthService(config?: {}): EnvironmentProviders;
5
11
 
6
- export { provideAuthService };
12
+ export { LOGOUT_CONFIRM_MESSAGE, createSignOutEffect, provideAuthService };
7
13
  //# sourceMappingURL=xxmachina-common-auth-firebase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-auth-firebase.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/firebase/firebase-auth.di.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMA,iBAAA,kBAAA,eAAA,oBAAA;;;;"}
1
+ {"version":3,"file":"xxmachina-common-auth-firebase.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/auth/firebase/firebase-auth.di.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAMA,cAAA,sBAAA;AAEA;;;AAGG;AACH,iBAAA,mBAAA,UAAA,OAAA;AAUA,iBAAA,kBAAA,eAAA,oBAAA;;;;"}
@@ -65,7 +65,7 @@ interface Relation {
65
65
  type?: string;
66
66
  }
67
67
  declare class ErBuilder {
68
- build(databases: any): string;
68
+ build(databases: any[]): string;
69
69
  parseDatabaseSchema(database: any, name?: string, map?: {
70
70
  [key: string]: string;
71
71
  }): Schema;
@@ -1 +1 @@
1
- {"version":3,"file":"xxmachina-common-domain-builder.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/command/command.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.types.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.helpers.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/er/er.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/query/query.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;AAEA;AACE;AAoBD;;ACrBD;AACE;AACA;AACD;AAEK;;;AAGL;AAEK;;;AAGJ;;;;AAID;;ACXD;;;;;;AAOE;AAUA;;AAYA;AAMA;;;;AAOA;AAMA;AAMA;AAmBA;;AA2BD;;ACtGD;;AAEG;AACH;AAgBA;;AAEG;AACH;;AC5BA;;;;AAIC;AAED;;;;;AAKC;AAgCD;AACE;;AAgBS;AAA4B;AAkDrC;AAmBD;;AC9HD;AACE;;;AAGE;AACA;;AAED;AAmBF;;ACHD;;AAEG;AACH;AACE;AAcD;;AC1CD;;AAEG;;AAED;;AAEA;AACD;AAED;;AAEG;AACH;AAqBA;;AAEG;AACH;AAMA;;AAEG;AACH;;;"}
1
+ {"version":3,"file":"xxmachina-common-domain-builder.d.ts","sources":["../../../../../packages/@xxmachina/common/src/lib/domain/builder/command/command.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.types.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/command-action/command-action.helpers.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/er/er.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/query/query.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/screen-item.builder.ts","../../../../../packages/@xxmachina/common/src/lib/domain/builder/screen-item/notion-property-config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":[],"mappings":";;;;AAEA;AACE;AAoBD;;ACrBD;AACE;AACA;AACD;AAEK;;;AAGL;AAEK;;;AAGJ;;;;AAID;;ACXD;;;;;;AAOE;AAUA;;AAYA;AAMA;;;;AAOA;AAMA;AAMA;AAmBA;;AA2BD;;ACtGD;;AAEG;AACH;AAgBA;;AAEG;AACH;;AC5BA;;;;AAIC;AAED;;;;;AAKC;AAgCD;AACE;;AAgBS;AAA4B;AAkDrC;AAmBD;;AC7HD;AACE;;;AAGE;AACA;;AAED;AAmBF;;ACJD;;AAEG;AACH;AACE;AAcD;;AC1CD;;AAEG;;AAED;;AAEA;AACD;AAED;;AAEG;AACH;AAqBA;;AAEG;AACH;AAMA;;AAEG;AACH;;;"}