@rubydogjp/openkk-client-domain 26.1.12 → 26.2.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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/dist/archive/fiscal-period-archive-zip.d.ts +12 -0
  3. package/dist/archive/fiscal-period-archive-zip.d.ts.map +1 -0
  4. package/dist/archive/fiscal-period-archive-zip.js +299 -0
  5. package/dist/archive/fiscal-period-archive-zip.js.map +1 -0
  6. package/dist/archive/fiscal-period-archive.d.ts +3 -2
  7. package/dist/archive/fiscal-period-archive.d.ts.map +1 -1
  8. package/dist/archive/fiscal-period-archive.js +8 -180
  9. package/dist/archive/fiscal-period-archive.js.map +1 -1
  10. package/dist/assist/fixed-asset-data.d.ts +20 -20
  11. package/dist/assist/fixed-asset-data.d.ts.map +1 -1
  12. package/dist/assist/fixed-asset-depreciation.d.ts.map +1 -1
  13. package/dist/assist/fixed-asset-depreciation.js +2 -7
  14. package/dist/assist/fixed-asset-depreciation.js.map +1 -1
  15. package/dist/assist/fixed-asset-draft.d.ts +17 -0
  16. package/dist/assist/fixed-asset-draft.d.ts.map +1 -0
  17. package/dist/assist/fixed-asset-draft.js +105 -0
  18. package/dist/assist/fixed-asset-draft.js.map +1 -0
  19. package/dist/assist/opening-carryover.d.ts +10 -14
  20. package/dist/assist/opening-carryover.d.ts.map +1 -1
  21. package/dist/entries/book-account.d.ts +13 -0
  22. package/dist/entries/book-account.d.ts.map +1 -0
  23. package/dist/entries/book-account.js +11 -0
  24. package/dist/entries/book-account.js.map +1 -0
  25. package/dist/entries/category-resolution.d.ts +5 -0
  26. package/dist/entries/category-resolution.d.ts.map +1 -0
  27. package/dist/entries/category-resolution.js +11 -0
  28. package/dist/entries/category-resolution.js.map +1 -0
  29. package/dist/entries/default-master-data.d.ts.map +1 -1
  30. package/dist/entries/default-master-data.js +1 -4
  31. package/dist/entries/default-master-data.js.map +1 -1
  32. package/dist/entries/entries-types.d.ts +18 -10
  33. package/dist/entries/entries-types.d.ts.map +1 -1
  34. package/dist/entries/entry-limits.d.ts +9 -0
  35. package/dist/entries/entry-limits.d.ts.map +1 -0
  36. package/dist/entries/entry-limits.js +41 -0
  37. package/dist/entries/entry-limits.js.map +1 -0
  38. package/dist/entries/entry-record.d.ts +26 -26
  39. package/dist/entries/entry-record.d.ts.map +1 -1
  40. package/dist/entries/entry-record.js +96 -71
  41. package/dist/entries/entry-record.js.map +1 -1
  42. package/dist/entries/generated-master-data.d.ts +2 -2
  43. package/dist/entries/generated-master-data.d.ts.map +1 -1
  44. package/dist/entries/import-export.d.ts +3 -1
  45. package/dist/entries/import-export.d.ts.map +1 -1
  46. package/dist/entries/import-export.js +365 -123
  47. package/dist/entries/import-export.js.map +1 -1
  48. package/dist/entries/quick-guide-data.d.ts +20 -18
  49. package/dist/entries/quick-guide-data.d.ts.map +1 -1
  50. package/dist/entries/quick-guide-data.js +191 -21
  51. package/dist/entries/quick-guide-data.js.map +1 -1
  52. package/dist/entries/virtual-entries.d.ts +21 -23
  53. package/dist/entries/virtual-entries.d.ts.map +1 -1
  54. package/dist/entries/virtual-entries.js +144 -246
  55. package/dist/entries/virtual-entries.js.map +1 -1
  56. package/dist/index.d.ts +6 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +6 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/print/entry-metadata.d.ts +3 -0
  61. package/dist/print/entry-metadata.d.ts.map +1 -0
  62. package/dist/print/entry-metadata.js +14 -0
  63. package/dist/print/entry-metadata.js.map +1 -0
  64. package/dist/print/examples/general-ledger-example.d.ts +1 -1
  65. package/dist/print/examples/general-ledger-example.d.ts.map +1 -1
  66. package/dist/print/examples/general-ledger-example.js +4 -4
  67. package/dist/print/examples/general-ledger-example.js.map +1 -1
  68. package/dist/print/examples/journal-example.d.ts.map +1 -1
  69. package/dist/print/examples/journal-example.js +158 -12
  70. package/dist/print/examples/journal-example.js.map +1 -1
  71. package/dist/print/financial-statements-print.d.ts +1 -1
  72. package/dist/print/financial-statements-print.d.ts.map +1 -1
  73. package/dist/print/financial-statements-print.js +39 -39
  74. package/dist/print/financial-statements-print.js.map +1 -1
  75. package/dist/print/fs-data.d.ts +2 -6
  76. package/dist/print/fs-data.d.ts.map +1 -1
  77. package/dist/print/fs-data.js +106 -59
  78. package/dist/print/fs-data.js.map +1 -1
  79. package/dist/print/general-ledger-print.d.ts.map +1 -1
  80. package/dist/print/general-ledger-print.js +153 -61
  81. package/dist/print/general-ledger-print.js.map +1 -1
  82. package/dist/print/journal-print.d.ts.map +1 -1
  83. package/dist/print/journal-print.js +63 -22
  84. package/dist/print/journal-print.js.map +1 -1
  85. package/dist/shared/app-error.d.ts +6 -8
  86. package/dist/shared/app-error.d.ts.map +1 -1
  87. package/dist/shared/app-error.js +28 -73
  88. package/dist/shared/app-error.js.map +1 -1
  89. package/dist/shared/bootstrap-data.d.ts +0 -10
  90. package/dist/shared/bootstrap-data.d.ts.map +1 -1
  91. package/dist/shared/bootstrap-data.js +1 -144
  92. package/dist/shared/bootstrap-data.js.map +1 -1
  93. package/dist/shared/brand-config.d.ts +3 -3
  94. package/dist/shared/brand-config.d.ts.map +1 -1
  95. package/dist/shared/models.d.ts +28 -33
  96. package/dist/shared/models.d.ts.map +1 -1
  97. package/dist/shared/openkk-config.d.ts +22 -22
  98. package/dist/shared/openkk-config.d.ts.map +1 -1
  99. package/dist/shared/openkk-config.js +18 -5
  100. package/dist/shared/openkk-config.js.map +1 -1
  101. package/dist/shared/parse-utils.d.ts +6 -1
  102. package/dist/shared/parse-utils.d.ts.map +1 -1
  103. package/dist/shared/parse-utils.js +13 -1
  104. package/dist/shared/parse-utils.js.map +1 -1
  105. package/dist/shared/period-lock.d.ts +1 -3
  106. package/dist/shared/period-lock.d.ts.map +1 -1
  107. package/dist/shared/period-lock.js +3 -13
  108. package/dist/shared/period-lock.js.map +1 -1
  109. package/dist/shared/text-limits.d.ts +3 -0
  110. package/dist/shared/text-limits.d.ts.map +1 -0
  111. package/dist/shared/text-limits.js +7 -0
  112. package/dist/shared/text-limits.js.map +1 -0
  113. package/dist/shared/user.d.ts +2 -3
  114. package/dist/shared/user.d.ts.map +1 -1
  115. package/dist/shared/user.js +1 -1
  116. package/dist/shared/user.js.map +1 -1
  117. package/dist/steps/next-fiscal-period.d.ts +3 -26
  118. package/dist/steps/next-fiscal-period.d.ts.map +1 -1
  119. package/dist/steps/next-fiscal-period.js +37 -83
  120. package/dist/steps/next-fiscal-period.js.map +1 -1
  121. package/dist/steps/period-check.d.ts +9 -0
  122. package/dist/steps/period-check.d.ts.map +1 -1
  123. package/dist/steps/period-check.js +6 -0
  124. package/dist/steps/period-check.js.map +1 -1
  125. package/dist/steps/step-derivation.d.ts +1 -1
  126. package/dist/steps/step-derivation.d.ts.map +1 -1
  127. package/dist/steps/step-derivation.js +1 -1
  128. package/dist/steps/step-derivation.js.map +1 -1
  129. package/dist/steps/step-trend.d.ts +2 -4
  130. package/dist/steps/step-trend.d.ts.map +1 -1
  131. package/dist/steps/step-trend.js +11 -7
  132. package/dist/steps/step-trend.js.map +1 -1
  133. package/dist/steps/summary.d.ts +2 -16
  134. package/dist/steps/summary.d.ts.map +1 -1
  135. package/dist/steps/summary.js +4 -43
  136. package/dist/steps/summary.js.map +1 -1
  137. package/dist/steps/year-month.d.ts +2 -3
  138. package/dist/steps/year-month.d.ts.map +1 -1
  139. package/dist/steps/year-month.js +4 -1
  140. package/dist/steps/year-month.js.map +1 -1
  141. package/package.json +2 -2
  142. package/dist/entries/example-entries.d.ts +0 -7
  143. package/dist/entries/example-entries.d.ts.map +0 -1
  144. package/dist/entries/example-entries.js +0 -97
  145. package/dist/entries/example-entries.js.map +0 -1
