@powerhousedao/codegen 6.0.0-dev.198 → 6.0.0-dev.199
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +66 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -177,7 +177,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
177
177
|
"dir": "/home/runner/work/powerhouse/powerhouse/apps/academy",
|
|
178
178
|
"manifest": {
|
|
179
179
|
"name": "@powerhousedao/academy",
|
|
180
|
-
"version": "6.0.0-dev.
|
|
180
|
+
"version": "6.0.0-dev.199",
|
|
181
181
|
"homepage": "https://powerhouse.academy",
|
|
182
182
|
"packageManager": "pnpm@10.9.0",
|
|
183
183
|
"repository": {
|
|
@@ -243,7 +243,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
243
243
|
"manifest": {
|
|
244
244
|
"name": "@powerhousedao/connect",
|
|
245
245
|
"productName": "Powerhouse-Connect",
|
|
246
|
-
"version": "6.0.0-dev.
|
|
246
|
+
"version": "6.0.0-dev.199",
|
|
247
247
|
"description": "Powerhouse Connect",
|
|
248
248
|
"main": "dist/index.html",
|
|
249
249
|
"type": "module",
|
|
@@ -355,7 +355,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
355
355
|
"manifest": {
|
|
356
356
|
"name": "@powerhousedao/switchboard",
|
|
357
357
|
"type": "module",
|
|
358
|
-
"version": "6.0.0-dev.
|
|
358
|
+
"version": "6.0.0-dev.199",
|
|
359
359
|
"main": "dist/index.mjs",
|
|
360
360
|
"exports": {
|
|
361
361
|
".": {
|
|
@@ -436,7 +436,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
436
436
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
437
437
|
"manifest": {
|
|
438
438
|
"name": "@powerhousedao/ph-cli",
|
|
439
|
-
"version": "6.0.0-dev.
|
|
439
|
+
"version": "6.0.0-dev.199",
|
|
440
440
|
"description": "",
|
|
441
441
|
"license": "AGPL-3.0-only",
|
|
442
442
|
"type": "module",
|
|
@@ -466,10 +466,14 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
466
466
|
"@powerhousedao/codegen": "workspace:*",
|
|
467
467
|
"@powerhousedao/common": "workspace:*",
|
|
468
468
|
"@powerhousedao/config": "workspace:*",
|
|
469
|
+
"@powerhousedao/ph-clint": "^0.1.0-dev.21",
|
|
469
470
|
"@powerhousedao/reactor": "workspace:*",
|
|
470
471
|
"@powerhousedao/shared": "workspace:*",
|
|
471
472
|
"@powerhousedao/switchboard": "workspace:*",
|
|
472
473
|
"@renown/sdk": "workspace:*",
|
|
474
|
+
"@mastra/core": "^1.22.0",
|
|
475
|
+
"@mastra/libsql": "^1.7.4",
|
|
476
|
+
"@mastra/memory": "^1.13.1",
|
|
473
477
|
"chalk": "catalog:",
|
|
474
478
|
"change-case": "catalog:",
|
|
475
479
|
"cmd-ts": "catalog:",
|
|
@@ -484,7 +488,8 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
484
488
|
"ts-morph": "catalog:",
|
|
485
489
|
"tsdown": "catalog:",
|
|
486
490
|
"vite": "catalog:",
|
|
487
|
-
"write-package": "catalog:"
|
|
491
|
+
"write-package": "catalog:",
|
|
492
|
+
"zod": "catalog:"
|
|
488
493
|
},
|
|
489
494
|
"devDependencies": {
|
|
490
495
|
"@types/node": "catalog:",
|
|
@@ -498,7 +503,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
498
503
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
499
504
|
"manifest": {
|
|
500
505
|
"name": "ph-cmd",
|
|
501
|
-
"version": "6.0.0-dev.
|
|
506
|
+
"version": "6.0.0-dev.199",
|
|
502
507
|
"description": "",
|
|
503
508
|
"license": "AGPL-3.0-only",
|
|
504
509
|
"type": "module",
|
|
@@ -545,7 +550,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
545
550
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
546
551
|
"manifest": {
|
|
547
552
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
548
|
-
"version": "6.0.0-dev.
|
|
553
|
+
"version": "6.0.0-dev.199",
|
|
549
554
|
"license": "AGPL-3.0-only",
|
|
550
555
|
"repository": {
|
|
551
556
|
"type": "git",
|
|
@@ -592,7 +597,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
592
597
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
593
598
|
"manifest": {
|
|
594
599
|
"name": "@powerhousedao/analytics-engine-core",
|
|
595
|
-
"version": "6.0.0-dev.
|
|
600
|
+
"version": "6.0.0-dev.199",
|
|
596
601
|
"license": "AGPL-3.0-only",
|
|
597
602
|
"repository": {
|
|
598
603
|
"type": "git",
|
|
@@ -626,7 +631,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
626
631
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
627
632
|
"manifest": {
|
|
628
633
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
629
|
-
"version": "6.0.0-dev.
|
|
634
|
+
"version": "6.0.0-dev.199",
|
|
630
635
|
"license": "AGPL-3.0-only",
|
|
631
636
|
"repository": {
|
|
632
637
|
"type": "git",
|
|
@@ -659,7 +664,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
659
664
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
660
665
|
"manifest": {
|
|
661
666
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
662
|
-
"version": "6.0.0-dev.
|
|
667
|
+
"version": "6.0.0-dev.199",
|
|
663
668
|
"license": "AGPL-3.0-only",
|
|
664
669
|
"repository": {
|
|
665
670
|
"type": "git",
|
|
@@ -697,7 +702,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
697
702
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
698
703
|
"manifest": {
|
|
699
704
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
700
|
-
"version": "6.0.0-dev.
|
|
705
|
+
"version": "6.0.0-dev.199",
|
|
701
706
|
"license": "AGPL-3.0-only",
|
|
702
707
|
"repository": {
|
|
703
708
|
"type": "git",
|
|
@@ -743,7 +748,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
743
748
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
744
749
|
"manifest": {
|
|
745
750
|
"name": "@powerhousedao/builder-tools",
|
|
746
|
-
"version": "6.0.0-dev.
|
|
751
|
+
"version": "6.0.0-dev.199",
|
|
747
752
|
"type": "module",
|
|
748
753
|
"license": "AGPL-3.0-only",
|
|
749
754
|
"publishConfig": { "access": "public" },
|
|
@@ -783,7 +788,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
783
788
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
784
789
|
"manifest": {
|
|
785
790
|
"name": "@powerhousedao/codegen",
|
|
786
|
-
"version": "6.0.0-dev.
|
|
791
|
+
"version": "6.0.0-dev.199",
|
|
787
792
|
"license": "AGPL-3.0-only",
|
|
788
793
|
"private": false,
|
|
789
794
|
"type": "module",
|
|
@@ -856,7 +861,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
856
861
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
857
862
|
"manifest": {
|
|
858
863
|
"name": "@powerhousedao/common",
|
|
859
|
-
"version": "6.0.0-dev.
|
|
864
|
+
"version": "6.0.0-dev.199",
|
|
860
865
|
"license": "AGPL-3.0-only",
|
|
861
866
|
"type": "module",
|
|
862
867
|
"files": ["/dist"],
|
|
@@ -908,7 +913,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
908
913
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
909
914
|
"manifest": {
|
|
910
915
|
"name": "@powerhousedao/config",
|
|
911
|
-
"version": "6.0.0-dev.
|
|
916
|
+
"version": "6.0.0-dev.199",
|
|
912
917
|
"description": "",
|
|
913
918
|
"license": "AGPL-3.0-only",
|
|
914
919
|
"private": false,
|
|
@@ -943,7 +948,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
943
948
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
944
949
|
"manifest": {
|
|
945
950
|
"name": "@powerhousedao/design-system",
|
|
946
|
-
"version": "6.0.0-dev.
|
|
951
|
+
"version": "6.0.0-dev.199",
|
|
947
952
|
"description": "",
|
|
948
953
|
"files": ["dist", "theme.css"],
|
|
949
954
|
"type": "module",
|
|
@@ -1095,7 +1100,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1095
1100
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
1096
1101
|
"manifest": {
|
|
1097
1102
|
"name": "document-model",
|
|
1098
|
-
"version": "6.0.0-dev.
|
|
1103
|
+
"version": "6.0.0-dev.199",
|
|
1099
1104
|
"license": "AGPL-3.0-only",
|
|
1100
1105
|
"private": false,
|
|
1101
1106
|
"files": ["dist"],
|
|
@@ -1153,7 +1158,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1153
1158
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
1154
1159
|
"manifest": {
|
|
1155
1160
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
1156
|
-
"version": "6.0.0-dev.
|
|
1161
|
+
"version": "6.0.0-dev.199",
|
|
1157
1162
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
1158
1163
|
"type": "module",
|
|
1159
1164
|
"sideEffects": false,
|
|
@@ -1190,7 +1195,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1190
1195
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
1191
1196
|
"manifest": {
|
|
1192
1197
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
1193
|
-
"version": "6.0.0-dev.
|
|
1198
|
+
"version": "6.0.0-dev.199",
|
|
1194
1199
|
"description": "",
|
|
1195
1200
|
"keywords": [],
|
|
1196
1201
|
"author": "",
|
|
@@ -1304,7 +1309,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1304
1309
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
1305
1310
|
"manifest": {
|
|
1306
1311
|
"name": "@powerhousedao/reactor",
|
|
1307
|
-
"version": "6.0.0-dev.
|
|
1312
|
+
"version": "6.0.0-dev.199",
|
|
1308
1313
|
"description": "",
|
|
1309
1314
|
"repository": {
|
|
1310
1315
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1358,7 +1363,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1358
1363
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
1359
1364
|
"manifest": {
|
|
1360
1365
|
"name": "@powerhousedao/reactor-api",
|
|
1361
|
-
"version": "6.0.0-dev.
|
|
1366
|
+
"version": "6.0.0-dev.199",
|
|
1362
1367
|
"description": "",
|
|
1363
1368
|
"type": "module",
|
|
1364
1369
|
"repository": {
|
|
@@ -1475,7 +1480,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1475
1480
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
1476
1481
|
"manifest": {
|
|
1477
1482
|
"name": "@powerhousedao/reactor-browser",
|
|
1478
|
-
"version": "6.0.0-dev.
|
|
1483
|
+
"version": "6.0.0-dev.199",
|
|
1479
1484
|
"license": "AGPL-3.0-only",
|
|
1480
1485
|
"type": "module",
|
|
1481
1486
|
"repository": {
|
|
@@ -1568,7 +1573,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1568
1573
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
1569
1574
|
"manifest": {
|
|
1570
1575
|
"name": "@powerhousedao/reactor-hypercore",
|
|
1571
|
-
"version": "6.0.0-dev.
|
|
1576
|
+
"version": "6.0.0-dev.199",
|
|
1572
1577
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
1573
1578
|
"repository": {
|
|
1574
1579
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1610,7 +1615,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1610
1615
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
1611
1616
|
"manifest": {
|
|
1612
1617
|
"name": "@powerhousedao/reactor-mcp",
|
|
1613
|
-
"version": "6.0.0-dev.
|
|
1618
|
+
"version": "6.0.0-dev.199",
|
|
1614
1619
|
"description": "MCP server for document model operations in the Powerhouse ecosystem. For document model creation tasks, consider using the document-model-creator agent which provides a more guided experience.",
|
|
1615
1620
|
"type": "module",
|
|
1616
1621
|
"repository": {
|
|
@@ -1665,7 +1670,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1665
1670
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
1666
1671
|
"manifest": {
|
|
1667
1672
|
"name": "@powerhousedao/registry",
|
|
1668
|
-
"version": "6.0.0-dev.
|
|
1673
|
+
"version": "6.0.0-dev.199",
|
|
1669
1674
|
"description": "",
|
|
1670
1675
|
"type": "module",
|
|
1671
1676
|
"repository": {
|
|
@@ -1708,7 +1713,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1708
1713
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
1709
1714
|
"manifest": {
|
|
1710
1715
|
"name": "@renown/sdk",
|
|
1711
|
-
"version": "6.0.0-dev.
|
|
1716
|
+
"version": "6.0.0-dev.199",
|
|
1712
1717
|
"description": "",
|
|
1713
1718
|
"license": "AGPL-3.0-only",
|
|
1714
1719
|
"private": false,
|
|
@@ -1758,7 +1763,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1758
1763
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
1759
1764
|
"manifest": {
|
|
1760
1765
|
"name": "@powerhousedao/shared",
|
|
1761
|
-
"version": "6.0.0-dev.
|
|
1766
|
+
"version": "6.0.0-dev.199",
|
|
1762
1767
|
"type": "module",
|
|
1763
1768
|
"sideEffects": false,
|
|
1764
1769
|
"publishConfig": { "access": "public" },
|
|
@@ -1867,7 +1872,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1867
1872
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
1868
1873
|
"manifest": {
|
|
1869
1874
|
"name": "@powerhousedao/vetra",
|
|
1870
|
-
"version": "6.0.0-dev.
|
|
1875
|
+
"version": "6.0.0-dev.199",
|
|
1871
1876
|
"license": "AGPL-3.0-only",
|
|
1872
1877
|
"type": "module",
|
|
1873
1878
|
"sideEffects": false,
|
|
@@ -2375,7 +2380,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2375
2380
|
"dir": "/home/runner/work/powerhouse/powerhouse/apps/academy",
|
|
2376
2381
|
"manifest": {
|
|
2377
2382
|
"name": "@powerhousedao/academy",
|
|
2378
|
-
"version": "6.0.0-dev.
|
|
2383
|
+
"version": "6.0.0-dev.199",
|
|
2379
2384
|
"homepage": "https://powerhouse.academy",
|
|
2380
2385
|
"packageManager": "pnpm@10.9.0",
|
|
2381
2386
|
"repository": {
|
|
@@ -2441,7 +2446,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2441
2446
|
"manifest": {
|
|
2442
2447
|
"name": "@powerhousedao/connect",
|
|
2443
2448
|
"productName": "Powerhouse-Connect",
|
|
2444
|
-
"version": "6.0.0-dev.
|
|
2449
|
+
"version": "6.0.0-dev.199",
|
|
2445
2450
|
"description": "Powerhouse Connect",
|
|
2446
2451
|
"main": "dist/index.html",
|
|
2447
2452
|
"type": "module",
|
|
@@ -2553,7 +2558,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2553
2558
|
"manifest": {
|
|
2554
2559
|
"name": "@powerhousedao/switchboard",
|
|
2555
2560
|
"type": "module",
|
|
2556
|
-
"version": "6.0.0-dev.
|
|
2561
|
+
"version": "6.0.0-dev.199",
|
|
2557
2562
|
"main": "dist/index.mjs",
|
|
2558
2563
|
"exports": {
|
|
2559
2564
|
".": {
|
|
@@ -2634,7 +2639,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2634
2639
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
2635
2640
|
"manifest": {
|
|
2636
2641
|
"name": "@powerhousedao/ph-cli",
|
|
2637
|
-
"version": "6.0.0-dev.
|
|
2642
|
+
"version": "6.0.0-dev.199",
|
|
2638
2643
|
"description": "",
|
|
2639
2644
|
"license": "AGPL-3.0-only",
|
|
2640
2645
|
"type": "module",
|
|
@@ -2664,10 +2669,14 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2664
2669
|
"@powerhousedao/codegen": "workspace:*",
|
|
2665
2670
|
"@powerhousedao/common": "workspace:*",
|
|
2666
2671
|
"@powerhousedao/config": "workspace:*",
|
|
2672
|
+
"@powerhousedao/ph-clint": "^0.1.0-dev.21",
|
|
2667
2673
|
"@powerhousedao/reactor": "workspace:*",
|
|
2668
2674
|
"@powerhousedao/shared": "workspace:*",
|
|
2669
2675
|
"@powerhousedao/switchboard": "workspace:*",
|
|
2670
2676
|
"@renown/sdk": "workspace:*",
|
|
2677
|
+
"@mastra/core": "^1.22.0",
|
|
2678
|
+
"@mastra/libsql": "^1.7.4",
|
|
2679
|
+
"@mastra/memory": "^1.13.1",
|
|
2671
2680
|
"chalk": "catalog:",
|
|
2672
2681
|
"change-case": "catalog:",
|
|
2673
2682
|
"cmd-ts": "catalog:",
|
|
@@ -2682,7 +2691,8 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2682
2691
|
"ts-morph": "catalog:",
|
|
2683
2692
|
"tsdown": "catalog:",
|
|
2684
2693
|
"vite": "catalog:",
|
|
2685
|
-
"write-package": "catalog:"
|
|
2694
|
+
"write-package": "catalog:",
|
|
2695
|
+
"zod": "catalog:"
|
|
2686
2696
|
},
|
|
2687
2697
|
"devDependencies": {
|
|
2688
2698
|
"@types/node": "catalog:",
|
|
@@ -2696,7 +2706,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2696
2706
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
2697
2707
|
"manifest": {
|
|
2698
2708
|
"name": "ph-cmd",
|
|
2699
|
-
"version": "6.0.0-dev.
|
|
2709
|
+
"version": "6.0.0-dev.199",
|
|
2700
2710
|
"description": "",
|
|
2701
2711
|
"license": "AGPL-3.0-only",
|
|
2702
2712
|
"type": "module",
|
|
@@ -2743,7 +2753,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2743
2753
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
2744
2754
|
"manifest": {
|
|
2745
2755
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
2746
|
-
"version": "6.0.0-dev.
|
|
2756
|
+
"version": "6.0.0-dev.199",
|
|
2747
2757
|
"license": "AGPL-3.0-only",
|
|
2748
2758
|
"repository": {
|
|
2749
2759
|
"type": "git",
|
|
@@ -2790,7 +2800,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2790
2800
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
2791
2801
|
"manifest": {
|
|
2792
2802
|
"name": "@powerhousedao/analytics-engine-core",
|
|
2793
|
-
"version": "6.0.0-dev.
|
|
2803
|
+
"version": "6.0.0-dev.199",
|
|
2794
2804
|
"license": "AGPL-3.0-only",
|
|
2795
2805
|
"repository": {
|
|
2796
2806
|
"type": "git",
|
|
@@ -2824,7 +2834,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2824
2834
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
2825
2835
|
"manifest": {
|
|
2826
2836
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
2827
|
-
"version": "6.0.0-dev.
|
|
2837
|
+
"version": "6.0.0-dev.199",
|
|
2828
2838
|
"license": "AGPL-3.0-only",
|
|
2829
2839
|
"repository": {
|
|
2830
2840
|
"type": "git",
|
|
@@ -2857,7 +2867,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2857
2867
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
2858
2868
|
"manifest": {
|
|
2859
2869
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
2860
|
-
"version": "6.0.0-dev.
|
|
2870
|
+
"version": "6.0.0-dev.199",
|
|
2861
2871
|
"license": "AGPL-3.0-only",
|
|
2862
2872
|
"repository": {
|
|
2863
2873
|
"type": "git",
|
|
@@ -2895,7 +2905,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2895
2905
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
2896
2906
|
"manifest": {
|
|
2897
2907
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
2898
|
-
"version": "6.0.0-dev.
|
|
2908
|
+
"version": "6.0.0-dev.199",
|
|
2899
2909
|
"license": "AGPL-3.0-only",
|
|
2900
2910
|
"repository": {
|
|
2901
2911
|
"type": "git",
|
|
@@ -2941,7 +2951,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2941
2951
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
2942
2952
|
"manifest": {
|
|
2943
2953
|
"name": "@powerhousedao/builder-tools",
|
|
2944
|
-
"version": "6.0.0-dev.
|
|
2954
|
+
"version": "6.0.0-dev.199",
|
|
2945
2955
|
"type": "module",
|
|
2946
2956
|
"license": "AGPL-3.0-only",
|
|
2947
2957
|
"publishConfig": { "access": "public" },
|
|
@@ -2981,7 +2991,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2981
2991
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
2982
2992
|
"manifest": {
|
|
2983
2993
|
"name": "@powerhousedao/codegen",
|
|
2984
|
-
"version": "6.0.0-dev.
|
|
2994
|
+
"version": "6.0.0-dev.199",
|
|
2985
2995
|
"license": "AGPL-3.0-only",
|
|
2986
2996
|
"private": false,
|
|
2987
2997
|
"type": "module",
|
|
@@ -3054,7 +3064,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3054
3064
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
3055
3065
|
"manifest": {
|
|
3056
3066
|
"name": "@powerhousedao/common",
|
|
3057
|
-
"version": "6.0.0-dev.
|
|
3067
|
+
"version": "6.0.0-dev.199",
|
|
3058
3068
|
"license": "AGPL-3.0-only",
|
|
3059
3069
|
"type": "module",
|
|
3060
3070
|
"files": ["/dist"],
|
|
@@ -3106,7 +3116,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3106
3116
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
3107
3117
|
"manifest": {
|
|
3108
3118
|
"name": "@powerhousedao/config",
|
|
3109
|
-
"version": "6.0.0-dev.
|
|
3119
|
+
"version": "6.0.0-dev.199",
|
|
3110
3120
|
"description": "",
|
|
3111
3121
|
"license": "AGPL-3.0-only",
|
|
3112
3122
|
"private": false,
|
|
@@ -3141,7 +3151,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3141
3151
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
3142
3152
|
"manifest": {
|
|
3143
3153
|
"name": "@powerhousedao/design-system",
|
|
3144
|
-
"version": "6.0.0-dev.
|
|
3154
|
+
"version": "6.0.0-dev.199",
|
|
3145
3155
|
"description": "",
|
|
3146
3156
|
"files": ["dist", "theme.css"],
|
|
3147
3157
|
"type": "module",
|
|
@@ -3293,7 +3303,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3293
3303
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
3294
3304
|
"manifest": {
|
|
3295
3305
|
"name": "document-model",
|
|
3296
|
-
"version": "6.0.0-dev.
|
|
3306
|
+
"version": "6.0.0-dev.199",
|
|
3297
3307
|
"license": "AGPL-3.0-only",
|
|
3298
3308
|
"private": false,
|
|
3299
3309
|
"files": ["dist"],
|
|
@@ -3351,7 +3361,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3351
3361
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
3352
3362
|
"manifest": {
|
|
3353
3363
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
3354
|
-
"version": "6.0.0-dev.
|
|
3364
|
+
"version": "6.0.0-dev.199",
|
|
3355
3365
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
3356
3366
|
"type": "module",
|
|
3357
3367
|
"sideEffects": false,
|
|
@@ -3388,7 +3398,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3388
3398
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
3389
3399
|
"manifest": {
|
|
3390
3400
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
3391
|
-
"version": "6.0.0-dev.
|
|
3401
|
+
"version": "6.0.0-dev.199",
|
|
3392
3402
|
"description": "",
|
|
3393
3403
|
"keywords": [],
|
|
3394
3404
|
"author": "",
|
|
@@ -3502,7 +3512,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3502
3512
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
3503
3513
|
"manifest": {
|
|
3504
3514
|
"name": "@powerhousedao/reactor",
|
|
3505
|
-
"version": "6.0.0-dev.
|
|
3515
|
+
"version": "6.0.0-dev.199",
|
|
3506
3516
|
"description": "",
|
|
3507
3517
|
"repository": {
|
|
3508
3518
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3556,7 +3566,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3556
3566
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
3557
3567
|
"manifest": {
|
|
3558
3568
|
"name": "@powerhousedao/reactor-api",
|
|
3559
|
-
"version": "6.0.0-dev.
|
|
3569
|
+
"version": "6.0.0-dev.199",
|
|
3560
3570
|
"description": "",
|
|
3561
3571
|
"type": "module",
|
|
3562
3572
|
"repository": {
|
|
@@ -3673,7 +3683,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3673
3683
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
3674
3684
|
"manifest": {
|
|
3675
3685
|
"name": "@powerhousedao/reactor-browser",
|
|
3676
|
-
"version": "6.0.0-dev.
|
|
3686
|
+
"version": "6.0.0-dev.199",
|
|
3677
3687
|
"license": "AGPL-3.0-only",
|
|
3678
3688
|
"type": "module",
|
|
3679
3689
|
"repository": {
|
|
@@ -3766,7 +3776,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3766
3776
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
3767
3777
|
"manifest": {
|
|
3768
3778
|
"name": "@powerhousedao/reactor-hypercore",
|
|
3769
|
-
"version": "6.0.0-dev.
|
|
3779
|
+
"version": "6.0.0-dev.199",
|
|
3770
3780
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
3771
3781
|
"repository": {
|
|
3772
3782
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3808,7 +3818,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3808
3818
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
3809
3819
|
"manifest": {
|
|
3810
3820
|
"name": "@powerhousedao/reactor-mcp",
|
|
3811
|
-
"version": "6.0.0-dev.
|
|
3821
|
+
"version": "6.0.0-dev.199",
|
|
3812
3822
|
"description": "MCP server for document model operations in the Powerhouse ecosystem. For document model creation tasks, consider using the document-model-creator agent which provides a more guided experience.",
|
|
3813
3823
|
"type": "module",
|
|
3814
3824
|
"repository": {
|
|
@@ -3863,7 +3873,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3863
3873
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
3864
3874
|
"manifest": {
|
|
3865
3875
|
"name": "@powerhousedao/registry",
|
|
3866
|
-
"version": "6.0.0-dev.
|
|
3876
|
+
"version": "6.0.0-dev.199",
|
|
3867
3877
|
"description": "",
|
|
3868
3878
|
"type": "module",
|
|
3869
3879
|
"repository": {
|
|
@@ -3906,7 +3916,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3906
3916
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
3907
3917
|
"manifest": {
|
|
3908
3918
|
"name": "@renown/sdk",
|
|
3909
|
-
"version": "6.0.0-dev.
|
|
3919
|
+
"version": "6.0.0-dev.199",
|
|
3910
3920
|
"description": "",
|
|
3911
3921
|
"license": "AGPL-3.0-only",
|
|
3912
3922
|
"private": false,
|
|
@@ -3956,7 +3966,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3956
3966
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
3957
3967
|
"manifest": {
|
|
3958
3968
|
"name": "@powerhousedao/shared",
|
|
3959
|
-
"version": "6.0.0-dev.
|
|
3969
|
+
"version": "6.0.0-dev.199",
|
|
3960
3970
|
"type": "module",
|
|
3961
3971
|
"sideEffects": false,
|
|
3962
3972
|
"publishConfig": { "access": "public" },
|
|
@@ -4065,7 +4075,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4065
4075
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
4066
4076
|
"manifest": {
|
|
4067
4077
|
"name": "@powerhousedao/vetra",
|
|
4068
|
-
"version": "6.0.0-dev.
|
|
4078
|
+
"version": "6.0.0-dev.199",
|
|
4069
4079
|
"license": "AGPL-3.0-only",
|
|
4070
4080
|
"type": "module",
|
|
4071
4081
|
"sideEffects": false,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["readdirSync","join","path","fs","fs"],"sources":["../src/codegen/utils.ts","../src/codegen/generate.ts","../src/codegen/kysely.ts","../src/codegen/migrate.ts","../src/create-lib/checkout-project.ts","../src/create-lib/create-project.ts","../src/ts-morph-generator/core/FileGenerator.ts","../src/ts-morph-generator/core/ReducerGenerator.ts","../src/ts-morph-generator/utilities/DeclarationManager.ts","../src/ts-morph-generator/utilities/DirectoryManager.ts","../src/ts-morph-generator/utilities/ImportManager.ts","../src/ts-morph-generator/core/TSMorphCodeGenerator.ts"],"sourcesContent":["import type {\n DocumentModelDocument,\n DocumentModelGlobalState,\n} from \"@powerhousedao/shared/document-model\";\nimport { documentModelReducer } from \"@powerhousedao/shared/document-model\";\nimport { baseLoadFromFile } from \"document-model/node\";\nimport { readFile } from \"node:fs/promises\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelGlobalState> {\n let documentModel: DocumentModelGlobalState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\") || path.endsWith(\".phd\")) {\n const file = await baseLoadFromFile(path, documentModelReducer);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = await readFile(path, \"utf-8\");\n const parsedData = JSON.parse(data) as DocumentModelDocument;\n if (\"state\" in parsedData) {\n documentModel = parsedData.state.global;\n } else {\n documentModel = parsedData;\n }\n } else {\n throw new Error(\"File type not supported. Must be zip, phd, or json.\");\n }\n return documentModel;\n } catch (error) {\n throw (error as { code?: string }).code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n","import { type DocumentModelGlobalState } from \"@powerhousedao/shared/document-model\";\nimport type { ProcessorApps } from \"@powerhousedao/shared/processors\";\nimport { kebabCase } from \"change-case\";\nimport {\n tsMorphGenerateApp,\n tsMorphGenerateDocumentEditor,\n tsMorphGenerateDocumentModel,\n tsMorphGenerateProcessor,\n tsMorphGenerateSubgraph,\n} from \"file-builders\";\nimport { readdirSync } from \"node:fs\";\nimport {\n filter,\n isDefined,\n isIncludedIn,\n isTruthy,\n map,\n pipe,\n prop,\n unique,\n} from \"remeda\";\nimport type { Project } from \"ts-morph\";\nimport {\n getAppMetadata,\n getEditorMetadata,\n getOrCreateDirectory,\n getProcessorMetadata,\n getSubgraphMetadata,\n loadDocumentModelInDir,\n} from \"utils\";\nimport { loadDocumentModel } from \"./utils.js\";\n\nexport async function generateDocumentModel(\n documentModelState: DocumentModelGlobalState,\n project: Project,\n) {\n await tsMorphGenerateDocumentModel(documentModelState, project);\n}\n\n/* Runs generate for each document model json file found in the project's `document-models` directory */\nexport async function generateAllDocumentModels(project: Project) {\n const { directory: documentModelsDir } = getOrCreateDirectory(\n project,\n \"document-models\",\n );\n const documentModelsDirPath = documentModelsDir.getPath();\n const documentModelStateFiles = pipe(\n readdirSync(documentModelsDirPath, { withFileTypes: true }),\n map(loadDocumentModelInDir),\n filter(isDefined),\n );\n\n for (const documentModelState of documentModelStateFiles) {\n await generateDocumentModel(documentModelState, project);\n }\n}\nexport async function generateFromFile(filePath: string, project: Project) {\n // load document model spec from file\n const documentModelState = await loadDocumentModel(filePath);\n\n // delegate to shared generation function\n await generateDocumentModel(documentModelState, project);\n}\n\ntype GenerateEditorArgs = {\n editorName: string;\n documentTypes: string[];\n editorId?: string;\n editorDirName?: string;\n};\nexport async function generateEditor(\n args: GenerateEditorArgs,\n project: Project,\n) {\n const {\n editorName,\n documentTypes,\n editorId: editorIdArg,\n editorDirName,\n } = args;\n\n if (documentTypes.length > 1) {\n throw new Error(\"Multiple document types are not supported yet\");\n }\n\n const documentModelId = documentTypes[0];\n const editorId = editorIdArg || kebabCase(editorName);\n const editorDir = editorDirName || kebabCase(editorName);\n\n await tsMorphGenerateDocumentEditor({\n project,\n editorDir,\n documentModelId,\n editorName,\n editorId,\n });\n}\n\n/* Runs generate for all editors found in the project's `editors` directory.\n * Note: we intentionally filter out editors with the document type \"powerhouse/document-drive\".\n * These are handled separately by the `generateAllApps` function.\n */\nexport async function generateAllEditors(project: Project) {\n const { directory: editorsDir } = getOrCreateDirectory(project, \"editors\");\n\n /* An editor's `id`, `name`, and `documentTypes` args can be found in the `module.ts` file */\n const editorsToAdd = pipe(\n editorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getEditorMetadata(project, dirName)),\n filter(isTruthy),\n filter(\n ({ documentTypes }) =>\n !isIncludedIn(\"powerhouse/document-drive\", documentTypes),\n ),\n );\n\n for (const editorToAdd of editorsToAdd) {\n const {\n name: editorName,\n id: editorId,\n dirName: editorDirName,\n documentTypes,\n } = editorToAdd;\n\n await generateEditor(\n {\n editorName,\n editorId,\n editorDirName,\n documentTypes,\n },\n project,\n );\n }\n}\n\ntype GenerateAppArgs = {\n appName: string;\n appId?: string;\n allowedDocumentTypes?: string[];\n isDragAndDropEnabled?: boolean;\n appDirName?: string;\n};\nexport async function generateApp(args: GenerateAppArgs, project: Project) {\n const {\n appName,\n appId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n appDirName,\n } = args;\n\n await tsMorphGenerateApp({\n project,\n editorDir: appDirName || kebabCase(appName),\n editorName: appName,\n editorId: appId ?? kebabCase(appName),\n allowedDocumentModelIds: allowedDocumentTypes ?? [],\n isDragAndDropEnabled: isDragAndDropEnabled ?? true,\n });\n}\n\n/* Runs generate for all apps found in the project's `editors` directory.\n * Note: we intentionally filter out editors which do not have the document type \"powerhouse/document-drive\".\n * These are handled separately by the `generateAllEditors` function.\n */\nexport async function generateAllApps(project: Project) {\n const { directory: editorsDir } = getOrCreateDirectory(project, \"editors\");\n\n /* An editor's `id`, `name`, and `documentTypes` args can be found in the `module.ts` file */\n const appsToAdd = pipe(\n editorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getAppMetadata(project, dirName)),\n filter(isTruthy),\n );\n\n for (const appToAdd of appsToAdd) {\n const {\n name: appName,\n id: appId,\n dirName: appDirName,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n } = appToAdd;\n await generateApp(\n {\n appName,\n appDirName,\n appId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n },\n project,\n );\n }\n}\nexport async function generateSubgraph(subgraphName: string, project: Project) {\n await tsMorphGenerateSubgraph({ subgraphName, project });\n}\n\n/* Runs generate for each directory found in the project's `subgraphs` directory */\nexport async function generateAllSubgraphs(project: Project) {\n const { directory: subgraphsDir } = getOrCreateDirectory(\n project,\n \"subgraphs\",\n );\n /* The subgraph's name is found in the `index.ts` file */\n const subgraphNames = pipe(\n subgraphsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getSubgraphMetadata(project, dirName)),\n map(prop(\"subgraphName\")),\n filter(isDefined),\n unique(),\n );\n for (const subgraphName of subgraphNames) {\n await generateSubgraph(subgraphName, project);\n }\n}\n\nexport async function generateProcessor(\n args: {\n processorName: string;\n processorType: \"analytics\" | \"relationalDb\";\n processorApps: ProcessorApps;\n documentTypes: string[];\n },\n project: Project,\n) {\n return await tsMorphGenerateProcessor({\n project,\n ...args,\n });\n}\n\n/* Runs generate for each directory found in the project's `processors` directory */\nexport async function generateAllProcessors(project: Project) {\n const { directory: processorsDir } = getOrCreateDirectory(\n project,\n \"processors\",\n );\n const processorsToGenerate = pipe(\n processorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getProcessorMetadata(project, dirName)),\n );\n\n for (const processorArgs of processorsToGenerate) {\n await generateProcessor(processorArgs, project);\n }\n}\n\n/* Runs each module type's generateAll{moduleType} function for the current project */\nexport async function generateAll(project: Project) {\n await generateAllDocumentModels(project);\n await generateAllEditors(project);\n await generateAllApps(project);\n await generateAllSubgraphs(project);\n await generateAllProcessors(project);\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { join, resolve } from \"node:path\";\n\nfunction getKyselyPgLiteBin(): string {\n const require = createRequire(import.meta.url);\n\n const paths = require.resolve.paths(\"kysely-pglite\");\n if (paths) {\n for (const basePath of paths) {\n const pkgRoot = join(basePath, \"kysely-pglite\");\n const binPath = join(pkgRoot, \"bin/run.js\");\n\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n }\n\n throw new Error(\"Could not find kysely-pglite/bin/run.js\");\n}\n\nexport interface IOptions {\n migrationFile: string;\n schemaFile?: string;\n}\n\nfunction runCommand(\n command: string,\n args: string[],\n cwd?: string,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport async function generateDBSchema({\n migrationFile,\n schemaFile,\n}: IOptions) {\n const outFile = schemaFile ?? resolve(migrationFile, \"../schema.ts\");\n\n try {\n const kyselyBinPath = getKyselyPgLiteBin();\n // Use kysely-pglite CLI to handle TypeScript compilation and module resolution\n await runCommand(\n \"node\",\n [kyselyBinPath, migrationFile, \"--outFile\", outFile],\n process.cwd(),\n );\n\n console.log(`Schema types generated at ${outFile}`);\n } catch (error) {\n console.error(\"Error running migration:\", error);\n }\n}\n","import {\n VERSIONED_DEPENDENCIES,\n VERSIONED_DEV_DEPENDENCIES,\n} from \"@powerhousedao/shared/clis\";\nimport console from \"console\";\nimport {\n externalDependencies,\n externalDevDependencies,\n makePackageJsonExports,\n packageScripts,\n writeAllGeneratedProjectFiles,\n} from \"file-builders\";\nimport { cpSync, mkdirSync, readdirSync, rmSync, statSync } from \"fs\";\nimport npmFetch from \"npm-registry-fetch\";\nimport { join } from \"path\";\nimport { readPackage } from \"read-pkg\";\nimport {\n filter,\n fromKeys,\n isTruthy,\n keys,\n map,\n mapValues,\n merge,\n omit,\n pipe,\n prop,\n} from \"remeda\";\nimport type { Project } from \"ts-morph\";\nimport { buildTsMorphProject } from \"utils\";\nimport { updatePackage } from \"write-package\";\nimport { generateAll } from \"./generate.js\";\n\n/* Uses the npm cli's fetch function to get the version for a specified tag */\nexport async function getFullyQualifiedWorkspacePackageVersion(\n versionOrTag: string,\n) {\n const isTag =\n versionOrTag === \"latest\" ||\n versionOrTag === \"staging\" ||\n versionOrTag === \"dev\";\n\n if (!isTag) return versionOrTag;\n const result = (await npmFetch.json(\n `${WORKSPACE_PACKAGES[0].manifest.name!}`,\n )) as { \"dist-tags\": Record<\"latest\" | \"staging\" | \"dev\", string> };\n return result[\"dist-tags\"][versionOrTag];\n}\n\nexport function fixLegacyImportPaths(\n project: Project,\n packageName: string | undefined,\n) {\n if (!packageName) {\n console.error(\"No package name found in package.json.\");\n return;\n }\n const sourceFiles = project.getSourceFiles();\n for (const sourceFile of sourceFiles) {\n const importStatements = sourceFile.getImportDeclarations();\n for (const importStatement of importStatements) {\n const namedImports = map(\n importStatement.getNamedImports(),\n (importSpecifier) => importSpecifier.getText(),\n );\n const moduleSpecifier = importStatement.getModuleSpecifier();\n const moduleSpecifierText = moduleSpecifier.getLiteralText();\n // remove usage of the old `package-name/` style paths\n if (moduleSpecifierText.includes(packageName)) {\n moduleSpecifier.setLiteralValue(\n moduleSpecifierText.replace(`${packageName}/`, \"\"),\n );\n }\n // I saw this invalid import enough that it seemed worthwhile to fix it here\n if (namedImports.includes(\"generateMock\")) {\n moduleSpecifier.setLiteralValue(\"document-model\");\n }\n // attempt to fix absolute import paths for document models like `../../../document-models/model/something/something.js`\n // these don't work anymore with the versioned document models, since the absolute file paths are different\n const match = moduleSpecifierText.match(\n /^(\\.\\.\\/)+document-models\\/([^/]+)(?!\\/v\\d+(?:\\/|$))(?:\\/.*)?$/,\n );\n\n if (match) {\n moduleSpecifier.setLiteralValue(`document-models/${match[2]}`);\n }\n }\n }\n}\n\nexport async function migrate(version: string, projectDir = process.cwd()) {\n const fullyQualifiedVersion =\n await getFullyQualifiedWorkspacePackageVersion(version);\n\n const packageJson = await readPackage({ cwd: projectDir });\n const exports = makePackageJsonExports();\n const scripts = merge(packageJson.scripts, packageScripts);\n const workspacePackageNames = filter(\n map(WORKSPACE_PACKAGES, prop(\"manifest\", \"name\")),\n isTruthy,\n );\n const projectDependencyNames = [\n ...VERSIONED_DEPENDENCIES,\n ...keys(externalDependencies),\n ];\n const projectDevDependencyNames = [\n ...VERSIONED_DEV_DEPENDENCIES,\n ...keys(externalDevDependencies),\n ];\n const dependencies = pipe(\n packageJson.dependencies ?? {},\n // remove dev dependencies if they are in here\n omit(projectDevDependencyNames),\n merge({\n // use the fully qualified version we just got for these\n ...fromKeys(VERSIONED_DEPENDENCIES, () => fullyQualifiedVersion),\n // use the versions defined for the other deps we need to control\n ...externalDependencies,\n }),\n // use the fully qualified version for other workspace deps the user may have added\n mapValues((value, key) =>\n workspacePackageNames.includes(key) ? fullyQualifiedVersion : value,\n ),\n );\n const devDependencies = pipe(\n packageJson.devDependencies ?? {},\n omit(projectDependencyNames),\n merge({\n ...fromKeys(VERSIONED_DEV_DEPENDENCIES, () => fullyQualifiedVersion),\n ...externalDevDependencies,\n }),\n mapValues((value, key) =>\n workspacePackageNames.includes(key) ? fullyQualifiedVersion : value,\n ),\n );\n console.log(\"Updating package.json...\");\n await updatePackage(projectDir, {\n exports,\n scripts,\n dependencies,\n devDependencies,\n });\n\n console.log(\"Overwriting project root files...\");\n await writeAllGeneratedProjectFiles(projectDir);\n console.log(\"Moving unversioned document models...\");\n moveLegacyDocumentModels(projectDir);\n const project = buildTsMorphProject(projectDir);\n console.log(\"Fixing legacy import paths...\");\n fixLegacyImportPaths(project, packageJson.name);\n console.log(\"Re-generating code...\");\n await generateAll(project);\n await project.save();\n}\n\nfunction moveLegacyDocumentModels(projectDir: string) {\n const fileNamesToDelete = [\n \"actions.ts\",\n \"hooks.ts\",\n \"module.ts\",\n \"index.ts\",\n \"utils.ts\",\n \"schema.graphql\",\n ];\n const dirNamesToCopy = [\"src\", \"gen\"];\n const dirs = pipe(\n readdirSync(join(projectDir, \"document-models\"), { withFileTypes: true }),\n filter((entry) => entry.isDirectory()),\n filter(\n (dir) =>\n statSync(join(dir.parentPath, dir.name, `${dir.name}.json`), {\n throwIfNoEntry: false,\n })?.isFile() ?? false,\n ),\n map((dir) => join(dir.parentPath, dir.name)),\n );\n\n for (const dirPath of dirs) {\n for (const name of fileNamesToDelete) {\n const filePath = join(dirPath, name);\n rmSync(filePath, { force: true });\n }\n const versionDirPath = join(dirPath, \"v1\");\n const versionDirExists =\n statSync(versionDirPath, { throwIfNoEntry: false })?.isDirectory() ??\n false;\n if (!versionDirExists) {\n mkdirSync(versionDirPath);\n }\n for (const dirName of dirNamesToCopy) {\n const srcDirPath = join(dirPath, dirName);\n const srcDirExists =\n statSync(srcDirPath, { throwIfNoEntry: false })?.isDirectory() ?? false;\n if (!srcDirExists) continue;\n const destDirPath = join(versionDirPath, dirName);\n cpSync(srcDirPath, destDirPath, {\n recursive: true,\n force: false,\n errorOnExist: false,\n });\n rmSync(srcDirPath, {\n force: true,\n recursive: true,\n });\n }\n }\n}\n","import path from \"node:path\";\nimport { runCmd } from \"@powerhousedao/shared/clis\";\n/**\n * Clones a git repository and returns the path to the cloned project.\n * @param repositoryUrl - The URL of the git repository to clone\n * @returns The absolute path to the cloned project directory\n */\nexport function cloneRepository(repositoryUrl: string): string {\n try {\n console.log(\n \"\\x1b[33m\",\n `Cloning repository from ${repositoryUrl}...`,\n \"\\x1b[0m\",\n );\n runCmd(`git clone ${repositoryUrl}`);\n\n // Extract project name from repository URL\n // e.g., https://github.com/org/repo.git -> repo\n const repoName = repositoryUrl\n .split(\"/\")\n .pop()\n ?.replace(/\\.git$/, \"\");\n\n if (!repoName) {\n throw new Error(\"Could not determine project name from repository URL\");\n }\n\n const projectPath = path.join(process.cwd(), repoName);\n return projectPath;\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n\n/**\n * Installs dependencies in a project directory using the specified package manager.\n * @param projectPath - The absolute path to the project directory\n * @param packageManager - The package manager to use (npm, pnpm, yarn, bun)\n */\nexport function installDependencies(\n projectPath: string,\n packageManager: string,\n): void {\n try {\n process.chdir(projectPath);\n\n console.log(\n \"\\x1b[34m\",\n `Installing dependencies with ${packageManager}...`,\n \"\\x1b[0m\",\n );\n runCmd(`${packageManager} install --loglevel error`);\n\n console.log(\"\\x1b[32m\", \"Dependencies installed successfully!\", \"\\x1b[0m\");\n console.log();\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n","import { runCmd, writeFileEnsuringDir } from \"@powerhousedao/shared/clis\";\nimport chalk from \"chalk\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport { gitIgnoreTemplate } from \"templates\";\nimport { runPrettier } from \"utils\";\nimport {\n writeAllGeneratedProjectFiles,\n writeProjectRootFiles,\n} from \"file-builders\";\ntype CreateProjectArgs = {\n name: string;\n packageManager: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n skipGitInit?: boolean;\n skipInstall?: boolean;\n};\nexport async function createProject({\n name,\n packageManager,\n tag,\n version,\n remoteDrive,\n skipGitInit,\n skipInstall,\n}: CreateProjectArgs) {\n const appPath = path.join(process.cwd(), name);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.error(\n `⛔ The folder \"${name}\" already exists in the current directory, please give it another name.`,\n );\n } else {\n console.error(err);\n }\n process.exit(1);\n }\n\n try {\n // Create a new directory for the project\n console.log(chalk.blue(`▶️ Creating directory for project \"${name}\"...\\n`));\n const appPath = path.join(process.cwd(), name);\n process.chdir(appPath);\n console.log(chalk.green(`✅ Project directory created\\n`));\n\n await writeFileEnsuringDir(\".gitignore\", gitIgnoreTemplate);\n if (!skipGitInit) {\n // Create a .gitignore file, then initialize the git repository\n console.log(chalk.blue(`▶️ Initializing git repository...\\n`));\n runCmd(`git init`);\n console.log(chalk.green(`\\n✅ Git repository initialized\\n`));\n }\n\n // Write the boilerplate files for the project\n console.log(chalk.blue(`▶️ Creating project boilerplate files...\\n`));\n await writeProjectRootFiles({ name, tag, version, remoteDrive });\n await writeAllGeneratedProjectFiles();\n console.log(chalk.green(`✅ Project boilerplate files created\\n`));\n\n if (!skipInstall) {\n // Install the project dependencies with the specified package manager\n console.log(\n chalk.blue(\n `▶️ Installing project dependencies with ${packageManager}...\\n`,\n ),\n );\n runCmd(`${packageManager} install`);\n console.log(chalk.green(`\\n✅ Project dependencies installed\\n`));\n }\n\n // Use the installed version of `prettier` to format the generated code\n console.log(chalk.blue(`▶️ Formatting boilerplate project files...\\n`));\n await runPrettier();\n console.log(chalk.green(`✅ Boilerplate files formatted\\n`));\n\n // Project creation complete\n console.log(chalk.bold(`🎉 Successfully created project \"${name}\" 🎉\\n`));\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n}\n","import type { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport type { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport type { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { GenerationContext } from \"./GenerationContext.js\";\n\nexport abstract class FileGenerator {\n constructor(\n protected importManager: ImportManager,\n protected directoryManager: DirectoryManager,\n protected declarationManager: DeclarationManager,\n ) {}\n\n abstract generate(context: GenerationContext): Promise<void>;\n}\n","import { camelCase, kebabCase, pascalCase } from \"change-case\";\nimport type { OperationErrorSpecification } from \"@powerhousedao/shared/document-model\";\nimport type {\n MethodDeclaration,\n ObjectLiteralExpression,\n SourceFile,\n} from \"ts-morph\";\nimport { SyntaxKind, VariableDeclarationKind } from \"ts-morph\";\nimport { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodegenOperation,\n GenerationContext,\n} from \"./GenerationContext.js\";\n\nexport class ReducerGenerator extends FileGenerator {\n async generate(context: GenerationContext): Promise<void> {\n // Skip if no actions to generate\n if (context.operations.length === 0) return;\n\n const filePath = this.getOutputPath(context);\n const sourceFile = await this.directoryManager.createSourceFile(\n context.project,\n filePath,\n );\n\n const packageName = context.packageName;\n // Reducer-specific import logic\n const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const typeImportPath = `${packageName}/document-models/${kebabCase(context.docModel.name)}`;\n\n // Import management (shared utility)\n this.importManager.replaceImportByName(\n sourceFile,\n typeImportName,\n typeImportPath,\n true,\n );\n\n // AST logic (specific to reducers)\n this.createReducerObject(sourceFile, typeImportName, context);\n\n // Detect and import error classes used in the actual reducer code (after generation)\n this.addErrorImports(sourceFile, context);\n\n await sourceFile.save();\n }\n\n private static getDefaultReducerCode(methodName: string): string[] {\n return [\n `// TODO: Implement \"${methodName}\" reducer`,\n `throw new Error('Reducer \"${methodName}\" not yet implemented');`,\n ];\n }\n\n private addErrorImports(\n sourceFile: SourceFile,\n context: GenerationContext,\n ): void {\n // Collect all errors from all operations\n const allErrors: OperationErrorSpecification[] = [];\n\n context.operations.forEach((operation) => {\n if (Array.isArray(operation.errors)) {\n operation.errors\n .filter((error) => error.name)\n .forEach((error) => {\n // Deduplicate errors by name\n if (!allErrors.find((e) => e.name === error.name)) {\n allErrors.push(error);\n }\n });\n }\n });\n\n if (allErrors.length === 0) return;\n\n // Analyze the actual source file content to find which errors are used\n const sourceFileContent = sourceFile.getFullText();\n const usedErrors = new Set<string>();\n\n allErrors.forEach((error) => {\n // Check if error class name is mentioned anywhere in the source file\n // Look for patterns like \"new ErrorName\" or \"throw ErrorName\" or \"ErrorName(\"\n const errorPattern = new RegExp(`\\\\b${error.name}\\\\b`, \"g\");\n if (errorPattern.test(sourceFileContent)) {\n usedErrors.add(error.name!);\n }\n });\n\n // Add imports for used errors (only if they're not already imported)\n if (usedErrors.size > 0) {\n const errorImportPath = `../../gen/${kebabCase(context.module.name)}/error.js`;\n const errorClassNames = Array.from(usedErrors);\n\n // Check if imports already exist to avoid duplicates\n const existingImports = sourceFile.getImportDeclarations();\n const existingErrorImport = existingImports.find(\n (importDecl) =>\n importDecl.getModuleSpecifierValue() === errorImportPath,\n );\n\n if (existingErrorImport) {\n // Get already imported error names\n const existingNamedImports = existingErrorImport\n .getNamedImports()\n .map((namedImport) => namedImport.getName());\n\n // Only import errors that aren't already imported\n const newErrorsToImport = errorClassNames.filter(\n (errorName) => !existingNamedImports.includes(errorName),\n );\n\n if (newErrorsToImport.length > 0) {\n // Add new named imports to existing import declaration\n existingErrorImport.addNamedImports(newErrorsToImport);\n }\n } else {\n // Create new import declaration\n this.importManager.addNamedImports(\n sourceFile,\n errorClassNames,\n errorImportPath,\n );\n }\n }\n }\n\n private getOutputPath(context: GenerationContext): string {\n return this.directoryManager.getReducerPath(\n context.rootDir,\n context.docModel.name,\n context.module.name,\n );\n }\n\n private createReducerObject(\n sourceFile: SourceFile,\n typeName: string,\n context: GenerationContext,\n ): void {\n const { operations, forceUpdate } = context;\n const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const legacyReducerVar = sourceFile.getVariableDeclaration(\"reducer\");\n if (legacyReducerVar) {\n this.declarationManager.renameVariable(\n sourceFile,\n \"reducer\",\n operationHandlersObjectName,\n );\n }\n let reducerVar = sourceFile.getVariableDeclaration(\n operationHandlersObjectName,\n );\n if (!reducerVar) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: operationHandlersObjectName,\n type: typeName,\n initializer: \"{}\",\n },\n ],\n });\n reducerVar = sourceFile.getVariableDeclarationOrThrow(\n operationHandlersObjectName,\n );\n } else {\n // Ensure correct type\n const typeNode = reducerVar.getTypeNode();\n if (!typeNode || typeNode.getText() !== typeName) {\n reducerVar.setType(typeName);\n }\n }\n\n const initializer = reducerVar.getInitializerIfKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n\n for (const operation of operations) {\n this.addReducerMethod(initializer, operation, forceUpdate);\n }\n }\n\n private addReducerMethod(\n objectLiteral: ObjectLiteralExpression,\n operation: CodegenOperation,\n forceUpdate = false,\n ): void {\n const actionName = camelCase(operation.name ?? \"\");\n if (!actionName) return;\n\n const methodName = `${actionName}Operation`;\n\n const reducerCode = operation.reducer?.trim();\n\n const existingReducer = objectLiteral\n .getProperty(methodName)\n ?.asKind(SyntaxKind.MethodDeclaration);\n\n // if reducer already exists but forceUpdate is true, update it\n if (existingReducer) {\n if (forceUpdate && reducerCode) {\n existingReducer.setBodyText(\"\");\n this.setReducerMethodCode(existingReducer, reducerCode);\n }\n return;\n }\n\n // if reducer doesn't exist, create it and set the code with the default code if no code is provided\n const method = objectLiteral.addMethod({\n name: methodName,\n parameters: [{ name: \"state\" }, { name: \"action\" }],\n });\n this.setReducerMethodCode(method, reducerCode);\n }\n\n private setReducerMethodCode(reducer: MethodDeclaration, code?: string) {\n reducer.addStatements(\n code ? [code] : ReducerGenerator.getDefaultReducerCode(reducer.getName()),\n );\n }\n}\n","import type { SourceFile } from \"ts-morph\";\n\nexport class DeclarationManager {\n renameVariable(\n sourceFile: SourceFile,\n oldName: string,\n newName: string,\n ): void {\n const variable = sourceFile.getVariableDeclaration(oldName);\n\n if (variable) {\n variable.getNameNode().replaceWithText(newName);\n sourceFile.saveSync();\n }\n }\n}\n","import type { PHProjectDirectories } from \"@powerhousedao/codegen\";\nimport { kebabCase, pascalCase } from \"change-case\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport type { Project, SourceFile } from \"ts-morph\";\n\nexport class DirectoryManager {\n private directories: Required<PHProjectDirectories> = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n\n constructor(directories: PHProjectDirectories = {}) {\n this.directories = {\n ...this.directories,\n ...directories,\n };\n }\n async ensureExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n\n // Path builders for different file types\n getReducerPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"reducers\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getActionsPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"actions\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getComponentPath(\n rootDir: string,\n docModelName: string,\n componentName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"components\",\n `${pascalCase(componentName)}.tsx`,\n );\n }\n\n getTypesPath(rootDir: string, docModelName: string): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"types.ts\",\n );\n }\n\n async createSourceFile(\n project: Project,\n filePath: string,\n ): Promise<SourceFile> {\n await this.ensureExists(path.dirname(filePath));\n return (\n project.addSourceFileAtPathIfExists(filePath) ??\n project.createSourceFile(filePath, \"\", { overwrite: false })\n );\n }\n}\n","import type { ImportDeclaration, SourceFile } from \"ts-morph\";\n\nexport interface ImportSpec {\n moduleSpecifier: string;\n namedImports?: string[];\n defaultImport?: string;\n isTypeOnly?: boolean;\n}\n\nexport class ImportManager {\n addImport(sourceFile: SourceFile, spec: ImportSpec): void {\n // Check if import already exists\n const existing = sourceFile.getImportDeclaration(\n (imp) => imp.getFullText() === spec.moduleSpecifier,\n );\n if (existing) {\n this.mergeImports(existing, spec);\n } else {\n sourceFile.addImportDeclaration(spec);\n }\n }\n\n addTypeImport(sourceFile: SourceFile, typeName: string, path: string): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: [typeName],\n isTypeOnly: true,\n });\n }\n\n addNamedImports(\n sourceFile: SourceFile,\n imports: string[],\n path: string,\n ): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: imports,\n });\n }\n\n private mergeImports(\n existingImport: ImportDeclaration,\n newSpec: ImportSpec,\n ): void {\n // Logic to merge named imports if they don't already exist\n if (newSpec.namedImports) {\n const existingNames = existingImport\n .getNamedImports()\n .map((ni) => ni.getName());\n const newNames = newSpec.namedImports.filter(\n (name) => !existingNames.includes(name),\n );\n\n if (newNames.length > 0) {\n existingImport.addNamedImports(newNames);\n }\n }\n }\n\n replaceImportByName(\n sourceFile: SourceFile,\n name: string,\n path: string,\n isTypeOnly = false,\n ): void {\n const existing = sourceFile\n .getImportDeclarations()\n .filter((imp) =>\n imp.getNamedImports().find((ni) => ni.getName() === name),\n );\n existing.forEach((imp) => imp.remove());\n sourceFile.addImportDeclaration({\n moduleSpecifier: path,\n namedImports: [name],\n isTypeOnly,\n });\n sourceFile.saveSync();\n }\n}\n","import type {\n DocumentModelGlobalState,\n ModuleSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport fs from \"fs/promises\";\nimport { Project } from \"ts-morph\";\nimport { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodeGeneratorOptions,\n CodegenOperation,\n GenerationContext,\n PHProjectDirectories,\n} from \"./GenerationContext.js\";\nimport { ReducerGenerator } from \"./ReducerGenerator.js\";\n\nexport class TSMorphCodeGenerator {\n private project = new Project();\n private generators = new Map<string, FileGenerator>();\n private directories: PHProjectDirectories = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n private forceUpdate = false;\n\n constructor(\n private rootDir: string,\n private docModels: DocumentModelGlobalState[],\n private packageName: string,\n options: CodeGeneratorOptions = { directories: {}, forceUpdate: false },\n ) {\n this.directories = {\n ...this.directories,\n ...options.directories,\n };\n this.packageName = packageName;\n this.forceUpdate = options.forceUpdate ?? false;\n\n this.setupGenerators();\n }\n\n private setupGenerators(): void {\n const importManager = new ImportManager();\n const directoryManager = new DirectoryManager(this.directories);\n const declarationManager = new DeclarationManager();\n // Register all generators\n this.generators.set(\n \"reducers\",\n new ReducerGenerator(importManager, directoryManager, declarationManager),\n );\n }\n\n // Generate specific file types\n async generateReducers(): Promise<void> {\n await this.generateFileType(\"reducers\");\n }\n\n // Generate everything\n async generateAll(): Promise<void> {\n for (const [type] of this.generators) {\n await this.generateFileType(type);\n }\n }\n\n private async generateFileType(type: string): Promise<void> {\n const generator = this.generators.get(type);\n if (!generator) {\n throw new Error(`No generator registered for type: ${type}`);\n }\n\n await this.setupProject();\n\n for (const docModel of this.docModels) {\n const latestSpec =\n docModel.specifications[docModel.specifications.length - 1];\n\n for (const module of latestSpec.modules) {\n const context = this.createGenerationContext(\n docModel,\n module,\n this.forceUpdate,\n );\n\n await generator.generate(context);\n }\n }\n }\n\n private async setupProject(): Promise<void> {\n // Only load files from configured directories\n const sourcePaths: string[] = [];\n\n if (this.directories.documentModelDir) {\n const dirPath = `${this.rootDir}/${this.directories.documentModelDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.editorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.editorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.processorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.processorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.subgraphsDir) {\n const dirPath = `${this.rootDir}/${this.directories.subgraphsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n\n // Exclude node_modules from all paths\n sourcePaths.push(`!${this.rootDir}/**/node_modules/**`);\n\n if (sourcePaths.length > 0) {\n this.project.addSourceFilesAtPaths(sourcePaths);\n }\n }\n\n private createGenerationContext(\n docModel: DocumentModelGlobalState,\n module: ModuleSpecification,\n forceUpdate = false,\n ): GenerationContext {\n const operations: CodegenOperation[] = module.operations.map((op) => ({\n ...op,\n hasInput: op.schema !== null,\n hasAttachment: op.schema?.includes(\": Attachment\"),\n scope: op.scope || \"global\",\n state: op.scope === \"global\" ? \"\" : op.scope,\n }));\n\n return {\n rootDir: this.rootDir,\n packageName: this.packageName,\n docModel,\n module,\n project: this.project,\n operations,\n forceUpdate,\n };\n }\n\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n}\n"],"mappings":"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M,SAAS,KAC7B,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["readdirSync","join","path","fs","fs"],"sources":["../src/codegen/utils.ts","../src/codegen/generate.ts","../src/codegen/kysely.ts","../src/codegen/migrate.ts","../src/create-lib/checkout-project.ts","../src/create-lib/create-project.ts","../src/ts-morph-generator/core/FileGenerator.ts","../src/ts-morph-generator/core/ReducerGenerator.ts","../src/ts-morph-generator/utilities/DeclarationManager.ts","../src/ts-morph-generator/utilities/DirectoryManager.ts","../src/ts-morph-generator/utilities/ImportManager.ts","../src/ts-morph-generator/core/TSMorphCodeGenerator.ts"],"sourcesContent":["import type {\n DocumentModelDocument,\n DocumentModelGlobalState,\n} from \"@powerhousedao/shared/document-model\";\nimport { documentModelReducer } from \"@powerhousedao/shared/document-model\";\nimport { baseLoadFromFile } from \"document-model/node\";\nimport { readFile } from \"node:fs/promises\";\n\nexport async function loadDocumentModel(\n path: string,\n): Promise<DocumentModelGlobalState> {\n let documentModel: DocumentModelGlobalState;\n try {\n if (!path) {\n throw new Error(\"Document model file not specified\");\n } else if (path.endsWith(\".zip\") || path.endsWith(\".phd\")) {\n const file = await baseLoadFromFile(path, documentModelReducer);\n documentModel = file.state.global;\n } else if (path.endsWith(\".json\")) {\n const data = await readFile(path, \"utf-8\");\n const parsedData = JSON.parse(data) as DocumentModelDocument;\n if (\"state\" in parsedData) {\n documentModel = parsedData.state.global;\n } else {\n documentModel = parsedData;\n }\n } else {\n throw new Error(\"File type not supported. Must be zip, phd, or json.\");\n }\n return documentModel;\n } catch (error) {\n throw (error as { code?: string }).code === \"MODULE_NOT_FOUND\"\n ? new Error(`Document model not found.`)\n : error;\n }\n}\n","import { type DocumentModelGlobalState } from \"@powerhousedao/shared/document-model\";\nimport type { ProcessorApps } from \"@powerhousedao/shared/processors\";\nimport { kebabCase } from \"change-case\";\nimport {\n tsMorphGenerateApp,\n tsMorphGenerateDocumentEditor,\n tsMorphGenerateDocumentModel,\n tsMorphGenerateProcessor,\n tsMorphGenerateSubgraph,\n} from \"file-builders\";\nimport { readdirSync } from \"node:fs\";\nimport {\n filter,\n isDefined,\n isIncludedIn,\n isTruthy,\n map,\n pipe,\n prop,\n unique,\n} from \"remeda\";\nimport type { Project } from \"ts-morph\";\nimport {\n getAppMetadata,\n getEditorMetadata,\n getOrCreateDirectory,\n getProcessorMetadata,\n getSubgraphMetadata,\n loadDocumentModelInDir,\n} from \"utils\";\nimport { loadDocumentModel } from \"./utils.js\";\n\nexport async function generateDocumentModel(\n documentModelState: DocumentModelGlobalState,\n project: Project,\n) {\n await tsMorphGenerateDocumentModel(documentModelState, project);\n}\n\n/* Runs generate for each document model json file found in the project's `document-models` directory */\nexport async function generateAllDocumentModels(project: Project) {\n const { directory: documentModelsDir } = getOrCreateDirectory(\n project,\n \"document-models\",\n );\n const documentModelsDirPath = documentModelsDir.getPath();\n const documentModelStateFiles = pipe(\n readdirSync(documentModelsDirPath, { withFileTypes: true }),\n map(loadDocumentModelInDir),\n filter(isDefined),\n );\n\n for (const documentModelState of documentModelStateFiles) {\n await generateDocumentModel(documentModelState, project);\n }\n}\nexport async function generateFromFile(filePath: string, project: Project) {\n // load document model spec from file\n const documentModelState = await loadDocumentModel(filePath);\n\n // delegate to shared generation function\n await generateDocumentModel(documentModelState, project);\n}\n\ntype GenerateEditorArgs = {\n editorName: string;\n documentTypes: string[];\n editorId?: string;\n editorDirName?: string;\n};\nexport async function generateEditor(\n args: GenerateEditorArgs,\n project: Project,\n) {\n const {\n editorName,\n documentTypes,\n editorId: editorIdArg,\n editorDirName,\n } = args;\n\n if (documentTypes.length > 1) {\n throw new Error(\"Multiple document types are not supported yet\");\n }\n\n const documentModelId = documentTypes[0];\n const editorId = editorIdArg || kebabCase(editorName);\n const editorDir = editorDirName || kebabCase(editorName);\n\n await tsMorphGenerateDocumentEditor({\n project,\n editorDir,\n documentModelId,\n editorName,\n editorId,\n });\n}\n\n/* Runs generate for all editors found in the project's `editors` directory.\n * Note: we intentionally filter out editors with the document type \"powerhouse/document-drive\".\n * These are handled separately by the `generateAllApps` function.\n */\nexport async function generateAllEditors(project: Project) {\n const { directory: editorsDir } = getOrCreateDirectory(project, \"editors\");\n\n /* An editor's `id`, `name`, and `documentTypes` args can be found in the `module.ts` file */\n const editorsToAdd = pipe(\n editorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getEditorMetadata(project, dirName)),\n filter(isTruthy),\n filter(\n ({ documentTypes }) =>\n !isIncludedIn(\"powerhouse/document-drive\", documentTypes),\n ),\n );\n\n for (const editorToAdd of editorsToAdd) {\n const {\n name: editorName,\n id: editorId,\n dirName: editorDirName,\n documentTypes,\n } = editorToAdd;\n\n await generateEditor(\n {\n editorName,\n editorId,\n editorDirName,\n documentTypes,\n },\n project,\n );\n }\n}\n\ntype GenerateAppArgs = {\n appName: string;\n appId?: string;\n allowedDocumentTypes?: string[];\n isDragAndDropEnabled?: boolean;\n appDirName?: string;\n};\nexport async function generateApp(args: GenerateAppArgs, project: Project) {\n const {\n appName,\n appId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n appDirName,\n } = args;\n\n await tsMorphGenerateApp({\n project,\n editorDir: appDirName || kebabCase(appName),\n editorName: appName,\n editorId: appId ?? kebabCase(appName),\n allowedDocumentModelIds: allowedDocumentTypes ?? [],\n isDragAndDropEnabled: isDragAndDropEnabled ?? true,\n });\n}\n\n/* Runs generate for all apps found in the project's `editors` directory.\n * Note: we intentionally filter out editors which do not have the document type \"powerhouse/document-drive\".\n * These are handled separately by the `generateAllEditors` function.\n */\nexport async function generateAllApps(project: Project) {\n const { directory: editorsDir } = getOrCreateDirectory(project, \"editors\");\n\n /* An editor's `id`, `name`, and `documentTypes` args can be found in the `module.ts` file */\n const appsToAdd = pipe(\n editorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getAppMetadata(project, dirName)),\n filter(isTruthy),\n );\n\n for (const appToAdd of appsToAdd) {\n const {\n name: appName,\n id: appId,\n dirName: appDirName,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n } = appToAdd;\n await generateApp(\n {\n appName,\n appDirName,\n appId,\n allowedDocumentTypes,\n isDragAndDropEnabled,\n },\n project,\n );\n }\n}\nexport async function generateSubgraph(subgraphName: string, project: Project) {\n await tsMorphGenerateSubgraph({ subgraphName, project });\n}\n\n/* Runs generate for each directory found in the project's `subgraphs` directory */\nexport async function generateAllSubgraphs(project: Project) {\n const { directory: subgraphsDir } = getOrCreateDirectory(\n project,\n \"subgraphs\",\n );\n /* The subgraph's name is found in the `index.ts` file */\n const subgraphNames = pipe(\n subgraphsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getSubgraphMetadata(project, dirName)),\n map(prop(\"subgraphName\")),\n filter(isDefined),\n unique(),\n );\n for (const subgraphName of subgraphNames) {\n await generateSubgraph(subgraphName, project);\n }\n}\n\nexport async function generateProcessor(\n args: {\n processorName: string;\n processorType: \"analytics\" | \"relationalDb\";\n processorApps: ProcessorApps;\n documentTypes: string[];\n },\n project: Project,\n) {\n return await tsMorphGenerateProcessor({\n project,\n ...args,\n });\n}\n\n/* Runs generate for each directory found in the project's `processors` directory */\nexport async function generateAllProcessors(project: Project) {\n const { directory: processorsDir } = getOrCreateDirectory(\n project,\n \"processors\",\n );\n const processorsToGenerate = pipe(\n processorsDir.getDirectories(),\n map((dir) => dir.getBaseName()),\n map((dirName) => getProcessorMetadata(project, dirName)),\n );\n\n for (const processorArgs of processorsToGenerate) {\n await generateProcessor(processorArgs, project);\n }\n}\n\n/* Runs each module type's generateAll{moduleType} function for the current project */\nexport async function generateAll(project: Project) {\n await generateAllDocumentModels(project);\n await generateAllEditors(project);\n await generateAllApps(project);\n await generateAllSubgraphs(project);\n await generateAllProcessors(project);\n}\n","import { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { join, resolve } from \"node:path\";\n\nfunction getKyselyPgLiteBin(): string {\n const require = createRequire(import.meta.url);\n\n const paths = require.resolve.paths(\"kysely-pglite\");\n if (paths) {\n for (const basePath of paths) {\n const pkgRoot = join(basePath, \"kysely-pglite\");\n const binPath = join(pkgRoot, \"bin/run.js\");\n\n if (existsSync(binPath)) {\n return binPath;\n }\n }\n }\n\n throw new Error(\"Could not find kysely-pglite/bin/run.js\");\n}\n\nexport interface IOptions {\n migrationFile: string;\n schemaFile?: string;\n}\n\nfunction runCommand(\n command: string,\n args: string[],\n cwd?: string,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: \"inherit\",\n shell: true,\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(new Error(`Command failed with exit code ${code}`));\n }\n });\n\n child.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport async function generateDBSchema({\n migrationFile,\n schemaFile,\n}: IOptions) {\n const outFile = schemaFile ?? resolve(migrationFile, \"../schema.ts\");\n\n try {\n const kyselyBinPath = getKyselyPgLiteBin();\n // Use kysely-pglite CLI to handle TypeScript compilation and module resolution\n await runCommand(\n \"node\",\n [kyselyBinPath, migrationFile, \"--outFile\", outFile],\n process.cwd(),\n );\n\n console.log(`Schema types generated at ${outFile}`);\n } catch (error) {\n console.error(\"Error running migration:\", error);\n }\n}\n","import {\n VERSIONED_DEPENDENCIES,\n VERSIONED_DEV_DEPENDENCIES,\n} from \"@powerhousedao/shared/clis\";\nimport console from \"console\";\nimport {\n externalDependencies,\n externalDevDependencies,\n makePackageJsonExports,\n packageScripts,\n writeAllGeneratedProjectFiles,\n} from \"file-builders\";\nimport { cpSync, mkdirSync, readdirSync, rmSync, statSync } from \"fs\";\nimport npmFetch from \"npm-registry-fetch\";\nimport { join } from \"path\";\nimport { readPackage } from \"read-pkg\";\nimport {\n filter,\n fromKeys,\n isTruthy,\n keys,\n map,\n mapValues,\n merge,\n omit,\n pipe,\n prop,\n} from \"remeda\";\nimport type { Project } from \"ts-morph\";\nimport { buildTsMorphProject } from \"utils\";\nimport { updatePackage } from \"write-package\";\nimport { generateAll } from \"./generate.js\";\n\n/* Uses the npm cli's fetch function to get the version for a specified tag */\nexport async function getFullyQualifiedWorkspacePackageVersion(\n versionOrTag: string,\n) {\n const isTag =\n versionOrTag === \"latest\" ||\n versionOrTag === \"staging\" ||\n versionOrTag === \"dev\";\n\n if (!isTag) return versionOrTag;\n const result = (await npmFetch.json(\n `${WORKSPACE_PACKAGES[0].manifest.name!}`,\n )) as { \"dist-tags\": Record<\"latest\" | \"staging\" | \"dev\", string> };\n return result[\"dist-tags\"][versionOrTag];\n}\n\nexport function fixLegacyImportPaths(\n project: Project,\n packageName: string | undefined,\n) {\n if (!packageName) {\n console.error(\"No package name found in package.json.\");\n return;\n }\n const sourceFiles = project.getSourceFiles();\n for (const sourceFile of sourceFiles) {\n const importStatements = sourceFile.getImportDeclarations();\n for (const importStatement of importStatements) {\n const namedImports = map(\n importStatement.getNamedImports(),\n (importSpecifier) => importSpecifier.getText(),\n );\n const moduleSpecifier = importStatement.getModuleSpecifier();\n const moduleSpecifierText = moduleSpecifier.getLiteralText();\n // remove usage of the old `package-name/` style paths\n if (moduleSpecifierText.includes(packageName)) {\n moduleSpecifier.setLiteralValue(\n moduleSpecifierText.replace(`${packageName}/`, \"\"),\n );\n }\n // I saw this invalid import enough that it seemed worthwhile to fix it here\n if (namedImports.includes(\"generateMock\")) {\n moduleSpecifier.setLiteralValue(\"document-model\");\n }\n // attempt to fix absolute import paths for document models like `../../../document-models/model/something/something.js`\n // these don't work anymore with the versioned document models, since the absolute file paths are different\n const match = moduleSpecifierText.match(\n /^(\\.\\.\\/)+document-models\\/([^/]+)(?!\\/v\\d+(?:\\/|$))(?:\\/.*)?$/,\n );\n\n if (match) {\n moduleSpecifier.setLiteralValue(`document-models/${match[2]}`);\n }\n }\n }\n}\n\nexport async function migrate(version: string, projectDir = process.cwd()) {\n const fullyQualifiedVersion =\n await getFullyQualifiedWorkspacePackageVersion(version);\n\n const packageJson = await readPackage({ cwd: projectDir });\n const exports = makePackageJsonExports();\n const scripts = merge(packageJson.scripts, packageScripts);\n const workspacePackageNames = filter(\n map(WORKSPACE_PACKAGES, prop(\"manifest\", \"name\")),\n isTruthy,\n );\n const projectDependencyNames = [\n ...VERSIONED_DEPENDENCIES,\n ...keys(externalDependencies),\n ];\n const projectDevDependencyNames = [\n ...VERSIONED_DEV_DEPENDENCIES,\n ...keys(externalDevDependencies),\n ];\n const dependencies = pipe(\n packageJson.dependencies ?? {},\n // remove dev dependencies if they are in here\n omit(projectDevDependencyNames),\n merge({\n // use the fully qualified version we just got for these\n ...fromKeys(VERSIONED_DEPENDENCIES, () => fullyQualifiedVersion),\n // use the versions defined for the other deps we need to control\n ...externalDependencies,\n }),\n // use the fully qualified version for other workspace deps the user may have added\n mapValues((value, key) =>\n workspacePackageNames.includes(key) ? fullyQualifiedVersion : value,\n ),\n );\n const devDependencies = pipe(\n packageJson.devDependencies ?? {},\n omit(projectDependencyNames),\n merge({\n ...fromKeys(VERSIONED_DEV_DEPENDENCIES, () => fullyQualifiedVersion),\n ...externalDevDependencies,\n }),\n mapValues((value, key) =>\n workspacePackageNames.includes(key) ? fullyQualifiedVersion : value,\n ),\n );\n console.log(\"Updating package.json...\");\n await updatePackage(projectDir, {\n exports,\n scripts,\n dependencies,\n devDependencies,\n });\n\n console.log(\"Overwriting project root files...\");\n await writeAllGeneratedProjectFiles(projectDir);\n console.log(\"Moving unversioned document models...\");\n moveLegacyDocumentModels(projectDir);\n const project = buildTsMorphProject(projectDir);\n console.log(\"Fixing legacy import paths...\");\n fixLegacyImportPaths(project, packageJson.name);\n console.log(\"Re-generating code...\");\n await generateAll(project);\n await project.save();\n}\n\nfunction moveLegacyDocumentModels(projectDir: string) {\n const fileNamesToDelete = [\n \"actions.ts\",\n \"hooks.ts\",\n \"module.ts\",\n \"index.ts\",\n \"utils.ts\",\n \"schema.graphql\",\n ];\n const dirNamesToCopy = [\"src\", \"gen\"];\n const dirs = pipe(\n readdirSync(join(projectDir, \"document-models\"), { withFileTypes: true }),\n filter((entry) => entry.isDirectory()),\n filter(\n (dir) =>\n statSync(join(dir.parentPath, dir.name, `${dir.name}.json`), {\n throwIfNoEntry: false,\n })?.isFile() ?? false,\n ),\n map((dir) => join(dir.parentPath, dir.name)),\n );\n\n for (const dirPath of dirs) {\n for (const name of fileNamesToDelete) {\n const filePath = join(dirPath, name);\n rmSync(filePath, { force: true });\n }\n const versionDirPath = join(dirPath, \"v1\");\n const versionDirExists =\n statSync(versionDirPath, { throwIfNoEntry: false })?.isDirectory() ??\n false;\n if (!versionDirExists) {\n mkdirSync(versionDirPath);\n }\n for (const dirName of dirNamesToCopy) {\n const srcDirPath = join(dirPath, dirName);\n const srcDirExists =\n statSync(srcDirPath, { throwIfNoEntry: false })?.isDirectory() ?? false;\n if (!srcDirExists) continue;\n const destDirPath = join(versionDirPath, dirName);\n cpSync(srcDirPath, destDirPath, {\n recursive: true,\n force: false,\n errorOnExist: false,\n });\n rmSync(srcDirPath, {\n force: true,\n recursive: true,\n });\n }\n }\n}\n","import path from \"node:path\";\nimport { runCmd } from \"@powerhousedao/shared/clis\";\n/**\n * Clones a git repository and returns the path to the cloned project.\n * @param repositoryUrl - The URL of the git repository to clone\n * @returns The absolute path to the cloned project directory\n */\nexport function cloneRepository(repositoryUrl: string): string {\n try {\n console.log(\n \"\\x1b[33m\",\n `Cloning repository from ${repositoryUrl}...`,\n \"\\x1b[0m\",\n );\n runCmd(`git clone ${repositoryUrl}`);\n\n // Extract project name from repository URL\n // e.g., https://github.com/org/repo.git -> repo\n const repoName = repositoryUrl\n .split(\"/\")\n .pop()\n ?.replace(/\\.git$/, \"\");\n\n if (!repoName) {\n throw new Error(\"Could not determine project name from repository URL\");\n }\n\n const projectPath = path.join(process.cwd(), repoName);\n return projectPath;\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n\n/**\n * Installs dependencies in a project directory using the specified package manager.\n * @param projectPath - The absolute path to the project directory\n * @param packageManager - The package manager to use (npm, pnpm, yarn, bun)\n */\nexport function installDependencies(\n projectPath: string,\n packageManager: string,\n): void {\n try {\n process.chdir(projectPath);\n\n console.log(\n \"\\x1b[34m\",\n `Installing dependencies with ${packageManager}...`,\n \"\\x1b[0m\",\n );\n runCmd(`${packageManager} install --loglevel error`);\n\n console.log(\"\\x1b[32m\", \"Dependencies installed successfully!\", \"\\x1b[0m\");\n console.log();\n } catch (error) {\n console.log(error);\n throw error;\n }\n}\n","import { runCmd, writeFileEnsuringDir } from \"@powerhousedao/shared/clis\";\nimport chalk from \"chalk\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport { gitIgnoreTemplate } from \"templates\";\nimport { runPrettier } from \"utils\";\nimport {\n writeAllGeneratedProjectFiles,\n writeProjectRootFiles,\n} from \"file-builders\";\ntype CreateProjectArgs = {\n name: string;\n packageManager: string;\n tag?: string;\n version?: string;\n remoteDrive?: string;\n skipGitInit?: boolean;\n skipInstall?: boolean;\n};\nexport async function createProject({\n name,\n packageManager,\n tag,\n version,\n remoteDrive,\n skipGitInit,\n skipInstall,\n}: CreateProjectArgs) {\n const appPath = path.join(process.cwd(), name);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.error(\n `⛔ The folder \"${name}\" already exists in the current directory, please give it another name.`,\n );\n } else {\n console.error(err);\n }\n process.exit(1);\n }\n\n try {\n // Create a new directory for the project\n console.log(chalk.blue(`▶️ Creating directory for project \"${name}\"...\\n`));\n const appPath = path.join(process.cwd(), name);\n process.chdir(appPath);\n console.log(chalk.green(`✅ Project directory created\\n`));\n\n await writeFileEnsuringDir(\".gitignore\", gitIgnoreTemplate);\n if (!skipGitInit) {\n // Create a .gitignore file, then initialize the git repository\n console.log(chalk.blue(`▶️ Initializing git repository...\\n`));\n runCmd(`git init`);\n console.log(chalk.green(`\\n✅ Git repository initialized\\n`));\n }\n\n // Write the boilerplate files for the project\n console.log(chalk.blue(`▶️ Creating project boilerplate files...\\n`));\n await writeProjectRootFiles({ name, tag, version, remoteDrive });\n await writeAllGeneratedProjectFiles();\n console.log(chalk.green(`✅ Project boilerplate files created\\n`));\n\n if (!skipInstall) {\n // Install the project dependencies with the specified package manager\n console.log(\n chalk.blue(\n `▶️ Installing project dependencies with ${packageManager}...\\n`,\n ),\n );\n runCmd(`${packageManager} install`);\n console.log(chalk.green(`\\n✅ Project dependencies installed\\n`));\n }\n\n // Use the installed version of `prettier` to format the generated code\n console.log(chalk.blue(`▶️ Formatting boilerplate project files...\\n`));\n await runPrettier();\n console.log(chalk.green(`✅ Boilerplate files formatted\\n`));\n\n // Project creation complete\n console.log(chalk.bold(`🎉 Successfully created project \"${name}\" 🎉\\n`));\n } catch (error) {\n console.error(error);\n process.exit(1);\n }\n}\n","import type { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport type { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport type { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { GenerationContext } from \"./GenerationContext.js\";\n\nexport abstract class FileGenerator {\n constructor(\n protected importManager: ImportManager,\n protected directoryManager: DirectoryManager,\n protected declarationManager: DeclarationManager,\n ) {}\n\n abstract generate(context: GenerationContext): Promise<void>;\n}\n","import { camelCase, kebabCase, pascalCase } from \"change-case\";\nimport type { OperationErrorSpecification } from \"@powerhousedao/shared/document-model\";\nimport type {\n MethodDeclaration,\n ObjectLiteralExpression,\n SourceFile,\n} from \"ts-morph\";\nimport { SyntaxKind, VariableDeclarationKind } from \"ts-morph\";\nimport { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodegenOperation,\n GenerationContext,\n} from \"./GenerationContext.js\";\n\nexport class ReducerGenerator extends FileGenerator {\n async generate(context: GenerationContext): Promise<void> {\n // Skip if no actions to generate\n if (context.operations.length === 0) return;\n\n const filePath = this.getOutputPath(context);\n const sourceFile = await this.directoryManager.createSourceFile(\n context.project,\n filePath,\n );\n\n const packageName = context.packageName;\n // Reducer-specific import logic\n const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const typeImportPath = `${packageName}/document-models/${kebabCase(context.docModel.name)}`;\n\n // Import management (shared utility)\n this.importManager.replaceImportByName(\n sourceFile,\n typeImportName,\n typeImportPath,\n true,\n );\n\n // AST logic (specific to reducers)\n this.createReducerObject(sourceFile, typeImportName, context);\n\n // Detect and import error classes used in the actual reducer code (after generation)\n this.addErrorImports(sourceFile, context);\n\n await sourceFile.save();\n }\n\n private static getDefaultReducerCode(methodName: string): string[] {\n return [\n `// TODO: Implement \"${methodName}\" reducer`,\n `throw new Error('Reducer \"${methodName}\" not yet implemented');`,\n ];\n }\n\n private addErrorImports(\n sourceFile: SourceFile,\n context: GenerationContext,\n ): void {\n // Collect all errors from all operations\n const allErrors: OperationErrorSpecification[] = [];\n\n context.operations.forEach((operation) => {\n if (Array.isArray(operation.errors)) {\n operation.errors\n .filter((error) => error.name)\n .forEach((error) => {\n // Deduplicate errors by name\n if (!allErrors.find((e) => e.name === error.name)) {\n allErrors.push(error);\n }\n });\n }\n });\n\n if (allErrors.length === 0) return;\n\n // Analyze the actual source file content to find which errors are used\n const sourceFileContent = sourceFile.getFullText();\n const usedErrors = new Set<string>();\n\n allErrors.forEach((error) => {\n // Check if error class name is mentioned anywhere in the source file\n // Look for patterns like \"new ErrorName\" or \"throw ErrorName\" or \"ErrorName(\"\n const errorPattern = new RegExp(`\\\\b${error.name}\\\\b`, \"g\");\n if (errorPattern.test(sourceFileContent)) {\n usedErrors.add(error.name!);\n }\n });\n\n // Add imports for used errors (only if they're not already imported)\n if (usedErrors.size > 0) {\n const errorImportPath = `../../gen/${kebabCase(context.module.name)}/error.js`;\n const errorClassNames = Array.from(usedErrors);\n\n // Check if imports already exist to avoid duplicates\n const existingImports = sourceFile.getImportDeclarations();\n const existingErrorImport = existingImports.find(\n (importDecl) =>\n importDecl.getModuleSpecifierValue() === errorImportPath,\n );\n\n if (existingErrorImport) {\n // Get already imported error names\n const existingNamedImports = existingErrorImport\n .getNamedImports()\n .map((namedImport) => namedImport.getName());\n\n // Only import errors that aren't already imported\n const newErrorsToImport = errorClassNames.filter(\n (errorName) => !existingNamedImports.includes(errorName),\n );\n\n if (newErrorsToImport.length > 0) {\n // Add new named imports to existing import declaration\n existingErrorImport.addNamedImports(newErrorsToImport);\n }\n } else {\n // Create new import declaration\n this.importManager.addNamedImports(\n sourceFile,\n errorClassNames,\n errorImportPath,\n );\n }\n }\n }\n\n private getOutputPath(context: GenerationContext): string {\n return this.directoryManager.getReducerPath(\n context.rootDir,\n context.docModel.name,\n context.module.name,\n );\n }\n\n private createReducerObject(\n sourceFile: SourceFile,\n typeName: string,\n context: GenerationContext,\n ): void {\n const { operations, forceUpdate } = context;\n const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;\n const legacyReducerVar = sourceFile.getVariableDeclaration(\"reducer\");\n if (legacyReducerVar) {\n this.declarationManager.renameVariable(\n sourceFile,\n \"reducer\",\n operationHandlersObjectName,\n );\n }\n let reducerVar = sourceFile.getVariableDeclaration(\n operationHandlersObjectName,\n );\n if (!reducerVar) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: operationHandlersObjectName,\n type: typeName,\n initializer: \"{}\",\n },\n ],\n });\n reducerVar = sourceFile.getVariableDeclarationOrThrow(\n operationHandlersObjectName,\n );\n } else {\n // Ensure correct type\n const typeNode = reducerVar.getTypeNode();\n if (!typeNode || typeNode.getText() !== typeName) {\n reducerVar.setType(typeName);\n }\n }\n\n const initializer = reducerVar.getInitializerIfKindOrThrow(\n SyntaxKind.ObjectLiteralExpression,\n );\n\n for (const operation of operations) {\n this.addReducerMethod(initializer, operation, forceUpdate);\n }\n }\n\n private addReducerMethod(\n objectLiteral: ObjectLiteralExpression,\n operation: CodegenOperation,\n forceUpdate = false,\n ): void {\n const actionName = camelCase(operation.name ?? \"\");\n if (!actionName) return;\n\n const methodName = `${actionName}Operation`;\n\n const reducerCode = operation.reducer?.trim();\n\n const existingReducer = objectLiteral\n .getProperty(methodName)\n ?.asKind(SyntaxKind.MethodDeclaration);\n\n // if reducer already exists but forceUpdate is true, update it\n if (existingReducer) {\n if (forceUpdate && reducerCode) {\n existingReducer.setBodyText(\"\");\n this.setReducerMethodCode(existingReducer, reducerCode);\n }\n return;\n }\n\n // if reducer doesn't exist, create it and set the code with the default code if no code is provided\n const method = objectLiteral.addMethod({\n name: methodName,\n parameters: [{ name: \"state\" }, { name: \"action\" }],\n });\n this.setReducerMethodCode(method, reducerCode);\n }\n\n private setReducerMethodCode(reducer: MethodDeclaration, code?: string) {\n reducer.addStatements(\n code ? [code] : ReducerGenerator.getDefaultReducerCode(reducer.getName()),\n );\n }\n}\n","import type { SourceFile } from \"ts-morph\";\n\nexport class DeclarationManager {\n renameVariable(\n sourceFile: SourceFile,\n oldName: string,\n newName: string,\n ): void {\n const variable = sourceFile.getVariableDeclaration(oldName);\n\n if (variable) {\n variable.getNameNode().replaceWithText(newName);\n sourceFile.saveSync();\n }\n }\n}\n","import type { PHProjectDirectories } from \"@powerhousedao/codegen\";\nimport { kebabCase, pascalCase } from \"change-case\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport type { Project, SourceFile } from \"ts-morph\";\n\nexport class DirectoryManager {\n private directories: Required<PHProjectDirectories> = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n\n constructor(directories: PHProjectDirectories = {}) {\n this.directories = {\n ...this.directories,\n ...directories,\n };\n }\n async ensureExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n\n // Path builders for different file types\n getReducerPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"reducers\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getActionsPath(\n rootDir: string,\n docModelName: string,\n moduleName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"actions\",\n `${kebabCase(moduleName)}.ts`,\n );\n }\n\n getComponentPath(\n rootDir: string,\n docModelName: string,\n componentName: string,\n ): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"components\",\n `${pascalCase(componentName)}.tsx`,\n );\n }\n\n getTypesPath(rootDir: string, docModelName: string): string {\n return path.join(\n rootDir,\n this.directories.documentModelDir,\n kebabCase(docModelName),\n \"src\",\n \"types.ts\",\n );\n }\n\n async createSourceFile(\n project: Project,\n filePath: string,\n ): Promise<SourceFile> {\n await this.ensureExists(path.dirname(filePath));\n return (\n project.addSourceFileAtPathIfExists(filePath) ??\n project.createSourceFile(filePath, \"\", { overwrite: false })\n );\n }\n}\n","import type { ImportDeclaration, SourceFile } from \"ts-morph\";\n\nexport interface ImportSpec {\n moduleSpecifier: string;\n namedImports?: string[];\n defaultImport?: string;\n isTypeOnly?: boolean;\n}\n\nexport class ImportManager {\n addImport(sourceFile: SourceFile, spec: ImportSpec): void {\n // Check if import already exists\n const existing = sourceFile.getImportDeclaration(\n (imp) => imp.getFullText() === spec.moduleSpecifier,\n );\n if (existing) {\n this.mergeImports(existing, spec);\n } else {\n sourceFile.addImportDeclaration(spec);\n }\n }\n\n addTypeImport(sourceFile: SourceFile, typeName: string, path: string): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: [typeName],\n isTypeOnly: true,\n });\n }\n\n addNamedImports(\n sourceFile: SourceFile,\n imports: string[],\n path: string,\n ): void {\n this.addImport(sourceFile, {\n moduleSpecifier: path,\n namedImports: imports,\n });\n }\n\n private mergeImports(\n existingImport: ImportDeclaration,\n newSpec: ImportSpec,\n ): void {\n // Logic to merge named imports if they don't already exist\n if (newSpec.namedImports) {\n const existingNames = existingImport\n .getNamedImports()\n .map((ni) => ni.getName());\n const newNames = newSpec.namedImports.filter(\n (name) => !existingNames.includes(name),\n );\n\n if (newNames.length > 0) {\n existingImport.addNamedImports(newNames);\n }\n }\n }\n\n replaceImportByName(\n sourceFile: SourceFile,\n name: string,\n path: string,\n isTypeOnly = false,\n ): void {\n const existing = sourceFile\n .getImportDeclarations()\n .filter((imp) =>\n imp.getNamedImports().find((ni) => ni.getName() === name),\n );\n existing.forEach((imp) => imp.remove());\n sourceFile.addImportDeclaration({\n moduleSpecifier: path,\n namedImports: [name],\n isTypeOnly,\n });\n sourceFile.saveSync();\n }\n}\n","import type {\n DocumentModelGlobalState,\n ModuleSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport fs from \"fs/promises\";\nimport { Project } from \"ts-morph\";\nimport { DeclarationManager } from \"../utilities/DeclarationManager.js\";\nimport { DirectoryManager } from \"../utilities/DirectoryManager.js\";\nimport { ImportManager } from \"../utilities/ImportManager.js\";\nimport type { FileGenerator } from \"./FileGenerator.js\";\nimport type {\n CodeGeneratorOptions,\n CodegenOperation,\n GenerationContext,\n PHProjectDirectories,\n} from \"./GenerationContext.js\";\nimport { ReducerGenerator } from \"./ReducerGenerator.js\";\n\nexport class TSMorphCodeGenerator {\n private project = new Project();\n private generators = new Map<string, FileGenerator>();\n private directories: PHProjectDirectories = {\n documentModelDir: \"document-model\",\n editorsDir: \"editors\",\n processorsDir: \"processors\",\n subgraphsDir: \"subgraphs\",\n };\n private forceUpdate = false;\n\n constructor(\n private rootDir: string,\n private docModels: DocumentModelGlobalState[],\n private packageName: string,\n options: CodeGeneratorOptions = { directories: {}, forceUpdate: false },\n ) {\n this.directories = {\n ...this.directories,\n ...options.directories,\n };\n this.packageName = packageName;\n this.forceUpdate = options.forceUpdate ?? false;\n\n this.setupGenerators();\n }\n\n private setupGenerators(): void {\n const importManager = new ImportManager();\n const directoryManager = new DirectoryManager(this.directories);\n const declarationManager = new DeclarationManager();\n // Register all generators\n this.generators.set(\n \"reducers\",\n new ReducerGenerator(importManager, directoryManager, declarationManager),\n );\n }\n\n // Generate specific file types\n async generateReducers(): Promise<void> {\n await this.generateFileType(\"reducers\");\n }\n\n // Generate everything\n async generateAll(): Promise<void> {\n for (const [type] of this.generators) {\n await this.generateFileType(type);\n }\n }\n\n private async generateFileType(type: string): Promise<void> {\n const generator = this.generators.get(type);\n if (!generator) {\n throw new Error(`No generator registered for type: ${type}`);\n }\n\n await this.setupProject();\n\n for (const docModel of this.docModels) {\n const latestSpec =\n docModel.specifications[docModel.specifications.length - 1];\n\n for (const module of latestSpec.modules) {\n const context = this.createGenerationContext(\n docModel,\n module,\n this.forceUpdate,\n );\n\n await generator.generate(context);\n }\n }\n }\n\n private async setupProject(): Promise<void> {\n // Only load files from configured directories\n const sourcePaths: string[] = [];\n\n if (this.directories.documentModelDir) {\n const dirPath = `${this.rootDir}/${this.directories.documentModelDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.editorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.editorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.processorsDir) {\n const dirPath = `${this.rootDir}/${this.directories.processorsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n if (this.directories.subgraphsDir) {\n const dirPath = `${this.rootDir}/${this.directories.subgraphsDir}`;\n await this.ensureDirectoryExists(dirPath);\n sourcePaths.push(`${dirPath}/**/*.ts`);\n }\n\n // Exclude node_modules from all paths\n sourcePaths.push(`!${this.rootDir}/**/node_modules/**`);\n\n if (sourcePaths.length > 0) {\n this.project.addSourceFilesAtPaths(sourcePaths);\n }\n }\n\n private createGenerationContext(\n docModel: DocumentModelGlobalState,\n module: ModuleSpecification,\n forceUpdate = false,\n ): GenerationContext {\n const operations: CodegenOperation[] = module.operations.map((op) => ({\n ...op,\n hasInput: op.schema !== null,\n hasAttachment: op.schema?.includes(\": Attachment\"),\n scope: op.scope || \"global\",\n state: op.scope === \"global\" ? \"\" : op.scope,\n }));\n\n return {\n rootDir: this.rootDir,\n packageName: this.packageName,\n docModel,\n module,\n project: this.project,\n operations,\n forceUpdate,\n };\n }\n\n private async ensureDirectoryExists(dirPath: string): Promise<void> {\n try {\n await fs.mkdir(dirPath, { recursive: true });\n } catch (err) {\n console.error(`Failed to create directory: ${dirPath}`, err);\n throw err;\n }\n }\n}\n"],"mappings":"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M,SAAS,KAC7B,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAsB,GAAG,SAAS,OACnC,EACa,aAAa;;AAG7B,SAAgB,qBACd,SACA,aACA;AACA,KAAI,CAAC,aAAa;AAChB,YAAQ,MAAM,yCAAyC;AACvD;;CAEF,MAAM,cAAc,QAAQ,gBAAgB;AAC5C,MAAK,MAAM,cAAc,aAAa;EACpC,MAAM,mBAAmB,WAAW,uBAAuB;AAC3D,OAAK,MAAM,mBAAmB,kBAAkB;GAC9C,MAAM,eAAe,IACnB,gBAAgB,iBAAiB,GAChC,oBAAoB,gBAAgB,SAAS,CAC/C;GACD,MAAM,kBAAkB,gBAAgB,oBAAoB;GAC5D,MAAM,sBAAsB,gBAAgB,gBAAgB;AAE5D,OAAI,oBAAoB,SAAS,YAAY,CAC3C,iBAAgB,gBACd,oBAAoB,QAAQ,GAAG,YAAY,IAAI,GAAG,CACnD;AAGH,OAAI,aAAa,SAAS,eAAe,CACvC,iBAAgB,gBAAgB,iBAAiB;GAInD,MAAM,QAAQ,oBAAoB,MAChC,iEACD;AAED,OAAI,MACF,iBAAgB,gBAAgB,mBAAmB,MAAM,KAAK;;;;AAMtE,eAAsB,QAAQ,SAAiB,aAAa,QAAQ,KAAK,EAAE;CACzE,MAAM,wBACJ,MAAM,yCAAyC,QAAQ;CAEzD,MAAM,cAAc,MAAM,YAAY,EAAE,KAAK,YAAY,CAAC;CAC1D,MAAM,UAAU,wBAAwB;CACxC,MAAM,UAAU,MAAM,YAAY,SAAS,eAAe;CAC1D,MAAM,wBAAwB,OAC5B,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/codegen",
|
|
3
|
-
"version": "6.0.0-dev.
|
|
3
|
+
"version": "6.0.0-dev.199",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"write-json-file": "^7.0.0",
|
|
54
54
|
"write-package": "7.2.0",
|
|
55
55
|
"zod": "4.3.6",
|
|
56
|
-
"@powerhousedao/shared": "6.0.0-dev.
|
|
57
|
-
"document-model": "6.0.0-dev.
|
|
56
|
+
"@powerhousedao/shared": "6.0.0-dev.199",
|
|
57
|
+
"document-model": "6.0.0-dev.199"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@pnpm/find-workspace-dir": "^1000.1.5",
|