@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.
Files changed (61) hide show
  1. package/fesm2022/xxmachina-common-_shared-ansi.mjs +0 -16
  2. package/fesm2022/xxmachina-common-_shared-ansi.mjs.map +1 -1
  3. package/fesm2022/xxmachina-common-_shared-meta-redis.mjs +0 -5
  4. package/fesm2022/xxmachina-common-_shared-meta-redis.mjs.map +1 -1
  5. package/fesm2022/xxmachina-common-_shared-meta.mjs +2 -3
  6. package/fesm2022/xxmachina-common-_shared-meta.mjs.map +1 -1
  7. package/fesm2022/xxmachina-common-auth-firebase.mjs +0 -4
  8. package/fesm2022/xxmachina-common-auth-firebase.mjs.map +1 -1
  9. package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs +0 -15
  10. package/fesm2022/xxmachina-common-domain-builder-screen-item.mjs.map +1 -1
  11. package/fesm2022/xxmachina-common-domain-builder.mjs +1 -25
  12. package/fesm2022/xxmachina-common-domain-builder.mjs.map +1 -1
  13. package/fesm2022/xxmachina-common-domain-models.mjs +1 -19
  14. package/fesm2022/xxmachina-common-domain-models.mjs.map +1 -1
  15. package/fesm2022/xxmachina-common-infra-external-quick-js.mjs +0 -3
  16. package/fesm2022/xxmachina-common-infra-external-quick-js.mjs.map +1 -1
  17. package/fesm2022/xxmachina-common-infra-query-hasura.mjs +1 -0
  18. package/fesm2022/xxmachina-common-infra-query-hasura.mjs.map +1 -1
  19. package/fesm2022/xxmachina-common-infra.mjs +0 -19
  20. package/fesm2022/xxmachina-common-infra.mjs.map +1 -1
  21. package/fesm2022/xxmachina-common-invoice-domain-models.mjs +10 -1
  22. package/fesm2022/xxmachina-common-invoice-domain-models.mjs.map +1 -1
  23. package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs +0 -12
  24. package/fesm2022/xxmachina-common-invoice-usecase-invoice.mjs.map +1 -1
  25. package/fesm2022/xxmachina-common-invoice-usecase-order.mjs +0 -2
  26. package/fesm2022/xxmachina-common-invoice-usecase-order.mjs.map +1 -1
  27. package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs +0 -2
  28. package/fesm2022/xxmachina-common-invoice-usecase-partner.mjs.map +1 -1
  29. package/fesm2022/xxmachina-common-services-device-profile.mjs +26 -0
  30. package/fesm2022/xxmachina-common-services-device-profile.mjs.map +1 -0
  31. package/fesm2022/xxmachina-common-services-graphql.mjs +1 -70
  32. package/fesm2022/xxmachina-common-services-graphql.mjs.map +1 -1
  33. package/fesm2022/xxmachina-common-services-speech.mjs +0 -17
  34. package/fesm2022/xxmachina-common-services-speech.mjs.map +1 -1
  35. package/fesm2022/xxmachina-common-usecase-database.mjs +0 -3
  36. package/fesm2022/xxmachina-common-usecase-database.mjs.map +1 -1
  37. package/fesm2022/xxmachina-common-usecase-graphql.mjs +0 -1
  38. package/fesm2022/xxmachina-common-usecase-graphql.mjs.map +1 -1
  39. package/fesm2022/xxmachina-common-usecase.mjs +0 -1
  40. package/fesm2022/xxmachina-common-usecase.mjs.map +1 -1
  41. package/fesm2022/xxmachina-common-utils.mjs +0 -8
  42. package/fesm2022/xxmachina-common-utils.mjs.map +1 -1
  43. package/package.json +15 -11
  44. package/types/xxmachina-common-_shared-ansi.d.ts +0 -15
  45. package/types/xxmachina-common-_shared-ansi.d.ts.map +1 -1
  46. package/types/xxmachina-common-auth-firebase.d.ts +0 -4
  47. package/types/xxmachina-common-auth-firebase.d.ts.map +1 -1
  48. package/types/xxmachina-common-domain-builder-screen-item.d.ts +0 -15
  49. package/types/xxmachina-common-domain-builder-screen-item.d.ts.map +1 -1
  50. package/types/xxmachina-common-domain-builder.d.ts +0 -21
  51. package/types/xxmachina-common-domain-builder.d.ts.map +1 -1
  52. package/types/xxmachina-common-domain-models-presenter.d.ts +0 -46
  53. package/types/xxmachina-common-domain-models-presenter.d.ts.map +1 -1
  54. package/types/xxmachina-common-domain-models.d.ts +0 -59
  55. package/types/xxmachina-common-domain-models.d.ts.map +1 -1
  56. package/types/xxmachina-common-invoice-domain-models.d.ts +6 -1
  57. package/types/xxmachina-common-invoice-domain-models.d.ts.map +1 -1
  58. package/types/xxmachina-common-services-device-profile.d.ts +13 -0
  59. package/types/xxmachina-common-services-device-profile.d.ts.map +1 -0
  60. package/types/xxmachina-common-services-graphql.d.ts +0 -40
  61. 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 // Delete existing records to avoid duplicates\n console.log('[OrderUsecase] Deleting existing records in Hasura...');\n await this.hasuraRepo.deleteAll();\n \n // Save all orders\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;;;;"}
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 // Delete existing records to avoid duplicates\n console.log('[PartnerUsecase] Deleting existing records in Hasura...');\n await this.hasuraRepo.deleteAll();\n \n // Save all partners\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;;;;"}
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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"}