evmtools-node 0.0.5

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 (141) hide show
  1. package/.prettierrc +9 -0
  2. package/.vscode/settings.json +20 -0
  3. package/LICENSE +201 -0
  4. package/README.md +71 -0
  5. package/class.pu +62 -0
  6. package/dist/common/index.d.ts +4 -0
  7. package/dist/common/index.d.ts.map +1 -0
  8. package/dist/common/index.js +20 -0
  9. package/dist/common/index.js.map +1 -0
  10. package/dist/common/myStyles.d.ts +10 -0
  11. package/dist/common/myStyles.d.ts.map +1 -0
  12. package/dist/common/myStyles.js +52 -0
  13. package/dist/common/myStyles.js.map +1 -0
  14. package/dist/common/styles.d.ts +12 -0
  15. package/dist/common/styles.d.ts.map +1 -0
  16. package/dist/common/styles.js +30 -0
  17. package/dist/common/styles.js.map +1 -0
  18. package/dist/common/utils.d.ts +53 -0
  19. package/dist/common/utils.d.ts.map +1 -0
  20. package/dist/common/utils.js +163 -0
  21. package/dist/common/utils.js.map +1 -0
  22. package/dist/domain/Project.d.ts +98 -0
  23. package/dist/domain/Project.d.ts.map +1 -0
  24. package/dist/domain/Project.js +291 -0
  25. package/dist/domain/Project.js.map +1 -0
  26. package/dist/domain/ProjectCreator.d.ts +8 -0
  27. package/dist/domain/ProjectCreator.d.ts.map +1 -0
  28. package/dist/domain/ProjectCreator.js +3 -0
  29. package/dist/domain/ProjectCreator.js.map +1 -0
  30. package/dist/domain/ProjectProgressCreator.d.ts +5 -0
  31. package/dist/domain/ProjectProgressCreator.d.ts.map +1 -0
  32. package/dist/domain/ProjectProgressCreator.js +3 -0
  33. package/dist/domain/ProjectProgressCreator.js.map +1 -0
  34. package/dist/domain/ProjectRepository.d.ts +5 -0
  35. package/dist/domain/ProjectRepository.d.ts.map +1 -0
  36. package/dist/domain/ProjectRepository.js +3 -0
  37. package/dist/domain/ProjectRepository.js.map +1 -0
  38. package/dist/domain/ProjectService.d.ts +59 -0
  39. package/dist/domain/ProjectService.d.ts.map +1 -0
  40. package/dist/domain/ProjectService.js +216 -0
  41. package/dist/domain/ProjectService.js.map +1 -0
  42. package/dist/domain/TaskNode.d.ts +37 -0
  43. package/dist/domain/TaskNode.d.ts.map +1 -0
  44. package/dist/domain/TaskNode.js +54 -0
  45. package/dist/domain/TaskNode.js.map +1 -0
  46. package/dist/domain/TaskRow.d.ts +222 -0
  47. package/dist/domain/TaskRow.d.ts.map +1 -0
  48. package/dist/domain/TaskRow.js +260 -0
  49. package/dist/domain/TaskRow.js.map +1 -0
  50. package/dist/domain/TaskRowCreator.d.ts +11 -0
  51. package/dist/domain/TaskRowCreator.d.ts.map +1 -0
  52. package/dist/domain/TaskRowCreator.js +3 -0
  53. package/dist/domain/TaskRowCreator.js.map +1 -0
  54. package/dist/domain/TaskService.d.ts +18 -0
  55. package/dist/domain/TaskService.d.ts.map +1 -0
  56. package/dist/domain/TaskService.js +56 -0
  57. package/dist/domain/TaskService.js.map +1 -0
  58. package/dist/domain/index.d.ts +9 -0
  59. package/dist/domain/index.d.ts.map +1 -0
  60. package/dist/domain/index.js +25 -0
  61. package/dist/domain/index.js.map +1 -0
  62. package/dist/infrastructure/ExcelBufferProjectCreator.d.ts +9 -0
  63. package/dist/infrastructure/ExcelBufferProjectCreator.d.ts.map +1 -0
  64. package/dist/infrastructure/ExcelBufferProjectCreator.js +23 -0
  65. package/dist/infrastructure/ExcelBufferProjectCreator.js.map +1 -0
  66. package/dist/infrastructure/ExcelProjectCreator.d.ts +8 -0
  67. package/dist/infrastructure/ExcelProjectCreator.d.ts.map +1 -0
  68. package/dist/infrastructure/ExcelProjectCreator.js +31 -0
  69. package/dist/infrastructure/ExcelProjectCreator.js.map +1 -0
  70. package/dist/infrastructure/ExcelTaskRowCreator.d.ts +8 -0
  71. package/dist/infrastructure/ExcelTaskRowCreator.d.ts.map +1 -0
  72. package/dist/infrastructure/ExcelTaskRowCreator.js +24 -0
  73. package/dist/infrastructure/ExcelTaskRowCreator.js.map +1 -0
  74. package/dist/infrastructure/MappingProjectCreator.d.ts +9 -0
  75. package/dist/infrastructure/MappingProjectCreator.d.ts.map +1 -0
  76. package/dist/infrastructure/MappingProjectCreator.js +36 -0
  77. package/dist/infrastructure/MappingProjectCreator.js.map +1 -0
  78. package/dist/infrastructure/ProjectRepositoryImpl.d.ts +6 -0
  79. package/dist/infrastructure/ProjectRepositoryImpl.d.ts.map +1 -0
  80. package/dist/infrastructure/ProjectRepositoryImpl.js +124 -0
  81. package/dist/infrastructure/ProjectRepositoryImpl.js.map +1 -0
  82. package/dist/infrastructure/TaskRowCreatorImpl.d.ts +11 -0
  83. package/dist/infrastructure/TaskRowCreatorImpl.d.ts.map +1 -0
  84. package/dist/infrastructure/TaskRowCreatorImpl.js +135 -0
  85. package/dist/infrastructure/TaskRowCreatorImpl.js.map +1 -0
  86. package/dist/infrastructure/TaskRowFactory.d.ts +9 -0
  87. package/dist/infrastructure/TaskRowFactory.d.ts.map +1 -0
  88. package/dist/infrastructure/TaskRowFactory.js +47 -0
  89. package/dist/infrastructure/TaskRowFactory.js.map +1 -0
  90. package/dist/infrastructure/index.d.ts +9 -0
  91. package/dist/infrastructure/index.d.ts.map +1 -0
  92. package/dist/infrastructure/index.js +25 -0
  93. package/dist/infrastructure/index.js.map +1 -0
  94. package/dist/infrastructure/types.d.ts +29 -0
  95. package/dist/infrastructure/types.d.ts.map +1 -0
  96. package/dist/infrastructure/types.js +66 -0
  97. package/dist/infrastructure/types.js.map +1 -0
  98. package/dist/logger.d.ts +7 -0
  99. package/dist/logger.d.ts.map +1 -0
  100. package/dist/logger.js +42 -0
  101. package/dist/logger.js.map +1 -0
  102. package/dist/presentation/cli-pbevm-diff.d.ts +2 -0
  103. package/dist/presentation/cli-pbevm-diff.d.ts.map +1 -0
  104. package/dist/presentation/cli-pbevm-diff.js +39 -0
  105. package/dist/presentation/cli-pbevm-diff.js.map +1 -0
  106. package/dist/presentation/cli-pbevm-show-project.d.ts +2 -0
  107. package/dist/presentation/cli-pbevm-show-project.d.ts.map +1 -0
  108. package/dist/presentation/cli-pbevm-show-project.js +38 -0
  109. package/dist/presentation/cli-pbevm-show-project.js.map +1 -0
  110. package/dist/presentation/cli-pbevm-summary.d.ts +3 -0
  111. package/dist/presentation/cli-pbevm-summary.d.ts.map +1 -0
  112. package/dist/presentation/cli-pbevm-summary.js +35 -0
  113. package/dist/presentation/cli-pbevm-summary.js.map +1 -0
  114. package/dist/presentation/cli-test.d.ts +3 -0
  115. package/dist/presentation/cli-test.d.ts.map +1 -0
  116. package/dist/presentation/cli-test.js +123 -0
  117. package/dist/presentation/cli-test.js.map +1 -0
  118. package/dist/presentation/project-test2.d.ts +22 -0
  119. package/dist/presentation/project-test2.d.ts.map +1 -0
  120. package/dist/presentation/project-test2.js +106 -0
  121. package/dist/presentation/project-test2.js.map +1 -0
  122. package/dist/usercase/index.d.ts +4 -0
  123. package/dist/usercase/index.d.ts.map +1 -0
  124. package/dist/usercase/index.js +20 -0
  125. package/dist/usercase/index.js.map +1 -0
  126. package/dist/usercase/pbevm-diff-usercase.d.ts +10 -0
  127. package/dist/usercase/pbevm-diff-usercase.d.ts.map +1 -0
  128. package/dist/usercase/pbevm-diff-usercase.js +67 -0
  129. package/dist/usercase/pbevm-diff-usercase.js.map +1 -0
  130. package/dist/usercase/pbevm-show-project-usecase.d.ts +10 -0
  131. package/dist/usercase/pbevm-show-project-usecase.d.ts.map +1 -0
  132. package/dist/usercase/pbevm-show-project-usecase.js +19 -0
  133. package/dist/usercase/pbevm-show-project-usecase.js.map +1 -0
  134. package/dist/usercase/pbevm-summary-usercase.d.ts +8 -0
  135. package/dist/usercase/pbevm-summary-usercase.d.ts.map +1 -0
  136. package/dist/usercase/pbevm-summary-usercase.js +47 -0
  137. package/dist/usercase/pbevm-summary-usercase.js.map +1 -0
  138. package/eslint.config.mjs +25 -0
  139. package/now.xlsm +0 -0
  140. package/package.json +71 -0
  141. package/prev.xlsm +0 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const yargs_1 = __importDefault(require("yargs"));