@@ -1,22 +1,21 @@
1
- export type FixedAssetPreviewItem = {
1
+ export type FixedAssetStatus = "償却中" | "完了" | "売却済" | "廃棄済";
2
+ export type FixedAsset = {
2
3
  id: string;
3
- fiscalPeriodId?: string;
4
+ fiscalPeriodId: string;
4
5
  name: string;
5
- account: string;
6
- accountId?: string;
7
- period: string;
8
- remaining: string;
9
- progress: number;
10
- current: string;
11
- purchase: string;
12
- status: string;
13
- depreciationAmount?: string;
14
- acquisitionDate?: string;
15
- acquisitionCost?: number;
16
- usefulLife?: number;
17
- businessRate?: number;
18
- disposalDate?: string;
19
- disposalPrice?: string;
6
+ accountName: string;
7
+ bookAccountId: string;
8
+ status: FixedAssetStatus;
9
+ acquisitionDate: string;
10
+ acquisitionCost: number;
11
+ usefulLife: number;
12
+ businessRate: number;
13
+ disposalDate: string | null;
14
+ disposalPrice: number | null;
15
+ depreciationStartLabel: string;
16
+ remainingDepreciationLabel: string;
17
+ depreciationProgress: number;
18
+ currentBookValue: number;
20
19
  };
21
20
  export type FixedAssetDraft = {
22
21
  name: string;
@@ -25,8 +24,9 @@ export type FixedAssetDraft = {
25
24
  acquisitionCost: string;
26
25
  usefulLife: number;
27
26
  businessRatePercent: number;
28
- status: string;
29
- disposalDate?: string;
30
- disposalPrice?: string;
27
+ businessRate: number | null;
28
+ status: FixedAssetStatus;
29
+ disposalDate: string | null;
30
+ disposalPrice: string | null;
31
31
  };
32
32
  //# sourceMappingURL=fixed-asset-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixed-asset-data.d.ts","sourceRoot":"","sources":["../../src/assist/fixed-asset-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"fixed-asset-data.d.ts","sourceRoot":"","sources":["../../src/assist/fixed-asset-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fixed-asset-depreciation.d.ts","sourceRoot":"","sources":["../../src/assist/fixed-asset-depreciation.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,6BAA6B,GAAG;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAWF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,IAAI,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAkBR;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,6BAA6B,GACnC,oBAAoB,CAgDtB"}
1
+ {"version":3,"file":"fixed-asset-depreciation.d.ts","sourceRoot":"","sources":["../../src/assist/fixed-asset-depreciation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,6BAA6B,GAAG;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAWF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,IAAI,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAC7B,MAAM,CAiBR;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,6BAA6B,GACnC,oBAAoB,CAmDtB"}
@@ -1,6 +1,3 @@
1
- // 定額法(straight-line)の減価償却計算。
2
- // 固定資産の「真実」は取得価額・取得日・耐用年数で、簿価・進捗・当期償却費などの
3
- // 表示値はすべてここから導出する(保存された preview 値には依存しない)。
4
1
  import { parseIsoLocalDate } from "../shared/parse-utils.js";
5
2
  function monthsInService(start, asOf) {
6
3
  const acquisitionIndex = start.year * 12 + (start.month - 1);
@@ -13,7 +10,6 @@ export function computePeriodDepreciation(input) {
13
10
  acquisitionCost: input.acquisitionCost,
14
11
  usefulLife: input.usefulLife,
15
12
  };
16
- // 期首より前(前月末まで)の累計償却を控除して、当期に属する月数分のみを取り出す。
17
13
  const dayBeforePeriod = new Date(input.periodStartDate);
18
14
  dayBeforePeriod.setDate(dayBeforePeriod.getDate() - 1);
19
15
  const before = computeStraightLineDepreciation({
@@ -36,7 +32,6 @@ export function computeStraightLineDepreciation(input) {
36
32
  day: startDate.getDate(),
37
33
  };
38
34
  const cost = Math.max(0, Math.round(input.acquisitionCost));
39
- // 耐用年数は最低 1 年。月数上限 1200(=100 年)で異常値を防ぐ。
40
35
  const usefulLifeYears = Math.max(1, Math.floor(input.usefulLife) || 1);
41
36
  const totalMonths = Math.min(1200, usefulLifeYears * 12);
42
37
  const rawElapsed = start == null ? 0 : monthsInService(start, input.asOf);
@@ -45,10 +40,10 @@ export function computeStraightLineDepreciation(input) {
45
40
  : 0;
46
41
  const progress = totalMonths === 0 ? 1 : elapsedMonths / totalMonths;
47
42
  const depreciableAmount = Math.max(0, cost - (cost > 0 ? 1 : 0));
48
- const accumulated = Math.min(depreciableAmount, Math.floor(depreciableAmount * progress));
43
+ const accumulated = Math.min(depreciableAmount, Number((BigInt(depreciableAmount) * BigInt(elapsedMonths)) / BigInt(totalMonths)));
49
44
  const currentBookValue = Math.max(cost > 0 ? 1 : 0, cost - accumulated);
50
45
  const annualWindowEnd = Math.min(totalMonths, elapsedMonths + 12);
51
- const annualDepreciation = Math.min(depreciableAmount - accumulated, Math.floor((depreciableAmount * annualWindowEnd) / totalMonths) -
46
+ const annualDepreciation = Math.min(depreciableAmount - accumulated, Number((BigInt(depreciableAmount) * BigInt(annualWindowEnd)) / BigInt(totalMonths)) -
52
47
  accumulated);
53
48
  const remainingMonths = totalMonths - elapsedMonths;
54
49
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"fixed-asset-depreciation.js","sourceRoot":"","sources":["../../src/assist/fixed-asset-depreciation.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,0CAA0C;AAC1C,2CAA2C;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAqB7D,SAAS,eAAe,CACtB,KAAsC,EACtC,IAAU;IAEV,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC5D,OAAO,SAAS,GAAG,gBAAgB,GAAG,CAAC,CAAC;AAC1C,CAAC;AAUD,MAAM,UAAU,yBAAyB,CACvC,KAA8B;IAE9B,MAAM,IAAI,GAAG;QACX,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;IACF,2CAA2C;IAC3C,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACxD,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC7C,GAAG,IAAI;QACP,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC,WAAW,CAAC;IACf,MAAM,OAAO,GAAG,+BAA+B,CAAC;QAC9C,GAAG,IAAI;QACP,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAC,WAAW,CAAC;IACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAoC;IAEpC,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,KAAK,GACT,SAAS,IAAI,IAAI;QACf,CAAC,CAAC,IAAI;QACN,CAAC,CAAC;YACE,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE;YAC7B,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC/B,GAAG,EAAE,SAAS,CAAC,OAAO,EAAE;SACzB,CAAC;IACR,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,GAAG,EAAE,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,QAAQ,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,WAAW,CAAC;IAErE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,iBAAiB,EACjB,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CACzC,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;IAExE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;IAClE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CACjC,iBAAiB,GAAG,WAAW,EAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,eAAe,CAAC,GAAG,WAAW,CAAC;QAC7D,WAAW,CACd,CAAC;IACF,MAAM,eAAe,GAAG,WAAW,GAAG,aAAa,CAAC;IAEpD,OAAO;QACL,QAAQ;QACR,gBAAgB;QAChB,WAAW;QACX,kBAAkB;QAClB,aAAa;QACb,WAAW;QACX,eAAe;QACf,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI;QAClE,cAAc,EACZ,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,eAAe,IAAI,CAAC,CAAC,CAAC,MAAM;KAC1D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fixed-asset-depreciation.js","sourceRoot":"","sources":["../../src/assist/fixed-asset-depreciation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type FixedAsset, type FixedAssetDraft } from "./fixed-asset-data.js";
2
+ export declare const MAX_FIXED_ASSET_USEFUL_LIFE_YEARS = 100;
3
+ export declare function fixedAssetToDraft(asset: FixedAsset): FixedAssetDraft;
4
+ export declare function capFixedAssetPreviewDate(today: Date, fiscalPeriodEndDate: string | null): Date;
5
+ export declare function resolveFixedAssetDraftPreviewDate(periodAsOf: Date, status: FixedAssetDraft["status"], disposalDate: string | null, retirementAsOf: Date | null): Date;
6
+ export declare function computeFixedAssetDraftPeriodDepreciation(input: {
7
+ draft: FixedAssetDraft;
8
+ periodStartDate: string;
9
+ asOf: Date;
10
+ }): number;
11
+ export declare function validateFixedAssetDraft(input: {
12
+ draft: FixedAssetDraft;
13
+ periodStartDate: string;
14
+ periodEndDate: string;
15
+ currentBookValue: number;
16
+ }): string | null;
17
+ //# sourceMappingURL=fixed-asset-draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-asset-draft.d.ts","sourceRoot":"","sources":["../../src/assist/fixed-asset-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAgBpE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,IAAI,EACX,mBAAmB,EAAE,MAAM,GAAG,IAAI,GACjC,IAAI,CAON;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,cAAc,EAAE,IAAI,GAAG,IAAI,GAC1B,IAAI,CAKN;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC9D,KAAK,EAAE,eAAe,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,MAAM,CAUT;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,KAAK,EAAE,eAAe,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,GAAG,IAAI,CAmEhB"}
@@ -0,0 +1,105 @@
1
+ import { computePeriodDepreciation } from "./fixed-asset-depreciation.js";
2
+ import { parseAmount, parseIsoLocalDate } from "../shared/parse-utils.js";
3
+ export const MAX_FIXED_ASSET_USEFUL_LIFE_YEARS = 100;
4
+ export function fixedAssetToDraft(asset) {
5
+ return {
6
+ name: asset.name,
7
+ account: asset.accountName,
8
+ acquisitionDate: asset.acquisitionDate,
9
+ acquisitionCost: asset.acquisitionCost.toLocaleString("ja-JP"),
10
+ usefulLife: asset.usefulLife,
11
+ businessRatePercent: asset.businessRate * 100,
12
+ businessRate: asset.businessRate,
13
+ status: asset.status,
14
+ disposalDate: asset.disposalDate,
15
+ disposalPrice: asset.disposalPrice == null
16
+ ? null
17
+ : asset.disposalPrice.toLocaleString("ja-JP"),
18
+ };
19
+ }
20
+ export function capFixedAssetPreviewDate(today, fiscalPeriodEndDate) {
21
+ const periodEnd = fiscalPeriodEndDate == null
22
+ ? null
23
+ : parseIsoLocalDate(fiscalPeriodEndDate);
24
+ if (periodEnd == null || today.getTime() <= periodEnd.getTime())
25
+ return today;
26
+ return periodEnd;
27
+ }
28
+ export function resolveFixedAssetDraftPreviewDate(periodAsOf, status, disposalDate, retirementAsOf) {
29
+ if (status === "完了")
30
+ return retirementAsOf ?? periodAsOf;
31
+ const requiresDisposal = status === "売却済" || status === "廃棄済";
32
+ if (!requiresDisposal || disposalDate == null)
33
+ return periodAsOf;
34
+ return parseIsoLocalDate(disposalDate) ?? periodAsOf;
35
+ }
36
+ export function computeFixedAssetDraftPeriodDepreciation(input) {
37
+ const periodStartDate = parseIsoLocalDate(input.periodStartDate);
38
+ if (periodStartDate == null)
39
+ return 0;
40
+ return computePeriodDepreciation({
41
+ acquisitionDate: input.draft.acquisitionDate,
42
+ acquisitionCost: parseAmount(input.draft.acquisitionCost),
43
+ usefulLife: input.draft.usefulLife,
44
+ periodStartDate,
45
+ asOf: input.asOf,
46
+ });
47
+ }
48
+ export function validateFixedAssetDraft(input) {
49
+ const { draft, periodStartDate, periodEndDate } = input;
50
+ if (draft.name.trim() === "" || draft.account.trim() === "") {
51
+ return "名称と勘定科目を入力してください";
52
+ }
53
+ if (parseIsoLocalDate(draft.acquisitionDate) == null) {
54
+ return "正しい取得日を入力してください";
55
+ }
56
+ if (parseIsoLocalDate(periodEndDate) != null &&
57
+ draft.acquisitionDate > periodEndDate) {
58
+ return "取得日は会計期間の終了日以前にしてください";
59
+ }
60
+ const acquisitionCost = parseAmount(draft.acquisitionCost);
61
+ if (!Number.isSafeInteger(acquisitionCost) || acquisitionCost <= 0) {
62
+ return "取得価額は安全に計算できる正の整数で入力してください";
63
+ }
64
+ if (!Number.isSafeInteger(draft.usefulLife) ||
65
+ draft.usefulLife < 1 ||
66
+ draft.usefulLife > MAX_FIXED_ASSET_USEFUL_LIFE_YEARS) {
67
+ return `耐用年数は1〜${MAX_FIXED_ASSET_USEFUL_LIFE_YEARS}年で入力してください`;
68
+ }
69
+ if (!Number.isFinite(draft.businessRatePercent) ||
70
+ draft.businessRatePercent < 0 ||
71
+ draft.businessRatePercent > 100) {
72
+ return "事業割合は0〜100%で入力してください";
73
+ }
74
+ const needsDisposal = draft.status === "売却済" || draft.status === "廃棄済";
75
+ if (needsDisposal) {
76
+ const disposalDate = draft.disposalDate;
77
+ if (disposalDate == null || parseIsoLocalDate(disposalDate) == null) {
78
+ return "正しい処分日を入力してください";
79
+ }
80
+ if (disposalDate < draft.acquisitionDate) {
81
+ return "処分日は取得日以降にしてください";
82
+ }
83
+ if ((parseIsoLocalDate(periodStartDate) != null &&
84
+ disposalDate < periodStartDate) ||
85
+ (parseIsoLocalDate(periodEndDate) != null && disposalDate > periodEndDate)) {
86
+ return "処分日は会計期間内にしてください";
87
+ }
88
+ }
89
+ if (draft.status === "売却済") {
90
+ const disposalPriceText = draft.disposalPrice;
91
+ if (disposalPriceText == null || disposalPriceText.trim() === "") {
92
+ return "売却額は安全に計算できる0以上の整数で入力してください";
93
+ }
94
+ const disposalPrice = parseAmount(disposalPriceText);
95
+ if (!Number.isSafeInteger(disposalPrice) ||
96
+ disposalPrice < 0) {
97
+ return "売却額は安全に計算できる0以上の整数で入力してください";
98
+ }
99
+ }
100
+ if (draft.status === "完了" && input.currentBookValue > 1) {
101
+ return "期末時点で償却が完了していない固定資産は完了にできません";
102
+ }
103
+ return null;
104
+ }
105
+ //# sourceMappingURL=fixed-asset-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-asset-draft.js","sourceRoot":"","sources":["../../src/assist/fixed-asset-draft.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,17 @@
1
- import type { EntryAccountVisualType } from "../entries/entries-types.js";
1
+ import type { EntryLine } from "../entries/entry-record.js";
2
2
  export type OpeningCarryoverRecord = {
3
3
  id: string;
4
4
  fiscalPeriodId: string;
5
5
  date: string;
6
6
  description: string;
7
- debit: string;
8
- debitType: EntryAccountVisualType;
9
- debitAmount: string;
10
- credit: string;
11
- creditType: EntryAccountVisualType;
12
- creditAmount: string;
13
- partner: string;
14
- taxCategory: string;
15
- businessCategory: string;
16
- businessRate: string;
17
- debitBookAccountId?: string;
18
- creditBookAccountId?: string;
7
+ businessRate: number;
8
+ lines: EntryLine[];
9
+ };
10
+ export type OpeningCarryoverDraft = {
11
+ date: string;
12
+ description: string;
13
+ businessRateInput: string;
14
+ businessRate: number | null;
15
+ lines: EntryLine[];
19
16
  };
20
- export type OpeningCarryoverDraft = Omit<OpeningCarryoverRecord, "id" | "fiscalPeriodId">;
21
17
  //# sourceMappingURL=opening-carryover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opening-carryover.d.ts","sourceRoot":"","sources":["../../src/assist/opening-carryover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,sBAAsB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,sBAAsB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,sBAAsB,EACtB,IAAI,GAAG,gBAAgB,CACxB,CAAC"}
1
+ {"version":3,"file":"opening-carryover.d.ts","sourceRoot":"","sources":["../../src/assist/opening-carryover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type BookAccountType = "asset" | "liability" | "equity" | "revenue" | "cost_of_sales" | "expense";
2
+ export type BookAccount = {
3
+ id: string;
4
+ name: string;
5
+ accountType: BookAccountType;
6
+ };
7
+ export declare function resolveBookAccountId(input: {
8
+ explicitId: string | null;
9
+ accountName: string;
10
+ accountType: BookAccountType | null;
11
+ accounts: ReadonlyArray<BookAccount>;
12
+ }): string | null;
13
+ //# sourceMappingURL=book-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book-account.d.ts","sourceRoot":"","sources":["../../src/entries/book-account.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACzB,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;AAE7E,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,eAAe,CAAC;CAC9B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACtC,GAAG,MAAM,GAAG,IAAI,CAYhB"}
@@ -0,0 +1,11 @@
1
+ export function resolveBookAccountId(input) {
2
+ const id = input.explicitId?.trim() ?? "";
3
+ if (id !== "") {
4
+ return input.accounts.find((account) => account.id === id)?.id ?? null;
5
+ }
6
+ const name = input.accountName.trim();
7
+ const matches = input.accounts.filter((account) => account.name === name &&
8
+ (input.accountType == null || account.accountType === input.accountType));
9
+ return matches.length === 1 ? matches[0].id : null;
10
+ }
11
+ //# sourceMappingURL=book-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book-account.js","sourceRoot":"","sources":["../../src/entries/book-account.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,oBAAoB,CAAC,KAKpC;IACC,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CACnC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,IAAI,KAAK,IAAI;QACrB,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,CAAC,CAC3E,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function resolveCategoryId(explicitId: string | null, name: string, categories: ReadonlyArray<{
2
+ id: string;
3
+ name: string;
4
+ }>, blankFallbackId: string): string;
5
+ //# sourceMappingURL=category-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-resolution.d.ts","sourceRoot":"","sources":["../../src/entries/category-resolution.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACvD,eAAe,EAAE,MAAM,GACtB,MAAM,CASR"}
@@ -0,0 +1,11 @@
1
+ export function resolveCategoryId(explicitId, name, categories, blankFallbackId) {
2
+ if (explicitId !== null)
3
+ return explicitId;
4
+ const value = name.trim();
5
+ if (value === "")
6
+ return blankFallbackId;
7
+ return (categories.find((category) => category.id === value)?.id ??
8
+ categories.find((category) => category.name === value)?.id ??
9
+ value);
10
+ }
11
+ //# sourceMappingURL=category-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category-resolution.js","sourceRoot":"","sources":["../../src/entries/category-resolution.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAC/B,UAAyB,EACzB,IAAY,EACZ,UAAuD,EACvD,eAAuB;IAEvB,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,eAAe,CAAC;IACzC,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE;QACxD,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,EAAE;QAC1D,KAAK,CACN,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"default-master-data.d.ts","sourceRoot":"","sources":["../../src/entries/default-master-data.ts"],"names":[],"mappings":"AAGA,cAAc,4BAA4B,CAAC;AAE3C,wBAAgB,YAAY,CAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC1B,MAAM,EAAE,CAUV"}
1
+ {"version":3,"file":"default-master-data.d.ts","sourceRoot":"","sources":["../../src/entries/default-master-data.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAE3C,wBAAgB,YAAY,CAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EACzB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAC1B,MAAM,EAAE,CAUV"}
@@ -1,12 +1,9 @@
1
- // マスターデータ本体 (型・デフォルト勘定科目/税区分/事業区分) は
2
- // generated-master-data.ts に生成される。canonical な単一ソースは openkk 内の
3
- // resources/gen/bookkeeping_master_data.json。再生成は `npm run gen-master-data`。
4
1
  export * from "./generated-master-data.js";
5
2
  export function mergeOptions(primary, secondary) {
6
3
  const out = [];
7
4
  const seen = new Set();
8
5
  for (const raw of [...primary, ...secondary]) {
9
- const trimmed = (raw ?? "").trim();
6
+ const trimmed = raw.trim();
10
7
  if (trimmed.length === 0 || seen.has(trimmed))
11
8
  continue;
12
9
  seen.add(trimmed);
@@ -1 +1 @@
1
- {"version":3,"file":"default-master-data.js","sourceRoot":"","sources":["../../src/entries/default-master-data.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,8DAA8D;AAC9D,6EAA6E;AAC7E,cAAc,4BAA4B,CAAC;AAE3C,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,SAA2B;IAE3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QACxD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"default-master-data.js","sourceRoot":"","sources":["../../src/entries/default-master-data.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAE3C,MAAM,UAAU,YAAY,CAC1B,OAAyB,EACzB,SAA2B;IAE3B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QACxD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,30 +1,38 @@
1
- export type EntryAccountVisualType = "asset" | "liability" | "equity" | "revenue" | "cost_of_sales" | "expense";
1
+ import type { BookAccountType } from "./book-account.js";
2
2
  export type VirtualEntrySourceKind = "opening_carryover" | "fixed_asset" | "business_rate_transfer";
3
3
  export type VirtualEntrySource = {
4
4
  id: string;
5
5
  kind: VirtualEntrySourceKind;
6
6
  sourceId: string;
7
7
  label: string;
8
- assistHref?: string;
8
+ assistHref: string | null;
9
9
  };
10
10
  export type EntryPreviewRow = {
11
- recordId?: string;
12
- lineIndex?: number;
13
- lineCount?: number;
14
- isFirstOfRecord?: boolean;
11
+ recordId: string;
12
+ lineIndex: number;
13
+ lineCount: number;
14
+ isFirstOfRecord: boolean;
15
15
  date: string;
16
16
  weekday: string;
17
17
  debit: string;
18
- debitType: EntryAccountVisualType;
18
+ debitType: BookAccountType;
19
19
  debitAmount: string;
20
+ debitBookAccountId: string | null;
21
+ debitPartnerName: string | null;
22
+ debitTaxCategoryId: string | null;
23
+ debitBusinessCategoryId: string | null;
20
24
  credit: string;
21
- creditType: EntryAccountVisualType;
25
+ creditType: BookAccountType;
22
26
  creditAmount: string;
27
+ creditBookAccountId: string | null;
28
+ creditPartnerName: string | null;
29
+ creditTaxCategoryId: string | null;
30
+ creditBusinessCategoryId: string | null;
23
31
  description: string;
24
32
  partner: string;
25
- businessRate: string;
33
+ businessRate: number;
26
34
  taxCategory: string;
27
35
  businessCategory: string;
28
- virtual?: VirtualEntrySource;
36
+ virtual: VirtualEntrySource | null;
29
37
  };
30
38
  //# sourceMappingURL=entries-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entries-types.d.ts","sourceRoot":"","sources":["../../src/entries/entries-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,WAAW,GACX,QAAQ,GACR,SAAS,GACT,eAAe,GACf,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,aAAa,GACb,wBAAwB,CAAC;AAE7B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,sBAAsB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,sBAAsB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"entries-types.d.ts","sourceRoot":"","sources":["../../src/entries/entries-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,MAAM,sBAAsB,GAC9B,mBAAmB,GACnB,aAAa,GACb,wBAAwB,CAAC;AAE7B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,eAAe,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const MAX_ENTRY_IMPORT_SIZE: number;
2
+ export declare const MAX_ENTRY_IMPORT_ITEMS = 10000;
3
+ export declare const MAX_ENTRY_IMPORT_LINES = 100000;
4
+ export declare const MAX_ENTRY_LINES = 1000;
5
+ export declare function assertEntryImportSize(size: number): void;
6
+ export declare function assertEntryImportItemCount(count: number): void;
7
+ export declare function assertEntryLineCount(count: number): void;
8
+ export declare function assertEntryImportLineCount(count: number): void;
9
+ //# sourceMappingURL=entry-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-limits.d.ts","sourceRoot":"","sources":["../../src/entries/entry-limits.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AACtD,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAC7C,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,eAAe,OAAQ,CAAC;AAErC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ9D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQxD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ9D"}
@@ -0,0 +1,41 @@
1
+ import { AppError } from "../shared/app-error.js";
2
+ export const MAX_ENTRY_IMPORT_SIZE = 16 * 1024 * 1024;
3
+ export const MAX_ENTRY_IMPORT_ITEMS = 10_000;
4
+ export const MAX_ENTRY_IMPORT_LINES = 100_000;
5
+ export const MAX_ENTRY_LINES = 1_000;
6
+ export function assertEntryImportSize(size) {
7
+ if (!Number.isSafeInteger(size) || size < 0 || size > MAX_ENTRY_IMPORT_SIZE) {
8
+ throw importFileLimitError("journal import exceeds the size limit");
9
+ }
10
+ }
11
+ export function assertEntryImportItemCount(count) {
12
+ if (!Number.isSafeInteger(count) ||
13
+ count < 0 ||
14
+ count > MAX_ENTRY_IMPORT_ITEMS) {
15
+ throw importFileLimitError("journal import contains too many entries");
16
+ }
17
+ }
18
+ export function assertEntryLineCount(count) {
19
+ if (!Number.isSafeInteger(count) ||
20
+ count < 0 ||
21
+ count > MAX_ENTRY_LINES) {
22
+ throw importFileLimitError("journal entry contains too many lines");
23
+ }
24
+ }
25
+ export function assertEntryImportLineCount(count) {
26
+ if (!Number.isSafeInteger(count) ||
27
+ count < 0 ||
28
+ count > MAX_ENTRY_IMPORT_LINES) {
29
+ throw importFileLimitError("journal import contains too many lines");
30
+ }
31
+ }
32
+ function importFileLimitError(messageForDeveloper) {
33
+ return new AppError({
34
+ messageForDeveloper,
35
+ messageForUser: "取込ファイルが大きすぎます。ファイルを分割してからもう一度取り込んでください。",
36
+ originalMessage: null,
37
+ statusCode: null,
38
+ code: null,
39
+ });
40
+ }
41
+ //# sourceMappingURL=entry-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-limits.js","sourceRoot":"","sources":["../../src/entries/entry-limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,qBAAqB,EAAE,CAAC;QAC5E,MAAM,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,sBAAsB,EAC9B,CAAC;QACD,MAAM,oBAAoB,CAAC,0CAA0C,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,eAAe,EACvB,CAAC;QACD,MAAM,oBAAoB,CAAC,uCAAuC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;QAC5B,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,sBAAsB,EAC9B,CAAC;QACD,MAAM,oBAAoB,CAAC,wCAAwC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,mBAA2B;IACvD,OAAO,IAAI,QAAQ,CAAC;QAClB,mBAAmB;QACnB,cAAc,EACZ,yCAAyC;QAC3C,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -1,17 +1,34 @@
1
- import type { EntryAccountVisualType, EntryPreviewRow } from "./entries-types.js";
1
+ import type { BookAccountType } from "./book-account.js";
2
+ import type { EntryPreviewRow } from "./entries-types.js";
2
3
  export type EntryLine = {
4
+ id: string | null;
3
5
  side: "debit" | "credit";
4
6
  accountName: string;
5
- accountType: EntryAccountVisualType;
7
+ accountType: BookAccountType;
6
8
  amount: string;
7
- bookAccountId?: string;
9
+ bookAccountId: string | null;
10
+ partnerName: string | null;
11
+ taxCategoryId: string | null;
12
+ taxCategoryName: string | null;
13
+ businessCategoryId: string | null;
14
+ businessCategoryName: string | null;
8
15
  };
16
+ export type EntryLineMetadata = {
17
+ partner: string;
18
+ taxCategory: string;
19
+ businessCategory: string;
20
+ };
21
+ export declare function resolveEntryLineMetadata(line: EntryLine): EntryLineMetadata;
22
+ export declare function resolveEntryPairMetadata(pair: {
23
+ debit: EntryLine | null;
24
+ credit: EntryLine | null;
25
+ }): EntryLineMetadata;
9
26
  export declare function applyBusinessRateToLines(lines: EntryLine[], rate: number): EntryLine[];
10
- /** EntryRecord を取得し、家事按分を反映した実効明細に変換する。 */
11
- export declare function getBusinessAdjustedEntryLines(record: EntryRecord): EntryLine[];
27
+ export declare function entryLineAccountKey(line: EntryLine): string;
28
+ export declare const VIRTUAL_ENTRY_LOCAL_ID_PREFIX = "virtual:";
12
29
  export declare const BUSINESS_RATE_TRANSFER_LOCAL_ID = "virtual:business-rate-transfer";
13
30
  export declare function excludeBusinessRateTransfer<T extends {
14
- localId?: string;
31
+ localId: string | null;
15
32
  }>(entries: T[]): T[];
16
33
  export declare function buildBusinessRateTransferEntry(input: {
17
34
  fiscalPeriodId: string;
@@ -23,31 +40,14 @@ export type EntryRecord = {
23
40
  fiscalPeriodId: string;
24
41
  date: string;
25
42
  weekday: string;
26
- lines?: EntryLine[];
27
- debit: string;
28
- debitType: EntryPreviewRow["debitType"];
29
- debitAmount: string;
30
- credit: string;
31
- creditType: EntryPreviewRow["creditType"];
32
- creditAmount: string;
43
+ lines: EntryLine[];
33
44
  description: string;
34
- partner: string;
35
- businessRate: string;
36
- taxCategory: string;
37
- businessCategory: string;
38
- localId?: string;
39
- debitBookAccountId?: string;
40
- creditBookAccountId?: string;
41
- debitTaxCategoryId?: string;
42
- creditTaxCategoryId?: string;
43
- debitBusinessCategoryId?: string;
44
- creditBusinessCategoryId?: string;
45
+ businessRate: number;
46
+ localId: string | null;
45
47
  };
46
- export declare function getEntryLines(record: EntryRecord): EntryLine[];
47
48
  export declare function entryToVisualPairs(record: EntryRecord): Array<{
48
49
  debit: EntryLine | null;
49
50
  credit: EntryLine | null;
50
51
  }>;
51
52
  export declare function recordToPreviewRows(record: EntryRecord): EntryPreviewRow[];
52
- export declare function recordToPreviewRow(record: EntryRecord): EntryPreviewRow;
53
53
  //# sourceMappingURL=entry-record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-record.d.ts","sourceRoot":"","sources":["../../src/entries/entry-record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGlF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAaF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,GACX,SAAS,EAAE,CAmCb;AAED,2CAA2C;AAC3C,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,GAClB,SAAS,EAAE,CAKb;AAED,eAAO,MAAM,+BAA+B,mCAAmC,CAAC;AAEhF,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAIL;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,WAAW,GAAG,IAAI,CAgErB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,CAoB9D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC;IAC7D,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B,CAAC,CAcD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,EAAE,CAsB1E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,CAGvE"}
1
+ {"version":3,"file":"entry-record.d.ts","sourceRoot":"","sources":["../../src/entries/entry-record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,GACd,iBAAiB,CAOnB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GAC1D,iBAAiB,CAmBnB;AAwBD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAAE,EAClB,IAAI,EAAE,MAAM,GACX,SAAS,EAAE,CA4Cb;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAI3D;AAED,eAAO,MAAM,6BAA6B,aAAa,CAAC;AAExD,eAAO,MAAM,+BAA+B,mCAA2D,CAAC;AAExG,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC9E,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAIL;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,WAAW,GAAG,IAAI,CA4ErB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAAC;IAC7D,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC1B,CAAC,CAcD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,EAAE,CAkC1E"}