@proofkit/cli 2.0.0-beta.23 → 2.0.0-beta.26
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/CHANGELOG.md +18 -0
- package/dist/add-h15IdCWp.js +57 -0
- package/dist/add-h15IdCWp.js.map +1 -0
- package/dist/{addPackageDependency-BGZl7xc5.js → addPackageDependency-BUJ8tT5i.js} +2 -2
- package/dist/{addPackageDependency-BGZl7xc5.js.map → addPackageDependency-BUJ8tT5i.js.map} +1 -1
- package/dist/{consts-BZnOMxpW.js → consts-CE9CE6Fo.js} +4 -4
- package/dist/{consts-BZnOMxpW.js.map → consts-CE9CE6Fo.js.map} +1 -1
- package/dist/{deploy-D25sPO7K.js → deploy-BJryOaec.js} +3 -3
- package/dist/{deploy-D25sPO7K.js.map → deploy-BJryOaec.js.map} +1 -1
- package/dist/errors-DxuuVXoQ.js +2 -0
- package/dist/errors-DxuuVXoQ.js.map +1 -0
- package/dist/{fmdapi-BO4QL0F8.js → fmdapi-D4f7TrLy.js} +2 -2
- package/dist/{fmdapi-BO4QL0F8.js.map → fmdapi-D4f7TrLy.js.map} +1 -1
- package/dist/{fmdapi-DyRYZWzI.js → fmdapi-H4o2qGE2.js} +3 -3
- package/dist/{fmdapi-DyRYZWzI.js.map → fmdapi-H4o2qGE2.js.map} +1 -1
- package/dist/{getUserPkgManager-Cph_6l1P.js → getUserPkgManager-CZwrE7fs.js} +1 -1
- package/dist/{getUserPkgManager-Cph_6l1P.js.map → getUserPkgManager-CZwrE7fs.js.map} +1 -1
- package/dist/{globalOptions-CkqEi9uC.js → globalOptions-C6fknjPB.js} +1 -1
- package/dist/{globalOptions-CkqEi9uC.js.map → globalOptions-C6fknjPB.js.map} +1 -1
- package/dist/{index-DALPpGd1.d.ts → index-D9Y-xAF1.d.ts} +124 -42
- package/dist/index-D9Y-xAF1.d.ts.map +1 -0
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/{logger-DCEXcH26.js → logger-DxbfijxS.js} +1 -1
- package/dist/{logger-DCEXcH26.js.map → logger-DxbfijxS.js.map} +1 -1
- package/dist/{parseSettings-DJ2m9sgJ.js → parseSettings-xU5Rw3Ne.js} +1 -1
- package/dist/{parseSettings-DJ2m9sgJ.js.map → parseSettings-xU5Rw3Ne.js.map} +1 -1
- package/dist/{proofkit-webviewer-73IB1OBU.js → proofkit-webviewer-Baa93FAx.js} +2 -2
- package/dist/{proofkit-webviewer-73IB1OBU.js.map → proofkit-webviewer-Baa93FAx.js.map} +1 -1
- package/dist/remove-COo1Ju8v.js +2 -0
- package/dist/remove-COo1Ju8v.js.map +1 -0
- package/dist/typegen-DrfVmQfx.js +2 -0
- package/dist/{typegen-DyXaif5O.js.map → typegen-DrfVmQfx.js.map} +1 -1
- package/dist/update-Cpyhj57Y.js +7 -0
- package/dist/{update-FX71y5b3.js.map → update-Cpyhj57Y.js.map} +1 -1
- package/dist/utils-DGwyHkvO.js +3 -0
- package/dist/{utils-DymV7zmv.js.map → utils-DGwyHkvO.js.map} +1 -1
- package/package.json +2 -2
- package/template/nextjs-mantine/package.json +2 -1
- package/template/nextjs-shadcn/package.json +2 -0
- package/template/vite-wv/package.json +2 -2
- package/dist/add-DrcID6d6.js +0 -57
- package/dist/add-DrcID6d6.js.map +0 -1
- package/dist/index-DALPpGd1.d.ts.map +0 -1
- package/dist/remove-BOCU6In3.js +0 -2
- package/dist/remove-BOCU6In3.js.map +0 -1
- package/dist/typegen-DyXaif5O.js +0 -2
- package/dist/update-FX71y5b3.js +0 -7
- package/dist/utils-DymV7zmv.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fmdapi-DyRYZWzI.js","names":["parseJsonc","config"],"sources":["../src/utils/formatting.ts","../src/utils/ts-morph.ts","../src/generators/fmdapi.ts"],"sourcesContent":["import { execa } from \"execa\";\nimport type { Project } from \"ts-morph\";\n\nimport { state } from \"~/state.js\";\n\n/**\n * Formats all source files in a ts-morph Project using ultracite and saves the changes.\n * @param project The ts-morph Project containing the files to format\n */\nexport async function formatAndSaveSourceFiles(project: Project) {\n await project.save(); // save files first\n try {\n // Run ultracite fix on the project directory\n await execa(\"npx\", [\"ultracite\", \"fix\", \".\"], {\n cwd: state.projectDir,\n });\n } catch (error) {\n if (state.debug) {\n console.log(\"Error formatting files with ultracite\");\n console.error(error);\n }\n // Continue even if formatting fails\n }\n}\n","import path from \"node:path\";\nimport { Project, type ReturnStatement, SyntaxKind } from \"ts-morph\";\n\nexport { formatAndSaveSourceFiles } from \"./formatting.js\";\n\nexport function ensureReturnStatementIsWrappedInFragment(returnStatement: ReturnStatement | undefined) {\n const expression =\n returnStatement?.getExpressionIfKind(SyntaxKind.ParenthesizedExpression)?.getExpression() ??\n returnStatement?.getExpression();\n\n if (expression?.isKind(SyntaxKind.JsxFragment)) {\n return returnStatement;\n }\n\n returnStatement?.replaceWithText(`return <>${expression}</>;`);\n return returnStatement;\n}\n\nexport function getNewProject(projectDir?: string) {\n const project = new Project({\n tsConfigFilePath: path.join(projectDir ?? process.cwd(), \"tsconfig.json\"),\n });\n\n return project;\n}\n","import path from \"node:path\";\nimport { generateTypedClients } from \"@proofkit/typegen\";\nimport type { typegenConfigSingle } from \"@proofkit/typegen/config\";\nimport { config as dotenvConfig } from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { applyEdits, modify, parse as parseJsonc } from \"jsonc-parser\";\nimport { SyntaxKind } from \"ts-morph\";\nimport type { z } from \"zod/v4\";\n\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport type { envNamesSchema } from \"~/utils/parseSettings.js\";\nimport { getNewProject } from \"~/utils/ts-morph.js\";\n\n// Input schema for functions like addLayout\n// This might be different from the layout config stored in the file\ninterface Schema {\n layoutName: string;\n schemaName: string;\n valueLists?: \"strict\" | \"allowEmpty\" | \"ignore\";\n generateClient?: boolean;\n strictNumbers?: boolean;\n}\n\n// For any data source configuration object (fmdapi or fmodata)\ntype AnyDataSourceConfig = z.infer<typeof typegenConfigSingle>;\n// For a single fmdapi data source configuration object\ntype FmdapiDataSourceConfig = Extract<AnyDataSourceConfig, { type: \"fmdapi\" }>;\n// For a single layout configuration object within a data source\ntype ImportedLayoutConfig = FmdapiDataSourceConfig[\"layouts\"][number];\n\n// This type represents the actual structure of the JSONC file, including $schema\ninterface FullProofkitTypegenJsonFile {\n $schema?: string;\n config: AnyDataSourceConfig | AnyDataSourceConfig[];\n}\n\nconst typegenConfigFileName = \"proofkit-typegen.config.jsonc\";\n\n// Helper function to normalize data sources by adding default type for backwards compatibility\n// This mirrors the zod preprocess in @proofkit/typegen that defaults type to \"fmdapi\"\nfunction normalizeDataSource(ds: AnyDataSourceConfig): AnyDataSourceConfig {\n if (!(\"type\" in ds) || ds.type === undefined) {\n return { ...(ds as object), type: \"fmdapi\" } as AnyDataSourceConfig;\n }\n return ds;\n}\n\nfunction normalizeConfig(\n config: AnyDataSourceConfig | AnyDataSourceConfig[],\n): AnyDataSourceConfig | AnyDataSourceConfig[] {\n if (Array.isArray(config)) {\n return config.map(normalizeDataSource);\n }\n return normalizeDataSource(config);\n}\n\n// Helper functions for JSON config\nasync function readJsonConfigFile(configPath: string): Promise<FullProofkitTypegenJsonFile | null> {\n if (!fs.existsSync(configPath)) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n // Normalize config to add default type for backwards compatibility\n if (parsed.config) {\n parsed.config = normalizeConfig(parsed.config);\n }\n return parsed;\n } catch (error) {\n console.error(`Error reading or parsing JSONC config at ${configPath}:`, error);\n // Return a default structure for the *file* if parsing fails but file exists\n return {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n}\n\nasync function writeJsonConfigFile(configPath: string, fileContent: FullProofkitTypegenJsonFile) {\n // Check if file exists to preserve comments\n if (fs.existsSync(configPath)) {\n const originalText = await fs.readFile(configPath, \"utf8\");\n // Use jsonc-parser's modify function to preserve comments\n const edits = modify(originalText, [\"config\"], fileContent.config, {\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n const modifiedText = applyEdits(originalText, edits);\n await fs.writeFile(configPath, modifiedText, \"utf8\");\n } else {\n // If file doesn't exist, create it with proper formatting\n await fs.writeJson(configPath, fileContent, { spaces: 2 });\n }\n}\n\nexport async function addLayout({\n projectDir = process.cwd(),\n schemas,\n runCodegen = true,\n dataSourceName,\n}: {\n projectDir?: string;\n schemas: Schema[];\n runCodegen?: boolean;\n dataSourceName: string;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n\n // Work with the 'config' property which is TypegenConfig['config']\n const configProperty = fileContent.config;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(configProperty)) {\n configArray = configProperty;\n } else {\n configArray = [configProperty];\n fileContent.config = configArray; // Update fileContent to ensure it's an array for later ops\n }\n\n const layoutsToAdd: ImportedLayoutConfig[] = schemas.map((schema) => ({\n layoutName: schema.layoutName,\n schemaName: schema.schemaName,\n valueLists: schema.valueLists,\n generateClient: schema.generateClient,\n strictNumbers: schema.strictNumbers,\n }));\n\n let targetDataSource: FmdapiDataSourceConfig | undefined = configArray.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource) {\n targetDataSource.layouts = targetDataSource.layouts || [];\n } else {\n targetDataSource = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n // other default properties for a new DataSourceConfig can be added here if needed\n envNames: undefined,\n };\n configArray.push(targetDataSource);\n }\n\n targetDataSource.layouts.push(...layoutsToAdd);\n // fileContent.config is already pointing to configArray if it was modified\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function addConfig({\n config,\n projectDir,\n runCodegen = true,\n}: {\n config: FmdapiDataSourceConfig | FmdapiDataSourceConfig[];\n projectDir: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const configsToAdd = Array.isArray(config) ? config : [config];\n\n if (fileContent) {\n if (Array.isArray(fileContent.config)) {\n fileContent.config.push(...configsToAdd);\n } else {\n fileContent.config = [fileContent.config, ...configsToAdd];\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: configsToAdd,\n };\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function ensureWebviewerFmMcpConfig({\n projectDir,\n connectedFileName,\n dataSourceName = \"filemaker\",\n baseUrl,\n}: {\n projectDir: string;\n connectedFileName?: string;\n dataSourceName?: string;\n baseUrl?: string;\n}) {\n const newConfig: FmdapiDataSourceConfig = {\n type: \"fmdapi\",\n path: `./src/config/schemas/${dataSourceName}`,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n webviewerScriptName: \"ExecuteDataApi\",\n envNames: undefined,\n layouts: [],\n fmMcp: {\n enabled: true,\n ...(baseUrl ? { baseUrl } : {}),\n ...(connectedFileName ? { connectedFileName } : {}),\n },\n };\n\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newConfig],\n };\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n return;\n }\n\n const configArray = Array.isArray(fileContent.config) ? fileContent.config : [fileContent.config];\n if (!Array.isArray(fileContent.config)) {\n fileContent.config = configArray;\n }\n\n const existingConfigIndex = configArray.findIndex(\n (config): config is FmdapiDataSourceConfig => config.type === \"fmdapi\" && config.path === newConfig.path,\n );\n\n if (existingConfigIndex === -1) {\n configArray.push(newConfig);\n } else {\n const existingConfig = configArray[existingConfigIndex] as FmdapiDataSourceConfig;\n configArray[existingConfigIndex] = {\n ...existingConfig,\n ...newConfig,\n layouts: existingConfig.layouts ?? [],\n fmMcp: {\n enabled: true,\n ...(existingConfig.fmMcp ?? {}),\n ...(newConfig.fmMcp ?? {}),\n },\n };\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function runCodegenCommand() {\n const projectDir = state.projectDir;\n const config = await readJsonConfigFile(path.join(projectDir, typegenConfigFileName));\n if (!config) {\n logger.info(\"no typegen config found, skipping typegen\");\n return;\n }\n\n // make sure to load the .env file\n dotenvConfig({ path: path.join(projectDir, \".env\") });\n await generateTypedClients(config.config, { cwd: projectDir });\n}\n\nexport function getClientSuffix({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): string {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n if (!fs.existsSync(jsonConfigPath)) {\n return \"Client\";\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n return targetDataSource?.clientSuffix ?? \"Client\";\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getClientSuffix: ${jsonConfigPath}`, error);\n return \"Client\";\n }\n}\n\nexport function getExistingSchemas({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): { layout?: string; schemaName?: string }[] {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n if (!fs.existsSync(jsonConfigPath)) {\n return [];\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource?.layouts) {\n return targetDataSource.layouts.map((layout) => ({\n layout: layout.layoutName,\n schemaName: layout.schemaName,\n }));\n }\n return [];\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getExistingSchemas: ${jsonConfigPath}`, error);\n return [];\n }\n}\n\nexport async function addToFmschemaConfig({\n dataSourceName,\n envNames,\n}: {\n dataSourceName: string;\n envNames?: z.infer<typeof envNamesSchema>;\n}) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const newDataSource: FmdapiDataSourceConfig = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n envNames: undefined,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n };\n\n if (envNames) {\n newDataSource.envNames = {\n server: envNames.server,\n db: envNames.database,\n auth: { apiKey: envNames.apiKey },\n };\n }\n if (state.appType === \"webviewer\") {\n newDataSource.webviewerScriptName = \"ExecuteDataApi\";\n }\n\n if (fileContent) {\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const existingDsIndex = configArray.findIndex((ds) => ds.type === \"fmdapi\" && ds.path === newDataSource.path);\n if (existingDsIndex === -1) {\n configArray.push(newDataSource);\n } else {\n const existingConfig = configArray[existingDsIndex] as FmdapiDataSourceConfig;\n configArray[existingDsIndex] = {\n ...existingConfig,\n ...newDataSource,\n layouts: newDataSource.layouts.length > 0 ? newDataSource.layouts : existingConfig.layouts || [],\n };\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newDataSource],\n };\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport function getFieldNamesForSchema({ schemaName, dataSourceName }: { schemaName: string; dataSourceName: string }) {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const sourceFilePath = path.join(projectDir, `src/config/schemas/${dataSourceName}/generated/${schemaName}.ts`);\n\n const sourceFilePathAlternative = path.join(projectDir, `src/config/schemas/${dataSourceName}/${schemaName}.ts`);\n\n let fileToUse = sourceFilePath;\n if (!fs.existsSync(sourceFilePath)) {\n if (fs.existsSync(sourceFilePathAlternative)) {\n fileToUse = sourceFilePathAlternative;\n } else {\n return [];\n }\n }\n const sourceFile = project.addSourceFileAtPath(fileToUse);\n\n const zodSchema = sourceFile.getVariableDeclaration(`Z${schemaName}`);\n if (zodSchema) {\n const properties = zodSchema\n .getInitializer()\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression)\n ?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertyAssignment)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ??\n []\n );\n }\n const typeAlias = sourceFile.getTypeAlias(`T${schemaName}`);\n const properties = typeAlias?.getFirstDescendantByKind(SyntaxKind.TypeLiteral)?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertySignature)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ?? []\n );\n}\n\nexport async function removeFromFmschemaConfig({ dataSourceName }: { dataSourceName: string }) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n return;\n }\n\n const pathToRemove = `./src/config/schemas/${dataSourceName}`;\n\n if (Array.isArray(fileContent.config)) {\n fileContent.config = fileContent.config.filter((ds) => !(ds.type === \"fmdapi\" && ds.path === pathToRemove));\n } else {\n const currentConfig = fileContent.config;\n if (currentConfig.type === \"fmdapi\" && currentConfig.path === pathToRemove) {\n fileContent.config = [];\n }\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function removeLayout({\n projectDir = state.projectDir,\n schemaName,\n dataSourceName,\n runCodegen = true,\n}: {\n projectDir?: string;\n schemaName: string;\n dataSourceName: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n throw new Error(`${typegenConfigFileName} not found, cannot remove layout.`);\n }\n\n let dataSourceModified = false;\n const targetDsPath = `./src/config/schemas/${dataSourceName}`;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const targetDataSource = configArray.find(\n (ds): ds is FmdapiDataSourceConfig => ds.type === \"fmdapi\" && ds.path === targetDsPath,\n );\n\n if (targetDataSource?.layouts) {\n const initialCount = targetDataSource.layouts.length;\n targetDataSource.layouts = targetDataSource.layouts.filter((layout) => layout.schemaName !== schemaName);\n if (targetDataSource.layouts.length < initialCount) {\n dataSourceModified = true;\n }\n }\n\n if (dataSourceModified) {\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n }\n\n const schemaFilePath = path.join(projectDir, \"src\", \"config\", \"schemas\", dataSourceName, `${schemaName}.ts`);\n if (fs.existsSync(schemaFilePath)) {\n fs.removeSync(schemaFilePath);\n }\n\n if (runCodegen && dataSourceModified) {\n await runCodegenCommand();\n }\n}\n\n// Make sure to remove unused imports like Project, SyntaxKind, etc. if they are no longer used anywhere.\n// Also remove getNewProject and formatAndSaveSourceFiles from imports if they were only for config.\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fmdapi-H4o2qGE2.js","names":["parseJsonc","config"],"sources":["../src/utils/formatting.ts","../src/utils/ts-morph.ts","../src/generators/fmdapi.ts"],"sourcesContent":["import { execa } from \"execa\";\nimport type { Project } from \"ts-morph\";\n\nimport { state } from \"~/state.js\";\n\n/**\n * Formats all source files in a ts-morph Project using ultracite and saves the changes.\n * @param project The ts-morph Project containing the files to format\n */\nexport async function formatAndSaveSourceFiles(project: Project) {\n await project.save(); // save files first\n try {\n // Run ultracite fix on the project directory\n await execa(\"npx\", [\"ultracite\", \"fix\", \".\"], {\n cwd: state.projectDir,\n });\n } catch (error) {\n if (state.debug) {\n console.log(\"Error formatting files with ultracite\");\n console.error(error);\n }\n // Continue even if formatting fails\n }\n}\n","import path from \"node:path\";\nimport { Project, type ReturnStatement, SyntaxKind } from \"ts-morph\";\n\nexport { formatAndSaveSourceFiles } from \"./formatting.js\";\n\nexport function ensureReturnStatementIsWrappedInFragment(returnStatement: ReturnStatement | undefined) {\n const expression =\n returnStatement?.getExpressionIfKind(SyntaxKind.ParenthesizedExpression)?.getExpression() ??\n returnStatement?.getExpression();\n\n if (expression?.isKind(SyntaxKind.JsxFragment)) {\n return returnStatement;\n }\n\n returnStatement?.replaceWithText(`return <>${expression}</>;`);\n return returnStatement;\n}\n\nexport function getNewProject(projectDir?: string) {\n const project = new Project({\n tsConfigFilePath: path.join(projectDir ?? process.cwd(), \"tsconfig.json\"),\n });\n\n return project;\n}\n","import path from \"node:path\";\nimport { generateTypedClients } from \"@proofkit/typegen\";\nimport type { typegenConfigSingle } from \"@proofkit/typegen/config\";\nimport { config as dotenvConfig } from \"dotenv\";\nimport fs from \"fs-extra\";\nimport { applyEdits, modify, parse as parseJsonc } from \"jsonc-parser\";\nimport { SyntaxKind } from \"ts-morph\";\nimport type { z } from \"zod/v4\";\n\nimport { state } from \"~/state.js\";\nimport { logger } from \"~/utils/logger.js\";\nimport type { envNamesSchema } from \"~/utils/parseSettings.js\";\nimport { getNewProject } from \"~/utils/ts-morph.js\";\n\n// Input schema for functions like addLayout\n// This might be different from the layout config stored in the file\ninterface Schema {\n layoutName: string;\n schemaName: string;\n valueLists?: \"strict\" | \"allowEmpty\" | \"ignore\";\n generateClient?: boolean;\n strictNumbers?: boolean;\n}\n\n// For any data source configuration object (fmdapi or fmodata)\ntype AnyDataSourceConfig = z.infer<typeof typegenConfigSingle>;\n// For a single fmdapi data source configuration object\ntype FmdapiDataSourceConfig = Extract<AnyDataSourceConfig, { type: \"fmdapi\" }>;\n// For a single layout configuration object within a data source\ntype ImportedLayoutConfig = FmdapiDataSourceConfig[\"layouts\"][number];\n\n// This type represents the actual structure of the JSONC file, including $schema\ninterface FullProofkitTypegenJsonFile {\n $schema?: string;\n config: AnyDataSourceConfig | AnyDataSourceConfig[];\n}\n\nconst typegenConfigFileName = \"proofkit-typegen.config.jsonc\";\n\n// Helper function to normalize data sources by adding default type for backwards compatibility\n// This mirrors the zod preprocess in @proofkit/typegen that defaults type to \"fmdapi\"\nfunction normalizeDataSource(ds: AnyDataSourceConfig): AnyDataSourceConfig {\n if (!(\"type\" in ds) || ds.type === undefined) {\n return { ...(ds as object), type: \"fmdapi\" } as AnyDataSourceConfig;\n }\n return ds;\n}\n\nfunction normalizeConfig(\n config: AnyDataSourceConfig | AnyDataSourceConfig[],\n): AnyDataSourceConfig | AnyDataSourceConfig[] {\n if (Array.isArray(config)) {\n return config.map(normalizeDataSource);\n }\n return normalizeDataSource(config);\n}\n\n// Helper functions for JSON config\nasync function readJsonConfigFile(configPath: string): Promise<FullProofkitTypegenJsonFile | null> {\n if (!fs.existsSync(configPath)) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n // Normalize config to add default type for backwards compatibility\n if (parsed.config) {\n parsed.config = normalizeConfig(parsed.config);\n }\n return parsed;\n } catch (error) {\n console.error(`Error reading or parsing JSONC config at ${configPath}:`, error);\n // Return a default structure for the *file* if parsing fails but file exists\n return {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n}\n\nasync function writeJsonConfigFile(configPath: string, fileContent: FullProofkitTypegenJsonFile) {\n // Check if file exists to preserve comments\n if (fs.existsSync(configPath)) {\n const originalText = await fs.readFile(configPath, \"utf8\");\n // Use jsonc-parser's modify function to preserve comments\n const edits = modify(originalText, [\"config\"], fileContent.config, {\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n const modifiedText = applyEdits(originalText, edits);\n await fs.writeFile(configPath, modifiedText, \"utf8\");\n } else {\n // If file doesn't exist, create it with proper formatting\n await fs.writeJson(configPath, fileContent, { spaces: 2 });\n }\n}\n\nexport async function addLayout({\n projectDir = process.cwd(),\n schemas,\n runCodegen = true,\n dataSourceName,\n}: {\n projectDir?: string;\n schemas: Schema[];\n runCodegen?: boolean;\n dataSourceName: string;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [],\n };\n }\n\n // Work with the 'config' property which is TypegenConfig['config']\n const configProperty = fileContent.config;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(configProperty)) {\n configArray = configProperty;\n } else {\n configArray = [configProperty];\n fileContent.config = configArray; // Update fileContent to ensure it's an array for later ops\n }\n\n const layoutsToAdd: ImportedLayoutConfig[] = schemas.map((schema) => ({\n layoutName: schema.layoutName,\n schemaName: schema.schemaName,\n valueLists: schema.valueLists,\n generateClient: schema.generateClient,\n strictNumbers: schema.strictNumbers,\n }));\n\n let targetDataSource: FmdapiDataSourceConfig | undefined = configArray.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource) {\n targetDataSource.layouts = targetDataSource.layouts || [];\n } else {\n targetDataSource = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n // other default properties for a new DataSourceConfig can be added here if needed\n envNames: undefined,\n };\n configArray.push(targetDataSource);\n }\n\n targetDataSource.layouts.push(...layoutsToAdd);\n // fileContent.config is already pointing to configArray if it was modified\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function addConfig({\n config,\n projectDir,\n runCodegen = true,\n}: {\n config: FmdapiDataSourceConfig | FmdapiDataSourceConfig[];\n projectDir: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const configsToAdd = Array.isArray(config) ? config : [config];\n\n if (fileContent) {\n if (Array.isArray(fileContent.config)) {\n fileContent.config.push(...configsToAdd);\n } else {\n fileContent.config = [fileContent.config, ...configsToAdd];\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: configsToAdd,\n };\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n\n if (runCodegen) {\n await runCodegenCommand();\n }\n}\n\nexport async function ensureWebviewerFmMcpConfig({\n projectDir,\n connectedFileName,\n dataSourceName = \"filemaker\",\n baseUrl,\n}: {\n projectDir: string;\n connectedFileName?: string;\n dataSourceName?: string;\n baseUrl?: string;\n}) {\n const newConfig: FmdapiDataSourceConfig = {\n type: \"fmdapi\",\n path: `./src/config/schemas/${dataSourceName}`,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n webviewerScriptName: \"ExecuteDataApi\",\n envNames: undefined,\n layouts: [],\n fmMcp: {\n enabled: true,\n ...(baseUrl ? { baseUrl } : {}),\n ...(connectedFileName ? { connectedFileName } : {}),\n },\n };\n\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newConfig],\n };\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n return;\n }\n\n const configArray = Array.isArray(fileContent.config) ? fileContent.config : [fileContent.config];\n if (!Array.isArray(fileContent.config)) {\n fileContent.config = configArray;\n }\n\n const existingConfigIndex = configArray.findIndex(\n (config): config is FmdapiDataSourceConfig => config.type === \"fmdapi\" && config.path === newConfig.path,\n );\n\n if (existingConfigIndex === -1) {\n configArray.push(newConfig);\n } else {\n const existingConfig = configArray[existingConfigIndex] as FmdapiDataSourceConfig;\n configArray[existingConfigIndex] = {\n ...existingConfig,\n ...newConfig,\n layouts: existingConfig.layouts ?? [],\n fmMcp: {\n enabled: true,\n ...(existingConfig.fmMcp ?? {}),\n ...(newConfig.fmMcp ?? {}),\n },\n };\n }\n\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function runCodegenCommand() {\n const projectDir = state.projectDir;\n const config = await readJsonConfigFile(path.join(projectDir, typegenConfigFileName));\n if (!config) {\n logger.info(\"no typegen config found, skipping typegen\");\n return;\n }\n\n // make sure to load the .env file\n dotenvConfig({ path: path.join(projectDir, \".env\") });\n await generateTypedClients(config.config, { cwd: projectDir });\n}\n\nexport function getClientSuffix({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): string {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n if (!fs.existsSync(jsonConfigPath)) {\n return \"Client\";\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n return targetDataSource?.clientSuffix ?? \"Client\";\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getClientSuffix: ${jsonConfigPath}`, error);\n return \"Client\";\n }\n}\n\nexport function getExistingSchemas({\n projectDir = process.cwd(),\n dataSourceName,\n}: {\n projectDir?: string;\n dataSourceName: string;\n}): { layout?: string; schemaName?: string }[] {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n if (!fs.existsSync(jsonConfigPath)) {\n return [];\n }\n try {\n const fileContent = fs.readFileSync(jsonConfigPath, \"utf8\");\n const parsed = parseJsonc(fileContent) as FullProofkitTypegenJsonFile;\n\n // Normalize config to add default type for backwards compatibility\n const normalizedConfig = normalizeConfig(parsed.config);\n const configToSearch = Array.isArray(normalizedConfig) ? normalizedConfig : [normalizedConfig];\n\n const targetDataSource = configToSearch.find(\n (ds): ds is FmdapiDataSourceConfig =>\n ds.type === \"fmdapi\" &&\n (ds.path?.endsWith(dataSourceName) || ds.path?.endsWith(`${dataSourceName}/`) || ds.path === dataSourceName),\n );\n\n if (targetDataSource?.layouts) {\n return targetDataSource.layouts.map((layout) => ({\n layout: layout.layoutName,\n schemaName: layout.schemaName,\n }));\n }\n return [];\n } catch (error) {\n console.error(`Error reading or parsing JSONC config for getExistingSchemas: ${jsonConfigPath}`, error);\n return [];\n }\n}\n\nexport async function addToFmschemaConfig({\n dataSourceName,\n envNames,\n}: {\n dataSourceName: string;\n envNames?: z.infer<typeof envNamesSchema>;\n}) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n let fileContent = await readJsonConfigFile(jsonConfigPath);\n\n const newDataSource: FmdapiDataSourceConfig = {\n type: \"fmdapi\",\n layouts: [],\n path: `./src/config/schemas/${dataSourceName}`,\n envNames: undefined,\n clearOldFiles: true,\n clientSuffix: \"Layout\",\n };\n\n if (envNames) {\n newDataSource.envNames = {\n server: envNames.server,\n db: envNames.database,\n auth: { apiKey: envNames.apiKey },\n };\n }\n if (state.appType === \"webviewer\") {\n newDataSource.webviewerScriptName = \"ExecuteDataApi\";\n }\n\n if (fileContent) {\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const existingDsIndex = configArray.findIndex((ds) => ds.type === \"fmdapi\" && ds.path === newDataSource.path);\n if (existingDsIndex === -1) {\n configArray.push(newDataSource);\n } else {\n const existingConfig = configArray[existingDsIndex] as FmdapiDataSourceConfig;\n configArray[existingDsIndex] = {\n ...existingConfig,\n ...newDataSource,\n layouts: newDataSource.layouts.length > 0 ? newDataSource.layouts : existingConfig.layouts || [],\n };\n }\n } else {\n fileContent = {\n $schema: \"https://proofkit.dev/typegen-config-schema.json\",\n config: [newDataSource],\n };\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport function getFieldNamesForSchema({ schemaName, dataSourceName }: { schemaName: string; dataSourceName: string }) {\n const projectDir = state.projectDir;\n const project = getNewProject(projectDir);\n const sourceFilePath = path.join(projectDir, `src/config/schemas/${dataSourceName}/generated/${schemaName}.ts`);\n\n const sourceFilePathAlternative = path.join(projectDir, `src/config/schemas/${dataSourceName}/${schemaName}.ts`);\n\n let fileToUse = sourceFilePath;\n if (!fs.existsSync(sourceFilePath)) {\n if (fs.existsSync(sourceFilePathAlternative)) {\n fileToUse = sourceFilePathAlternative;\n } else {\n return [];\n }\n }\n const sourceFile = project.addSourceFileAtPath(fileToUse);\n\n const zodSchema = sourceFile.getVariableDeclaration(`Z${schemaName}`);\n if (zodSchema) {\n const properties = zodSchema\n .getInitializer()\n ?.getFirstDescendantByKind(SyntaxKind.ObjectLiteralExpression)\n ?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertyAssignment)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ??\n []\n );\n }\n const typeAlias = sourceFile.getTypeAlias(`T${schemaName}`);\n const properties = typeAlias?.getFirstDescendantByKind(SyntaxKind.TypeLiteral)?.getProperties();\n return (\n properties?.map((pr) => pr.asKind(SyntaxKind.PropertySignature)?.getName()?.replace(/\"/g, \"\")).filter(Boolean) ?? []\n );\n}\n\nexport async function removeFromFmschemaConfig({ dataSourceName }: { dataSourceName: string }) {\n const projectDir = state.projectDir;\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n return;\n }\n\n const pathToRemove = `./src/config/schemas/${dataSourceName}`;\n\n if (Array.isArray(fileContent.config)) {\n fileContent.config = fileContent.config.filter((ds) => !(ds.type === \"fmdapi\" && ds.path === pathToRemove));\n } else {\n const currentConfig = fileContent.config;\n if (currentConfig.type === \"fmdapi\" && currentConfig.path === pathToRemove) {\n fileContent.config = [];\n }\n }\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n}\n\nexport async function removeLayout({\n projectDir = state.projectDir,\n schemaName,\n dataSourceName,\n runCodegen = true,\n}: {\n projectDir?: string;\n schemaName: string;\n dataSourceName: string;\n runCodegen?: boolean;\n}) {\n const jsonConfigPath = path.join(projectDir, typegenConfigFileName);\n const fileContent = await readJsonConfigFile(jsonConfigPath);\n\n if (!fileContent) {\n throw new Error(`${typegenConfigFileName} not found, cannot remove layout.`);\n }\n\n let dataSourceModified = false;\n const targetDsPath = `./src/config/schemas/${dataSourceName}`;\n\n let configArray: AnyDataSourceConfig[];\n if (Array.isArray(fileContent.config)) {\n configArray = fileContent.config;\n } else {\n configArray = [fileContent.config];\n fileContent.config = configArray;\n }\n\n const targetDataSource = configArray.find(\n (ds): ds is FmdapiDataSourceConfig => ds.type === \"fmdapi\" && ds.path === targetDsPath,\n );\n\n if (targetDataSource?.layouts) {\n const initialCount = targetDataSource.layouts.length;\n targetDataSource.layouts = targetDataSource.layouts.filter((layout) => layout.schemaName !== schemaName);\n if (targetDataSource.layouts.length < initialCount) {\n dataSourceModified = true;\n }\n }\n\n if (dataSourceModified) {\n await writeJsonConfigFile(jsonConfigPath, fileContent);\n }\n\n const schemaFilePath = path.join(projectDir, \"src\", \"config\", \"schemas\", dataSourceName, `${schemaName}.ts`);\n if (fs.existsSync(schemaFilePath)) {\n fs.removeSync(schemaFilePath);\n }\n\n if (runCodegen && dataSourceModified) {\n await runCodegenCommand();\n }\n}\n\n// Make sure to remove unused imports like Project, SyntaxKind, etc. if they are no longer used anywhere.\n// Also remove getNewProject and formatAndSaveSourceFiles from imports if they were only for config.\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=()=>{let e=process.env.npm_config_user_agent;return e?e.startsWith(`yarn`)?`yarn`:e.startsWith(`pnpm`)?`pnpm`:e.startsWith(`bun`)?`bun`:`npm`:`pnpm`};export{e as t};
|
|
2
|
-
//# sourceMappingURL=getUserPkgManager-
|
|
2
|
+
//# sourceMappingURL=getUserPkgManager-CZwrE7fs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserPkgManager-
|
|
1
|
+
{"version":3,"file":"getUserPkgManager-CZwrE7fs.js","names":[],"sources":["../src/utils/getUserPkgManager.ts"],"sourcesContent":["export type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\n\nexport const getUserPkgManager: () => PackageManager = () => {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n }\n if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n }\n if (userAgent.startsWith(\"bun\")) {\n return \"bun\";\n }\n return \"npm\";\n }\n // If no user agent is set, assume pnpm\n return \"pnpm\";\n};\n"],"mappings":"AAEA,MAAa,MAAgD,CAE3D,IAAM,EAAY,QAAQ,IAAI,sBAe9B,OAbI,EACE,EAAU,WAAW,OAAO,CACvB,OAEL,EAAU,WAAW,OAAO,CACvB,OAEL,EAAU,WAAW,MAAM,CACtB,MAEF,MAGF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{Option as e}from"commander";const t=new e(`--non-interactive`,`Never prompt for input; fail with a clear error when required values are missing`).default(!1),n=new e(`--debug`,`Run in debug mode`).default(!1);export{t as n,n as t};
|
|
2
|
-
//# sourceMappingURL=globalOptions-
|
|
2
|
+
//# sourceMappingURL=globalOptions-C6fknjPB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globalOptions-
|
|
1
|
+
{"version":3,"file":"globalOptions-C6fknjPB.js","names":[],"sources":["../src/globalOptions.ts"],"sourcesContent":["import { Option } from \"commander\";\n\nexport const nonInteractiveOption = new Option(\n \"--non-interactive\",\n \"Never prompt for input; fail with a clear error when required values are missing\",\n).default(false);\nexport const debugOption = new Option(\"--debug\", \"Run in debug mode\").default(false);\n"],"mappings":"mCAEA,MAAa,EAAuB,IAAI,EACtC,oBACA,mFACD,CAAC,QAAQ,GAAM,CACH,EAAc,IAAI,EAAO,UAAW,oBAAoB,CAAC,QAAQ,GAAM"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as _effect_cli_ValidationError0 from "@effect/cli/ValidationError";
|
|
2
|
-
import { Context, Effect } from "effect";
|
|
2
|
+
import { Cause, Context, Effect } from "effect";
|
|
3
|
+
import * as effect_Types0 from "effect/Types";
|
|
4
|
+
import * as effect_Cause0 from "effect/Cause";
|
|
3
5
|
import * as _effect_cli_CliApp0 from "@effect/cli/CliApp";
|
|
4
6
|
|
|
5
7
|
//#region src/utils/packageManager.d.ts
|
|
@@ -135,7 +137,70 @@ interface InitPlan {
|
|
|
135
137
|
nextSteps: string[];
|
|
136
138
|
}
|
|
137
139
|
//#endregion
|
|
140
|
+
//#region src/core/errors.d.ts
|
|
141
|
+
declare const CliValidationError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
142
|
+
readonly _tag: "CliValidationError";
|
|
143
|
+
} & Readonly<A>;
|
|
144
|
+
declare class CliValidationError extends CliValidationError_base<{
|
|
145
|
+
readonly message: string;
|
|
146
|
+
readonly cause?: unknown;
|
|
147
|
+
}> {}
|
|
148
|
+
declare const UserCancelledError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
149
|
+
readonly _tag: "UserCancelledError";
|
|
150
|
+
} & Readonly<A>;
|
|
151
|
+
declare class UserCancelledError extends UserCancelledError_base<{
|
|
152
|
+
readonly message: string;
|
|
153
|
+
}> {}
|
|
154
|
+
declare const NonInteractiveInputError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
155
|
+
readonly _tag: "NonInteractiveInputError";
|
|
156
|
+
} & Readonly<A>;
|
|
157
|
+
declare class NonInteractiveInputError extends NonInteractiveInputError_base<{
|
|
158
|
+
readonly message: string;
|
|
159
|
+
}> {}
|
|
160
|
+
declare const DirectoryConflictError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
161
|
+
readonly _tag: "DirectoryConflictError";
|
|
162
|
+
} & Readonly<A>;
|
|
163
|
+
declare class DirectoryConflictError extends DirectoryConflictError_base<{
|
|
164
|
+
readonly message: string;
|
|
165
|
+
readonly path: string;
|
|
166
|
+
}> {}
|
|
167
|
+
declare const FileMakerSetupError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
168
|
+
readonly _tag: "FileMakerSetupError";
|
|
169
|
+
} & Readonly<A>;
|
|
170
|
+
declare class FileMakerSetupError extends FileMakerSetupError_base<{
|
|
171
|
+
readonly message: string;
|
|
172
|
+
readonly cause?: unknown;
|
|
173
|
+
}> {}
|
|
174
|
+
declare const RegistryError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
175
|
+
readonly _tag: "RegistryError";
|
|
176
|
+
} & Readonly<A>;
|
|
177
|
+
declare class RegistryError extends RegistryError_base<{
|
|
178
|
+
readonly message: string;
|
|
179
|
+
readonly cause?: unknown;
|
|
180
|
+
}> {}
|
|
181
|
+
declare const ExternalCommandError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
182
|
+
readonly _tag: "ExternalCommandError";
|
|
183
|
+
} & Readonly<A>;
|
|
184
|
+
declare class ExternalCommandError extends ExternalCommandError_base<{
|
|
185
|
+
readonly message: string;
|
|
186
|
+
readonly command: string;
|
|
187
|
+
readonly args: readonly string[];
|
|
188
|
+
readonly cwd: string;
|
|
189
|
+
readonly cause?: unknown;
|
|
190
|
+
}> {}
|
|
191
|
+
declare const FileSystemError_base: new <A extends Record<string, any> = {}>(args: effect_Types0.VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P] }>) => effect_Cause0.YieldableError & {
|
|
192
|
+
readonly _tag: "FileSystemError";
|
|
193
|
+
} & Readonly<A>;
|
|
194
|
+
declare class FileSystemError extends FileSystemError_base<{
|
|
195
|
+
readonly message: string;
|
|
196
|
+
readonly operation: string;
|
|
197
|
+
readonly path: string;
|
|
198
|
+
readonly cause?: unknown;
|
|
199
|
+
}> {}
|
|
200
|
+
type CliError = CliValidationError | UserCancelledError | NonInteractiveInputError | DirectoryConflictError | FileMakerSetupError | RegistryError | ExternalCommandError | FileSystemError;
|
|
201
|
+
//#endregion
|
|
138
202
|
//#region src/core/context.d.ts
|
|
203
|
+
type Eff<A, E = never, R = never> = Effect.Effect<A, E, R>;
|
|
139
204
|
interface CliContextValue {
|
|
140
205
|
cwd: string;
|
|
141
206
|
debug: boolean;
|
|
@@ -203,18 +268,18 @@ interface ConsoleService {
|
|
|
203
268
|
}
|
|
204
269
|
declare const ConsoleService: Context.Tag<ConsoleService, ConsoleService>;
|
|
205
270
|
interface FileSystemService {
|
|
206
|
-
readonly exists: (path: string) =>
|
|
207
|
-
readonly readdir: (path: string) =>
|
|
208
|
-
readonly emptyDir: (path: string) =>
|
|
271
|
+
readonly exists: (path: string) => Eff<boolean, CliError>;
|
|
272
|
+
readonly readdir: (path: string) => Eff<string[], CliError>;
|
|
273
|
+
readonly emptyDir: (path: string) => Eff<void, CliError>;
|
|
209
274
|
readonly copyDir: (from: string, to: string, options?: {
|
|
210
275
|
overwrite?: boolean;
|
|
211
|
-
}) =>
|
|
212
|
-
readonly rename: (from: string, to: string) =>
|
|
213
|
-
readonly remove: (path: string) =>
|
|
214
|
-
readonly readJson: <T>(path: string) =>
|
|
215
|
-
readonly writeJson: (path: string, value: unknown) =>
|
|
216
|
-
readonly writeFile: (path: string, content: string) =>
|
|
217
|
-
readonly readFile: (path: string) =>
|
|
276
|
+
}) => Eff<void, CliError>;
|
|
277
|
+
readonly rename: (from: string, to: string) => Eff<void, CliError>;
|
|
278
|
+
readonly remove: (path: string) => Eff<void, CliError>;
|
|
279
|
+
readonly readJson: <T>(path: string) => Eff<T, CliError>;
|
|
280
|
+
readonly writeJson: (path: string, value: unknown) => Eff<void, CliError>;
|
|
281
|
+
readonly writeFile: (path: string, content: string) => Eff<void, CliError>;
|
|
282
|
+
readonly readFile: (path: string) => Eff<string, CliError>;
|
|
218
283
|
}
|
|
219
284
|
declare const FileSystemService: Context.Tag<FileSystemService, FileSystemService>;
|
|
220
285
|
interface TemplateService {
|
|
@@ -222,7 +287,7 @@ interface TemplateService {
|
|
|
222
287
|
}
|
|
223
288
|
declare const TemplateService: Context.Tag<TemplateService, TemplateService>;
|
|
224
289
|
interface PackageManagerService {
|
|
225
|
-
readonly getVersion: (packageManager: PackageManager, cwd: string) =>
|
|
290
|
+
readonly getVersion: (packageManager: PackageManager, cwd: string) => Eff<string | undefined, CliError>;
|
|
226
291
|
}
|
|
227
292
|
declare const PackageManagerService: Context.Tag<PackageManagerService, PackageManagerService>;
|
|
228
293
|
interface ProcessService {
|
|
@@ -230,23 +295,19 @@ interface ProcessService {
|
|
|
230
295
|
cwd: string;
|
|
231
296
|
stdout?: "pipe" | "inherit" | "ignore";
|
|
232
297
|
stderr?: "pipe" | "inherit" | "ignore";
|
|
233
|
-
}) =>
|
|
298
|
+
}) => Eff<{
|
|
234
299
|
stdout: string;
|
|
235
300
|
stderr: string;
|
|
236
|
-
}>;
|
|
301
|
+
}, CliError>;
|
|
237
302
|
}
|
|
238
303
|
declare const ProcessService: Context.Tag<ProcessService, ProcessService>;
|
|
239
304
|
interface GitService {
|
|
240
|
-
readonly initialize: (projectDir: string) =>
|
|
305
|
+
readonly initialize: (projectDir: string) => Eff<void, CliError>;
|
|
241
306
|
}
|
|
242
307
|
declare const GitService: Context.Tag<GitService, GitService>;
|
|
243
308
|
interface SettingsService {
|
|
244
|
-
readonly writeSettings: (projectDir: string, settings: ProofKitSettings) =>
|
|
245
|
-
readonly appendEnvVars: (projectDir: string, vars: Record<string, string>) =>
|
|
246
|
-
readonly ensureTypegenConfig: (projectDir: string, options: {
|
|
247
|
-
appType: AppType;
|
|
248
|
-
fileMaker?: FileMakerInputs;
|
|
249
|
-
}) => Promise<void>;
|
|
309
|
+
readonly writeSettings: (projectDir: string, settings: ProofKitSettings) => Eff<void, CliError>;
|
|
310
|
+
readonly appendEnvVars: (projectDir: string, vars: Record<string, string>) => Eff<void, CliError>;
|
|
250
311
|
}
|
|
251
312
|
declare const SettingsService: Context.Tag<SettingsService, SettingsService>;
|
|
252
313
|
interface FmMcpStatus {
|
|
@@ -288,51 +349,51 @@ interface FileMakerBootstrapArtifacts {
|
|
|
288
349
|
};
|
|
289
350
|
}
|
|
290
351
|
interface FileMakerService {
|
|
291
|
-
readonly detectLocalFmMcp: (baseUrl?: string) =>
|
|
292
|
-
readonly validateHostedServerUrl: (serverUrl: string, ottoPort?: number | null) =>
|
|
352
|
+
readonly detectLocalFmMcp: (baseUrl?: string) => Eff<FmMcpStatus, CliError>;
|
|
353
|
+
readonly validateHostedServerUrl: (serverUrl: string, ottoPort?: number | null) => Eff<{
|
|
293
354
|
normalizedUrl: string;
|
|
294
355
|
versions: FileMakerServerVersions;
|
|
295
|
-
}>;
|
|
356
|
+
}, CliError>;
|
|
296
357
|
readonly getOttoFMSToken: (options: {
|
|
297
358
|
url: URL;
|
|
298
|
-
}) =>
|
|
359
|
+
}) => Eff<{
|
|
299
360
|
token: string;
|
|
300
|
-
}>;
|
|
361
|
+
}, CliError>;
|
|
301
362
|
readonly listFiles: (options: {
|
|
302
363
|
url: URL;
|
|
303
364
|
token: string;
|
|
304
|
-
}) =>
|
|
365
|
+
}) => Eff<OttoFileInfo[], CliError>;
|
|
305
366
|
readonly listAPIKeys: (options: {
|
|
306
367
|
url: URL;
|
|
307
368
|
token: string;
|
|
308
|
-
}) =>
|
|
369
|
+
}) => Eff<OttoApiKeyInfo[], CliError>;
|
|
309
370
|
readonly createDataAPIKeyWithCredentials: (options: {
|
|
310
371
|
url: URL;
|
|
311
372
|
filename: string;
|
|
312
373
|
username: string;
|
|
313
374
|
password: string;
|
|
314
|
-
}) =>
|
|
375
|
+
}) => Eff<{
|
|
315
376
|
apiKey: string;
|
|
316
|
-
}>;
|
|
377
|
+
}, CliError>;
|
|
317
378
|
readonly deployDemoFile: (options: {
|
|
318
379
|
url: URL;
|
|
319
380
|
token: string;
|
|
320
381
|
operation: "install" | "replace";
|
|
321
|
-
}) =>
|
|
382
|
+
}) => Eff<{
|
|
322
383
|
apiKey: string;
|
|
323
384
|
filename: string;
|
|
324
|
-
}>;
|
|
385
|
+
}, CliError>;
|
|
325
386
|
readonly listLayouts: (options: {
|
|
326
387
|
dataApiKey: string;
|
|
327
388
|
fmFile: string;
|
|
328
389
|
server: string;
|
|
329
|
-
}) =>
|
|
330
|
-
readonly createFileMakerBootstrapArtifacts: (settings: ProofKitSettings, inputs: FileMakerInputs, appType: AppType) =>
|
|
331
|
-
readonly bootstrap: (projectDir: string, settings: ProofKitSettings, inputs: FileMakerInputs, appType: AppType) =>
|
|
390
|
+
}) => Eff<string[], CliError>;
|
|
391
|
+
readonly createFileMakerBootstrapArtifacts: (settings: ProofKitSettings, inputs: FileMakerInputs, appType: AppType) => Eff<FileMakerBootstrapArtifacts, CliError>;
|
|
392
|
+
readonly bootstrap: (projectDir: string, settings: ProofKitSettings, inputs: FileMakerInputs, appType: AppType) => Eff<ProofKitSettings, CliError>;
|
|
332
393
|
}
|
|
333
394
|
declare const FileMakerService: Context.Tag<FileMakerService, FileMakerService>;
|
|
334
395
|
interface CodegenService {
|
|
335
|
-
readonly runInitial: (projectDir: string, packageManager: PackageManager) =>
|
|
396
|
+
readonly runInitial: (projectDir: string, packageManager: PackageManager) => Eff<void, CliError>;
|
|
336
397
|
}
|
|
337
398
|
declare const CodegenService: Context.Tag<CodegenService, CodegenService>;
|
|
338
399
|
//#endregion
|
|
@@ -353,14 +414,35 @@ declare const runInit: (name?: string, rawFlags?: Partial<CliFlags>) => Effect.E
|
|
|
353
414
|
importAlias: string;
|
|
354
415
|
nonInteractive: boolean;
|
|
355
416
|
debug: boolean;
|
|
356
|
-
fileMaker:
|
|
417
|
+
fileMaker: {
|
|
418
|
+
mode: "hosted-otto";
|
|
419
|
+
dataSourceName: string;
|
|
420
|
+
envNames: FileMakerEnvNames;
|
|
421
|
+
server: string;
|
|
422
|
+
fileName: string;
|
|
423
|
+
dataApiKey: string;
|
|
424
|
+
layoutName: string | undefined;
|
|
425
|
+
schemaName: string | undefined;
|
|
426
|
+
adminApiKey: string | undefined;
|
|
427
|
+
fmsVersion: string;
|
|
428
|
+
ottoVersion: string | null;
|
|
429
|
+
} | {
|
|
430
|
+
mode: "local-fm-mcp";
|
|
431
|
+
dataSourceName: string;
|
|
432
|
+
envNames: FileMakerEnvNames;
|
|
433
|
+
fmMcpBaseUrl: string;
|
|
434
|
+
fileName: string;
|
|
435
|
+
layoutName: string | undefined;
|
|
436
|
+
schemaName: string | undefined;
|
|
437
|
+
} | undefined;
|
|
357
438
|
skipFileMakerSetup: boolean;
|
|
358
439
|
hasExplicitFileMakerInputs: boolean;
|
|
359
440
|
};
|
|
360
441
|
plan: InitPlan;
|
|
361
|
-
},
|
|
362
|
-
declare const runDefaultCommand: (rawFlags?: Partial<CliFlags>) => Effect.Effect<
|
|
363
|
-
declare const cli: (args: ReadonlyArray<string>) => Effect.Effect<void,
|
|
442
|
+
}, CliError, PromptService | CliContextValue | ConsoleService | FileMakerService | TemplateService | PackageManagerService | FileSystemService | SettingsService | ProcessService | GitService | CodegenService>;
|
|
443
|
+
declare const runDefaultCommand: (rawFlags?: Partial<CliFlags>) => Effect.Effect<undefined, CliError, PromptService | CliContextValue | ConsoleService | FileMakerService | TemplateService | PackageManagerService | FileSystemService | SettingsService | ProcessService | GitService | CodegenService>;
|
|
444
|
+
declare const cli: (args: ReadonlyArray<string>) => Effect.Effect<void, CliError | _effect_cli_ValidationError0.ValidationError, _effect_cli_CliApp0.CliApp.Environment>;
|
|
445
|
+
declare function renderFailure(cause: Cause.Cause<unknown>, showDebugDetails: boolean): void;
|
|
364
446
|
//#endregion
|
|
365
|
-
export { cli, runDefaultCommand, runInit };
|
|
366
|
-
//# sourceMappingURL=index-
|
|
447
|
+
export { cli, renderFailure, runDefaultCommand, runInit };
|
|
448
|
+
//# sourceMappingURL=index-D9Y-xAF1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D9Y-xAF1.d.ts","names":[],"sources":["../packages/cli/src/utils/packageManager.ts","../packages/cli/src/core/types.ts","../packages/cli/src/core/errors.ts","../packages/cli/src/core/context.ts","../packages/cli/src/index.ts"],"sourcesContent":[],"mappings":"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"}
|