7
+ const helpers_1 = require("yargs/helpers");
8
+ // import { getLogger } from '../logger'
9
+ const ExcelProjectCreator_1 = require("../infrastructure/ExcelProjectCreator");
10
+ const pbevm_show_project_usecase_1 = require("../usercase/pbevm-show-project-usecase");
11
+ const ProjectRepositoryImpl_1 = require("../infrastructure/ProjectRepositoryImpl");
12
+ // const logger = getLogger('main')
13
+ const main = () => {
14
+ const { path } = createArgs();
15
+ const creator = new ExcelProjectCreator_1.ExcelProjectCreator(path);
16
+ const repository = new ProjectRepositoryImpl_1.ProjectRepositoryImpl();
17
+ new pbevm_show_project_usecase_1.PbevmShowProjectUsecase(creator, repository)
18
+ .execute()
19
+ .catch((error) => console.error(error));
20
+ };
21
+ const createArgs = () => {
22
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
23
+ .option('path', {
24
+ type: 'string',
25
+ description: 'Excel file Path',
26
+ default: './classdata.xlsx',
27
+ })
28
+ .option('output', {
29
+ type: 'string',
30
+ description: 'Output directory',
31
+ default: './output',
32
+ })
33
+ .help()
34
+ .parseSync(); // 型付きで取得
35
+ return argv;
36
+ };
37
+ main();
38
+ //# sourceMappingURL=cli-pbevm-show-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-pbevm-show-project.js","sourceRoot":"","sources":["../../src/presentation/cli-pbevm-show-project.ts"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,2CAAuC;AACvC,wCAAwC;AACxC,+EAA2E;AAC3E,uFAAgF;AAChF,mFAA+E;AAE/E,mCAAmC;AAEnC,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAA;IAE7B,MAAM,OAAO,GAAG,IAAI,yCAAmB,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,IAAI,6CAAqB,EAAE,CAAA;IAC9C,IAAI,oDAAuB,CAAC,OAAO,EAAE,UAAU,CAAC;SAC3C,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpC,MAAM,CAAC,MAAM,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,kBAAkB;KAC9B,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,UAAU;KACtB,CAAC;SACD,IAAI,EAAE;SACN,SAAS,EAAE,CAAA,CAAC,SAAS;IAC1B,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,IAAI,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli-pbevm-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-pbevm-summary.d.ts","sourceRoot":"","sources":["../../src/presentation/cli-pbevm-summary.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const helpers_1 = require("yargs/helpers");
9
+ const ExcelTaskRowCreator_1 = require("../infrastructure/ExcelTaskRowCreator");
10
+ const pbevm_summary_usercase_1 = require("../usercase/pbevm-summary-usercase");
11
+ // const logger = getLogger('main')
12
+ // TaskRowCreator を使ったサンプル。また tidy をつかって集計などをテストしてる
13
+ const main = () => {
14
+ const { path } = createArgs();
15
+ const reader = new ExcelTaskRowCreator_1.ExcelTaskRowCreator(path);
16
+ new pbevm_summary_usercase_1.PbevmSummaryUsecase(reader).execute().catch((error) => console.error(error));
17
+ };
18
+ const createArgs = () => {
19
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
20
+ .option('path', {
21
+ type: 'string',
22
+ description: 'Excel file Path',
23
+ default: './now.xlsm',
24
+ })
25
+ .option('output', {
26
+ type: 'string',
27
+ description: 'Output directory',
28
+ default: './output',
29
+ })
30
+ .help()
31
+ .parseSync(); // 型付きで取得
32
+ return argv;
33
+ };
34
+ main();
35
+ //# sourceMappingURL=cli-pbevm-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-pbevm-summary.js","sourceRoot":"","sources":["../../src/presentation/cli-pbevm-summary.ts"],"names":[],"mappings":";;;;;;AACA,kDAAyB;AACzB,2CAAuC;AAGvC,+EAA2E;AAC3E,+EAAwE;AAExE,mCAAmC;AAEnC,mDAAmD;AACnD,MAAM,IAAI,GAAG,GAAG,EAAE;IACd,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,CAAA;IAE7B,MAAM,MAAM,GAAmB,IAAI,yCAAmB,CAAC,IAAI,CAAC,CAAA;IAC5D,IAAI,4CAAmB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACpF,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,GAAG,EAAE;IACpB,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpC,MAAM,CAAC,MAAM,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,YAAY;KACxB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,OAAO,EAAE,UAAU;KACtB,CAAC;SACD,IAAI,EAAE;SACN,SAAS,EAAE,CAAA,CAAC,SAAS;IAC1B,OAAO,IAAI,CAAA;AACf,CAAC,CAAA;AAED,IAAI,EAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-test.d.ts","sourceRoot":"","sources":["../../src/presentation/cli-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const helpers_1 = require("yargs/helpers");
9
+ // import { getLogger } from '../logger'
10
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
11
+ const TaskService_1 = require("../domain/TaskService");
12
+ const ExcelTaskRowCreator_1 = require("../infrastructure/ExcelTaskRowCreator");
13
+ const common_1 = require("../common");
14
+ const styles_1 = require("../common/styles");
15
+ // const logger = getLogger('main')
16
+ // こちらもTaskRowCreatorのサンプル。
17
+ const main = async () => {
18
+ const { excelPath } = createArgs();
19
+ const reader = new ExcelTaskRowCreator_1.ExcelTaskRowCreator(excelPath);
20
+ const rows = await reader.createRowData();
21
+ const baseDates = (0, common_1.generateBaseDates)(new Date('2025-06-13T00:00:00+09:00'), new Date('2025-06-28T00:00:00+09:00'));
22
+ // const filters = rows.filter((row) => row.id >= 23) //
23
+ // printTaskRows(filters, baseDates)
24
+ const taskService = new TaskService_1.TaskService();
25
+ const taskNodes = taskService.buildTaskTree(rows);
26
+ const tasks = taskNodes.filter((row) => row.id >= 23); //
27
+ (0, common_1.printTaskNodes)(tasks, baseDates);
28
+ printTaskNodes1(tasks);
29
+ const flatternRows = taskService.convertToTaskRows(taskNodes);
30
+ const workbook = await (0, excel_csv_read_write_1.createWorkbook)();
31
+ const converters = {
32
+ // なんか、日付はコレやらないとキレイに出力できない
33
+ startDate: (value) => value,
34
+ endDate: (value) => value,
35
+ actualStartDate: (value) => value,
36
+ actualEndDate: (value) => value,
37
+ expectedProgressDate: (value) => value,
38
+ };
39
+ (0, excel_csv_read_write_1.json2workbook)({
40
+ instances: rows,
41
+ workbook,
42
+ sheetName: 'rows',
43
+ applyStyles: (0, styles_1.createStyles)(common_1.style5),
44
+ converters,
45
+ });
46
+ (0, excel_csv_read_write_1.json2workbook)({
47
+ instances: flatternRows,
48
+ workbook,
49
+ sheetName: 'flatternRows',
50
+ applyStyles: (0, styles_1.createStyles)(common_1.style5),
51
+ converters,
52
+ });
53
+ workbook.deleteSheet('Sheet1');
54
+ await (0, excel_csv_read_write_1.toFileAsync)(workbook, 'result.xlsx');
55
+ // await sub()
56
+ // console.table(flattern)
57
+ };
58
+ // const sub = async () => {
59
+ // let robots: unknown[] = await csv2json('robotSample.csv')
60
+ // // robots = robots.map((robot) => ({ ...robot, now: new Date() })) // 日付列を追加 unknown型には使えないので注意
61
+ // robots = robots.map((robot) => Object.assign({}, robot, { now: new Date() })) // 日付列を追加
62
+ // console.table(robots)
63
+ // // なにも考えずにダンプ
64
+ // // json2excel(robots, 'output/robots.xlsx').catch((error) => console.log(error))
65
+ // // プロパティごとに、変換メソッドをかませたケース
66
+ // // nowとIdというプロパティには、変換methodを指定
67
+ // const converters: Converters = {
68
+ // now: (value: unknown) => value,
69
+ // Id: (value: string) => '0' + value,
70
+ // }
71
+ // json2excel(robots, 'output/robots1.xlsx', '', 'Sheet1', converters).catch((error) =>
72
+ // console.log(error)
73
+ // )
74
+ // // プロパティごとに、変換メソッドをかませたケース.
75
+ // // nowとIdというプロパティには、変換methodを指定
76
+ // // さらにその列(M列) に、日付フォーマットでExcel出力する
77
+ // const excelFormatter = (
78
+ // instances: any[],
79
+ // workbook: XlsxPopulate.Workbook,
80
+ // sheetName: string
81
+ // ) => {
82
+ // const rowCount = instances.length
83
+ // const sheet = workbook.sheet(sheetName)
84
+ // sheet.range(`M2:M${rowCount + 1}`).style('numberFormat', 'yyyy/mm/dd hh:mm') // 書式: 日付+時刻
85
+ // // よくある整形パタン。
86
+ // // sheet.range(`C2:C${rowCount + 1}`).style('numberFormat', '@') // 書式: 文字(コレをやらないと、見かけ上文字だが、F2で抜けると数字になっちゃう)
87
+ // // sheet.range(`E2:F${rowCount + 1}`).style('numberFormat', 'yyyy/mm/dd') // 書式: 日付
88
+ // // sheet.range(`H2:H${rowCount + 1}`).style('numberFormat', 'yyyy/mm/dd hh:mm') // 書式: 日付+時刻
89
+ // }
90
+ // json2excel(robots, 'output/robots2.xlsx', '', 'Sheet1', converters, excelFormatter).catch(
91
+ // (error) => console.log(error)
92
+ // ) // プロパティ指定で、変換をかける
93
+ // }
94
+ const createArgs = () => {
95
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
96
+ .option('excelPath', {
97
+ type: 'string',
98
+ description: 'Excel file Path',
99
+ default: './classdata.xlsx',
100
+ })
101
+ .option('output', {
102
+ type: 'string',
103
+ description: 'Output directory',
104
+ default: './output',
105
+ })
106
+ .help()
107
+ .parseSync(); // 型付きで取得
108
+ return argv;
109
+ };
110
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
111
+ main();
112
+ function printTaskNodes1(taskNodes) {
113
+ for (const rootTask of taskNodes) {
114
+ // root単位でfor文回せば良い
115
+ for (const row of rootTask) {
116
+ printTask1(row);
117
+ }
118
+ }
119
+ }
120
+ function printTask1(row) {
121
+ console.log(row.id, row.name, row.assignee);
122
+ }
123
+ //# sourceMappingURL=cli-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-test.js","sourceRoot":"","sources":["../../src/presentation/cli-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ProjectProgressCreator } from '../domain/ProjectProgressCreator';
2
+ export declare class ProjectProgress {
3
+ private _date;
4
+ private _pv?;
5
+ private _ev?;
6
+ constructor(_date: Date, _pv?: number | undefined, _ev?: number | undefined);
7
+ get spi(): number | undefined;
8
+ get date(): Date;
9
+ get pv(): number | undefined;
10
+ get ev(): number | undefined;
11
+ }
12
+ export declare class ProjectProgressBufferCreatorImpl implements ProjectProgressCreator {
13
+ private _buffer;
14
+ constructor(_buffer: ArrayBuffer);
15
+ createProjectProgress(): Promise<ProjectProgress[]>;
16
+ }
17
+ export declare class ProjectProgressCreatorImpl implements ProjectProgressCreator {
18
+ private _excelPath;
19
+ constructor(_excelPath: string);
20
+ createProjectProgress(): Promise<ProjectProgress[]>;
21
+ }
22
+ //# sourceMappingURL=project-test2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-test2.d.ts","sourceRoot":"","sources":["../../src/presentation/project-test2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAOzE,qBAAa,eAAe;IAEpB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,GAAG,CAAC;IACZ,OAAO,CAAC,GAAG,CAAC;gBAFJ,KAAK,EAAE,IAAI,EACX,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,GAAG,CAAC,EAAE,MAAM,YAAA;IAExB,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;IACD,IAAI,IAAI,SAEP;IACD,IAAI,EAAE,uBAEL;IACD,IAAI,EAAE,uBAEL;CACJ;AAED,qBAAa,gCAAiC,YAAW,sBAAsB;IAC/D,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAElC,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAK5D;AAED,qBAAa,0BAA2B,YAAW,sBAAsB;IACzD,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEhC,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAS5D"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProjectProgressCreatorImpl = exports.ProjectProgressBufferCreatorImpl = exports.ProjectProgress = void 0;
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const helpers_1 = require("yargs/helpers");
9
+ // import { getLogger } from '../logger'
10
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
11
+ const infrastructure_1 = require("../infrastructure");
12
+ const domain_1 = require("../domain");
13
+ const common_1 = require("../common");
14
+ // const logger = getLogger('main')
15
+ class ProjectProgress {
16
+ constructor(_date, _pv, _ev) {
17
+ this._date = _date;
18
+ this._pv = _pv;
19
+ this._ev = _ev;
20
+ }
21
+ get spi() {
22
+ const { _pv, _ev } = this;
23
+ return (0, domain_1.isValidNumber)(_pv) && (0, domain_1.isValidNumber)(_ev) && _pv !== 0 ? _ev / _pv : undefined;
24
+ }
25
+ get date() {
26
+ return this._date;
27
+ }
28
+ get pv() {
29
+ return this._pv;
30
+ }
31
+ get ev() {
32
+ return this._ev;
33
+ }
34
+ }
35
+ exports.ProjectProgress = ProjectProgress;
36
+ class ProjectProgressBufferCreatorImpl {
37
+ constructor(_buffer) {
38
+ this._buffer = _buffer;
39
+ }
40
+ async createProjectProgress() {
41
+ const rawDatas = (await (0, excel_csv_read_write_1.excelBuffer2json)(this._buffer, 'EVM記録'));
42
+ return toProjectProgress(rawDatas);
43
+ }
44
+ }
45
+ exports.ProjectProgressBufferCreatorImpl = ProjectProgressBufferCreatorImpl;
46
+ class ProjectProgressCreatorImpl {
47
+ constructor(_excelPath) {
48
+ this._excelPath = _excelPath;
49
+ }
50
+ async createProjectProgress() {
51
+ const rawDatas = (await (0, excel_csv_read_write_1.excel2json2)({
52
+ filePath: this._excelPath,
53
+ sheetName: 'EVM記録',
54
+ }));
55
+ // console.table(rawDatas)
56
+ return toProjectProgress(rawDatas);
57
+ }
58
+ }
59
+ exports.ProjectProgressCreatorImpl = ProjectProgressCreatorImpl;
60
+ const toProjectProgress = (rawDatas) => {
61
+ return rawDatas
62
+ .filter((rawData) => rawData['PV'] !== undefined || rawData['EV'] !== undefined)
63
+ .map((rawData) => {
64
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
65
+ return new ProjectProgress((0, excel_csv_read_write_1.dateFromSn)(rawData['日付']), rawData['PV'], rawData['EV']);
66
+ });
67
+ };
68
+ const main = async () => {
69
+ const { excelProjectPath, excelProgressPath } = createArgs();
70
+ const projectProgressCreator = new ProjectProgressCreatorImpl(excelProgressPath);
71
+ const datas = await projectProgressCreator.createProjectProgress();
72
+ printTable(datas);
73
+ const creator = new infrastructure_1.ExcelProjectCreator(excelProjectPath);
74
+ const project = await creator.createProject();
75
+ const stats = project.statisticsByProject;
76
+ console.table(stats);
77
+ };
78
+ const createArgs = () => {
79
+ const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
80
+ .option('excelProgressPath', {
81
+ type: 'string',
82
+ description: 'Excel file Path',
83
+ default: './classdata.xlsx',
84
+ })
85
+ .option('excelProjectPath', {
86
+ type: 'string',
87
+ description: 'Excel file Path',
88
+ default: './classdata.xlsx',
89
+ })
90
+ .help()
91
+ .parseSync(); // 型付きで取得
92
+ return argv;
93
+ };
94
+ main();
95
+ function printTable(datas) {
96
+ const dispDatas = datas.map((data) => {
97
+ return {
98
+ date: (0, common_1.dateStr)(data.date),
99
+ pv: data.pv,
100
+ ev: data.ev,
101
+ spi: data.spi,
102
+ };
103
+ });
104
+ console.table(dispDatas);
105
+ }
106
+ //# sourceMappingURL=project-test2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-test2.js","sourceRoot":"","sources":["../../src/presentation/project-test2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './pbevm-diff-usercase';
2
+ export * from './pbevm-show-project-usecase';
3
+ export * from './pbevm-summary-usercase';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usercase/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0BAA0B,CAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./pbevm-diff-usercase"), exports);
18
+ __exportStar(require("./pbevm-show-project-usecase"), exports);
19
+ __exportStar(require("./pbevm-summary-usercase"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/usercase/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,+DAA4C;AAC5C,2DAAwC"}
@@ -0,0 +1,10 @@
1
+ import { AssigneeDiff, Project, ProjectCreator, ProjectDiff, ProjectService, TaskDiff } from '../domain';
2
+ export declare class PbevmDiffUsercase {
3
+ private _nowProjectCreator;
4
+ private _prevProjectCreator;
5
+ private _projectService;
6
+ constructor(_nowProjectCreator: ProjectCreator, _prevProjectCreator: ProjectCreator, _projectService: ProjectService);
7
+ execute(): Promise<void>;
8
+ save(currentProject: Project, prevProject: Project, projectDiffs: ProjectDiff[], assigneeDiffs: AssigneeDiff[], taskDiffs: TaskDiff[]): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=pbevm-diff-usercase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-diff-usercase.d.ts","sourceRoot":"","sources":["../../src/usercase/pbevm-diff-usercase.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,YAAY,EACZ,OAAO,EACP,cAAc,EACd,WAAW,EACX,cAAc,EACd,QAAQ,EACX,MAAM,WAAW,CAAA;AAElB,qBAAa,iBAAiB;IAEtB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,cAAc,EAClC,mBAAmB,EAAE,cAAc,EACnC,eAAe,EAAE,cAAc;IAGrC,OAAO;IAgBP,IAAI,CACN,cAAc,EAAE,OAAO,EACvB,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,WAAW,EAAE,EAC3B,aAAa,EAAE,YAAY,EAAE,EAC7B,SAAS,EAAE,QAAQ,EAAE;CA8C5B"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PbevmDiffUsercase = void 0;
4
+ const excel_csv_read_write_1 = require("excel-csv-read-write");
5
+ const common_1 = require("../common");
6
+ class PbevmDiffUsercase {
7
+ constructor(_nowProjectCreator, _prevProjectCreator, _projectService) {
8
+ this._nowProjectCreator = _nowProjectCreator;
9
+ this._prevProjectCreator = _prevProjectCreator;
10
+ this._projectService = _projectService;
11
+ }
12
+ async execute() {
13
+ const nowP = await this._nowProjectCreator.createProject();
14
+ const prevP = await this._prevProjectCreator.createProject();
15
+ const taskDiffs = this._projectService.calculateTaskDiffs(nowP, prevP);
16
+ // console.table(taskDiffs.filter((row) => row.hasDiff))
17
+ const projectDiffs = this._projectService.calculateProjectDiffs(taskDiffs);
18
+ // console.table(projectDiffs.filter((row) => row.hasDiff))
19
+ const assigneeDiffs = this._projectService.calculateAssigneeDiffs(taskDiffs);
20
+ // console.table(assigneeDiffs.filter((row) => row.hasDiff))
21
+ await this.save(nowP, prevP, projectDiffs, assigneeDiffs, taskDiffs);
22
+ }
23
+ async save(currentProject, prevProject, projectDiffs, assigneeDiffs, taskDiffs) {
24
+ const path = `${currentProject.name}-diff.xlsx`;
25
+ const workbook = await (0, excel_csv_read_write_1.createWorkbook)();
26
+ if (projectDiffs) {
27
+ console.log('プロジェクトDiff');
28
+ console.table(projectDiffs.filter((row) => row.hasDiff));
29
+ (0, excel_csv_read_write_1.json2workbook)({
30
+ instances: projectDiffs,
31
+ workbook,
32
+ sheetName: `プロジェクトDiff`,
33
+ applyStyles: (0, common_1.createStyles)(),
34
+ });
35
+ }
36
+ if (assigneeDiffs) {
37
+ console.log('担当Diff');
38
+ console.table(assigneeDiffs.filter((row) => row.hasDiff));
39
+ (0, excel_csv_read_write_1.json2workbook)({
40
+ instances: assigneeDiffs,
41
+ workbook,
42
+ sheetName: '担当Diff',
43
+ applyStyles: (0, common_1.createStyles)(),
44
+ });
45
+ }
46
+ if (taskDiffs) {
47
+ console.log('タスクDiff');
48
+ console.table(taskDiffs.filter((row) => row.hasDiff));
49
+ (0, excel_csv_read_write_1.json2workbook)({
50
+ instances: taskDiffs,
51
+ workbook,
52
+ sheetName: `タスクDiff`,
53
+ applyStyles: (0, common_1.createStyles)(common_1.style6), // 日付列のフォーマットを指定
54
+ converters: {
55
+ // なんか、日付はコレやらないとキレイに出力できない
56
+ prevBaseDate: (value) => value,
57
+ currentBaseDate: (value) => value,
58
+ baseDate: (value) => value,
59
+ },
60
+ });
61
+ }
62
+ workbook.deleteSheet('Sheet1');
63
+ await (0, excel_csv_read_write_1.toFileAsync)(workbook, path);
64
+ }
65
+ }
66
+ exports.PbevmDiffUsercase = PbevmDiffUsercase;
67
+ //# sourceMappingURL=pbevm-diff-usercase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-diff-usercase.js","sourceRoot":"","sources":["../../src/usercase/pbevm-diff-usercase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ProjectCreator } from '../domain/ProjectCreator';
2
+ import { ProjectRepository } from '../domain/ProjectRepository';
3
+ export declare class PbevmShowProjectUsecase {
4
+ private _creator;
5
+ private _repository;
6
+ private logger;
7
+ constructor(_creator: ProjectCreator, _repository: ProjectRepository);
8
+ execute(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=pbevm-show-project-usecase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-show-project-usecase.d.ts","sourceRoot":"","sources":["../../src/usercase/pbevm-show-project-usecase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAI/D,qBAAa,uBAAuB;IAI5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IAJvB,OAAO,CAAC,MAAM,CAAkC;gBAGpC,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB;IAGpC,OAAO;CAIhB"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PbevmShowProjectUsecase = void 0;
4
+ const logger_1 = require("../logger");
5
+ // ProjectCreatorを使ったサンプル。プロジェクトを生成してSaveしている
6
+ // Projectがもつ属性をExcelに出力している。
7
+ class PbevmShowProjectUsecase {
8
+ constructor(_creator, _repository) {
9
+ this._creator = _creator;
10
+ this._repository = _repository;
11
+ this.logger = (0, logger_1.getLogger)('ShowProjectUsecase');
12
+ }
13
+ async execute() {
14
+ const project = await this._creator.createProject();
15
+ await this._repository.save(project);
16
+ }
17
+ }
18
+ exports.PbevmShowProjectUsecase = PbevmShowProjectUsecase;
19
+ //# sourceMappingURL=pbevm-show-project-usecase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-show-project-usecase.js","sourceRoot":"","sources":["../../src/usercase/pbevm-show-project-usecase.ts"],"names":[],"mappings":";;;AACA,sCAAqC;AAGrC,6CAA6C;AAC7C,6BAA6B;AAC7B,MAAa,uBAAuB;IAGhC,YACY,QAAwB,EACxB,WAA8B;QAD9B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,gBAAW,GAAX,WAAW,CAAmB;QAJlC,WAAM,GAAG,IAAA,kBAAS,EAAC,oBAAoB,CAAC,CAAA;IAK7C,CAAC;IAEJ,KAAK,CAAC,OAAO;QACT,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;QACnD,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;CACJ;AAZD,0DAYC"}
@@ -0,0 +1,8 @@
1
+ import { TaskRowCreator } from '../domain/TaskRowCreator';
2
+ export declare class PbevmSummaryUsecase {
3
+ private _creator;
4
+ private logger;
5
+ constructor(_creator: TaskRowCreator);
6
+ execute(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=pbevm-summary-usercase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-summary-usercase.d.ts","sourceRoot":"","sources":["../../src/usercase/pbevm-summary-usercase.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,qBAAa,mBAAmB;IAGhB,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,MAAM,CAAmC;gBAE7B,QAAQ,EAAE,cAAc;IAEtC,OAAO;CA+ChB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PbevmSummaryUsecase = void 0;
4
+ const logger_1 = require("../logger");
5
+ const tidy_1 = require("@tidyjs/tidy");
6
+ const common_1 = require("../common");
7
+ class PbevmSummaryUsecase {
8
+ constructor(_creator) {
9
+ this._creator = _creator;
10
+ this.logger = (0, logger_1.getLogger)('PbevmSummaryUsecase');
11
+ }
12
+ async execute() {
13
+ const rows = await this._creator.createRowData();
14
+ const baseDate = new Date('2025-06-13T00:00:00+0900');
15
+ const dispRows = rows.map((row) => {
16
+ const { id, name, assignee, pv, calculatePV, ev, spi } = row;
17
+ return {
18
+ id,
19
+ name,
20
+ assignee,
21
+ pv,
22
+ calcPv1: calculatePV(baseDate),
23
+ ev,
24
+ spi,
25
+ };
26
+ });
27
+ console.table(dispRows);
28
+ // aggregate の練習
29
+ const showAggregate = () => {
30
+ const result = (0, tidy_1.tidy)(rows, (0, tidy_1.groupBy)('assignee', [
31
+ (0, tidy_1.summarize)({
32
+ 担当のタスク数: (group) => group.length,
33
+ 担当の工数の和: (group) => (0, common_1.sum)(group.map((d) => d.workload ?? 0)),
34
+ 担当の工数の平均: (group) => (0, common_1.average)(group.map((d) => d.workload ?? 0)),
35
+ // pv: (group) => group.map((d) => d.pv),
36
+ // calcPv_baseDate_の列: (group) => group.map((d) => d.calculatePV(baseDate)),
37
+ [`${(0, common_1.dateStr)(baseDate)}までのPV累積`]: (group) => (0, common_1.sum)(group.map((d) => d.calculatePVs(baseDate)), 3),
38
+ [`${(0, common_1.dateStr)(baseDate)}のPV`]: (group) => (0, common_1.sum)(group.map((d) => d.calculatePV(baseDate) ?? 0), 3),
39
+ }),
40
+ ]));
41
+ console.table(result);
42
+ };
43
+ showAggregate();
44
+ }
45
+ }
46
+ exports.PbevmSummaryUsecase = PbevmSummaryUsecase;
47
+ //# sourceMappingURL=pbevm-summary-usercase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbevm-summary-usercase.js","sourceRoot":"","sources":["../../src/usercase/pbevm-summary-usercase.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AACrC,uCAAuD;AAGvD,sCAAiD;AAEjD,MAAa,mBAAmB;IAG5B,YAAoB,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;QAFpC,WAAM,GAAG,IAAA,kBAAS,EAAC,qBAAqB,CAAC,CAAA;IAEF,CAAC;IAEhD,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,GAAc,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;QAE3D,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;YAC5D,OAAO;gBACH,EAAE;gBACF,IAAI;gBACJ,QAAQ;gBACR,EAAE;gBACF,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC;gBAC9B,EAAE;gBACF,GAAG;aACN,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAEvB,gBAAgB;QAChB,MAAM,aAAa,GAAG,GAAG,EAAE;YACvB,MAAM,MAAM,GAAG,IAAA,WAAI,EACf,IAAI,EACJ,IAAA,cAAO,EAAC,UAAU,EAAE;gBAChB,IAAA,gBAAS,EAAC;oBACN,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;oBAChC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,YAAG,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;oBAC1D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAO,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;oBAC/D,yCAAyC;oBACzC,4EAA4E;oBAC5E,CAAC,GAAG,IAAA,gBAAO,EAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACvC,IAAA,YAAG,EACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAC1C,CAAC,CACJ;oBACL,CAAC,GAAG,IAAA,gBAAO,EAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACnC,IAAA,YAAG,EACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAC9C,CAAC,CACJ;iBACR,CAAC;aACL,CAAC,CACL,CAAA;YACD,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACzB,CAAC,CAAA;QACD,aAAa,EAAE,CAAA;IACnB,CAAC;CACJ;AApDD,kDAoDC"}
@@ -0,0 +1,25 @@
1
+ import eslint from '@eslint/js'
2
+ import tseslint from 'typescript-eslint'
3
+ import prettier from 'eslint-config-prettier'
4
+
5
+ export default [
6
+ {
7
+ ignores: ['dist/**', 'eslint.config.mjs'],
8
+ },
9
+ eslint.configs.recommended,
10
+ ...tseslint.configs.recommended,
11
+ ...tseslint.configs.recommendedTypeChecked,
12
+ {
13
+ files: ['**/*.ts'],
14
+ languageOptions: {
15
+ parserOptions: {
16
+ project: ['./tsconfig.json'],
17
+ tsconfigRootDir: new URL('.', import.meta.url).pathname,
18
+ },
19
+ },
20
+ rules: {
21
+ // 任意: プロジェクトに合わせて調整可能
22
+ },
23
+ },
24
+ prettier,
25
+ ]
package/now.xlsm ADDED
Binary file