@powerhousedao/codegen 6.0.0-dev.214 → 6.0.0-dev.215
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 +60 -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.215",
|
|
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.215",
|
|
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.215",
|
|
359
359
|
"main": "dist/index.mjs",
|
|
360
360
|
"exports": {
|
|
361
361
|
".": {
|
|
@@ -440,7 +440,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
440
440
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
441
441
|
"manifest": {
|
|
442
442
|
"name": "@powerhousedao/ph-cli",
|
|
443
|
-
"version": "6.0.0-dev.
|
|
443
|
+
"version": "6.0.0-dev.215",
|
|
444
444
|
"description": "",
|
|
445
445
|
"license": "AGPL-3.0-only",
|
|
446
446
|
"type": "module",
|
|
@@ -507,7 +507,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
507
507
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
508
508
|
"manifest": {
|
|
509
509
|
"name": "ph-cmd",
|
|
510
|
-
"version": "6.0.0-dev.
|
|
510
|
+
"version": "6.0.0-dev.215",
|
|
511
511
|
"description": "",
|
|
512
512
|
"license": "AGPL-3.0-only",
|
|
513
513
|
"type": "module",
|
|
@@ -554,7 +554,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
554
554
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
555
555
|
"manifest": {
|
|
556
556
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
557
|
-
"version": "6.0.0-dev.
|
|
557
|
+
"version": "6.0.0-dev.215",
|
|
558
558
|
"license": "AGPL-3.0-only",
|
|
559
559
|
"repository": {
|
|
560
560
|
"type": "git",
|
|
@@ -601,7 +601,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
601
601
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
602
602
|
"manifest": {
|
|
603
603
|
"name": "@powerhousedao/analytics-engine-core",
|
|
604
|
-
"version": "6.0.0-dev.
|
|
604
|
+
"version": "6.0.0-dev.215",
|
|
605
605
|
"license": "AGPL-3.0-only",
|
|
606
606
|
"repository": {
|
|
607
607
|
"type": "git",
|
|
@@ -635,7 +635,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
635
635
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
636
636
|
"manifest": {
|
|
637
637
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
638
|
-
"version": "6.0.0-dev.
|
|
638
|
+
"version": "6.0.0-dev.215",
|
|
639
639
|
"license": "AGPL-3.0-only",
|
|
640
640
|
"repository": {
|
|
641
641
|
"type": "git",
|
|
@@ -668,7 +668,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
668
668
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
669
669
|
"manifest": {
|
|
670
670
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
671
|
-
"version": "6.0.0-dev.
|
|
671
|
+
"version": "6.0.0-dev.215",
|
|
672
672
|
"license": "AGPL-3.0-only",
|
|
673
673
|
"repository": {
|
|
674
674
|
"type": "git",
|
|
@@ -706,7 +706,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
706
706
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
707
707
|
"manifest": {
|
|
708
708
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
709
|
-
"version": "6.0.0-dev.
|
|
709
|
+
"version": "6.0.0-dev.215",
|
|
710
710
|
"license": "AGPL-3.0-only",
|
|
711
711
|
"repository": {
|
|
712
712
|
"type": "git",
|
|
@@ -752,7 +752,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
752
752
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
753
753
|
"manifest": {
|
|
754
754
|
"name": "@powerhousedao/builder-tools",
|
|
755
|
-
"version": "6.0.0-dev.
|
|
755
|
+
"version": "6.0.0-dev.215",
|
|
756
756
|
"type": "module",
|
|
757
757
|
"license": "AGPL-3.0-only",
|
|
758
758
|
"publishConfig": { "access": "public" },
|
|
@@ -792,7 +792,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
792
792
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
793
793
|
"manifest": {
|
|
794
794
|
"name": "@powerhousedao/codegen",
|
|
795
|
-
"version": "6.0.0-dev.
|
|
795
|
+
"version": "6.0.0-dev.215",
|
|
796
796
|
"license": "AGPL-3.0-only",
|
|
797
797
|
"private": false,
|
|
798
798
|
"type": "module",
|
|
@@ -865,7 +865,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
865
865
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
866
866
|
"manifest": {
|
|
867
867
|
"name": "@powerhousedao/common",
|
|
868
|
-
"version": "6.0.0-dev.
|
|
868
|
+
"version": "6.0.0-dev.215",
|
|
869
869
|
"license": "AGPL-3.0-only",
|
|
870
870
|
"type": "module",
|
|
871
871
|
"files": ["/dist"],
|
|
@@ -917,7 +917,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
917
917
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
918
918
|
"manifest": {
|
|
919
919
|
"name": "@powerhousedao/config",
|
|
920
|
-
"version": "6.0.0-dev.
|
|
920
|
+
"version": "6.0.0-dev.215",
|
|
921
921
|
"description": "",
|
|
922
922
|
"license": "AGPL-3.0-only",
|
|
923
923
|
"private": false,
|
|
@@ -952,7 +952,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
952
952
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
953
953
|
"manifest": {
|
|
954
954
|
"name": "@powerhousedao/design-system",
|
|
955
|
-
"version": "6.0.0-dev.
|
|
955
|
+
"version": "6.0.0-dev.215",
|
|
956
956
|
"description": "",
|
|
957
957
|
"files": ["dist", "theme.css"],
|
|
958
958
|
"type": "module",
|
|
@@ -1104,7 +1104,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1104
1104
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
1105
1105
|
"manifest": {
|
|
1106
1106
|
"name": "document-model",
|
|
1107
|
-
"version": "6.0.0-dev.
|
|
1107
|
+
"version": "6.0.0-dev.215",
|
|
1108
1108
|
"license": "AGPL-3.0-only",
|
|
1109
1109
|
"private": false,
|
|
1110
1110
|
"files": ["dist"],
|
|
@@ -1162,7 +1162,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1162
1162
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
1163
1163
|
"manifest": {
|
|
1164
1164
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
1165
|
-
"version": "6.0.0-dev.
|
|
1165
|
+
"version": "6.0.0-dev.215",
|
|
1166
1166
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
1167
1167
|
"type": "module",
|
|
1168
1168
|
"sideEffects": false,
|
|
@@ -1199,7 +1199,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1199
1199
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
1200
1200
|
"manifest": {
|
|
1201
1201
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
1202
|
-
"version": "6.0.0-dev.
|
|
1202
|
+
"version": "6.0.0-dev.215",
|
|
1203
1203
|
"description": "",
|
|
1204
1204
|
"keywords": [],
|
|
1205
1205
|
"author": "",
|
|
@@ -1313,7 +1313,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1313
1313
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
1314
1314
|
"manifest": {
|
|
1315
1315
|
"name": "@powerhousedao/reactor",
|
|
1316
|
-
"version": "6.0.0-dev.
|
|
1316
|
+
"version": "6.0.0-dev.215",
|
|
1317
1317
|
"description": "",
|
|
1318
1318
|
"repository": {
|
|
1319
1319
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1367,7 +1367,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1367
1367
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
1368
1368
|
"manifest": {
|
|
1369
1369
|
"name": "@powerhousedao/reactor-api",
|
|
1370
|
-
"version": "6.0.0-dev.
|
|
1370
|
+
"version": "6.0.0-dev.215",
|
|
1371
1371
|
"description": "",
|
|
1372
1372
|
"type": "module",
|
|
1373
1373
|
"repository": {
|
|
@@ -1485,7 +1485,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1485
1485
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-attachments",
|
|
1486
1486
|
"manifest": {
|
|
1487
1487
|
"name": "@powerhousedao/reactor-attachments",
|
|
1488
|
-
"version": "6.0.0-dev.
|
|
1488
|
+
"version": "6.0.0-dev.215",
|
|
1489
1489
|
"license": "AGPL-3.0-only",
|
|
1490
1490
|
"type": "module",
|
|
1491
1491
|
"repository": {
|
|
@@ -1521,7 +1521,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1521
1521
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
1522
1522
|
"manifest": {
|
|
1523
1523
|
"name": "@powerhousedao/reactor-browser",
|
|
1524
|
-
"version": "6.0.0-dev.
|
|
1524
|
+
"version": "6.0.0-dev.215",
|
|
1525
1525
|
"license": "AGPL-3.0-only",
|
|
1526
1526
|
"type": "module",
|
|
1527
1527
|
"repository": {
|
|
@@ -1575,6 +1575,8 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1575
1575
|
"graphql-tag": "catalog:",
|
|
1576
1576
|
"kysely": "catalog:",
|
|
1577
1577
|
"kysely-pglite-dialect": "catalog:",
|
|
1578
|
+
"remeda": "catalog:",
|
|
1579
|
+
"zod": "catalog:",
|
|
1578
1580
|
"lodash.isequal": "^4.5.0",
|
|
1579
1581
|
"luxon": "^3.6.1",
|
|
1580
1582
|
"lz-string": "^1.5.0",
|
|
@@ -1614,7 +1616,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1614
1616
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
1615
1617
|
"manifest": {
|
|
1616
1618
|
"name": "@powerhousedao/reactor-hypercore",
|
|
1617
|
-
"version": "6.0.0-dev.
|
|
1619
|
+
"version": "6.0.0-dev.215",
|
|
1618
1620
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
1619
1621
|
"repository": {
|
|
1620
1622
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1656,7 +1658,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1656
1658
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
1657
1659
|
"manifest": {
|
|
1658
1660
|
"name": "@powerhousedao/reactor-mcp",
|
|
1659
|
-
"version": "6.0.0-dev.
|
|
1661
|
+
"version": "6.0.0-dev.215",
|
|
1660
1662
|
"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.",
|
|
1661
1663
|
"type": "module",
|
|
1662
1664
|
"repository": {
|
|
@@ -1711,7 +1713,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1711
1713
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
1712
1714
|
"manifest": {
|
|
1713
1715
|
"name": "@powerhousedao/registry",
|
|
1714
|
-
"version": "6.0.0-dev.
|
|
1716
|
+
"version": "6.0.0-dev.215",
|
|
1715
1717
|
"description": "",
|
|
1716
1718
|
"type": "module",
|
|
1717
1719
|
"repository": {
|
|
@@ -1754,7 +1756,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1754
1756
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
1755
1757
|
"manifest": {
|
|
1756
1758
|
"name": "@renown/sdk",
|
|
1757
|
-
"version": "6.0.0-dev.
|
|
1759
|
+
"version": "6.0.0-dev.215",
|
|
1758
1760
|
"description": "",
|
|
1759
1761
|
"license": "AGPL-3.0-only",
|
|
1760
1762
|
"private": false,
|
|
@@ -1804,7 +1806,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1804
1806
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
1805
1807
|
"manifest": {
|
|
1806
1808
|
"name": "@powerhousedao/shared",
|
|
1807
|
-
"version": "6.0.0-dev.
|
|
1809
|
+
"version": "6.0.0-dev.215",
|
|
1808
1810
|
"type": "module",
|
|
1809
1811
|
"sideEffects": false,
|
|
1810
1812
|
"publishConfig": { "access": "public" },
|
|
@@ -1913,7 +1915,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1913
1915
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
1914
1916
|
"manifest": {
|
|
1915
1917
|
"name": "@powerhousedao/vetra",
|
|
1916
|
-
"version": "6.0.0-dev.
|
|
1918
|
+
"version": "6.0.0-dev.215",
|
|
1917
1919
|
"license": "AGPL-3.0-only",
|
|
1918
1920
|
"type": "module",
|
|
1919
1921
|
"sideEffects": false,
|
|
@@ -2424,7 +2426,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2424
2426
|
"dir": "/home/runner/work/powerhouse/powerhouse/apps/academy",
|
|
2425
2427
|
"manifest": {
|
|
2426
2428
|
"name": "@powerhousedao/academy",
|
|
2427
|
-
"version": "6.0.0-dev.
|
|
2429
|
+
"version": "6.0.0-dev.215",
|
|
2428
2430
|
"homepage": "https://powerhouse.academy",
|
|
2429
2431
|
"packageManager": "pnpm@10.9.0",
|
|
2430
2432
|
"repository": {
|
|
@@ -2490,7 +2492,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2490
2492
|
"manifest": {
|
|
2491
2493
|
"name": "@powerhousedao/connect",
|
|
2492
2494
|
"productName": "Powerhouse-Connect",
|
|
2493
|
-
"version": "6.0.0-dev.
|
|
2495
|
+
"version": "6.0.0-dev.215",
|
|
2494
2496
|
"description": "Powerhouse Connect",
|
|
2495
2497
|
"main": "dist/index.html",
|
|
2496
2498
|
"type": "module",
|
|
@@ -2602,7 +2604,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2602
2604
|
"manifest": {
|
|
2603
2605
|
"name": "@powerhousedao/switchboard",
|
|
2604
2606
|
"type": "module",
|
|
2605
|
-
"version": "6.0.0-dev.
|
|
2607
|
+
"version": "6.0.0-dev.215",
|
|
2606
2608
|
"main": "dist/index.mjs",
|
|
2607
2609
|
"exports": {
|
|
2608
2610
|
".": {
|
|
@@ -2687,7 +2689,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2687
2689
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
2688
2690
|
"manifest": {
|
|
2689
2691
|
"name": "@powerhousedao/ph-cli",
|
|
2690
|
-
"version": "6.0.0-dev.
|
|
2692
|
+
"version": "6.0.0-dev.215",
|
|
2691
2693
|
"description": "",
|
|
2692
2694
|
"license": "AGPL-3.0-only",
|
|
2693
2695
|
"type": "module",
|
|
@@ -2754,7 +2756,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2754
2756
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
2755
2757
|
"manifest": {
|
|
2756
2758
|
"name": "ph-cmd",
|
|
2757
|
-
"version": "6.0.0-dev.
|
|
2759
|
+
"version": "6.0.0-dev.215",
|
|
2758
2760
|
"description": "",
|
|
2759
2761
|
"license": "AGPL-3.0-only",
|
|
2760
2762
|
"type": "module",
|
|
@@ -2801,7 +2803,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2801
2803
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
2802
2804
|
"manifest": {
|
|
2803
2805
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
2804
|
-
"version": "6.0.0-dev.
|
|
2806
|
+
"version": "6.0.0-dev.215",
|
|
2805
2807
|
"license": "AGPL-3.0-only",
|
|
2806
2808
|
"repository": {
|
|
2807
2809
|
"type": "git",
|
|
@@ -2848,7 +2850,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2848
2850
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
2849
2851
|
"manifest": {
|
|
2850
2852
|
"name": "@powerhousedao/analytics-engine-core",
|
|
2851
|
-
"version": "6.0.0-dev.
|
|
2853
|
+
"version": "6.0.0-dev.215",
|
|
2852
2854
|
"license": "AGPL-3.0-only",
|
|
2853
2855
|
"repository": {
|
|
2854
2856
|
"type": "git",
|
|
@@ -2882,7 +2884,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2882
2884
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
2883
2885
|
"manifest": {
|
|
2884
2886
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
2885
|
-
"version": "6.0.0-dev.
|
|
2887
|
+
"version": "6.0.0-dev.215",
|
|
2886
2888
|
"license": "AGPL-3.0-only",
|
|
2887
2889
|
"repository": {
|
|
2888
2890
|
"type": "git",
|
|
@@ -2915,7 +2917,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2915
2917
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
2916
2918
|
"manifest": {
|
|
2917
2919
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
2918
|
-
"version": "6.0.0-dev.
|
|
2920
|
+
"version": "6.0.0-dev.215",
|
|
2919
2921
|
"license": "AGPL-3.0-only",
|
|
2920
2922
|
"repository": {
|
|
2921
2923
|
"type": "git",
|
|
@@ -2953,7 +2955,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2953
2955
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
2954
2956
|
"manifest": {
|
|
2955
2957
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
2956
|
-
"version": "6.0.0-dev.
|
|
2958
|
+
"version": "6.0.0-dev.215",
|
|
2957
2959
|
"license": "AGPL-3.0-only",
|
|
2958
2960
|
"repository": {
|
|
2959
2961
|
"type": "git",
|
|
@@ -2999,7 +3001,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2999
3001
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
3000
3002
|
"manifest": {
|
|
3001
3003
|
"name": "@powerhousedao/builder-tools",
|
|
3002
|
-
"version": "6.0.0-dev.
|
|
3004
|
+
"version": "6.0.0-dev.215",
|
|
3003
3005
|
"type": "module",
|
|
3004
3006
|
"license": "AGPL-3.0-only",
|
|
3005
3007
|
"publishConfig": { "access": "public" },
|
|
@@ -3039,7 +3041,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3039
3041
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
3040
3042
|
"manifest": {
|
|
3041
3043
|
"name": "@powerhousedao/codegen",
|
|
3042
|
-
"version": "6.0.0-dev.
|
|
3044
|
+
"version": "6.0.0-dev.215",
|
|
3043
3045
|
"license": "AGPL-3.0-only",
|
|
3044
3046
|
"private": false,
|
|
3045
3047
|
"type": "module",
|
|
@@ -3112,7 +3114,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3112
3114
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
3113
3115
|
"manifest": {
|
|
3114
3116
|
"name": "@powerhousedao/common",
|
|
3115
|
-
"version": "6.0.0-dev.
|
|
3117
|
+
"version": "6.0.0-dev.215",
|
|
3116
3118
|
"license": "AGPL-3.0-only",
|
|
3117
3119
|
"type": "module",
|
|
3118
3120
|
"files": ["/dist"],
|
|
@@ -3164,7 +3166,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3164
3166
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
3165
3167
|
"manifest": {
|
|
3166
3168
|
"name": "@powerhousedao/config",
|
|
3167
|
-
"version": "6.0.0-dev.
|
|
3169
|
+
"version": "6.0.0-dev.215",
|
|
3168
3170
|
"description": "",
|
|
3169
3171
|
"license": "AGPL-3.0-only",
|
|
3170
3172
|
"private": false,
|
|
@@ -3199,7 +3201,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3199
3201
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
3200
3202
|
"manifest": {
|
|
3201
3203
|
"name": "@powerhousedao/design-system",
|
|
3202
|
-
"version": "6.0.0-dev.
|
|
3204
|
+
"version": "6.0.0-dev.215",
|
|
3203
3205
|
"description": "",
|
|
3204
3206
|
"files": ["dist", "theme.css"],
|
|
3205
3207
|
"type": "module",
|
|
@@ -3351,7 +3353,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3351
3353
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
3352
3354
|
"manifest": {
|
|
3353
3355
|
"name": "document-model",
|
|
3354
|
-
"version": "6.0.0-dev.
|
|
3356
|
+
"version": "6.0.0-dev.215",
|
|
3355
3357
|
"license": "AGPL-3.0-only",
|
|
3356
3358
|
"private": false,
|
|
3357
3359
|
"files": ["dist"],
|
|
@@ -3409,7 +3411,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3409
3411
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
3410
3412
|
"manifest": {
|
|
3411
3413
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
3412
|
-
"version": "6.0.0-dev.
|
|
3414
|
+
"version": "6.0.0-dev.215",
|
|
3413
3415
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
3414
3416
|
"type": "module",
|
|
3415
3417
|
"sideEffects": false,
|
|
@@ -3446,7 +3448,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3446
3448
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
3447
3449
|
"manifest": {
|
|
3448
3450
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
3449
|
-
"version": "6.0.0-dev.
|
|
3451
|
+
"version": "6.0.0-dev.215",
|
|
3450
3452
|
"description": "",
|
|
3451
3453
|
"keywords": [],
|
|
3452
3454
|
"author": "",
|
|
@@ -3560,7 +3562,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3560
3562
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
3561
3563
|
"manifest": {
|
|
3562
3564
|
"name": "@powerhousedao/reactor",
|
|
3563
|
-
"version": "6.0.0-dev.
|
|
3565
|
+
"version": "6.0.0-dev.215",
|
|
3564
3566
|
"description": "",
|
|
3565
3567
|
"repository": {
|
|
3566
3568
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3614,7 +3616,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3614
3616
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
3615
3617
|
"manifest": {
|
|
3616
3618
|
"name": "@powerhousedao/reactor-api",
|
|
3617
|
-
"version": "6.0.0-dev.
|
|
3619
|
+
"version": "6.0.0-dev.215",
|
|
3618
3620
|
"description": "",
|
|
3619
3621
|
"type": "module",
|
|
3620
3622
|
"repository": {
|
|
@@ -3732,7 +3734,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3732
3734
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-attachments",
|
|
3733
3735
|
"manifest": {
|
|
3734
3736
|
"name": "@powerhousedao/reactor-attachments",
|
|
3735
|
-
"version": "6.0.0-dev.
|
|
3737
|
+
"version": "6.0.0-dev.215",
|
|
3736
3738
|
"license": "AGPL-3.0-only",
|
|
3737
3739
|
"type": "module",
|
|
3738
3740
|
"repository": {
|
|
@@ -3768,7 +3770,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3768
3770
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
3769
3771
|
"manifest": {
|
|
3770
3772
|
"name": "@powerhousedao/reactor-browser",
|
|
3771
|
-
"version": "6.0.0-dev.
|
|
3773
|
+
"version": "6.0.0-dev.215",
|
|
3772
3774
|
"license": "AGPL-3.0-only",
|
|
3773
3775
|
"type": "module",
|
|
3774
3776
|
"repository": {
|
|
@@ -3822,6 +3824,8 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3822
3824
|
"graphql-tag": "catalog:",
|
|
3823
3825
|
"kysely": "catalog:",
|
|
3824
3826
|
"kysely-pglite-dialect": "catalog:",
|
|
3827
|
+
"remeda": "catalog:",
|
|
3828
|
+
"zod": "catalog:",
|
|
3825
3829
|
"lodash.isequal": "^4.5.0",
|
|
3826
3830
|
"luxon": "^3.6.1",
|
|
3827
3831
|
"lz-string": "^1.5.0",
|
|
@@ -3861,7 +3865,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3861
3865
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
3862
3866
|
"manifest": {
|
|
3863
3867
|
"name": "@powerhousedao/reactor-hypercore",
|
|
3864
|
-
"version": "6.0.0-dev.
|
|
3868
|
+
"version": "6.0.0-dev.215",
|
|
3865
3869
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
3866
3870
|
"repository": {
|
|
3867
3871
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3903,7 +3907,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3903
3907
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
3904
3908
|
"manifest": {
|
|
3905
3909
|
"name": "@powerhousedao/reactor-mcp",
|
|
3906
|
-
"version": "6.0.0-dev.
|
|
3910
|
+
"version": "6.0.0-dev.215",
|
|
3907
3911
|
"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.",
|
|
3908
3912
|
"type": "module",
|
|
3909
3913
|
"repository": {
|
|
@@ -3958,7 +3962,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3958
3962
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
3959
3963
|
"manifest": {
|
|
3960
3964
|
"name": "@powerhousedao/registry",
|
|
3961
|
-
"version": "6.0.0-dev.
|
|
3965
|
+
"version": "6.0.0-dev.215",
|
|
3962
3966
|
"description": "",
|
|
3963
3967
|
"type": "module",
|
|
3964
3968
|
"repository": {
|
|
@@ -4001,7 +4005,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4001
4005
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
4002
4006
|
"manifest": {
|
|
4003
4007
|
"name": "@renown/sdk",
|
|
4004
|
-
"version": "6.0.0-dev.
|
|
4008
|
+
"version": "6.0.0-dev.215",
|
|
4005
4009
|
"description": "",
|
|
4006
4010
|
"license": "AGPL-3.0-only",
|
|
4007
4011
|
"private": false,
|
|
@@ -4051,7 +4055,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4051
4055
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
4052
4056
|
"manifest": {
|
|
4053
4057
|
"name": "@powerhousedao/shared",
|
|
4054
|
-
"version": "6.0.0-dev.
|
|
4058
|
+
"version": "6.0.0-dev.215",
|
|
4055
4059
|
"type": "module",
|
|
4056
4060
|
"sideEffects": false,
|
|
4057
4061
|
"publishConfig": { "access": "public" },
|
|
@@ -4160,7 +4164,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4160
4164
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
4161
4165
|
"manifest": {
|
|
4162
4166
|
"name": "@powerhousedao/vetra",
|
|
4163
|
-
"version": "6.0.0-dev.
|
|
4167
|
+
"version": "6.0.0-dev.215",
|
|
4164
4168
|
"license": "AGPL-3.0-only",
|
|
4165
4169
|
"type": "module",
|
|
4166
4170
|
"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 packageJsonExports,\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 { type PackageJson, 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 { writePackage } 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({\n cwd: projectDir,\n normalize: false,\n });\n const exports = packageJsonExports;\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 const updatedPackageJson: PackageJson = {\n ...packageJson,\n type: packageJson.type ?? \"module\",\n sideEffects: packageJson.sideEffects ?? false,\n files: packageJson.files ?? [\"/dist\"],\n exports,\n scripts,\n dependencies,\n devDependencies,\n } as PackageJson;\n await writePackage(projectDir, updatedPackageJson);\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 packageJsonExports,\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 { type PackageJson, 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 { writePackage } 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({\n cwd: projectDir,\n normalize: false,\n });\n const exports = packageJsonExports;\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 const updatedPackageJson: PackageJson = {\n ...packageJson,\n type: packageJson.type ?? \"module\",\n sideEffects: packageJson.sideEffects ?? false,\n files: packageJson.files ?? [\"/dist\"],\n exports,\n scripts,\n dependencies,\n devDependencies,\n } as PackageJson;\n await writePackage(projectDir, updatedPackageJson);\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":";;;;;;;;;;;;;;;;;;;;;AAQA,eAAsB,kBACpB,MACmC;CACnC,IAAI;AACJ,KAAI;AACF,MAAI,CAAC,KACH,OAAM,IAAI,MAAM,oCAAoC;WAC3C,KAAK,SAAS,OAAO,IAAI,KAAK,SAAS,OAAO,CAEvD,kBADa,MAAM,iBAAiB,MAAM,qBAAqB,EAC1C,MAAM;WAClB,KAAK,SAAS,QAAQ,EAAE;GACjC,MAAM,OAAO,MAAM,SAAS,MAAM,QAAQ;GAC1C,MAAM,aAAa,KAAK,MAAM,KAAK;AACnC,OAAI,WAAW,WACb,iBAAgB,WAAW,MAAM;OAEjC,iBAAgB;QAGlB,OAAM,IAAI,MAAM,sDAAsD;AAExE,SAAO;UACA,OAAO;AACd,QAAO,MAA4B,SAAS,qCACxC,IAAI,MAAM,4BAA4B,GACtC;;;;;ACDR,eAAsB,sBACpB,oBACA,SACA;AACA,OAAM,6BAA6B,oBAAoB,QAAQ;;AAIjE,eAAsB,0BAA0B,SAAkB;CAChE,MAAM,EAAE,WAAW,sBAAsB,qBACvC,SACA,kBACD;CAED,MAAM,0BAA0B,KAC9BA,cAF4B,kBAAkB,SAAS,EAEpB,EAAE,eAAe,MAAM,CAAC,EAC3D,IAAI,uBAAuB,EAC3B,OAAO,UAAU,CAClB;AAED,MAAK,MAAM,sBAAsB,wBAC/B,OAAM,sBAAsB,oBAAoB,QAAQ;;AAG5D,eAAsB,iBAAiB,UAAkB,SAAkB;AAKzE,OAAM,sBAHqB,MAAM,kBAAkB,SAAS,EAGZ,QAAQ;;AAS1D,eAAsB,eACpB,MACA,SACA;CACA,MAAM,EACJ,YACA,eACA,UAAU,aACV,kBACE;AAEJ,KAAI,cAAc,SAAS,EACzB,OAAM,IAAI,MAAM,gDAAgD;CAGlE,MAAM,kBAAkB,cAAc;CACtC,MAAM,WAAW,eAAe,UAAU,WAAW;AAGrD,OAAM,8BAA8B;EAClC;EACA,WAJgB,iBAAiB,UAAU,WAAW;EAKtD;EACA;EACA;EACD,CAAC;;AAOJ,eAAsB,mBAAmB,SAAkB;CACzD,MAAM,EAAE,WAAW,eAAe,qBAAqB,SAAS,UAAU;CAG1E,MAAM,eAAe,KACnB,WAAW,gBAAgB,EAC3B,KAAK,QAAQ,IAAI,aAAa,CAAC,EAC/B,KAAK,YAAY,kBAAkB,SAAS,QAAQ,CAAC,EACrD,OAAO,SAAS,EAChB,QACG,EAAE,oBACD,CAAC,aAAa,6BAA6B,cAAc,CAC5D,CACF;AAED,MAAK,MAAM,eAAe,cAAc;EACtC,MAAM,EACJ,MAAM,YACN,IAAI,UACJ,SAAS,eACT,kBACE;AAEJ,QAAM,eACJ;GACE;GACA;GACA;GACA;GACD,EACD,QACD;;;AAWL,eAAsB,YAAY,MAAuB,SAAkB;CACzE,MAAM,EACJ,SACA,OACA,sBACA,sBACA,eACE;AAEJ,OAAM,mBAAmB;EACvB;EACA,WAAW,cAAc,UAAU,QAAQ;EAC3C,YAAY;EACZ,UAAU,SAAS,UAAU,QAAQ;EACrC,yBAAyB,wBAAwB,EAAE;EACnD,sBAAsB,wBAAwB;EAC/C,CAAC;;AAOJ,eAAsB,gBAAgB,SAAkB;CACtD,MAAM,EAAE,WAAW,eAAe,qBAAqB,SAAS,UAAU;CAG1E,MAAM,YAAY,KAChB,WAAW,gBAAgB,EAC3B,KAAK,QAAQ,IAAI,aAAa,CAAC,EAC/B,KAAK,YAAY,eAAe,SAAS,QAAQ,CAAC,EAClD,OAAO,SAAS,CACjB;AAED,MAAK,MAAM,YAAY,WAAW;EAChC,MAAM,EACJ,MAAM,SACN,IAAI,OACJ,SAAS,YACT,sBACA,yBACE;AACJ,QAAM,YACJ;GACE;GACA;GACA;GACA;GACA;GACD,EACD,QACD;;;AAGL,eAAsB,iBAAiB,cAAsB,SAAkB;AAC7E,OAAM,wBAAwB;EAAE;EAAc;EAAS,CAAC;;AAI1D,eAAsB,qBAAqB,SAAkB;CAC3D,MAAM,EAAE,WAAW,iBAAiB,qBAClC,SACA,YACD;CAED,MAAM,gBAAgB,KACpB,aAAa,gBAAgB,EAC7B,KAAK,QAAQ,IAAI,aAAa,CAAC,EAC/B,KAAK,YAAY,oBAAoB,SAAS,QAAQ,CAAC,EACvD,IAAI,KAAK,eAAe,CAAC,EACzB,OAAO,UAAU,EACjB,QAAQ,CACT;AACD,MAAK,MAAM,gBAAgB,cACzB,OAAM,iBAAiB,cAAc,QAAQ;;AAIjD,eAAsB,kBACpB,MAMA,SACA;AACA,QAAO,MAAM,yBAAyB;EACpC;EACA,GAAG;EACJ,CAAC;;AAIJ,eAAsB,sBAAsB,SAAkB;CAC5D,MAAM,EAAE,WAAW,kBAAkB,qBACnC,SACA,aACD;CACD,MAAM,uBAAuB,KAC3B,cAAc,gBAAgB,EAC9B,KAAK,QAAQ,IAAI,aAAa,CAAC,EAC/B,KAAK,YAAY,qBAAqB,SAAS,QAAQ,CAAC,CACzD;AAED,MAAK,MAAM,iBAAiB,qBAC1B,OAAM,kBAAkB,eAAe,QAAQ;;AAKnD,eAAsB,YAAY,SAAkB;AAClD,OAAM,0BAA0B,QAAQ;AACxC,OAAM,mBAAmB,QAAQ;AACjC,OAAM,gBAAgB,QAAQ;AAC9B,OAAM,qBAAqB,QAAQ;AACnC,OAAM,sBAAsB,QAAQ;;;;AC/PtC,SAAS,qBAA6B;CAGpC,MAAM,QAFU,cAAc,OAAO,KAAK,IAAI,CAExB,QAAQ,MAAM,gBAAgB;AACpD,KAAI,MACF,MAAK,MAAM,YAAY,OAAO;EAE5B,MAAM,UAAUC,OADAA,OAAK,UAAU,gBAAgB,EACjB,aAAa;AAE3C,MAAI,WAAW,QAAQ,CACrB,QAAO;;AAKb,OAAM,IAAI,MAAM,0CAA0C;;AAQ5D,SAAS,WACP,SACA,MACA,KACe;AACf,QAAO,IAAI,SAAS,SAAS,WAAW;EACtC,MAAM,QAAQ,MAAM,SAAS,MAAM;GACjC;GACA,OAAO;GACP,OAAO;GACR,CAAC;AAEF,QAAM,GAAG,UAAU,SAAS;AAC1B,OAAI,SAAS,EACX,UAAS;OAET,wBAAO,IAAI,MAAM,iCAAiC,OAAO,CAAC;IAE5D;AAEF,QAAM,GAAG,UAAU,UAAU;AAC3B,UAAO,MAAM;IACb;GACF;;AAGJ,eAAsB,iBAAiB,EACrC,eACA,cACW;CACX,MAAM,UAAU,cAAc,QAAQ,eAAe,eAAe;AAEpE,KAAI;AAGF,QAAM,WACJ,QACA;GAJoB,oBAAoB;GAIxB;GAAe;GAAa;GAAQ,EACpD,QAAQ,KAAK,CACd;AAED,UAAQ,IAAI,6BAA6B,UAAU;UAC5C,OAAO;AACd,UAAQ,MAAM,4BAA4B,MAAM;;;;;ACrCpD,eAAsB,yCACpB,cACA;AAMA,KAAI,EAJF,iBAAiB,YACjB,iBAAiB,aACjB,iBAAiB,OAEP,QAAO;AAInB,SAHgB,MAAM,SAAS,KAC7B,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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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.215",
|
|
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.215",
|
|
57
|
+
"document-model": "6.0.0-dev.215"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@pnpm/find-workspace-dir": "^1000.1.5",
|