@powerhousedao/codegen 6.0.0-dev.246 → 6.0.0-dev.247
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 +136 -58
- 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.247",
|
|
181
181
|
"homepage": "https://powerhouse.academy",
|
|
182
182
|
"packageManager": "pnpm@10.9.0",
|
|
183
183
|
"repository": {
|
|
@@ -198,6 +198,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
198
198
|
"typecheck": "tsc",
|
|
199
199
|
"generate:cli-docs": "tsx ./scripts/generate-combined-cli-docs.ts",
|
|
200
200
|
"generate:llm-docs": "tsx ./scripts/generate-llm-docs.ts",
|
|
201
|
+
"check:doc-snippets": "tsx ./scripts/check-doc-snippets.ts",
|
|
201
202
|
"heroku-postbuild": "npm run build",
|
|
202
203
|
"slides:preview": "marp -s ./slides",
|
|
203
204
|
"slides:build": "marp ./slides"
|
|
@@ -243,7 +244,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
243
244
|
"manifest": {
|
|
244
245
|
"name": "@powerhousedao/connect",
|
|
245
246
|
"productName": "Powerhouse-Connect",
|
|
246
|
-
"version": "6.0.0-dev.
|
|
247
|
+
"version": "6.0.0-dev.247",
|
|
247
248
|
"description": "Powerhouse Connect",
|
|
248
249
|
"main": "dist/index.html",
|
|
249
250
|
"type": "module",
|
|
@@ -355,7 +356,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
355
356
|
"manifest": {
|
|
356
357
|
"name": "@powerhousedao/switchboard",
|
|
357
358
|
"type": "module",
|
|
358
|
-
"version": "6.0.0-dev.
|
|
359
|
+
"version": "6.0.0-dev.247",
|
|
359
360
|
"main": "dist/index.mjs",
|
|
360
361
|
"exports": {
|
|
361
362
|
".": {
|
|
@@ -420,6 +421,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
420
421
|
"@powerhousedao/vetra": "workspace:*",
|
|
421
422
|
"@powerhousedao/reactor-api": "workspace:*",
|
|
422
423
|
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
424
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
423
425
|
"@pyroscope/nodejs": "^0.4.5",
|
|
424
426
|
"@renown/sdk": "workspace:*",
|
|
425
427
|
"@sentry/node": "^9.6.1",
|
|
@@ -449,7 +451,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
449
451
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
450
452
|
"manifest": {
|
|
451
453
|
"name": "@powerhousedao/ph-cli",
|
|
452
|
-
"version": "6.0.0-dev.
|
|
454
|
+
"version": "6.0.0-dev.247",
|
|
453
455
|
"description": "",
|
|
454
456
|
"license": "AGPL-3.0-only",
|
|
455
457
|
"type": "module",
|
|
@@ -512,7 +514,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
512
514
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
513
515
|
"manifest": {
|
|
514
516
|
"name": "ph-cmd",
|
|
515
|
-
"version": "6.0.0-dev.
|
|
517
|
+
"version": "6.0.0-dev.247",
|
|
516
518
|
"description": "",
|
|
517
519
|
"license": "AGPL-3.0-only",
|
|
518
520
|
"type": "module",
|
|
@@ -557,7 +559,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
557
559
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
558
560
|
"manifest": {
|
|
559
561
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
560
|
-
"version": "6.0.0-dev.
|
|
562
|
+
"version": "6.0.0-dev.247",
|
|
561
563
|
"license": "AGPL-3.0-only",
|
|
562
564
|
"repository": {
|
|
563
565
|
"type": "git",
|
|
@@ -601,7 +603,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
601
603
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
602
604
|
"manifest": {
|
|
603
605
|
"name": "@powerhousedao/analytics-engine-core",
|
|
604
|
-
"version": "6.0.0-dev.
|
|
606
|
+
"version": "6.0.0-dev.247",
|
|
605
607
|
"license": "AGPL-3.0-only",
|
|
606
608
|
"repository": {
|
|
607
609
|
"type": "git",
|
|
@@ -634,7 +636,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
634
636
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
635
637
|
"manifest": {
|
|
636
638
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
637
|
-
"version": "6.0.0-dev.
|
|
639
|
+
"version": "6.0.0-dev.247",
|
|
638
640
|
"license": "AGPL-3.0-only",
|
|
639
641
|
"repository": {
|
|
640
642
|
"type": "git",
|
|
@@ -667,7 +669,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
667
669
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
668
670
|
"manifest": {
|
|
669
671
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
670
|
-
"version": "6.0.0-dev.
|
|
672
|
+
"version": "6.0.0-dev.247",
|
|
671
673
|
"license": "AGPL-3.0-only",
|
|
672
674
|
"repository": {
|
|
673
675
|
"type": "git",
|
|
@@ -704,7 +706,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
704
706
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
705
707
|
"manifest": {
|
|
706
708
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
707
|
-
"version": "6.0.0-dev.
|
|
709
|
+
"version": "6.0.0-dev.247",
|
|
708
710
|
"license": "AGPL-3.0-only",
|
|
709
711
|
"repository": {
|
|
710
712
|
"type": "git",
|
|
@@ -742,7 +744,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
742
744
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
743
745
|
"manifest": {
|
|
744
746
|
"name": "@powerhousedao/builder-tools",
|
|
745
|
-
"version": "6.0.0-dev.
|
|
747
|
+
"version": "6.0.0-dev.247",
|
|
746
748
|
"type": "module",
|
|
747
749
|
"license": "AGPL-3.0-only",
|
|
748
750
|
"publishConfig": { "access": "public" },
|
|
@@ -784,7 +786,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
784
786
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
785
787
|
"manifest": {
|
|
786
788
|
"name": "@powerhousedao/codegen",
|
|
787
|
-
"version": "6.0.0-dev.
|
|
789
|
+
"version": "6.0.0-dev.247",
|
|
788
790
|
"license": "AGPL-3.0-only",
|
|
789
791
|
"private": false,
|
|
790
792
|
"type": "module",
|
|
@@ -857,7 +859,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
857
859
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
858
860
|
"manifest": {
|
|
859
861
|
"name": "@powerhousedao/common",
|
|
860
|
-
"version": "6.0.0-dev.
|
|
862
|
+
"version": "6.0.0-dev.247",
|
|
861
863
|
"license": "AGPL-3.0-only",
|
|
862
864
|
"type": "module",
|
|
863
865
|
"files": ["/dist"],
|
|
@@ -909,7 +911,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
909
911
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
910
912
|
"manifest": {
|
|
911
913
|
"name": "@powerhousedao/config",
|
|
912
|
-
"version": "6.0.0-dev.
|
|
914
|
+
"version": "6.0.0-dev.247",
|
|
913
915
|
"description": "",
|
|
914
916
|
"license": "AGPL-3.0-only",
|
|
915
917
|
"private": false,
|
|
@@ -944,7 +946,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
944
946
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
945
947
|
"manifest": {
|
|
946
948
|
"name": "@powerhousedao/design-system",
|
|
947
|
-
"version": "6.0.0-dev.
|
|
949
|
+
"version": "6.0.0-dev.247",
|
|
948
950
|
"description": "",
|
|
949
951
|
"files": ["dist", "theme.css"],
|
|
950
952
|
"type": "module",
|
|
@@ -1090,7 +1092,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1090
1092
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
1091
1093
|
"manifest": {
|
|
1092
1094
|
"name": "document-model",
|
|
1093
|
-
"version": "6.0.0-dev.
|
|
1095
|
+
"version": "6.0.0-dev.247",
|
|
1094
1096
|
"license": "AGPL-3.0-only",
|
|
1095
1097
|
"private": false,
|
|
1096
1098
|
"files": ["dist"],
|
|
@@ -1148,7 +1150,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1148
1150
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
1149
1151
|
"manifest": {
|
|
1150
1152
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
1151
|
-
"version": "6.0.0-dev.
|
|
1153
|
+
"version": "6.0.0-dev.247",
|
|
1152
1154
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
1153
1155
|
"type": "module",
|
|
1154
1156
|
"sideEffects": false,
|
|
@@ -1181,11 +1183,45 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1181
1183
|
"peerDependencies": { "@powerhousedao/reactor": "workspace:*" }
|
|
1182
1184
|
}
|
|
1183
1185
|
},
|
|
1186
|
+
{
|
|
1187
|
+
"dir": "/home/runner/work/powerhouse/powerhouse/packages/pglite-fs",
|
|
1188
|
+
"manifest": {
|
|
1189
|
+
"name": "@powerhousedao/pglite-fs",
|
|
1190
|
+
"version": "6.0.0-dev.247",
|
|
1191
|
+
"license": "AGPL-3.0-only",
|
|
1192
|
+
"type": "module",
|
|
1193
|
+
"repository": {
|
|
1194
|
+
"type": "git",
|
|
1195
|
+
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
1196
|
+
"directory": "packages/pglite-fs"
|
|
1197
|
+
},
|
|
1198
|
+
"publishConfig": { "access": "public" },
|
|
1199
|
+
"files": ["dist"],
|
|
1200
|
+
"exports": { ".": {
|
|
1201
|
+
"types": "./dist/index.d.ts",
|
|
1202
|
+
"import": "./dist/index.js"
|
|
1203
|
+
} },
|
|
1204
|
+
"sideEffects": false,
|
|
1205
|
+
"scripts": {
|
|
1206
|
+
"tsc": "tsc",
|
|
1207
|
+
"lint": "eslint",
|
|
1208
|
+
"build": "tsdown",
|
|
1209
|
+
"test": "vitest --run"
|
|
1210
|
+
},
|
|
1211
|
+
"peerDependencies": { "@electric-sql/pglite": "catalog:" },
|
|
1212
|
+
"devDependencies": {
|
|
1213
|
+
"@electric-sql/pglite": "catalog:",
|
|
1214
|
+
"tsdown": "catalog:",
|
|
1215
|
+
"tsx": "catalog:",
|
|
1216
|
+
"vitest": "catalog:"
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
},
|
|
1184
1220
|
{
|
|
1185
1221
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
1186
1222
|
"manifest": {
|
|
1187
1223
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
1188
|
-
"version": "6.0.0-dev.
|
|
1224
|
+
"version": "6.0.0-dev.247",
|
|
1189
1225
|
"description": "",
|
|
1190
1226
|
"keywords": [],
|
|
1191
1227
|
"author": "",
|
|
@@ -1299,7 +1335,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1299
1335
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
1300
1336
|
"manifest": {
|
|
1301
1337
|
"name": "@powerhousedao/reactor",
|
|
1302
|
-
"version": "6.0.0-dev.
|
|
1338
|
+
"version": "6.0.0-dev.247",
|
|
1303
1339
|
"description": "",
|
|
1304
1340
|
"repository": {
|
|
1305
1341
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1341,6 +1377,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1341
1377
|
"document-model": "workspace:*"
|
|
1342
1378
|
},
|
|
1343
1379
|
"devDependencies": {
|
|
1380
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
1344
1381
|
"@vitest/coverage-v8": "catalog:",
|
|
1345
1382
|
"prettier": "catalog:",
|
|
1346
1383
|
"tinybench": "^2.9.0",
|
|
@@ -1355,7 +1392,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1355
1392
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
1356
1393
|
"manifest": {
|
|
1357
1394
|
"name": "@powerhousedao/reactor-api",
|
|
1358
|
-
"version": "6.0.0-dev.
|
|
1395
|
+
"version": "6.0.0-dev.247",
|
|
1359
1396
|
"description": "",
|
|
1360
1397
|
"type": "module",
|
|
1361
1398
|
"repository": {
|
|
@@ -1407,6 +1444,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1407
1444
|
"@powerhousedao/analytics-engine-pg": "workspace:*",
|
|
1408
1445
|
"@powerhousedao/config": "workspace:*",
|
|
1409
1446
|
"@powerhousedao/document-engineering": "catalog:",
|
|
1447
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
1410
1448
|
"@powerhousedao/reactor": "workspace:*",
|
|
1411
1449
|
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
1412
1450
|
"@powerhousedao/reactor-mcp": "workspace:*",
|
|
@@ -1465,7 +1503,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1465
1503
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-attachments",
|
|
1466
1504
|
"manifest": {
|
|
1467
1505
|
"name": "@powerhousedao/reactor-attachments",
|
|
1468
|
-
"version": "6.0.0-dev.
|
|
1506
|
+
"version": "6.0.0-dev.247",
|
|
1469
1507
|
"license": "AGPL-3.0-only",
|
|
1470
1508
|
"type": "module",
|
|
1471
1509
|
"repository": {
|
|
@@ -1501,7 +1539,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1501
1539
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
1502
1540
|
"manifest": {
|
|
1503
1541
|
"name": "@powerhousedao/reactor-browser",
|
|
1504
|
-
"version": "6.0.0-dev.
|
|
1542
|
+
"version": "6.0.0-dev.247",
|
|
1505
1543
|
"license": "AGPL-3.0-only",
|
|
1506
1544
|
"type": "module",
|
|
1507
1545
|
"repository": {
|
|
@@ -1597,7 +1635,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1597
1635
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-drive",
|
|
1598
1636
|
"manifest": {
|
|
1599
1637
|
"name": "@powerhousedao/reactor-drive",
|
|
1600
|
-
"version": "6.0.0-dev.
|
|
1638
|
+
"version": "6.0.0-dev.247",
|
|
1601
1639
|
"license": "AGPL-3.0-only",
|
|
1602
1640
|
"type": "module",
|
|
1603
1641
|
"repository": {
|
|
@@ -1635,7 +1673,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1635
1673
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
1636
1674
|
"manifest": {
|
|
1637
1675
|
"name": "@powerhousedao/reactor-hypercore",
|
|
1638
|
-
"version": "6.0.0-dev.
|
|
1676
|
+
"version": "6.0.0-dev.247",
|
|
1639
1677
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
1640
1678
|
"repository": {
|
|
1641
1679
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -1677,7 +1715,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1677
1715
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
1678
1716
|
"manifest": {
|
|
1679
1717
|
"name": "@powerhousedao/reactor-mcp",
|
|
1680
|
-
"version": "6.0.0-dev.
|
|
1718
|
+
"version": "6.0.0-dev.247",
|
|
1681
1719
|
"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.",
|
|
1682
1720
|
"type": "module",
|
|
1683
1721
|
"repository": {
|
|
@@ -1728,7 +1766,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1728
1766
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
1729
1767
|
"manifest": {
|
|
1730
1768
|
"name": "@powerhousedao/registry",
|
|
1731
|
-
"version": "6.0.0-dev.
|
|
1769
|
+
"version": "6.0.0-dev.247",
|
|
1732
1770
|
"description": "",
|
|
1733
1771
|
"type": "module",
|
|
1734
1772
|
"repository": {
|
|
@@ -1773,7 +1811,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1773
1811
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
1774
1812
|
"manifest": {
|
|
1775
1813
|
"name": "@renown/sdk",
|
|
1776
|
-
"version": "6.0.0-dev.
|
|
1814
|
+
"version": "6.0.0-dev.247",
|
|
1777
1815
|
"description": "",
|
|
1778
1816
|
"license": "AGPL-3.0-only",
|
|
1779
1817
|
"private": false,
|
|
@@ -1822,7 +1860,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1822
1860
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
1823
1861
|
"manifest": {
|
|
1824
1862
|
"name": "@powerhousedao/shared",
|
|
1825
|
-
"version": "6.0.0-dev.
|
|
1863
|
+
"version": "6.0.0-dev.247",
|
|
1826
1864
|
"type": "module",
|
|
1827
1865
|
"sideEffects": false,
|
|
1828
1866
|
"publishConfig": { "access": "public" },
|
|
@@ -1959,7 +1997,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
1959
1997
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
1960
1998
|
"manifest": {
|
|
1961
1999
|
"name": "@powerhousedao/vetra",
|
|
1962
|
-
"version": "6.0.0-dev.
|
|
2000
|
+
"version": "6.0.0-dev.247",
|
|
1963
2001
|
"license": "AGPL-3.0-only",
|
|
1964
2002
|
"type": "module",
|
|
1965
2003
|
"sideEffects": false,
|
|
@@ -2071,6 +2109,7 @@ async function getFullyQualifiedWorkspacePackageVersion(versionOrTag) {
|
|
|
2071
2109
|
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.2",
|
|
2072
2110
|
"@opentelemetry/sdk-metrics": "^1.29.0",
|
|
2073
2111
|
"@powerhousedao/opentelemetry-instrumentation-reactor": "workspace:*",
|
|
2112
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
2074
2113
|
"@powerhousedao/reactor": "workspace:*",
|
|
2075
2114
|
"@pyroscope/nodejs": "^0.4.7",
|
|
2076
2115
|
"document-model": "workspace:*",
|
|
@@ -2485,7 +2524,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2485
2524
|
"dir": "/home/runner/work/powerhouse/powerhouse/apps/academy",
|
|
2486
2525
|
"manifest": {
|
|
2487
2526
|
"name": "@powerhousedao/academy",
|
|
2488
|
-
"version": "6.0.0-dev.
|
|
2527
|
+
"version": "6.0.0-dev.247",
|
|
2489
2528
|
"homepage": "https://powerhouse.academy",
|
|
2490
2529
|
"packageManager": "pnpm@10.9.0",
|
|
2491
2530
|
"repository": {
|
|
@@ -2506,6 +2545,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2506
2545
|
"typecheck": "tsc",
|
|
2507
2546
|
"generate:cli-docs": "tsx ./scripts/generate-combined-cli-docs.ts",
|
|
2508
2547
|
"generate:llm-docs": "tsx ./scripts/generate-llm-docs.ts",
|
|
2548
|
+
"check:doc-snippets": "tsx ./scripts/check-doc-snippets.ts",
|
|
2509
2549
|
"heroku-postbuild": "npm run build",
|
|
2510
2550
|
"slides:preview": "marp -s ./slides",
|
|
2511
2551
|
"slides:build": "marp ./slides"
|
|
@@ -2551,7 +2591,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2551
2591
|
"manifest": {
|
|
2552
2592
|
"name": "@powerhousedao/connect",
|
|
2553
2593
|
"productName": "Powerhouse-Connect",
|
|
2554
|
-
"version": "6.0.0-dev.
|
|
2594
|
+
"version": "6.0.0-dev.247",
|
|
2555
2595
|
"description": "Powerhouse Connect",
|
|
2556
2596
|
"main": "dist/index.html",
|
|
2557
2597
|
"type": "module",
|
|
@@ -2663,7 +2703,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2663
2703
|
"manifest": {
|
|
2664
2704
|
"name": "@powerhousedao/switchboard",
|
|
2665
2705
|
"type": "module",
|
|
2666
|
-
"version": "6.0.0-dev.
|
|
2706
|
+
"version": "6.0.0-dev.247",
|
|
2667
2707
|
"main": "dist/index.mjs",
|
|
2668
2708
|
"exports": {
|
|
2669
2709
|
".": {
|
|
@@ -2728,6 +2768,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2728
2768
|
"@powerhousedao/vetra": "workspace:*",
|
|
2729
2769
|
"@powerhousedao/reactor-api": "workspace:*",
|
|
2730
2770
|
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
2771
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
2731
2772
|
"@pyroscope/nodejs": "^0.4.5",
|
|
2732
2773
|
"@renown/sdk": "workspace:*",
|
|
2733
2774
|
"@sentry/node": "^9.6.1",
|
|
@@ -2757,7 +2798,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2757
2798
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cli",
|
|
2758
2799
|
"manifest": {
|
|
2759
2800
|
"name": "@powerhousedao/ph-cli",
|
|
2760
|
-
"version": "6.0.0-dev.
|
|
2801
|
+
"version": "6.0.0-dev.247",
|
|
2761
2802
|
"description": "",
|
|
2762
2803
|
"license": "AGPL-3.0-only",
|
|
2763
2804
|
"type": "module",
|
|
@@ -2820,7 +2861,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2820
2861
|
"dir": "/home/runner/work/powerhouse/powerhouse/clis/ph-cmd",
|
|
2821
2862
|
"manifest": {
|
|
2822
2863
|
"name": "ph-cmd",
|
|
2823
|
-
"version": "6.0.0-dev.
|
|
2864
|
+
"version": "6.0.0-dev.247",
|
|
2824
2865
|
"description": "",
|
|
2825
2866
|
"license": "AGPL-3.0-only",
|
|
2826
2867
|
"type": "module",
|
|
@@ -2865,7 +2906,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2865
2906
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/browser",
|
|
2866
2907
|
"manifest": {
|
|
2867
2908
|
"name": "@powerhousedao/analytics-engine-browser",
|
|
2868
|
-
"version": "6.0.0-dev.
|
|
2909
|
+
"version": "6.0.0-dev.247",
|
|
2869
2910
|
"license": "AGPL-3.0-only",
|
|
2870
2911
|
"repository": {
|
|
2871
2912
|
"type": "git",
|
|
@@ -2909,7 +2950,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2909
2950
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/core",
|
|
2910
2951
|
"manifest": {
|
|
2911
2952
|
"name": "@powerhousedao/analytics-engine-core",
|
|
2912
|
-
"version": "6.0.0-dev.
|
|
2953
|
+
"version": "6.0.0-dev.247",
|
|
2913
2954
|
"license": "AGPL-3.0-only",
|
|
2914
2955
|
"repository": {
|
|
2915
2956
|
"type": "git",
|
|
@@ -2942,7 +2983,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2942
2983
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/graphql",
|
|
2943
2984
|
"manifest": {
|
|
2944
2985
|
"name": "@powerhousedao/analytics-engine-graphql",
|
|
2945
|
-
"version": "6.0.0-dev.
|
|
2986
|
+
"version": "6.0.0-dev.247",
|
|
2946
2987
|
"license": "AGPL-3.0-only",
|
|
2947
2988
|
"repository": {
|
|
2948
2989
|
"type": "git",
|
|
@@ -2975,7 +3016,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
2975
3016
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/knex",
|
|
2976
3017
|
"manifest": {
|
|
2977
3018
|
"name": "@powerhousedao/analytics-engine-knex",
|
|
2978
|
-
"version": "6.0.0-dev.
|
|
3019
|
+
"version": "6.0.0-dev.247",
|
|
2979
3020
|
"license": "AGPL-3.0-only",
|
|
2980
3021
|
"repository": {
|
|
2981
3022
|
"type": "git",
|
|
@@ -3012,7 +3053,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3012
3053
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/analytics-engine/pg",
|
|
3013
3054
|
"manifest": {
|
|
3014
3055
|
"name": "@powerhousedao/analytics-engine-pg",
|
|
3015
|
-
"version": "6.0.0-dev.
|
|
3056
|
+
"version": "6.0.0-dev.247",
|
|
3016
3057
|
"license": "AGPL-3.0-only",
|
|
3017
3058
|
"repository": {
|
|
3018
3059
|
"type": "git",
|
|
@@ -3050,7 +3091,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3050
3091
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/builder-tools",
|
|
3051
3092
|
"manifest": {
|
|
3052
3093
|
"name": "@powerhousedao/builder-tools",
|
|
3053
|
-
"version": "6.0.0-dev.
|
|
3094
|
+
"version": "6.0.0-dev.247",
|
|
3054
3095
|
"type": "module",
|
|
3055
3096
|
"license": "AGPL-3.0-only",
|
|
3056
3097
|
"publishConfig": { "access": "public" },
|
|
@@ -3092,7 +3133,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3092
3133
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/codegen",
|
|
3093
3134
|
"manifest": {
|
|
3094
3135
|
"name": "@powerhousedao/codegen",
|
|
3095
|
-
"version": "6.0.0-dev.
|
|
3136
|
+
"version": "6.0.0-dev.247",
|
|
3096
3137
|
"license": "AGPL-3.0-only",
|
|
3097
3138
|
"private": false,
|
|
3098
3139
|
"type": "module",
|
|
@@ -3165,7 +3206,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3165
3206
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/common",
|
|
3166
3207
|
"manifest": {
|
|
3167
3208
|
"name": "@powerhousedao/common",
|
|
3168
|
-
"version": "6.0.0-dev.
|
|
3209
|
+
"version": "6.0.0-dev.247",
|
|
3169
3210
|
"license": "AGPL-3.0-only",
|
|
3170
3211
|
"type": "module",
|
|
3171
3212
|
"files": ["/dist"],
|
|
@@ -3217,7 +3258,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3217
3258
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/config",
|
|
3218
3259
|
"manifest": {
|
|
3219
3260
|
"name": "@powerhousedao/config",
|
|
3220
|
-
"version": "6.0.0-dev.
|
|
3261
|
+
"version": "6.0.0-dev.247",
|
|
3221
3262
|
"description": "",
|
|
3222
3263
|
"license": "AGPL-3.0-only",
|
|
3223
3264
|
"private": false,
|
|
@@ -3252,7 +3293,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3252
3293
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/design-system",
|
|
3253
3294
|
"manifest": {
|
|
3254
3295
|
"name": "@powerhousedao/design-system",
|
|
3255
|
-
"version": "6.0.0-dev.
|
|
3296
|
+
"version": "6.0.0-dev.247",
|
|
3256
3297
|
"description": "",
|
|
3257
3298
|
"files": ["dist", "theme.css"],
|
|
3258
3299
|
"type": "module",
|
|
@@ -3398,7 +3439,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3398
3439
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/document-model",
|
|
3399
3440
|
"manifest": {
|
|
3400
3441
|
"name": "document-model",
|
|
3401
|
-
"version": "6.0.0-dev.
|
|
3442
|
+
"version": "6.0.0-dev.247",
|
|
3402
3443
|
"license": "AGPL-3.0-only",
|
|
3403
3444
|
"private": false,
|
|
3404
3445
|
"files": ["dist"],
|
|
@@ -3456,7 +3497,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3456
3497
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/opentelemetry-instrumentation-reactor",
|
|
3457
3498
|
"manifest": {
|
|
3458
3499
|
"name": "@powerhousedao/opentelemetry-instrumentation-reactor",
|
|
3459
|
-
"version": "6.0.0-dev.
|
|
3500
|
+
"version": "6.0.0-dev.247",
|
|
3460
3501
|
"description": "OpenTelemetry instrumentation for @powerhousedao/reactor",
|
|
3461
3502
|
"type": "module",
|
|
3462
3503
|
"sideEffects": false,
|
|
@@ -3489,11 +3530,45 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3489
3530
|
"peerDependencies": { "@powerhousedao/reactor": "workspace:*" }
|
|
3490
3531
|
}
|
|
3491
3532
|
},
|
|
3533
|
+
{
|
|
3534
|
+
"dir": "/home/runner/work/powerhouse/powerhouse/packages/pglite-fs",
|
|
3535
|
+
"manifest": {
|
|
3536
|
+
"name": "@powerhousedao/pglite-fs",
|
|
3537
|
+
"version": "6.0.0-dev.247",
|
|
3538
|
+
"license": "AGPL-3.0-only",
|
|
3539
|
+
"type": "module",
|
|
3540
|
+
"repository": {
|
|
3541
|
+
"type": "git",
|
|
3542
|
+
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
3543
|
+
"directory": "packages/pglite-fs"
|
|
3544
|
+
},
|
|
3545
|
+
"publishConfig": { "access": "public" },
|
|
3546
|
+
"files": ["dist"],
|
|
3547
|
+
"exports": { ".": {
|
|
3548
|
+
"types": "./dist/index.d.ts",
|
|
3549
|
+
"import": "./dist/index.js"
|
|
3550
|
+
} },
|
|
3551
|
+
"sideEffects": false,
|
|
3552
|
+
"scripts": {
|
|
3553
|
+
"tsc": "tsc",
|
|
3554
|
+
"lint": "eslint",
|
|
3555
|
+
"build": "tsdown",
|
|
3556
|
+
"test": "vitest --run"
|
|
3557
|
+
},
|
|
3558
|
+
"peerDependencies": { "@electric-sql/pglite": "catalog:" },
|
|
3559
|
+
"devDependencies": {
|
|
3560
|
+
"@electric-sql/pglite": "catalog:",
|
|
3561
|
+
"tsdown": "catalog:",
|
|
3562
|
+
"tsx": "catalog:",
|
|
3563
|
+
"vitest": "catalog:"
|
|
3564
|
+
}
|
|
3565
|
+
}
|
|
3566
|
+
},
|
|
3492
3567
|
{
|
|
3493
3568
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/powerhouse-vetra-packages",
|
|
3494
3569
|
"manifest": {
|
|
3495
3570
|
"name": "@powerhousedao/powerhouse-vetra-packages",
|
|
3496
|
-
"version": "6.0.0-dev.
|
|
3571
|
+
"version": "6.0.0-dev.247",
|
|
3497
3572
|
"description": "",
|
|
3498
3573
|
"keywords": [],
|
|
3499
3574
|
"author": "",
|
|
@@ -3607,7 +3682,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3607
3682
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor",
|
|
3608
3683
|
"manifest": {
|
|
3609
3684
|
"name": "@powerhousedao/reactor",
|
|
3610
|
-
"version": "6.0.0-dev.
|
|
3685
|
+
"version": "6.0.0-dev.247",
|
|
3611
3686
|
"description": "",
|
|
3612
3687
|
"repository": {
|
|
3613
3688
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3649,6 +3724,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3649
3724
|
"document-model": "workspace:*"
|
|
3650
3725
|
},
|
|
3651
3726
|
"devDependencies": {
|
|
3727
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
3652
3728
|
"@vitest/coverage-v8": "catalog:",
|
|
3653
3729
|
"prettier": "catalog:",
|
|
3654
3730
|
"tinybench": "^2.9.0",
|
|
@@ -3663,7 +3739,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3663
3739
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-api",
|
|
3664
3740
|
"manifest": {
|
|
3665
3741
|
"name": "@powerhousedao/reactor-api",
|
|
3666
|
-
"version": "6.0.0-dev.
|
|
3742
|
+
"version": "6.0.0-dev.247",
|
|
3667
3743
|
"description": "",
|
|
3668
3744
|
"type": "module",
|
|
3669
3745
|
"repository": {
|
|
@@ -3715,6 +3791,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3715
3791
|
"@powerhousedao/analytics-engine-pg": "workspace:*",
|
|
3716
3792
|
"@powerhousedao/config": "workspace:*",
|
|
3717
3793
|
"@powerhousedao/document-engineering": "catalog:",
|
|
3794
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
3718
3795
|
"@powerhousedao/reactor": "workspace:*",
|
|
3719
3796
|
"@powerhousedao/reactor-attachments": "workspace:*",
|
|
3720
3797
|
"@powerhousedao/reactor-mcp": "workspace:*",
|
|
@@ -3773,7 +3850,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3773
3850
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-attachments",
|
|
3774
3851
|
"manifest": {
|
|
3775
3852
|
"name": "@powerhousedao/reactor-attachments",
|
|
3776
|
-
"version": "6.0.0-dev.
|
|
3853
|
+
"version": "6.0.0-dev.247",
|
|
3777
3854
|
"license": "AGPL-3.0-only",
|
|
3778
3855
|
"type": "module",
|
|
3779
3856
|
"repository": {
|
|
@@ -3809,7 +3886,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3809
3886
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-browser",
|
|
3810
3887
|
"manifest": {
|
|
3811
3888
|
"name": "@powerhousedao/reactor-browser",
|
|
3812
|
-
"version": "6.0.0-dev.
|
|
3889
|
+
"version": "6.0.0-dev.247",
|
|
3813
3890
|
"license": "AGPL-3.0-only",
|
|
3814
3891
|
"type": "module",
|
|
3815
3892
|
"repository": {
|
|
@@ -3905,7 +3982,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3905
3982
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-drive",
|
|
3906
3983
|
"manifest": {
|
|
3907
3984
|
"name": "@powerhousedao/reactor-drive",
|
|
3908
|
-
"version": "6.0.0-dev.
|
|
3985
|
+
"version": "6.0.0-dev.247",
|
|
3909
3986
|
"license": "AGPL-3.0-only",
|
|
3910
3987
|
"type": "module",
|
|
3911
3988
|
"repository": {
|
|
@@ -3943,7 +4020,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3943
4020
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-hypercore",
|
|
3944
4021
|
"manifest": {
|
|
3945
4022
|
"name": "@powerhousedao/reactor-hypercore",
|
|
3946
|
-
"version": "6.0.0-dev.
|
|
4023
|
+
"version": "6.0.0-dev.247",
|
|
3947
4024
|
"description": "Hypercore-backed IOperationStore for the Powerhouse Reactor",
|
|
3948
4025
|
"repository": {
|
|
3949
4026
|
"url": "https://github.com/powerhouse-inc/powerhouse",
|
|
@@ -3985,7 +4062,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
3985
4062
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/reactor-mcp",
|
|
3986
4063
|
"manifest": {
|
|
3987
4064
|
"name": "@powerhousedao/reactor-mcp",
|
|
3988
|
-
"version": "6.0.0-dev.
|
|
4065
|
+
"version": "6.0.0-dev.247",
|
|
3989
4066
|
"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.",
|
|
3990
4067
|
"type": "module",
|
|
3991
4068
|
"repository": {
|
|
@@ -4036,7 +4113,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4036
4113
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/registry",
|
|
4037
4114
|
"manifest": {
|
|
4038
4115
|
"name": "@powerhousedao/registry",
|
|
4039
|
-
"version": "6.0.0-dev.
|
|
4116
|
+
"version": "6.0.0-dev.247",
|
|
4040
4117
|
"description": "",
|
|
4041
4118
|
"type": "module",
|
|
4042
4119
|
"repository": {
|
|
@@ -4081,7 +4158,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4081
4158
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/renown",
|
|
4082
4159
|
"manifest": {
|
|
4083
4160
|
"name": "@renown/sdk",
|
|
4084
|
-
"version": "6.0.0-dev.
|
|
4161
|
+
"version": "6.0.0-dev.247",
|
|
4085
4162
|
"description": "",
|
|
4086
4163
|
"license": "AGPL-3.0-only",
|
|
4087
4164
|
"private": false,
|
|
@@ -4130,7 +4207,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4130
4207
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/shared",
|
|
4131
4208
|
"manifest": {
|
|
4132
4209
|
"name": "@powerhousedao/shared",
|
|
4133
|
-
"version": "6.0.0-dev.
|
|
4210
|
+
"version": "6.0.0-dev.247",
|
|
4134
4211
|
"type": "module",
|
|
4135
4212
|
"sideEffects": false,
|
|
4136
4213
|
"publishConfig": { "access": "public" },
|
|
@@ -4267,7 +4344,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4267
4344
|
"dir": "/home/runner/work/powerhouse/powerhouse/packages/vetra",
|
|
4268
4345
|
"manifest": {
|
|
4269
4346
|
"name": "@powerhousedao/vetra",
|
|
4270
|
-
"version": "6.0.0-dev.
|
|
4347
|
+
"version": "6.0.0-dev.247",
|
|
4271
4348
|
"license": "AGPL-3.0-only",
|
|
4272
4349
|
"type": "module",
|
|
4273
4350
|
"sideEffects": false,
|
|
@@ -4379,6 +4456,7 @@ async function migrate(version, projectDir = process.cwd()) {
|
|
|
4379
4456
|
"@opentelemetry/exporter-metrics-otlp-http": "^0.57.2",
|
|
4380
4457
|
"@opentelemetry/sdk-metrics": "^1.29.0",
|
|
4381
4458
|
"@powerhousedao/opentelemetry-instrumentation-reactor": "workspace:*",
|
|
4459
|
+
"@powerhousedao/pglite-fs": "workspace:*",
|
|
4382
4460
|
"@powerhousedao/reactor": "workspace:*",
|
|
4383
4461
|
"@pyroscope/nodejs": "^0.4.7",
|
|
4384
4462
|
"document-model": "workspace:*",
|
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 const extra =\n packageManager === \"pnpm\" ? \" --config.minimum-release-age=0\" : \"\";\n runCmd(`${packageManager} install --loglevel error${extra}`);\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({\n name,\n tag,\n version,\n remoteDrive,\n packageManager,\n });\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 const extra =\n packageManager === \"pnpm\" ? \" --config.minimum-release-age=0\" : \"\";\n runCmd(`${packageManager} install${extra}`);\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 const extra =\n packageManager === \"pnpm\" ? \" --config.minimum-release-age=0\" : \"\";\n runCmd(`${packageManager} install --loglevel error${extra}`);\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({\n name,\n tag,\n version,\n remoteDrive,\n packageManager,\n });\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 const extra =\n packageManager === \"pnpm\" ? \" --config.minimum-release-age=0\" : \"\";\n runCmd(`${packageManager} install${extra}`);\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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"}
|
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.247",
|
|
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
|
-
"
|
|
57
|
-
"
|
|
56
|
+
"@powerhousedao/shared": "6.0.0-dev.247",
|
|
57
|
+
"document-model": "6.0.0-dev.247"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@pnpm/find-workspace-dir": "^1000.1.5",
|