@powerhousedao/codegen 6.0.0-dev.194 → 6.0.0-dev.196

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.
@@ -1,13 +1,14 @@
1
1
  import { DocumentModelGlobalStateSchema, ManifestSchema } from "@powerhousedao/shared/document-model";
2
2
  import { camelCase, capitalCase, constantCase, kebabCase, pascalCase } from "change-case";
3
3
  import path, { join } from "path";
4
- import { capitalize, concat, filter, find, flatMap, forEach, fromEntries, isIncludedIn, isNonNullish, isString, isTruthy, last, map, merge, pipe, prop, sort, subtract, unique, uniqueBy, when } from "remeda";
4
+ import { capitalize, concat, conditional, constant, filter, find, first, flatMap, forEach, fromEntries, isDefined, isIncludedIn, isNonNullish, isNot, isStrictEqual, isString, isTruthy, last, map, merge, pipe, prop, sort, split, startsWith, subtract, unique, uniqueBy, when } from "remeda";
5
5
  import { IndentationText, Project, SyntaxKind, VariableDeclarationKind, ts } from "ts-morph";
6
6
  import arg from "arg";
7
- import { readdirSync, statSync } from "fs";
8
- import { loadJsonFile, loadJsonFileSync } from "load-json-file";
9
- import { VERSIONED_DEPENDENCIES, VERSIONED_DEV_DEPENDENCIES, directoryExists, fileExists, makeVersionedDependencies, spawnAsync, writeFileEnsuringDir } from "@powerhousedao/shared/clis";
7
+ import { readdirSync } from "fs";
8
+ import { VERSIONED_DEPENDENCIES, VERSIONED_DEV_DEPENDENCIES, directoryExists, fileExists, fileExistsSync, isDirectory, makeVersionedDependencies, spawnAsync, writeFileEnsuringDir } from "@powerhousedao/shared/clis";
10
9
  import { format } from "prettier";
10
+ import { z } from "zod";
11
+ import { loadJsonFile, loadJsonFileSync } from "load-json-file";
11
12
  import fs, { copyFile, mkdir, readdir, writeFile } from "node:fs/promises";
12
13
  import { stripVTControlCharacters } from "node:util";
13
14
  import path$1, { join as join$1, relative } from "node:path";
