@xxmachina/common 19.51.0 → 19.81.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.
- package/fesm2022/xxmachina-common-_shared-ansi.mjs +0 -16
- package/fesm2022/xxmachina-common-_shared-ansi.mjs.map +1 -1
- package/fesm2022/xxmachina-common-_shared-meta-redis.mjs +0 -5
- package/fesm2022/xxmachina-common-_shared-meta-redis.mjs.map +1 -1
- package/fesm2022/xxmachina-common-_shared-meta.mjs +2 -3
- package/fesm2022/xxmachina-common-_shared-meta.mjs.map +1 -1
- package/fesm2022/xxmachina-common-auth-firebase.mjs +0 -4
- package/fesm2022/xxmachina-common-auth-firebase.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs +0 -15
- package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-builder.mjs +1 -25
- package/fesm2022/xxmachina-common-domain-builder.mjs.map +1 -1
- package/fesm2022/xxmachina-common-domain-models.mjs +1 -19
- package/fesm2022/xxmachina-common-domain-models.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra-external-quick-js.mjs +0 -3
- package/fesm2022/xxmachina-common-infra-external-quick-js.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra-query-hasura.mjs +1 -0
- package/fesm2022/xxmachina-common-infra-query-hasura.mjs.map +1 -1
- package/fesm2022/xxmachina-common-infra.mjs +0 -19
- package/fesm2022/xxmachina-common-infra.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-domain-models.mjs +10 -1
- package/fesm2022/xxmachina-common-invoice-domain-models.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs +0 -12
- package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-order.mjs +0 -2
- package/fesm2022/xxmachina-common-invoice-usecase-order.mjs.map +1 -1
- package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs +0 -2
- package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs.map +1 -1
- package/fesm2022/xxmachina-common-services-device-profile.mjs +26 -0
- package/fesm2022/xxmachina-common-services-device-profile.mjs.map +1 -0
- package/fesm2022/xxmachina-common-services-graphql.mjs +1 -70
- package/fesm2022/xxmachina-common-services-graphql.mjs.map +1 -1
- package/fesm2022/xxmachina-common-services-speech.mjs +0 -17
- package/fesm2022/xxmachina-common-services-speech.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase-database.mjs +0 -3
- package/fesm2022/xxmachina-common-usecase-database.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase-graphql.mjs +0 -1
- package/fesm2022/xxmachina-common-usecase-graphql.mjs.map +1 -1
- package/fesm2022/xxmachina-common-usecase.mjs +0 -1
- package/fesm2022/xxmachina-common-usecase.mjs.map +1 -1
- package/fesm2022/xxmachina-common-utils.mjs +0 -8
- package/fesm2022/xxmachina-common-utils.mjs.map +1 -1
- package/package.json +15 -11
- package/types/xxmachina-common-_shared-ansi.d.ts +0 -15
- package/types/xxmachina-common-_shared-ansi.d.ts.map +1 -1
- package/types/xxmachina-common-auth-firebase.d.ts +0 -4
- package/types/xxmachina-common-auth-firebase.d.ts.map +1 -1
- package/types/xxmachina-common-domain-builder-screen-item.d.ts +0 -15
- package/types/xxmachina-common-domain-builder-screen-item.d.ts.map +1 -1
- package/types/xxmachina-common-domain-builder.d.ts +0 -21
- package/types/xxmachina-common-domain-builder.d.ts.map +1 -1
- package/types/xxmachina-common-domain-models-presenter.d.ts +0 -46
- package/types/xxmachina-common-domain-models-presenter.d.ts.map +1 -1
- package/types/xxmachina-common-domain-models.d.ts +0 -59
- package/types/xxmachina-common-domain-models.d.ts.map +1 -1
- package/types/xxmachina-common-invoice-domain-models.d.ts +6 -1
- package/types/xxmachina-common-invoice-domain-models.d.ts.map +1 -1
- package/types/xxmachina-common-services-device-profile.d.ts +13 -0
- package/types/xxmachina-common-services-device-profile.d.ts.map +1 -0
- package/types/xxmachina-common-services-graphql.d.ts +0 -40
- package/types/xxmachina-common-services-graphql.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-invoice-domain-models.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/contract.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/partner.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/order.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/invoice-mail.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/invoice.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/xxmachina-common-invoice-domain-models.ts"],"sourcesContent":["import { Domain, Entity } from \"@nx-ddd/common/domain\";\nimport { Hasura } from \"@nx-ddd/hasura\";\nimport { Notion } from '@nx-ddd/notion';\n\n@Notion.Database('a5f6d11520ca4345b3c5960ff36462bd')\n@Hasura.Table('contracts')\n@Domain.Entity({name: '契約'})\nexport class Contract extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Domain.Lang('番号')\n @Notion.UniqueID('no')\n @Hasura.Numeric()\n no!: number;\n\n @Domain.Lang('件名')\n @Notion.Title('件名')\n @Hasura.Text()\n title!: string;\n\n @Domain.Lang('発行日')\n @Notion.Date('発行日')\n @Hasura.Date()\n issueDate!: Date;\n\n @Domain.Lang('注文一覧')\n @Notion.Relation('注文一覧', {multi: true})\n @Hasura.Text()\n orderIds!: string[];\n\n static from(params: Contract): Contract {\n const instance = Object.assign(new Contract(), {...params});\n return instance;\n }\n}\n","import { Domain, Entity } from \"@nx-ddd/common/domain\";\nimport { Hasura } from \"@nx-ddd/hasura\";\nimport { Notion } from '@nx-ddd/notion'; \n\n@Notion.Database('9aa83577b8ab48f3a5c2b6714e5301d6')\n@Hasura.Table('partners')\n@Domain.Entity('取引先')\nexport class Partner extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('番号')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('名前')\n @Domain.Lang('名前')\n @Hasura.Text()\n name!: string;\n\n @Notion.Select('種別')\n @Domain.Lang('種別')\n @Hasura.Text()\n type!: string;\n\n @Notion.RichText('住所')\n @Domain.Lang('住所')\n @Hasura.Text()\n address!: string;\n\n @Notion.RichText('郵便番号')\n @Domain.Lang('郵便番号')\n @Hasura.Text()\n postalCode!: string;\n\n @Notion.Email('メールアドレス')\n @Domain.Lang('メールアドレス')\n @Hasura.Text()\n email!: string;\n\n @Notion.Email('請求先メールアドレス')\n @Domain.Lang('請求先メールアドレス')\n @Hasura.Text()\n billingEmail!: string;\n\n @Notion.RichText('請求先担当者名')\n @Domain.Lang('請求先担当者名')\n @Hasura.Text()\n billingContact!: string;\n\n @Notion.PhoneNumber('電話番号')\n @Domain.Lang('電話番号')\n @Hasura.Text()\n phoneNumber!: string;\n\n @Notion.RichText('担当者')\n @Domain.Lang('担当者')\n @Hasura.Text()\n contact!: string;\n\n @Notion.Formula('敬称')\n @Domain.Lang('敬称')\n @Hasura.Text()\n suffix!: string;\n\n @Notion.Formula('口座')\n @Domain.Lang('口座')\n @Hasura.Text()\n bankAccount!: string;\n\n @Notion.RichText('インボイス番号')\n @Domain.Lang('インボイス番号')\n @Hasura.Text()\n invoiceNumber!: string;\n\n static from(params: Partner): Partner {\n return Object.assign(new Partner(), {...params});\n }\n}\n","import { Domain, Entity, TransformToDayjs } from '@nx-ddd/common/domain';\nimport { Notion } from '@nx-ddd/notion'; \nimport { Partner } from './partner';\nimport { Type } from 'class-transformer';\nimport { Hasura } from '@nx-ddd/hasura';\n\n@Notion.Database('fde7dd670d924dafa5da54a9d37247ef')\n@Hasura.Table('orders')\n@Domain.Entity('受注')\nexport class Order extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('no')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('件名')\n @Domain.Lang('件名')\n @Hasura.Text()\n title!: string;\n\n @Notion.Relation('ECL', {multi: false})\n @Domain.Lang('ECL')\n @Hasura.Text()\n eclId!: string;\n\n @Notion.Relation('発注者', {multi: false})\n @Domain.Lang('発注者ID')\n @Hasura.Text()\n customerId!: string;\n\n @Type(() => Partner)\n @Domain.Lang('発注者')\n customer?: Partner;\n\n @Notion.Relation('受注者', {multi: false})\n @Domain.Lang('受注者ID')\n @Hasura.Text()\n vendorId!: string;\n\n @Type(() => Partner)\n @Domain.Lang('受注者')\n vendor?: Partner;\n\n @Notion.Relation('契約', {multi: false})\n @Domain.Lang('契約ID')\n @Hasura.Text()\n contractId!: string;\n\n @Notion.Formula('請求')\n @Domain.Lang('請求ID')\n @Hasura.Text()\n invoiceId!: string;\n\n @TransformToDayjs()\n @Notion.Date('開始日')\n @Domain.Lang('開始日')\n @Hasura.Date()\n startDate!: Date;\n\n @TransformToDayjs()\n @Notion.Date('終了日')\n @Domain.Lang('終了日')\n @Hasura.Date()\n endDate!: Date;\n\n @Notion.Number('単価')\n @Domain.Lang('単価')\n @Hasura.Numeric()\n unitPrice!: number;\n\n @Notion.Select('単位')\n @Domain.Lang('単位')\n @Hasura.Text()\n unit!: string;\n\n @Notion.Number('数量')\n @Domain.Lang('数量')\n @Hasura.Numeric()\n quantity!: number;\n\n @Notion.Number('合計金額(入力)')\n @Domain.Lang('合計金額(入力)')\n @Hasura.Numeric()\n amountInput!: number;\n\n @Notion.Formula('合計金額(税込)')\n @Domain.Lang('合計金額(税込)')\n @Hasura.Numeric()\n amount!: number;\n\n @Notion.Status('受注ステータス')\n @Domain.Lang('受注ステータス')\n @Hasura.Text()\n statusIn!: string;\n\n @Notion.Status('発注ステータス')\n @Domain.Lang('発注ステータス')\n @Hasura.Text()\n statusOut!: string;\n\n static from(params: Order): Order {\n const instance = Object.assign(new Order(), {...params});\n return instance;\n }\n\n static get EMPTY() {\n return Order.from({\n id: null as unknown as string,\n no: null as unknown as number,\n title: null as unknown as string,\n eclId: null as unknown as string,\n customerId: null as unknown as string,\n vendorId: null as unknown as string,\n statusIn: null as unknown as string,\n statusOut: null as unknown as string,\n contractId: null as unknown as string,\n invoiceId: null as unknown as string,\n startDate: null as unknown as Date,\n endDate: null as unknown as Date,\n unitPrice: null as unknown as number,\n unit: null as unknown as string,\n quantity: null as unknown as number,\n amount: null as unknown as number,\n amountInput: null as unknown as number,\n });\n }\n}\n","import { Invoice } from \"./invoice\";\n\nexport class InvoiceMail {\n from!: string;\n to!: string;\n subject!: string;\n content!: string;\n invoice!: Invoice;\n}","import { Domain, Entity, TransformToDate } from \"@nx-ddd/common/domain\";\nimport { Notion } from '@nx-ddd/notion'; \nimport { Hasura } from '@nx-ddd/hasura';\nimport { Type } from 'class-transformer';\nimport { IsDate, ValidateNested } from 'class-validator';\nimport { Order } from \"./order\";\nimport { Partner } from './partner';\n\n@Notion.Database('13f2e38f738741e8970b856cb09458e0')\n@Hasura.Table('invoices')\n@Domain.Entity('請求')\nexport class Invoice extends Entity {\n @Domain.Lang('番号')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('no')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('タイトル')\n @Domain.Lang('タイトル')\n @Hasura.Text()\n title!: string;\n\n @Notion.RichText('件名')\n @Domain.Lang('件名')\n @Hasura.Text()\n subject!: string;\n\n @Notion.Relation('請求先')\n @Domain.Lang('請求先')\n @Hasura.Text()\n customerId!: string;\n\n @Type(() => Partner)\n customer?: Partner;\n\n @Notion.Relation('受託先')\n @Domain.Lang('受託先')\n @Hasura.Text()\n vendorId!: string;\n\n @Type(() => Partner)\n vendor?: Partner;\n\n @Notion.Rollup('請求金額(税込)', {multi: false})\n @Domain.Lang('請求金額(税込)')\n @Hasura.Numeric()\n amount!: number;\n\n @Notion.Date('支払期日')\n @Domain.Lang('支払期日')\n @Hasura.Date()\n dueDate!: Date;\n\n @Notion.Relation('請求内容', {multi: true})\n @Domain.Lang('請求内容')\n orderIds!: string[];\n\n @ValidateNested()\n @Type(() => Order)\n orders?: Order[];\n\n static from(data: Partial<Invoice>) {\n return Object.assign(new Invoice(), data);\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-invoice-domain-models.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/contract.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/partner.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/order.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/invoice-mail.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/invoice.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/backoffice/invoice-state.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/domain/models/xxmachina-common-invoice-domain-models.ts"],"sourcesContent":["import { Domain, Entity } from \"@nx-ddd/common/domain\";\nimport { Hasura } from \"@nx-ddd/hasura\";\nimport { Notion } from '@nx-ddd/notion';\n\n@Notion.Database('a5f6d11520ca4345b3c5960ff36462bd')\n@Hasura.Table('contracts')\n@Domain.Entity({name: '契約'})\nexport class Contract extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Domain.Lang('番号')\n @Notion.UniqueID('no')\n @Hasura.Numeric()\n no!: number;\n\n @Domain.Lang('件名')\n @Notion.Title('件名')\n @Hasura.Text()\n title!: string;\n\n @Domain.Lang('発行日')\n @Notion.Date('発行日')\n @Hasura.Date()\n issueDate!: Date;\n\n @Domain.Lang('注文一覧')\n @Notion.Relation('注文一覧', {multi: true})\n @Hasura.Text()\n orderIds!: string[];\n\n static from(params: Contract): Contract {\n const instance = Object.assign(new Contract(), {...params});\n return instance;\n }\n}\n","import { Domain, Entity } from \"@nx-ddd/common/domain\";\nimport { Hasura } from \"@nx-ddd/hasura\";\nimport { Notion } from '@nx-ddd/notion'; \n\n@Notion.Database('9aa83577b8ab48f3a5c2b6714e5301d6')\n@Hasura.Table('partners')\n@Domain.Entity('取引先')\nexport class Partner extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('番号')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('名前')\n @Domain.Lang('名前')\n @Hasura.Text()\n name!: string;\n\n @Notion.Select('種別')\n @Domain.Lang('種別')\n @Hasura.Text()\n type!: string;\n\n @Notion.RichText('住所')\n @Domain.Lang('住所')\n @Hasura.Text()\n address!: string;\n\n @Notion.RichText('郵便番号')\n @Domain.Lang('郵便番号')\n @Hasura.Text()\n postalCode!: string;\n\n @Notion.Email('メールアドレス')\n @Domain.Lang('メールアドレス')\n @Hasura.Text()\n email!: string;\n\n @Notion.Email('請求先メールアドレス')\n @Domain.Lang('請求先メールアドレス')\n @Hasura.Text()\n billingEmail!: string;\n\n @Notion.RichText('請求先担当者名')\n @Domain.Lang('請求先担当者名')\n @Hasura.Text()\n billingContact!: string;\n\n @Notion.PhoneNumber('電話番号')\n @Domain.Lang('電話番号')\n @Hasura.Text()\n phoneNumber!: string;\n\n @Notion.RichText('担当者')\n @Domain.Lang('担当者')\n @Hasura.Text()\n contact!: string;\n\n @Notion.Formula('敬称')\n @Domain.Lang('敬称')\n @Hasura.Text()\n suffix!: string;\n\n @Notion.Formula('口座')\n @Domain.Lang('口座')\n @Hasura.Text()\n bankAccount!: string;\n\n @Notion.RichText('インボイス番号')\n @Domain.Lang('インボイス番号')\n @Hasura.Text()\n invoiceNumber!: string;\n\n static from(params: Partner): Partner {\n return Object.assign(new Partner(), {...params});\n }\n}\n","import { Domain, Entity, TransformToDayjs } from '@nx-ddd/common/domain';\nimport { Notion } from '@nx-ddd/notion'; \nimport { Partner } from './partner';\nimport { Type } from 'class-transformer';\nimport { Hasura } from '@nx-ddd/hasura';\n\n@Notion.Database('fde7dd670d924dafa5da54a9d37247ef')\n@Hasura.Table('orders')\n@Domain.Entity('受注')\nexport class Order extends Entity {\n @Domain.Lang('ID')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('no')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('件名')\n @Domain.Lang('件名')\n @Hasura.Text()\n title!: string;\n\n @Notion.Relation('ECL', {multi: false})\n @Domain.Lang('ECL')\n @Hasura.Text()\n eclId!: string;\n\n @Notion.Relation('発注者', {multi: false})\n @Domain.Lang('発注者ID')\n @Hasura.Text()\n customerId!: string;\n\n @Type(() => Partner)\n @Domain.Lang('発注者')\n customer?: Partner;\n\n @Notion.Relation('受注者', {multi: false})\n @Domain.Lang('受注者ID')\n @Hasura.Text()\n vendorId!: string;\n\n @Type(() => Partner)\n @Domain.Lang('受注者')\n vendor?: Partner;\n\n @Notion.Relation('契約', {multi: false})\n @Domain.Lang('契約ID')\n @Hasura.Text()\n contractId!: string;\n\n @Notion.Formula('請求')\n @Domain.Lang('請求ID')\n @Hasura.Text()\n invoiceId!: string;\n\n @TransformToDayjs()\n @Notion.Date('開始日')\n @Domain.Lang('開始日')\n @Hasura.Date()\n startDate!: Date;\n\n @TransformToDayjs()\n @Notion.Date('終了日')\n @Domain.Lang('終了日')\n @Hasura.Date()\n endDate!: Date;\n\n @Notion.Number('単価')\n @Domain.Lang('単価')\n @Hasura.Numeric()\n unitPrice!: number;\n\n @Notion.Select('単位')\n @Domain.Lang('単位')\n @Hasura.Text()\n unit!: string;\n\n @Notion.Number('数量')\n @Domain.Lang('数量')\n @Hasura.Numeric()\n quantity!: number;\n\n @Notion.Number('合計金額(入力)')\n @Domain.Lang('合計金額(入力)')\n @Hasura.Numeric()\n amountInput!: number;\n\n @Notion.Formula('合計金額(税込)')\n @Domain.Lang('合計金額(税込)')\n @Hasura.Numeric()\n amount!: number;\n\n @Notion.Status('受注ステータス')\n @Domain.Lang('受注ステータス')\n @Hasura.Text()\n statusIn!: string;\n\n @Notion.Status('発注ステータス')\n @Domain.Lang('発注ステータス')\n @Hasura.Text()\n statusOut!: string;\n\n static from(params: Order): Order {\n const instance = Object.assign(new Order(), {...params});\n return instance;\n }\n\n static get EMPTY() {\n return Order.from({\n id: null as unknown as string,\n no: null as unknown as number,\n title: null as unknown as string,\n eclId: null as unknown as string,\n customerId: null as unknown as string,\n vendorId: null as unknown as string,\n statusIn: null as unknown as string,\n statusOut: null as unknown as string,\n contractId: null as unknown as string,\n invoiceId: null as unknown as string,\n startDate: null as unknown as Date,\n endDate: null as unknown as Date,\n unitPrice: null as unknown as number,\n unit: null as unknown as string,\n quantity: null as unknown as number,\n amount: null as unknown as number,\n amountInput: null as unknown as number,\n });\n }\n}\n","import { Invoice } from \"./invoice\";\n\nexport class InvoiceMail {\n from!: string;\n to!: string;\n subject!: string;\n content!: string;\n invoice!: Invoice;\n}","import { Domain, Entity, TransformToDate } from \"@nx-ddd/common/domain\";\nimport { Notion } from '@nx-ddd/notion'; \nimport { Hasura } from '@nx-ddd/hasura';\nimport { Type } from 'class-transformer';\nimport { IsDate, ValidateNested } from 'class-validator';\nimport { Order } from \"./order\";\nimport { Partner } from './partner';\n\n@Notion.Database('13f2e38f738741e8970b856cb09458e0')\n@Hasura.Table('invoices')\n@Domain.Entity('請求')\nexport class Invoice extends Entity {\n @Domain.Lang('番号')\n @Hasura.Text()\n id!: string;\n\n @Notion.UniqueID('no')\n @Domain.Lang('no')\n @Hasura.Numeric()\n no!: number;\n\n @Notion.Title('タイトル')\n @Domain.Lang('タイトル')\n @Hasura.Text()\n title!: string;\n\n @Notion.RichText('件名')\n @Domain.Lang('件名')\n @Hasura.Text()\n subject!: string;\n\n @Notion.Relation('請求先')\n @Domain.Lang('請求先')\n @Hasura.Text()\n customerId!: string;\n\n @Type(() => Partner)\n customer?: Partner;\n\n @Notion.Relation('受託先')\n @Domain.Lang('受託先')\n @Hasura.Text()\n vendorId!: string;\n\n @Type(() => Partner)\n vendor?: Partner;\n\n @Notion.Rollup('請求金額(税込)', {multi: false})\n @Domain.Lang('請求金額(税込)')\n @Hasura.Numeric()\n amount!: number;\n\n @Notion.Date('支払期日')\n @Domain.Lang('支払期日')\n @Hasura.Date()\n dueDate!: Date;\n\n @Notion.Relation('請求内容', {multi: true})\n @Domain.Lang('請求内容')\n orderIds!: string[];\n\n @ValidateNested()\n @Type(() => Order)\n orders?: Order[];\n\n static from(data: Partial<Invoice>) {\n return Object.assign(new Invoice(), data);\n }\n}\n","import { Type } from 'class-transformer';\nimport { Invoice } from './invoice';\n\nexport class InvoiceState {\n @Type(() => Invoice)\n invoice!: Invoice;\n\n mode?: 'edit' | 'view';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAOO,IAAM,QAAQ,GAAA,UAAA,GAAd,MAAM,QAAS,SAAQ,MAAM,CAAA;AAGlC,IAAA,EAAE;AAKF,IAAA,EAAE;AAKF,IAAA,KAAK;AAKL,IAAA,SAAS;AAKT,IAAA,QAAQ;IAER,OAAO,IAAI,CAAC,MAAgB,EAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,UAAQ,EAAE,EAAE,EAAC,GAAG,MAAM,EAAC,CAAC;AAC3D,QAAA,OAAO,QAAQ;IACjB;;AAzBA,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACF,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrB,MAAM,CAAC,OAAO,EAAE;;AACL,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACjB,IAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;;AACC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;8BACF,IAAI;AAAC,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE;;AACM,CAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAvBT,QAAQ,GAAA,UAAA,GAAA,UAAA,CAAA;AAHpB,IAAA,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC;AACnD,IAAA,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;IACzB,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC;AACd,CAAA,EAAA,QAAQ,CA6BpB;;;AC7BM,IAAM,OAAO,GAAA,SAAA,GAAb,MAAM,OAAQ,SAAQ,MAAM,CAAA;AAGjC,IAAA,EAAE;AAKF,IAAA,EAAE;AAKF,IAAA,IAAI;AAKJ,IAAA,IAAI;AAKJ,IAAA,OAAO;AAKP,IAAA,UAAU;AAKV,IAAA,KAAK;AAKL,IAAA,YAAY;AAKZ,IAAA,cAAc;AAKd,IAAA,WAAW;AAKX,IAAA,OAAO;AAKP,IAAA,MAAM;AAKN,IAAA,WAAW;AAKX,IAAA,aAAa;IAEb,OAAO,IAAI,CAAC,MAAe,EAAA;AACzB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,SAAO,EAAE,EAAE,EAAC,GAAG,MAAM,EAAC,CAAC;IAClD;;AArEA,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACF,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE;;AACL,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACA,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAKd,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACA,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAKd,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACG,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;;AACM,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAKpB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AACvB,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;;AACC,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;AAC1B,IAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE;;AACQ,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAKtB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC1B,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;;AACU,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAKxB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1B,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;;AACO,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;;AACG,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACE,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAKhB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACO,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC1B,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;;AACS,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA;AApEZ,OAAO,GAAA,SAAA,GAAA,UAAA,CAAA;AAHnB,IAAA,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC;AACnD,IAAA,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;AACxB,IAAA,MAAM,CAAC,MAAM,CAAC,KAAK;AACP,CAAA,EAAA,OAAO,CAyEnB;;;ACvEM,IAAM,KAAK,GAAA,OAAA,GAAX,MAAM,KAAM,SAAQ,MAAM,CAAA;AAG/B,IAAA,EAAE;AAKF,IAAA,EAAE;AAKF,IAAA,KAAK;AAKL,IAAA,KAAK;AAKL,IAAA,UAAU;AAIV,IAAA,QAAQ;AAKR,IAAA,QAAQ;AAIR,IAAA,MAAM;AAKN,IAAA,UAAU;AAKV,IAAA,SAAS;AAMT,IAAA,SAAS;AAMT,IAAA,OAAO;AAKP,IAAA,SAAS;AAKT,IAAA,IAAI;AAKJ,IAAA,QAAQ;AAKR,IAAA,WAAW;AAKX,IAAA,MAAM;AAKN,IAAA,QAAQ;AAKR,IAAA,SAAS;IAET,OAAO,IAAI,CAAC,MAAa,EAAA;AACvB,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,OAAK,EAAE,EAAE,EAAC,GAAG,MAAM,EAAC,CAAC;AACxD,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,WAAW,KAAK,GAAA;QACd,OAAO,OAAK,CAAC,IAAI,CAAC;AAChB,YAAA,EAAE,EAAE,IAAyB;AAC7B,YAAA,EAAE,EAAE,IAAyB;AAC7B,YAAA,KAAK,EAAE,IAAyB;AAChC,YAAA,KAAK,EAAE,IAAyB;AAChC,YAAA,UAAU,EAAE,IAAyB;AACrC,YAAA,QAAQ,EAAE,IAAyB;AACnC,YAAA,QAAQ,EAAE,IAAyB;AACnC,YAAA,SAAS,EAAE,IAAyB;AACpC,YAAA,UAAU,EAAE,IAAyB;AACrC,YAAA,SAAS,EAAE,IAAyB;AACpC,YAAA,SAAS,EAAE,IAAuB;AAClC,YAAA,OAAO,EAAE,IAAuB;AAChC,YAAA,SAAS,EAAE,IAAyB;AACpC,YAAA,IAAI,EAAE,IAAyB;AAC/B,YAAA,QAAQ,EAAE,IAAyB;AACnC,YAAA,MAAM,EAAE,IAAyB;AACjC,YAAA,WAAW,EAAE,IAAyB;AACvC,SAAA,CAAC;IACJ;;AArHA,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACF,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE;;AACL,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;IAHC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AACtC,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;;AACC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;IAHC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AACtC,IAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACpB,MAAM,CAAC,IAAI,EAAE;;AACM,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAIpB,UAAA,CAAA;AAFC,IAAA,IAAI,CAAC,MAAM,OAAO,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;8BACR,OAAO;AAAC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKnB,UAAA,CAAA;IAHC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AACtC,IAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACpB,MAAM,CAAC,IAAI,EAAE;;AACI,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAIlB,UAAA,CAAA;AAFC,IAAA,IAAI,CAAC,MAAM,OAAO,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;8BACV,OAAO;AAAC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;IAHC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AACrC,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;;AACM,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAKpB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;;AACK,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAMnB,UAAA,CAAA;AAJC,IAAA,gBAAgB,EAAE;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;8BACF,IAAI;AAAC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAMjB,UAAA,CAAA;AAJC,IAAA,gBAAgB,EAAE;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAClB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;8BACJ,IAAI;AAAC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE;;AACE,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAKnB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACA,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAKd,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE;;AACC,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKlB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IACvB,MAAM,CAAC,OAAO,EAAE;;AACI,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAKrB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAC1B,IAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IACvB,MAAM,CAAC,OAAO,EAAE;;AACD,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAKhB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AACxB,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;;AACI,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKlB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AACxB,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE;;AACK,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AA7FR,KAAK,GAAA,OAAA,GAAA,UAAA,CAAA;AAHjB,IAAA,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC;AACnD,IAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtB,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI;AACN,CAAA,EAAA,KAAK,CAyHjB;;MChIY,WAAW,CAAA;AACtB,IAAA,IAAI;AACJ,IAAA,EAAE;AACF,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,OAAO;AACR;;;ACGM,IAAM,OAAO,GAAA,SAAA,GAAb,MAAM,OAAQ,SAAQ,MAAM,CAAA;AAGjC,IAAA,EAAE;AAKF,IAAA,EAAE;AAKF,IAAA,KAAK;AAKL,IAAA,OAAO;AAKP,IAAA,UAAU;AAGV,IAAA,QAAQ;AAKR,IAAA,QAAQ;AAGR,IAAA,MAAM;AAKN,IAAA,MAAM;AAKN,IAAA,OAAO;AAIP,IAAA,QAAQ;AAIR,IAAA,MAAM;IAEN,OAAO,IAAI,CAAC,IAAsB,EAAA;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,SAAO,EAAE,EAAE,IAAI,CAAC;IAC3C;;AArDA,UAAA,CAAA;AAFC,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACF,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,OAAO,EAAE;;AACL,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAKZ,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACpB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;;AACC,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,OAAA,EAAA,KAAA,CAAA,CAAA;AAKf,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,IAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE;;AACG,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;;AACM,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAGpB,UAAA,CAAA;AADC,IAAA,IAAI,CAAC,MAAM,OAAO,CAAC;8BACT,OAAO;AAAC,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAKnB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtB,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE;;AACI,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGlB,UAAA,CAAA;AADC,IAAA,IAAI,CAAC,MAAM,OAAO,CAAC;8BACX,OAAO;AAAC,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAKjB,UAAA,CAAA;IAHC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC;AACzC,IAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;IACvB,MAAM,CAAC,OAAO,EAAE;;AACD,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AAKhB,UAAA,CAAA;AAHC,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,IAAI,EAAE;8BACJ,IAAI;AAAC,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AAIf,UAAA,CAAA;IAFC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;AACtC,IAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;AACA,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAIpB,UAAA,CAAA;AAFC,IAAA,cAAc,EAAE;AAChB,IAAA,IAAI,CAAC,MAAM,KAAK,CAAC;;AACD,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA;AApDN,OAAO,GAAA,SAAA,GAAA,UAAA,CAAA;AAHnB,IAAA,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC;AACnD,IAAA,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;AACxB,IAAA,MAAM,CAAC,MAAM,CAAC,IAAI;AACN,CAAA,EAAA,OAAO,CAyDnB;;MCjEY,YAAY,CAAA;AAEvB,IAAA,OAAO;AAEP,IAAA,IAAI;AACL;AAHC,UAAA,CAAA;AADC,IAAA,IAAI,CAAC,MAAM,OAAO,CAAC;8BACV,OAAO;AAAC,CAAA,EAAA,YAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;;ACLpB;;AAEG;;;;"}
|
|
@@ -8,9 +8,6 @@ import { Invoice } from '@xxmachina/common/invoice/domain/models';
|
|
|
8
8
|
import { getHasuraRepository, HasuraService, deepSnakeToCamelCase } from '@nx-ddd/hasura';
|
|
9
9
|
import { gql } from '@apollo/client/core';
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* 請求書関連のGraphQLクエリ
|
|
13
|
-
*/
|
|
14
11
|
const GET_INVOICE_WITH_RELATIONS_QUERY = `
|
|
15
12
|
query GetInvoiceWithRelations($id: String!) {
|
|
16
13
|
invoices_by_pk(id: $id) {
|
|
@@ -74,16 +71,7 @@ const GET_INVOICE_WITH_RELATIONS_QUERY = `
|
|
|
74
71
|
}
|
|
75
72
|
`;
|
|
76
73
|
|
|
77
|
-
/**
|
|
78
|
-
* 請求書データ変換ユーティリティ
|
|
79
|
-
*/
|
|
80
|
-
/**
|
|
81
|
-
* スネークケースをキャメルケースに変換
|
|
82
|
-
*/
|
|
83
74
|
const snakeToCamel = (str) => str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
84
|
-
/**
|
|
85
|
-
* 請求書データをキャメルケースに変換し、__typenameを除外
|
|
86
|
-
*/
|
|
87
75
|
function transformInvoiceData(data) {
|
|
88
76
|
const transform = (obj) => {
|
|
89
77
|
if (Array.isArray(obj)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-invoice-usecase-invoice.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice-queries.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice-utils.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice.service.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/xxmachina-common-invoice-usecase-invoice.ts"],"sourcesContent":["/**\n * 請求書関連のGraphQLクエリ\n */\n\nexport const GET_INVOICE_WITH_RELATIONS_QUERY = `\n query GetInvoiceWithRelations($id: String!) {\n invoices_by_pk(id: $id) {\n id\n no\n title\n subject\n customer_id\n vendor_id\n amount\n due_date\n orders {\n id\n title\n ecl_id\n customer_id\n vendor_id\n contract_id\n invoice_id\n start_date\n end_date\n unit_price\n unit\n quantity\n amount_input\n amount\n status_in\n status_out\n }\n customer {\n id\n name\n type\n address\n postal_code\n email\n billing_email\n billing_contact\n phone_number\n contact\n suffix\n bank_account\n invoice_number\n }\n vendor {\n id\n name\n type\n address\n postal_code\n email\n billing_email\n billing_contact\n phone_number\n contact\n suffix\n bank_account\n invoice_number\n }\n }\n }\n`;\n","/**\n * 請求書データ変換ユーティリティ\n */\n\n/**\n * スネークケースをキャメルケースに変換\n */\nconst snakeToCamel = (str: string): string =>\n str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n\n/**\n * 請求書データをキャメルケースに変換し、__typenameを除外\n */\nexport function transformInvoiceData(data: any): any {\n const transform = (obj: any): any => {\n if (Array.isArray(obj)) {\n return obj.map(transform);\n } else if (obj !== null && typeof obj === 'object') {\n const transformed: any = {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === '__typename') continue;\n const camelKey = snakeToCamel(key);\n transformed[camelKey] = transform(value);\n }\n return transformed;\n }\n return obj;\n };\n\n return transform(data);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InvoiceNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { CHROMIUM } from '@nx-ddd/common/infrastructure/externals/chromium';\nimport { makeDI } from '@nx-ddd/core';\nimport { RESEND_SERVICE } from '@xxmachina/common/infra/external/resend';\nimport { Invoice, InvoiceMail } from '@xxmachina/common/invoice/domain/models';\nimport { deepSnakeToCamelCase, getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { gql } from '@apollo/client/core';\nimport { GET_INVOICE_WITH_RELATIONS_QUERY } from './invoice-queries';\nimport { transformInvoiceData } from './invoice-utils';\n\nexport interface InvoiceConfig {\n templateBaseUrl: string;\n}\n\nexport const INVOICE_CONFIG = makeDI<InvoiceConfig>('[@xxmachina/invoice] INVOICE_CONFIG', {optional: false});\n\n@Injectable({ providedIn: 'root' })\nexport class InvoiceUsecase {\n private readonly notionRepo = inject(InvoiceNotionRepository);\n private readonly chromium = CHROMIUM.inject();\n private readonly config = INVOICE_CONFIG.inject();\n private readonly resend = RESEND_SERVICE.inject();\n private readonly hasura = getHasuraRepository(Invoice, { hasura: inject(HasuraService) });\n private readonly hasuraService = inject(HasuraService);\n\n async list() {\n return this.notionRepo.list();\n }\n\n async syncOne(id: string) {\n const invoice = await this.notionRepo.get({ id });\n await this.hasura.create(invoice);\n }\n\n async sync() {\n console.log('[InvoiceUsecase] Starting sync from Notion to Hasura...');\n\n const invoices = await this.notionRepo.list();\n console.log(`[InvoiceUsecase] Retrieved ${invoices.length} invoices from Notion`);\n\n console.log('[InvoiceUsecase] Deleting existing records in Hasura...');\n await this.hasura.deleteAll();\n\n console.log('[InvoiceUsecase] Saving invoices to Hasura...');\n await this.hasura.saveMany(invoices);\n\n console.log('[InvoiceUsecase] Sync completed successfully');\n return { synced: invoices.length };\n }\n\n async makePdf(data: object): Promise<{ pdf: Buffer, title: string, name: string }> {\n return this.chromium!.start(async (browser) => {\n const context = await browser.newContext({ deviceScaleFactor: 2 });\n const page = await context.newPage();\n page.on('console', msg => console.log('PAGE LOG:', msg.text()));\n page.on('pageerror', err => console.log('PAGE ERROR:', err.message));\n const url = `${this.config!.templateBaseUrl}?json=${encodeURIComponent(JSON.stringify(data))}`;\n await page.goto(url, { waitUntil: 'networkidle' });\n await page.evaluate(() => document.fonts.ready);\n await page.waitForSelector('h1');\n const title = await page.title();\n const pdf = await page.pdf({ format: 'A4' });\n return { pdf, title, name: `${title}.pdf` };\n });\n }\n\n async sendMail(mail: InvoiceMail) {\n const pdf = await this.makePdf(mail.invoice);\n await this.resend!.emails.send({\n from: mail.from,\n to: mail.to,\n subject: mail.subject,\n html: mail.content,\n attachments: [{ filename: pdf.name, content: pdf.pdf, contentType: 'application/pdf' }]\n });\n }\n\n async getLink(invoiceId: string): Promise<string> {\n try {\n const result = await this.hasuraService.query({\n query: gql`${GET_INVOICE_WITH_RELATIONS_QUERY}`,\n variables: { id: invoiceId }\n }).then(result => deepSnakeToCamelCase(result));\n\n const invoiceData = (result as any).data?.invoicesByPk;\n if (!invoiceData) {\n throw new Error(`Invoice with ID ${invoiceId} not found`);\n }\n\n const transformedData = transformInvoiceData(invoiceData);\n const url = `${this.config!.templateBaseUrl}?json=${encodeURIComponent(JSON.stringify(transformedData))}`;\n return url;\n } catch (error) {\n console.error(`[InvoiceUsecase] Failed to get link for invoice ${invoiceId}:`, error);\n throw error;\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-invoice-usecase-invoice.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice-queries.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice-utils.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/invoice.service.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/invoice/xxmachina-common-invoice-usecase-invoice.ts"],"sourcesContent":["\n\nexport const GET_INVOICE_WITH_RELATIONS_QUERY = `\n query GetInvoiceWithRelations($id: String!) {\n invoices_by_pk(id: $id) {\n id\n no\n title\n subject\n customer_id\n vendor_id\n amount\n due_date\n orders {\n id\n title\n ecl_id\n customer_id\n vendor_id\n contract_id\n invoice_id\n start_date\n end_date\n unit_price\n unit\n quantity\n amount_input\n amount\n status_in\n status_out\n }\n customer {\n id\n name\n type\n address\n postal_code\n email\n billing_email\n billing_contact\n phone_number\n contact\n suffix\n bank_account\n invoice_number\n }\n vendor {\n id\n name\n type\n address\n postal_code\n email\n billing_email\n billing_contact\n phone_number\n contact\n suffix\n bank_account\n invoice_number\n }\n }\n }\n`;\n","\n\n\nconst snakeToCamel = (str: string): string =>\n str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n\n\nexport function transformInvoiceData(data: any): any {\n const transform = (obj: any): any => {\n if (Array.isArray(obj)) {\n return obj.map(transform);\n } else if (obj !== null && typeof obj === 'object') {\n const transformed: any = {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === '__typename') continue;\n const camelKey = snakeToCamel(key);\n transformed[camelKey] = transform(value);\n }\n return transformed;\n }\n return obj;\n };\n\n return transform(data);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InvoiceNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { CHROMIUM } from '@nx-ddd/common/infrastructure/externals/chromium';\nimport { makeDI } from '@nx-ddd/core';\nimport { RESEND_SERVICE } from '@xxmachina/common/infra/external/resend';\nimport { Invoice, InvoiceMail } from '@xxmachina/common/invoice/domain/models';\nimport { deepSnakeToCamelCase, getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { gql } from '@apollo/client/core';\nimport { GET_INVOICE_WITH_RELATIONS_QUERY } from './invoice-queries';\nimport { transformInvoiceData } from './invoice-utils';\n\nexport interface InvoiceConfig {\n templateBaseUrl: string;\n}\n\nexport const INVOICE_CONFIG = makeDI<InvoiceConfig>('[@xxmachina/invoice] INVOICE_CONFIG', {optional: false});\n\n@Injectable({ providedIn: 'root' })\nexport class InvoiceUsecase {\n private readonly notionRepo = inject(InvoiceNotionRepository);\n private readonly chromium = CHROMIUM.inject();\n private readonly config = INVOICE_CONFIG.inject();\n private readonly resend = RESEND_SERVICE.inject();\n private readonly hasura = getHasuraRepository(Invoice, { hasura: inject(HasuraService) });\n private readonly hasuraService = inject(HasuraService);\n\n async list() {\n return this.notionRepo.list();\n }\n\n async syncOne(id: string) {\n const invoice = await this.notionRepo.get({ id });\n await this.hasura.create(invoice);\n }\n\n async sync() {\n console.log('[InvoiceUsecase] Starting sync from Notion to Hasura...');\n\n const invoices = await this.notionRepo.list();\n console.log(`[InvoiceUsecase] Retrieved ${invoices.length} invoices from Notion`);\n\n console.log('[InvoiceUsecase] Deleting existing records in Hasura...');\n await this.hasura.deleteAll();\n\n console.log('[InvoiceUsecase] Saving invoices to Hasura...');\n await this.hasura.saveMany(invoices);\n\n console.log('[InvoiceUsecase] Sync completed successfully');\n return { synced: invoices.length };\n }\n\n async makePdf(data: object): Promise<{ pdf: Buffer, title: string, name: string }> {\n return this.chromium!.start(async (browser) => {\n const context = await browser.newContext({ deviceScaleFactor: 2 });\n const page = await context.newPage();\n page.on('console', msg => console.log('PAGE LOG:', msg.text()));\n page.on('pageerror', err => console.log('PAGE ERROR:', err.message));\n const url = `${this.config!.templateBaseUrl}?json=${encodeURIComponent(JSON.stringify(data))}`;\n await page.goto(url, { waitUntil: 'networkidle' });\n await page.evaluate(() => document.fonts.ready);\n await page.waitForSelector('h1');\n const title = await page.title();\n const pdf = await page.pdf({ format: 'A4' });\n return { pdf, title, name: `${title}.pdf` };\n });\n }\n\n async sendMail(mail: InvoiceMail) {\n const pdf = await this.makePdf(mail.invoice);\n await this.resend!.emails.send({\n from: mail.from,\n to: mail.to,\n subject: mail.subject,\n html: mail.content,\n attachments: [{ filename: pdf.name, content: pdf.pdf, contentType: 'application/pdf' }]\n });\n }\n\n async getLink(invoiceId: string): Promise<string> {\n try {\n const result = await this.hasuraService.query({\n query: gql`${GET_INVOICE_WITH_RELATIONS_QUERY}`,\n variables: { id: invoiceId }\n }).then(result => deepSnakeToCamelCase(result));\n\n const invoiceData = (result as any).data?.invoicesByPk;\n if (!invoiceData) {\n throw new Error(`Invoice with ID ${invoiceId} not found`);\n }\n\n const transformedData = transformInvoiceData(invoiceData);\n const url = `${this.config!.templateBaseUrl}?json=${encodeURIComponent(JSON.stringify(transformedData))}`;\n return url;\n } catch (error) {\n console.error(`[InvoiceUsecase] Failed to get link for invoice ${invoiceId}:`, error);\n throw error;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,8 @@ class OrderUsecase {
|
|
|
11
11
|
console.log('[OrderUsecase] Starting sync from Notion to Hasura...');
|
|
12
12
|
const orders = await this.notion.list();
|
|
13
13
|
console.log(`[OrderUsecase] Retrieved ${orders.length} orders from Notion`);
|
|
14
|
-
// Delete existing records to avoid duplicates
|
|
15
14
|
console.log('[OrderUsecase] Deleting existing records in Hasura...');
|
|
16
15
|
await this.hasuraRepo.deleteAll();
|
|
17
|
-
// Save all orders
|
|
18
16
|
console.log('[OrderUsecase] Saving orders to Hasura...');
|
|
19
17
|
await this.hasuraRepo.saveMany(orders);
|
|
20
18
|
console.log('[OrderUsecase] Sync completed successfully');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-invoice-usecase-order.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/order/order.service.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/order/xxmachina-common-invoice-usecase-order.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { OrderNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { Order } from '@xxmachina/common/invoice/domain/models';\n\n@Injectable({ providedIn: 'root' })\nexport class OrderUsecase {\n protected notion = inject(OrderNotionRepository);\n protected hasuraRepo = getHasuraRepository(Order, { hasura: inject(HasuraService) });\n\n async sync() {\n console.log('[OrderUsecase] Starting sync from Notion to Hasura...');\n \n const orders = await this.notion.list();\n console.log(`[OrderUsecase] Retrieved ${orders.length} orders from Notion`);\n \n
|
|
1
|
+
{"version":3,"file":"xxmachina-common-invoice-usecase-order.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/order/order.service.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/order/xxmachina-common-invoice-usecase-order.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { OrderNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { Order } from '@xxmachina/common/invoice/domain/models';\n\n@Injectable({ providedIn: 'root' })\nexport class OrderUsecase {\n protected notion = inject(OrderNotionRepository);\n protected hasuraRepo = getHasuraRepository(Order, { hasura: inject(HasuraService) });\n\n async sync() {\n console.log('[OrderUsecase] Starting sync from Notion to Hasura...');\n \n const orders = await this.notion.list();\n console.log(`[OrderUsecase] Retrieved ${orders.length} orders from Notion`);\n \n \n console.log('[OrderUsecase] Deleting existing records in Hasura...');\n await this.hasuraRepo.deleteAll();\n \n \n console.log('[OrderUsecase] Saving orders to Hasura...');\n await this.hasuraRepo.saveMany(orders);\n \n console.log('[OrderUsecase] Sync completed successfully');\n return { synced: orders.length };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,YAAY,CAAA;AACb,IAAA,MAAM,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtC,IAAA,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;AAEpF,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,CAAA,yBAAA,EAA4B,MAAM,CAAC,MAAM,CAAA,mBAAA,CAAqB,CAAC;AAG3E,QAAA,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC;AACpE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAGjC,QAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC;QACxD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEtC,QAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;AACzD,QAAA,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAClC;uGApBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cADC,MAAM,EAAA,CAAA;;2FACnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACLlC;;AAEG;;;;"}
|
|
@@ -11,10 +11,8 @@ class PartnerUsecase {
|
|
|
11
11
|
console.log('[PartnerUsecase] Starting sync from Notion to Hasura...');
|
|
12
12
|
const items = await this.notionRepo.list();
|
|
13
13
|
console.log(`[PartnerUsecase] Retrieved ${items.length} partners from Notion`);
|
|
14
|
-
// Delete existing records to avoid duplicates
|
|
15
14
|
console.log('[PartnerUsecase] Deleting existing records in Hasura...');
|
|
16
15
|
await this.hasuraRepo.deleteAll();
|
|
17
|
-
// Save all partners
|
|
18
16
|
console.log('[PartnerUsecase] Saving partners to Hasura...');
|
|
19
17
|
await this.hasuraRepo.saveMany(items);
|
|
20
18
|
console.log('[PartnerUsecase] Sync completed successfully');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-common-invoice-usecase-partner.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/partner/partner.usecase.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/partner/xxmachina-common-invoice-usecase-partner.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { PartnerNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { Partner } from '@xxmachina/common/invoice/domain/models';\n\n@Injectable({ providedIn: 'root' })\nexport class PartnerUsecase {\n protected notionRepo = inject(PartnerNotionRepository);\n protected hasuraRepo = getHasuraRepository(Partner, { hasura: inject(HasuraService) });\n\n async sync() {\n console.log('[PartnerUsecase] Starting sync from Notion to Hasura...');\n \n const items = await this.notionRepo.list();\n console.log(`[PartnerUsecase] Retrieved ${items.length} partners from Notion`);\n \n
|
|
1
|
+
{"version":3,"file":"xxmachina-common-invoice-usecase-partner.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/partner/partner.usecase.ts","../../../../../packages/@xxmachina/common/src/lib/invoice/usecase/partner/xxmachina-common-invoice-usecase-partner.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { PartnerNotionRepository } from '@xxmachina/common/infra/repository/notion';\nimport { getHasuraRepository, HasuraService } from '@nx-ddd/hasura';\nimport { Partner } from '@xxmachina/common/invoice/domain/models';\n\n@Injectable({ providedIn: 'root' })\nexport class PartnerUsecase {\n protected notionRepo = inject(PartnerNotionRepository);\n protected hasuraRepo = getHasuraRepository(Partner, { hasura: inject(HasuraService) });\n\n async sync() {\n console.log('[PartnerUsecase] Starting sync from Notion to Hasura...');\n \n const items = await this.notionRepo.list();\n console.log(`[PartnerUsecase] Retrieved ${items.length} partners from Notion`);\n \n \n console.log('[PartnerUsecase] Deleting existing records in Hasura...');\n await this.hasuraRepo.deleteAll();\n \n \n console.log('[PartnerUsecase] Saving partners to Hasura...');\n await this.hasuraRepo.saveMany(items);\n \n console.log('[PartnerUsecase] Sync completed successfully');\n return { synced: items.length };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,cAAc,CAAA;AACf,IAAA,UAAU,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC5C,IAAA,UAAU,GAAG,mBAAmB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;AAEtF,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC;QAEtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;QAC1C,OAAO,CAAC,GAAG,CAAC,CAAA,2BAAA,EAA8B,KAAK,CAAC,MAAM,CAAA,qBAAA,CAAuB,CAAC;AAG9E,QAAA,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC;AACtE,QAAA,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAGjC,QAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC;QAC5D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AAErC,QAAA,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC;AAC3D,QAAA,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;IACjC;uGApBW,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,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACLlC;;AAEG;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, computed, Injectable } from '@angular/core';
|
|
3
|
+
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
4
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { map } from 'rxjs';
|
|
6
|
+
|
|
7
|
+
class DeviceProfileService {
|
|
8
|
+
observer = inject(BreakpointObserver);
|
|
9
|
+
handsetOrTablet = toSignal(this.observer
|
|
10
|
+
.observe([Breakpoints.Handset, Breakpoints.Tablet])
|
|
11
|
+
.pipe(map((result) => result.matches)), { initialValue: false });
|
|
12
|
+
isTouchDevice = computed(() => this.handsetOrTablet(), ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : []));
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceProfileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
14
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceProfileService, providedIn: 'root' });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: DeviceProfileService, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{ providedIn: 'root' }]
|
|
19
|
+
}] });
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Generated bundle index. Do not edit.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
export { DeviceProfileService };
|
|
26
|
+
//# sourceMappingURL=xxmachina-common-services-device-profile.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xxmachina-common-services-device-profile.mjs","sources":["../../../../../packages/@xxmachina/common/src/lib/services/device-profile/device-profile.service.ts","../../../../../packages/@xxmachina/common/src/lib/services/device-profile/xxmachina-common-services-device-profile.ts"],"sourcesContent":["import { Injectable, inject, computed, Signal } from '@angular/core';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\n\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceProfileService {\n private readonly observer = inject(BreakpointObserver);\n\n private readonly handsetOrTablet = toSignal(\n this.observer\n .observe([Breakpoints.Handset, Breakpoints.Tablet])\n .pipe(map((result) => result.matches)),\n { initialValue: false },\n );\n\n \n readonly isTouchDevice: Signal<boolean> = computed(() => this.handsetOrTablet());\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAOa,oBAAoB,CAAA;AACd,IAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAErC,IAAA,eAAe,GAAG,QAAQ,CACzC,IAAI,CAAC;SACF,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC;SACjD,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,EACxC,EAAE,YAAY,EAAE,KAAK,EAAE,CACxB;IAGQ,aAAa,GAAoB,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;uGAXrE,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}
|
|
@@ -8,13 +8,6 @@ import { map } from 'rxjs/operators';
|
|
|
8
8
|
|
|
9
9
|
class GraphqlService {
|
|
10
10
|
apolloClientManager = inject(ApolloClientManagerService);
|
|
11
|
-
/**
|
|
12
|
-
* @TODO
|
|
13
|
-
* this.apolloMulti.getClientはendpoint単位でApolloClientを管理しているため、
|
|
14
|
-
* _query.graphql.headersに認証情報などが含まれていないリクエストが初めに来ると、
|
|
15
|
-
* {message: 'no subscriptions exist}のようなエラーが出る。
|
|
16
|
-
* Headersが更新されるたびに、ApolloClientを再生成するような処理も必要。
|
|
17
|
-
*/
|
|
18
11
|
subscribe(graphql) {
|
|
19
12
|
if (!graphql.query)
|
|
20
13
|
return EMPTY;
|
|
@@ -25,6 +18,7 @@ class GraphqlService {
|
|
|
25
18
|
query: gql `${graphql.query}`,
|
|
26
19
|
variables: graphql.variables,
|
|
27
20
|
fetchPolicy: 'network-only',
|
|
21
|
+
context: { queryDeduplication: false },
|
|
28
22
|
})));
|
|
29
23
|
}
|
|
30
24
|
query(graphql) {
|
|
@@ -57,14 +51,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
57
51
|
args: [{ providedIn: 'root' }]
|
|
58
52
|
}] });
|
|
59
53
|
|
|
60
|
-
/**
|
|
61
|
-
* AST-based subscription splitter service
|
|
62
|
-
* GraphQL ASTを使用して正確にサブスクリプションを分割
|
|
63
|
-
*/
|
|
64
54
|
class AstSubscriptionSplitterService {
|
|
65
55
|
splitSubscription(query) {
|
|
66
56
|
const document = typeof query === 'string' ? parse(query) : query;
|
|
67
|
-
// Find the subscription operation
|
|
68
57
|
let subscriptionOp;
|
|
69
58
|
visit(document, {
|
|
70
59
|
OperationDefinition(node) {
|
|
@@ -78,14 +67,11 @@ class AstSubscriptionSplitterService {
|
|
|
78
67
|
}
|
|
79
68
|
const op = subscriptionOp;
|
|
80
69
|
const results = [];
|
|
81
|
-
// Process each field in the subscription
|
|
82
70
|
op.selectionSet.selections.forEach(selection => {
|
|
83
71
|
if (selection.kind === Kind.FIELD) {
|
|
84
72
|
const field = selection;
|
|
85
73
|
const fieldName = field.alias?.value || field.name.value;
|
|
86
|
-
// Extract variables used in this field
|
|
87
74
|
const usedVariables = this.extractUsedVariables(field);
|
|
88
|
-
// Create a new subscription with only this field and its used variables
|
|
89
75
|
const newDoc = {
|
|
90
76
|
kind: Kind.DOCUMENT,
|
|
91
77
|
definitions: [{
|
|
@@ -110,12 +96,8 @@ class AstSubscriptionSplitterService {
|
|
|
110
96
|
});
|
|
111
97
|
return results;
|
|
112
98
|
}
|
|
113
|
-
/**
|
|
114
|
-
* Extract variables used in a field and its subfields
|
|
115
|
-
*/
|
|
116
99
|
extractUsedVariables(field) {
|
|
117
100
|
const usedVars = new Set();
|
|
118
|
-
// Visit all nodes in the field to find variable references
|
|
119
101
|
visit(field, {
|
|
120
102
|
Variable(node) {
|
|
121
103
|
usedVars.add(node.name.value);
|
|
@@ -123,15 +105,9 @@ class AstSubscriptionSplitterService {
|
|
|
123
105
|
});
|
|
124
106
|
return usedVars;
|
|
125
107
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Filter variable definitions to only include used variables
|
|
128
|
-
*/
|
|
129
108
|
filterVariableDefinitions(definitions, usedVariables) {
|
|
130
109
|
return definitions.filter(def => usedVariables.has(def.variable.name.value));
|
|
131
110
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Combine multiple observables from split queries
|
|
134
|
-
*/
|
|
135
111
|
combineResults(results, fieldNames) {
|
|
136
112
|
if (results.length === 0) {
|
|
137
113
|
return of({});
|
|
@@ -169,16 +145,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
169
145
|
args: [{ providedIn: 'root' }]
|
|
170
146
|
}] });
|
|
171
147
|
|
|
172
|
-
/**
|
|
173
|
-
* クエリがsubscriptionかどうかを判定
|
|
174
|
-
*/
|
|
175
148
|
function isSubscription(query) {
|
|
176
149
|
const queryStr = typeof query === 'string' ? query : query.loc?.source?.body || '';
|
|
177
150
|
return queryStr.trim().startsWith('subscription');
|
|
178
151
|
}
|
|
179
|
-
/**
|
|
180
|
-
* クエリから使用されている変数を抽出
|
|
181
|
-
*/
|
|
182
152
|
function extractUsedVariablesFromQuery(query) {
|
|
183
153
|
const variables = new Set();
|
|
184
154
|
const regex = /\$(\w+)/g;
|
|
@@ -188,9 +158,6 @@ function extractUsedVariablesFromQuery(query) {
|
|
|
188
158
|
}
|
|
189
159
|
return variables;
|
|
190
160
|
}
|
|
191
|
-
/**
|
|
192
|
-
* 変数値から使用される変数のみをフィルタリング
|
|
193
|
-
*/
|
|
194
161
|
function filterVariableValues(variables, usedVars) {
|
|
195
162
|
const filtered = {};
|
|
196
163
|
for (const [key, value] of Object.entries(variables)) {
|
|
@@ -200,9 +167,6 @@ function filterVariableValues(variables, usedVars) {
|
|
|
200
167
|
}
|
|
201
168
|
return filtered;
|
|
202
169
|
}
|
|
203
|
-
/**
|
|
204
|
-
* GraphQLクエリから未使用の変数を削除
|
|
205
|
-
*/
|
|
206
170
|
function removeUnusedVariables(graphql) {
|
|
207
171
|
if (!graphql.variables || Object.keys(graphql.variables).length === 0) {
|
|
208
172
|
return graphql;
|
|
@@ -216,18 +180,8 @@ function removeUnusedVariables(graphql) {
|
|
|
216
180
|
};
|
|
217
181
|
}
|
|
218
182
|
|
|
219
|
-
/**
|
|
220
|
-
* GraphqlServiceを拡張して、subscription分割機能を追加
|
|
221
|
-
*
|
|
222
|
-
* GraphQL/Hasuraの制限「1つのsubscriptionには1つのトップレベルフィールドのみ」を回避し、
|
|
223
|
-
* 複数のフィールドを含むsubscriptionを自動的に分割して並列実行します。
|
|
224
|
-
*/
|
|
225
183
|
class GraphqlEnhancedService extends GraphqlService {
|
|
226
184
|
splitter = inject(AstSubscriptionSplitterService);
|
|
227
|
-
/**
|
|
228
|
-
* subscriptionクエリを実行
|
|
229
|
-
* デフォルトでsubscriptionは自動的に分割される
|
|
230
|
-
*/
|
|
231
185
|
subscribe(graphql) {
|
|
232
186
|
const shouldSplit = graphql.enableSplitting !== false && isSubscription(graphql.query);
|
|
233
187
|
if (!shouldSplit) {
|
|
@@ -236,9 +190,6 @@ class GraphqlEnhancedService extends GraphqlService {
|
|
|
236
190
|
}
|
|
237
191
|
return this.subscribeSplit(graphql);
|
|
238
192
|
}
|
|
239
|
-
/**
|
|
240
|
-
* subscriptionクエリを分割して並列実行し、結果を結合
|
|
241
|
-
*/
|
|
242
193
|
subscribeSplit(graphql) {
|
|
243
194
|
const splitQueries = this.splitter.splitSubscription(graphql.query);
|
|
244
195
|
if (splitQueries.length <= 1) {
|
|
@@ -277,22 +228,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
|
|
|
277
228
|
args: [{ providedIn: 'root' }]
|
|
278
229
|
}] });
|
|
279
230
|
|
|
280
|
-
/**
|
|
281
|
-
* GraphqlServiceをGraphqlEnhancedServiceで置き換えるプロバイダー
|
|
282
|
-
*
|
|
283
|
-
* 使用方法:
|
|
284
|
-
* ```typescript
|
|
285
|
-
* export default <Routes>[
|
|
286
|
-
* {
|
|
287
|
-
* path: '',
|
|
288
|
-
* component: YourComponent,
|
|
289
|
-
* providers: [
|
|
290
|
-
* provideGraphqlEnhancedLocally()
|
|
291
|
-
* ]
|
|
292
|
-
* }
|
|
293
|
-
* ];
|
|
294
|
-
* ```
|
|
295
|
-
*/
|
|
296
231
|
function provideGraphqlEnhancedLocally() {
|
|
297
232
|
return [
|
|
298
233
|
{
|
|
@@ -301,10 +236,6 @@ function provideGraphqlEnhancedLocally() {
|
|
|
301
236
|
}
|
|
302
237
|
];
|
|
303
238
|
}
|
|
304
|
-
/**
|
|
305
|
-
* グローバルにGraphqlEnhancedServiceを提供
|
|
306
|
-
* app.config.tsで使用
|
|
307
|
-
*/
|
|
308
239
|
function provideGraphqlEnhancedGlobally() {
|
|
309
240
|
return provideGraphqlEnhancedLocally();
|
|
310
241
|
}
|
|
@@ -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 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
|
+
{"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 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 context: { queryDeduplication: false },\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@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 \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 \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 \n const usedVariables = this.extractUsedVariables(field);\n \n \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 private extractUsedVariables(field: FieldNode): Set<string> {\n const usedVars = new Set<string>();\n \n \n visit(field, {\n Variable(node) {\n usedVars.add(node.name.value);\n }\n });\n \n return usedVars;\n }\n \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 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\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\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\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\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@Injectable({ providedIn: 'root' })\nexport class GraphqlEnhancedService extends GraphqlService {\n private readonly splitter = inject(AstSubscriptionSplitterService);\n\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 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\nexport function provideGraphqlEnhancedLocally(): Provider[] {\n return [\n {\n provide: GraphqlService,\n useClass: GraphqlEnhancedService\n }\n ];\n}\n\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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"}
|