@@ -4368,6 +4369,7 @@ const packageJsonTemplate = (projectName, versionedDependencies, versionedDevDep
4368
4369
  "files": [
4369
4370
  "/dist"
4370
4371
  ],
4372
+ "sideEffects": false,
4371
4373
  "exports": {
4372
4374
  ${exportsTemplate}
4373
4375
  },
@@ -6487,7 +6489,7 @@ const documentModelDocumentTypeMetadata = {
6487
6489
  */
6488
6490
  function getDocumentTypeMetadata({ project, documentModelId }) {
6489
6491
  const { directory: documentModelsDir } = getOrCreateDirectory(project, "document-models");
6490
- const documentModelVariableNames = pipe(readdirSync(documentModelsDir.getPath(), { withFileTypes: true }), filter((dirent) => dirent.isDirectory()), map((dir) => join(dir.parentPath, `${dir.name}/${dir.name}.json`)), filter((srcPath) => statSync(srcPath, { throwIfNoEntry: false })?.isFile() ?? false), map((srcPath) => loadJsonFileSync(srcPath)), filter((stateFile) => DocumentModelGlobalStateSchema().safeParse(stateFile).success === true), find((state) => state.id === documentModelId), prop("name"), when(isString, (name) => getDocumentModelVariableNames(name)));
6492
+ const documentModelVariableNames = pipe(readdirSync(documentModelsDir.getPath(), { withFileTypes: true }), map(loadDocumentModelInDir), filter(isDefined), filter((state) => isStrictEqual(state.id, documentModelId)), first(), prop("name"), when(isString, getDocumentModelVariableNames));
6491
6493
  if (!documentModelVariableNames) throw new Error(`Failed to get document type metadata for document type: ${documentModelId}.`);
6492
6494
  const { kebabCaseDocumentType, phDocumentTypeName } = documentModelVariableNames;
6493
6495
  return {
@@ -6521,6 +6523,53 @@ async function runPrettier() {
6521
6523
  ]);
6522
6524
  }
6523
6525
  //#endregion
6526
+ //#region src/utils/get-editor-metadata.ts
6527
+ const EditorMetadataSchema = z.object({
6528
+ name: z.string(),
6529
+ id: z.string(),
6530
+ dirName: z.string(),
6531
+ documentTypes: z.array(z.string())
6532
+ });
6533
+ function getEditorMetadata(project, dirName) {
6534
+ const { directory: editorDir } = getOrCreateDirectory(project, join("editors", dirName));
6535
+ const parsedMetadata = pipe(editorDir, (dir) => dir.getSourceFile("module.ts"), (sourceFile) => ({
6536
+ dirName: sourceFile?.getDirectory().getBaseName(),
6537
+ id: getStringPropertyValue(sourceFile, "id"),
6538
+ name: getStringPropertyValue(sourceFile, "name"),
6539
+ documentTypes: getStringArrayPropertyElements(sourceFile, "documentTypes")
6540
+ }), (data) => EditorMetadataSchema.safeParse(data));
6541
+ if (parsedMetadata.success) return parsedMetadata.data;
6542
+ }
6543
+ function getAppMetadata(project, dirName) {
6544
+ const editorMetadata = getEditorMetadata(project, dirName);
6545
+ if (!editorMetadata || isIncludedIn("powerhouse/document-drive", editorMetadata.documentTypes)) return void 0;
6546
+ return merge(editorMetadata, pipe(project.getSourceFile(join("editors", dirName, "config.ts")), (sourceFile) => ({
6547
+ isDragAndDropEnabled: getBooleanPropertyValue(sourceFile, "isDragAndDropEnabled", true),
6548
+ allowedDocumentTypes: getStringArrayPropertyElements(sourceFile, "allowedDocumentTypes")
6549
+ })));
6550
+ }
6551
+ //#endregion
6552
+ //#region src/utils/get-processor-metadata.ts
6553
+ function getProcessorMetadata(project, dirName) {
6554
+ const { directory: processorsDir } = getOrCreateDirectory(project, "processors");
6555
+ const { directory: processorDir } = getOrCreateDirectory(project, join("processors", dirName));
6556
+ const connectProcessorNames = getProcessorNames(processorsDir.getSourceFile("connect.ts"));
6557
+ const switchboardProcessorNames = getProcessorNames(processorsDir.getSourceFile("switchboard.ts"));
6558
+ return pipe(dirName, (dirName) => ({
6559
+ processorName: dirName,
6560
+ processorApps: conditional(dirName, [isNot(isIncludedIn(connectProcessorNames)), constant(["switchboard"])], [isNot(isIncludedIn(switchboardProcessorNames)), constant(["connect"])], constant(["switchboard", "connect"])),
6561
+ processorType: pipe(processorDir.getSourceFile("processor.ts") ?? processorDir.getSourceFile("index.ts"), getAllImportNames, conditional([(specifiers) => isIncludedIn("RelationalDbProcessor", specifiers), constant("relationalDb")], [(specifiers) => isIncludedIn("IAnalyticsStore", specifiers), constant("analytics")], constant("analytics"))),
6562
+ documentTypes: getStringArrayPropertyElements(processorDir.getSourceFile("factory.ts"), "documentTypes")
6563
+ }));
6564
+ }
6565
+ const getProcessorNames = (sourceFile) => pipe(sourceFile, getAllImportModuleSpecifiers, filter(startsWith("processors/")), map(split("/")), map((s) => s.at(1)), filter(isString));
6566
+ //#endregion
6567
+ //#region src/utils/get-subgraph-metadata.ts
6568
+ function getSubgraphMetadata(project, dirName) {
6569
+ const { directory: subgraphDir } = getOrCreateDirectory(project, join("subgraphs", dirName));
6570
+ return pipe(subgraphDir.getSourceFile("index.ts")?.getClasses() ?? [], find((classDeclaration) => classDeclaration.getBaseClass()?.getText().includes("BaseSubgraph") ?? false), (classDeclaration) => classDeclaration?.getInstanceProperty("name")?.asKind(SyntaxKind.PropertyDeclaration)?.getInitializerIfKind(SyntaxKind.StringLiteral)?.getLiteralValue(), (subgraphName) => ({ subgraphName }));
6571
+ }
6572
+ //#endregion
6524
6573
  //#region src/utils/source-files.ts
6525
6574
  /** Gets a SourceFile by name in a ts-morph Project, or creates a new one
6526
6575
  * if none with that path exists.
@@ -6643,6 +6692,34 @@ function getVariableDeclarationByTypeName(sourceFile, typeName) {
6643
6692
  return declaration.getType().getText().includes(typeName);
6644
6693
  });
6645
6694
  }
6695
+ function getProperyAssignmentByName(sourceFile, propertyName) {
6696
+ if (!isDefined(sourceFile)) return void 0;
6697
+ return find(sourceFile.getDescendantsOfKind(SyntaxKind.PropertyAssignment), (assignment) => isStrictEqual(assignment.getName(), propertyName));
6698
+ }
6699
+ function getStringPropertyValue(sourceFile, propertyName) {
6700
+ return getProperyAssignmentByName(sourceFile, propertyName)?.getFirstDescendantByKind(SyntaxKind.StringLiteral)?.getLiteralValue();
6701
+ }
6702
+ function getStringArrayPropertyElements(sourceFile, propertyName) {
6703
+ return pipe(getProperyAssignmentByName(sourceFile, propertyName)?.getFirstDescendantByKind(SyntaxKind.ArrayLiteralExpression)?.getElements() ?? [], map((element) => element.asKind(SyntaxKind.StringLiteral)?.getLiteralValue()), filter(isString));
6704
+ }
6705
+ function getBooleanPropertyValue(sourceFile, propertyName, fallback) {
6706
+ return pipe(getProperyAssignmentByName(sourceFile, propertyName)?.getDescendants() ?? [], map((descendant) => descendant.getKind()), conditional([(kinds) => isIncludedIn(SyntaxKind.TrueKeyword, kinds), constant(true)], [(kinds) => isIncludedIn(SyntaxKind.FalseKeyword, kinds), constant(false)], constant(fallback)));
6707
+ }
6708
+ function loadDocumentModelInDir(dirent) {
6709
+ if (!isDirectory(dirent)) return void 0;
6710
+ const parseResult = pipe(dirent, (dir) => path.join(dir.parentPath, `${dir.name}/${dir.name}.json`), when(fileExistsSync, loadJsonFileSync), (stateFile) => DocumentModelGlobalStateSchema().safeParse(stateFile));
6711
+ if (!parseResult.success) {
6712
+ console.error(parseResult.error);
6713
+ return;
6714
+ }
6715
+ return parseResult.data;
6716
+ }
6717
+ function getAllImportNames(sourceFile) {
6718
+ return pipe(sourceFile?.getImportDeclarations() ?? [], flatMap((importDeclaration) => importDeclaration.getNamedImports()), map((importSpecifier) => importSpecifier.getText()));
6719
+ }
6720
+ function getAllImportModuleSpecifiers(sourceFile) {
6721
+ return pipe(sourceFile?.getImportDeclarations() ?? [], flatMap((importDeclaration) => importDeclaration.getModuleSpecifier().getLiteralValue()));
6722
+ }
6646
6723
  //#endregion
6647
6724
  //#region src/utils/ts-morph-project.ts
6648
6725
  const DEFAULT_PROJECT_OPTIONS = {
@@ -8321,6 +8398,6 @@ async function makeSubgraphsIndexFile(args) {
8321
8398
  await formatSourceFileWithPrettier(sourceFile);
8322
8399
  }
8323
8400
  //#endregion
8324
- export { ensureDirectoriesExist as $, folderTreeFileTemplate as $n, getLatestDocumentModelSpec as $t, writeAllGeneratedProjectFiles as A, licenseTemplate as An, makeOperationImportNames as At, makeEditorModuleFile as B, upgradeManifestsTemplate as Bn, documentModelGenTypesTemplate as Bt, rootExportPaths as C, packageJsonExportsTemplate as Cn, analyticsProcessorTemplate as Ct, writeCliDocsMarkdownFile as D, npmrcTemplate as Dn, upgradeTransitionTemplate as Dt, makeCliDocsFromHelp as E, packageJsonTemplate as En, documentModelUtilsTemplate as Et, writeGeneratedProjectRootFiles as F, syncAndPublishWorkflowTemplate as Fn, documentModelSrcIndexFileTemplate as Ft, DEFAULT_PROJECT_OPTIONS as G, dockerfileTemplate as Gn, documentModelOperationsModuleErrorFileTemplate as Gt, makeEditorsIndexFile as H, documentModelsTemplate as Hn, documentModelGenReducerFileTemplate as Ht, writeGeneratedSubgraphsFiles as I, geminiSettingsTemplate as In, documentModelModuleFileTemplate as It, getObjectLiteral as J, claudeSettingsLocalTemplate as Jn, getModuleExportType as Jt, buildTsMorphProject as K, connectEntrypointTemplate as Kn, documentModelOperationsModuleCreatorsFileTemplate as Kt, writeModuleFiles as L, eslintConfigTemplate as Ln, documentModelIndexTemplate as Lt, writeGeneratedDocumentModelsFiles as M, legacyIndexHtmlTemplate as Mn, makeTestCaseForOperation as Mt, writeGeneratedEditorsFiles as N, indexHtmlTemplate as Nn, documentModelTestFileTemplate as Nt, buildBoilerplatePackageJson as O, mcpTemplate as On, upgradeManifestTemplate as Ot, writeGeneratedProcessorsFiles as P, gitIgnoreTemplate as Pn, documentModelSrcUtilsTemplate as Pt, buildStringLiteral as Q, driveExplorerNavigationBreadcrumbsFileTemplate as Qn, getEditorVariableNames as Qt, writeProjectRootFiles as R, editorsIndexTemplate as Rn, documentModelHooksFileTemplate as Rt, packageScripts as S, buildPowerhouseConfigTemplate as Sn, factoryBuildersTemplate as St, getCommandsHelpInfo as T, exportsTemplate as Tn, analyticsFactoryTemplate as Tt, validateDocumentModelState as U, switchboardEntrypointTemplate as Un, documentModelPhFactoriesFileTemplate as Ut, makeEditorsFile as V, documentModelsIndexTemplate as Vn, documentModelSchemaIndexTemplate as Vt, getInitialStates as W, nginxConfTemplate as Wn, documentModelOperationsModuleOperationsFileTemplate as Wt, getVariableDeclarationByTypeName as X, appEditorFileTemplate as Xn, getDocumentModelSpecByVersionNumber as Xt, getObjectProperty as Y, agentsTemplate as Yn, getDocumentModelDirName as Yt, buildObjectLiteral as Z, appConfigFileTemplate as Zn, getDocumentModelVariableNames as Zt, defaultManifest as _, tsconfigPathsTemplate as _n, relationalDbMigrationsTemplate as _t, createOrUpdateManifest as a, documentModelGenIndexFileTemplate as an, createDocumentFileTemplate as ar, runPrettier as at, externalDevDependencies as b, readmeTemplate as bn, processorsIndexTemplate as bt, operationHasAttachment as c, documentModelGenCreatorsFileTemplate as cn, configSpec as ct, tsMorphGenerateDocumentModel as d, documentModelRootActionsFileTemplate as dn, customSubgraphResolversTemplate as dt, getLatestDocumentModelSpecVersionNumber as en, appFoldersFileTemplate as er, getOrCreateDirectory as et, generateDocumentModelZodSchemas as f, documentEditorModuleFileTemplate as fn, customSubgraphSchemaTemplate as ft, tsMorphGenerateDocumentEditor as g, tsConfigTemplate as gn, relationalDbProcessorTemplate as gt, scalarsValidation as h, vitestConfigTemplate as hn, relationalDbSchemaTemplate as ht, makePackageJsonExports as i, getActionTypeName as in, appDriveContentsFileTemplate as ir, formatSourceFileWithPrettier as it, writeCIFiles as j, indexTsTemplate as jn, makeOperationsImports as jt, writeAiConfigFiles as k, mainTsxTemplate as kn, documentModelOperationsModuleTestFileTemplate as kt, operationHasEmptyInput as l, documentModelGenControllerFileTemplate as ln, parseArgs as lt, scalars as m, docsFromCliHelpTemplate as mn, subgraphIndexFileTemplate as mt, tsMorphGenerateSubgraph as n, getActionInputTypeNames as nn, emptyStateFileTemplate as nr, getPreviousVersionSourceFile as nt, getOrCreateManifestFile as o, documentModelDocumentTypeTemplate as on, getDocumentTypeMetadata as ot, generateTypesAndZodSchemasFromGraphql as p, documentEditorEditorFileTemplate as pn, subgraphLibFileTemplate as pt, getDefaultProjectOptions as q, cursorMcpTemplate as qn, documentModelOperationModuleActionsFileTemplate as qt, tsMorphGenerateProcessor as r, getActionType as rn, driveExplorerFileTemplate as rr, formatSafe as rt, makeModulesIndexFile as s, documentModelDocumentSchemaFileTemplate as sn, documentModelDocumentTypeMetadata as st, makeSubgraphsIndexFile as t, getActionInputName as tn, appFilesFileTemplate as tr, getOrCreateSourceFile as tt, operationHasInput as u, documentModelGenActionsFileTemplate as un, parseConfig as ut, exportPaths as v, subgraphsIndexTemplate as vn, relationalDbIndexTemplate as vt, getCommandHelpInfo as w, packageJsonScriptsTemplate as wn, analyticsIndexTemplate as wt, nonStandardExportPaths as x, ManifestTemplate as xn, processorsFactoryTemplate as xt, externalDependencies as y, styleTemplate as yn, relationalDbFactoryTemplate as yt, tsMorphGenerateApp as z, editorsTemplate as zn, documentModelGenUtilsTemplate as zt };
8401
+ export { getProperyAssignmentByName as $, documentModelsTemplate as $n, documentModelGenReducerFileTemplate as $t, writeAllGeneratedProjectFiles as A, styleTemplate as An, relationalDbFactoryTemplate as At, makeEditorModuleFile as B, mainTsxTemplate as Bn, documentModelOperationsModuleTestFileTemplate as Bt, rootExportPaths as C, documentEditorModuleFileTemplate as Cn, customSubgraphSchemaTemplate as Ct, writeCliDocsMarkdownFile as D, tsConfigTemplate as Dn, relationalDbProcessorTemplate as Dt, makeCliDocsFromHelp as E, vitestConfigTemplate as En, relationalDbSchemaTemplate as Et, writeGeneratedProjectRootFiles as F, packageJsonScriptsTemplate as Fn, analyticsIndexTemplate as Ft, DEFAULT_PROJECT_OPTIONS as G, gitIgnoreTemplate as Gn, documentModelSrcUtilsTemplate as Gt, makeEditorsIndexFile as H, indexTsTemplate as Hn, makeOperationsImports as Ht, writeGeneratedSubgraphsFiles as I, exportsTemplate as In, analyticsFactoryTemplate as It, getAllImportModuleSpecifiers as J, eslintConfigTemplate as Jn, documentModelIndexTemplate as Jt, buildTsMorphProject as K, syncAndPublishWorkflowTemplate as Kn, documentModelSrcIndexFileTemplate as Kt, writeModuleFiles as L, packageJsonTemplate as Ln, documentModelUtilsTemplate as Lt, writeGeneratedDocumentModelsFiles as M, ManifestTemplate as Mn, processorsFactoryTemplate as Mt, writeGeneratedEditorsFiles as N, buildPowerhouseConfigTemplate as Nn, factoryBuildersTemplate as Nt, buildBoilerplatePackageJson as O, tsconfigPathsTemplate as On, relationalDbMigrationsTemplate as Ot, writeGeneratedProcessorsFiles as P, packageJsonExportsTemplate as Pn, analyticsProcessorTemplate as Pt, getObjectProperty as Q, documentModelsIndexTemplate as Qn, documentModelSchemaIndexTemplate as Qt, writeProjectRootFiles as R, npmrcTemplate as Rn, upgradeTransitionTemplate as Rt, packageScripts as S, documentModelRootActionsFileTemplate as Sn, customSubgraphResolversTemplate as St, getCommandsHelpInfo as T, docsFromCliHelpTemplate as Tn, subgraphIndexFileTemplate as Tt, validateDocumentModelState as U, legacyIndexHtmlTemplate as Un, makeTestCaseForOperation as Ut, makeEditorsFile as V, licenseTemplate as Vn, makeOperationImportNames as Vt, getInitialStates as W, indexHtmlTemplate as Wn, documentModelTestFileTemplate as Wt, getBooleanPropertyValue as X, editorsTemplate as Xn, documentModelGenUtilsTemplate as Xt, getAllImportNames as Y, editorsIndexTemplate as Yn, documentModelHooksFileTemplate as Yt, getObjectLiteral as Z, upgradeManifestsTemplate as Zn, documentModelGenTypesTemplate as Zt, defaultManifest as _, documentModelDocumentTypeTemplate as _n, getDocumentTypeMetadata as _t, createOrUpdateManifest as a, getModuleExportType as an, claudeSettingsLocalTemplate as ar, buildStringLiteral as at, externalDevDependencies as b, documentModelGenControllerFileTemplate as bn, parseArgs as bt, operationHasAttachment as c, getDocumentModelVariableNames as cn, appConfigFileTemplate as cr, getOrCreateSourceFile as ct, tsMorphGenerateDocumentModel as d, getLatestDocumentModelSpecVersionNumber as dn, appFoldersFileTemplate as dr, getProcessorMetadata as dt, documentModelPhFactoriesFileTemplate as en, switchboardEntrypointTemplate as er, getStringArrayPropertyElements as et, generateDocumentModelZodSchemas as f, getActionInputName as fn, appFilesFileTemplate as fr, getAppMetadata as ft, tsMorphGenerateDocumentEditor as g, documentModelGenIndexFileTemplate as gn, createDocumentFileTemplate as gr, runPrettier as gt, scalarsValidation as h, getActionTypeName as hn, appDriveContentsFileTemplate as hr, formatSourceFileWithPrettier as ht, makePackageJsonExports as i, documentModelOperationModuleActionsFileTemplate as in, cursorMcpTemplate as ir, buildObjectLiteral as it, writeCIFiles as j, readmeTemplate as jn, processorsIndexTemplate as jt, writeAiConfigFiles as k, subgraphsIndexTemplate as kn, relationalDbIndexTemplate as kt, operationHasEmptyInput as l, getEditorVariableNames as ln, driveExplorerNavigationBreadcrumbsFileTemplate as lr, getPreviousVersionSourceFile as lt, scalars as m, getActionType as mn, driveExplorerFileTemplate as mr, formatSafe as mt, tsMorphGenerateSubgraph as n, documentModelOperationsModuleErrorFileTemplate as nn, dockerfileTemplate as nr, getVariableDeclarationByTypeName as nt, getOrCreateManifestFile as o, getDocumentModelDirName as on, agentsTemplate as or, ensureDirectoriesExist as ot, generateTypesAndZodSchemasFromGraphql as p, getActionInputTypeNames as pn, emptyStateFileTemplate as pr, getEditorMetadata as pt, getDefaultProjectOptions as q, geminiSettingsTemplate as qn, documentModelModuleFileTemplate as qt, tsMorphGenerateProcessor as r, documentModelOperationsModuleCreatorsFileTemplate as rn, connectEntrypointTemplate as rr, loadDocumentModelInDir as rt, makeModulesIndexFile as s, getDocumentModelSpecByVersionNumber as sn, appEditorFileTemplate as sr, getOrCreateDirectory as st, makeSubgraphsIndexFile as t, documentModelOperationsModuleOperationsFileTemplate as tn, nginxConfTemplate as tr, getStringPropertyValue as tt, operationHasInput as u, getLatestDocumentModelSpec as un, folderTreeFileTemplate as ur, getSubgraphMetadata as ut, exportPaths as v, documentModelDocumentSchemaFileTemplate as vn, documentModelDocumentTypeMetadata as vt, getCommandHelpInfo as w, documentEditorEditorFileTemplate as wn, subgraphLibFileTemplate as wt, nonStandardExportPaths as x, documentModelGenActionsFileTemplate as xn, parseConfig as xt, externalDependencies as y, documentModelGenCreatorsFileTemplate as yn, configSpec as yt, tsMorphGenerateApp as z, mcpTemplate as zn, upgradeManifestTemplate as zt };
8325
8402
 
8326
- //# sourceMappingURL=file-builders-BkbVW0kT.mjs.map
8403
+ //# sourceMappingURL=file-builders-IiCN2bqi.mjs.map