@highstate/cli 0.17.0 → 0.19.1
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/{chunk-SA46IMPG.js → chunk-6X5WTUTR.js} +2 -3
- package/dist/chunk-6X5WTUTR.js.map +1 -0
- package/dist/commands/index.js +1 -1
- package/dist/highstate.manifest.json +2 -2
- package/dist/main.js +1 -1
- package/package.json +3 -3
- package/src/shared/version-sets.ts +0 -1
- package/dist/chunk-SA46IMPG.js.map +0 -1
|
@@ -300,7 +300,6 @@ var STDLIB_PACKAGES = [
|
|
|
300
300
|
"@highstate/k8s",
|
|
301
301
|
"@highstate/k8s.apps",
|
|
302
302
|
"@highstate/k8s.game-servers",
|
|
303
|
-
"@highstate/k8s.monitor-worker",
|
|
304
303
|
"@highstate/k8s.obfuscators",
|
|
305
304
|
"@highstate/library",
|
|
306
305
|
"@highstate/mullvad",
|
|
@@ -1812,5 +1811,5 @@ async function assertPackageJsonExists(projectRoot) {
|
|
|
1812
1811
|
}
|
|
1813
1812
|
|
|
1814
1813
|
export { BackendIdentityCommand, BackendUnlockMethodAddCommand, BackendUnlockMethodDeleteCommand, BackendUnlockMethodListCommand, BuildCommand, DesignerCommand, InitCommand, PackageCreateCommand, PackageListCommand, PackageRemoveCommand, PackageUpdateReferencesCommand, UpdateCommand };
|
|
1815
|
-
//# sourceMappingURL=chunk-
|
|
1816
|
-
//# sourceMappingURL=chunk-
|
|
1814
|
+
//# sourceMappingURL=chunk-6X5WTUTR.js.map
|
|
1815
|
+
//# sourceMappingURL=chunk-6X5WTUTR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/logger.ts","../src/shared/bin-transformer.ts","../src/shared/entry-points.ts","../src/shared/generator.ts","../src/shared/npm-registry.ts","../src/shared/package-json.ts","../src/shared/pnpm-workspace.ts","../src/shared/version-sets.ts","../src/shared/overrides.ts","../src/shared/project-versions.ts","../src/shared/pulumi-cli.ts","../src/shared/schema-transformer.ts","../src/shared/schemas.ts","../src/shared/services.ts","../src/shared/source-hash-calculator.ts","../src/shared/version-bundle.ts","../src/shared/workspace.ts","../src/commands/backend/identity.ts","../src/commands/backend/unlock-method/add.ts","../src/commands/backend/unlock-method/delete.ts","../src/commands/backend/unlock-method/list.ts","../src/commands/build.ts","../src/commands/designer.ts","../src/commands/init.ts","../src/commands/package/create.ts","../src/commands/package/list.ts","../src/commands/package/remove.ts","../src/commands/package/update-references.ts","../src/commands/update.ts"],"names":["build","readFile","writeFile","resolve","resolvePackageJSON","disposeServices","dirname","logger","input","z","importMetaResolve","relative","readPackageJSON","join","readdir","mkdir","Command","services","Option","pathToFileURL","consola","access","fileURLToPath","Table","installDependencies","detectPackageManager"],"mappings":"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","file":"chunk-6X5WTUTR.js","sourcesContent":["import { PassThrough } from \"node:stream\"\nimport { consola, LogLevels } from \"consola\"\nimport pino, { levels } from \"pino\"\n\nexport const logger = pino(\n {\n name: \"highstate-cli\",\n level: process.env.LOG_LEVEL ?? \"info\",\n },\n createConsolaStream(),\n)\n\nconsola.level = LogLevels[(process.env.LOG_LEVEL as keyof typeof LogLevels) ?? \"info\"]\n\nfunction createConsolaStream() {\n const stream = new PassThrough()\n\n stream.on(\"data\", data => {\n const { level, msg, error } = JSON.parse(String(data)) as {\n msg: string\n level: number\n error?: unknown\n }\n\n const levelLabel = levels.labels[level]\n\n switch (levelLabel) {\n case \"info\":\n consola.info(msg)\n break\n case \"warn\":\n consola.warn(msg)\n break\n case \"error\":\n if (error) {\n consola.error(msg, error)\n } else {\n consola.error(msg)\n }\n break\n case \"debug\":\n consola.debug(msg)\n break\n case \"fatal\":\n consola.fatal(msg)\n break\n case \"trace\":\n consola.trace(msg)\n break\n }\n })\n\n return stream\n}\n","import type { Plugin } from \"esbuild\"\nimport { readFile } from \"node:fs/promises\"\nimport { logger } from \"./logger\"\n\nexport function createBinTransformerPlugin(sourceFilePaths: string[]): Plugin {\n const filter = new RegExp(`(${sourceFilePaths.join(\"|\")})$`)\n\n logger.debug(\"created bin transformer plugin with filter: %s\", filter)\n\n return {\n name: \"bin-transformer\",\n setup(build) {\n build.onLoad({ filter }, async args => {\n const content = await readFile(args.path, \"utf-8\")\n\n return {\n contents: `#!/usr/bin/env node\\n\\n${content}`,\n loader: \"ts\",\n }\n })\n },\n }\n}\n","import type { PackageJson } from \"pkg-types\"\nimport { logger } from \"./logger\"\n\nexport interface EntryPoint {\n targetName: string\n entryPoint: string\n distPath: string\n isBin: boolean\n key: string\n}\n\n/**\n * Extracts entry points from package.json exports and bin fields\n */\nexport function extractEntryPoints(packageJson: PackageJson): Record<string, EntryPoint> {\n const exports = packageJson.exports\n let bin = packageJson.bin\n\n if (!exports && !bin) {\n logger.warn(\"no exports or bin found in package.json\")\n return {}\n }\n\n if (exports !== undefined && (typeof exports !== \"object\" || Array.isArray(exports))) {\n throw new Error(\"Exports field in package.json must be an object\")\n }\n\n if (bin !== undefined && typeof bin !== \"object\") {\n if (!packageJson.name) {\n throw new Error(\"Package name is required when bin is a string\")\n }\n bin = { [packageJson.name]: bin as string }\n }\n\n const result: Record<string, EntryPoint> = {}\n\n // process exports entries\n if (exports) {\n for (const [key, value] of Object.entries(exports)) {\n let distPath: string\n\n if (typeof value === \"string\") {\n distPath = value\n } else if (typeof value === \"object\" && !Array.isArray(value)) {\n if (!value.default) {\n throw new Error(`Export \"${key}\" must have a default field in package.json`)\n }\n\n if (typeof value.default !== \"string\") {\n throw new Error(`Export \"${key}\" default field must be a string in package.json`)\n }\n\n distPath = value.default\n } else {\n throw new Error(`Export \"${key}\" must be a string or an object in package.json`)\n }\n\n const isJsonExport = distPath.endsWith(\".json\")\n const isJsExport = distPath.endsWith(\".js\")\n\n if (!isJsonExport && !isJsExport) {\n throw new Error(\n `The default value of export \"${key}\" must end with \".js\" or \".json\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (isJsExport && !distPath.startsWith(\"./dist/\")) {\n throw new Error(\n `The default value of export \"${key}\" must start with \"./dist/\" when exporting \".js\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (isJsonExport) {\n continue\n }\n\n const targetName = distPath.slice(7).slice(0, -3)\n\n result[targetName] = {\n entryPoint: `./src/${targetName}.ts`,\n targetName,\n distPath,\n isBin: false,\n key,\n }\n }\n }\n\n // process bin entries\n if (bin) {\n for (const [key, value] of Object.entries(bin)) {\n if (typeof value !== \"string\") {\n throw new Error(`Bin entry \"${key}\" must be a string in package.json`)\n }\n\n const distPath = value\n\n if (!distPath.startsWith(\"./dist/\")) {\n throw new Error(\n `The value of bin entry \"${key}\" must start with \"./dist/\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (!distPath.endsWith(\".js\")) {\n throw new Error(\n `The value of bin entry \"${key}\" must end with \".js\" in package.json, got \"${distPath}\"`,\n )\n }\n\n const targetName = distPath.slice(7).slice(0, -3)\n\n result[targetName] = {\n entryPoint: `./src/${targetName}.ts`,\n targetName,\n distPath,\n isBin: true,\n key,\n }\n }\n }\n\n return result\n}\n","import { mkdir, readdir, readFile, stat, writeFile } from \"node:fs/promises\"\nimport { dirname, join, relative, resolve } from \"node:path\"\nimport Handlebars from \"handlebars\"\n\n/**\n * Copies all files from a template path to a destination path, replacing\n * variables in the format {{variableName}} with their corresponding values\n * and removing `.tpl` segments from file names.\n *\n * For example, `package.tpl.json` becomes `package.json` and `config.tpl` becomes `config`.\n *\n * @param templatePath The absolute path to the template directory.\n * @param destinationPath The absolute path to the destination directory.\n * @param variables The record of variable names and their replacement values.\n */\nexport async function generateFromTemplate(\n templatePath: string,\n destinationPath: string,\n variables: Record<string, string>,\n): Promise<void> {\n const resolvedTemplatePath = resolve(templatePath)\n const resolvedDestinationPath = resolve(destinationPath)\n\n const templateStats = await stat(resolvedTemplatePath)\n if (!templateStats.isDirectory()) {\n throw new Error(`templatePath must be a directory: ${resolvedTemplatePath}`)\n }\n\n await mkdir(resolvedDestinationPath, { recursive: true })\n\n const renderTemplate = (raw: string): string => {\n const template = Handlebars.compile(raw, {\n strict: true,\n noEscape: true,\n })\n\n return template(variables)\n }\n\n const visit = async (absoluteSourcePath: string): Promise<void> => {\n const sourceStats = await stat(absoluteSourcePath)\n if (sourceStats.isDirectory()) {\n const relativePath = relative(resolvedTemplatePath, absoluteSourcePath)\n const destinationDirPath = join(resolvedDestinationPath, relativePath)\n\n await mkdir(destinationDirPath, { recursive: true })\n\n const entries = await readdir(absoluteSourcePath, { withFileTypes: true })\n for (const entry of entries) {\n await visit(join(absoluteSourcePath, entry.name))\n }\n\n return\n }\n\n if (!sourceStats.isFile()) {\n return\n }\n\n const relativeFilePath = relative(resolvedTemplatePath, absoluteSourcePath)\n const destinationRelativePath = relativeFilePath.replaceAll(\".tpl\", \"\")\n const destinationFilePath = join(resolvedDestinationPath, destinationRelativePath)\n\n await mkdir(dirname(destinationFilePath), { recursive: true })\n\n const contents = await readFile(absoluteSourcePath, \"utf8\")\n const rendered = renderTemplate(contents)\n if (rendered.trim().length === 0) {\n return\n }\n\n await writeFile(destinationFilePath, rendered, \"utf8\")\n }\n\n await visit(resolvedTemplatePath)\n}\n","export type NpmRegistryManifest = {\n name?: string\n version?: string\n peerDependencies?: Record<string, string>\n dependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\n\nexport type NpmRegistryPackument = {\n \"dist-tags\"?: {\n latest?: string\n }\n versions?: Record<string, NpmRegistryManifest>\n}\n\nexport async function fetchNpmPackument(packageName: string): Promise<NpmRegistryPackument> {\n const encoded = encodeURIComponent(packageName)\n const url = `https://registry.npmjs.org/${encoded}`\n\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to fetch package \"${packageName}\" from NPM registry (HTTP ${response.status})`,\n )\n }\n\n return (await response.json()) as NpmRegistryPackument\n}\n\nexport async function fetchLatestVersion(packageName: string): Promise<string> {\n const packument = await fetchNpmPackument(packageName)\n const latest = packument[\"dist-tags\"]?.latest\n if (!latest) {\n throw new Error(\n `NPM registry response for package \"${packageName}\" does not include \"dist-tags.latest\"`,\n )\n }\n\n return latest\n}\n\nexport async function fetchManifest(\n packageName: string,\n version: string,\n): Promise<NpmRegistryManifest> {\n const packument = await fetchNpmPackument(packageName)\n const manifest = packument.versions?.[version]\n if (!manifest) {\n throw new Error(\n `NPM registry response for package \"${packageName}\" does not include version \"${version}\"`,\n )\n }\n\n return manifest\n}\n\nexport function getDependencyRange(\n manifest: NpmRegistryManifest,\n dependencyName: string,\n): string | null {\n return (\n manifest.peerDependencies?.[dependencyName] ??\n manifest.dependencies?.[dependencyName] ??\n manifest.optionalDependencies?.[dependencyName] ??\n null\n )\n}\n","import { writeFile } from \"node:fs/promises\"\n\nexport async function writeJsonFile(filePath: string, value: unknown): Promise<void> {\n const contents = `${JSON.stringify(value, null, 2)}\\n`\n await writeFile(filePath, contents, \"utf8\")\n}\n","import { readFile, writeFile } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { parse, stringify } from \"yaml\"\n\nexport type PnpmWorkspace = {\n packages?: string[]\n overrides?: Record<string, string>\n}\n\nexport function resolvePnpmWorkspacePath(projectRoot: string): string {\n return resolve(projectRoot, \"pnpm-workspace.yaml\")\n}\n\nexport async function readPnpmWorkspace(filePath: string): Promise<PnpmWorkspace> {\n const raw = await readFile(filePath, \"utf8\")\n const parsed = parse(raw)\n\n if (typeof parsed !== \"object\" || parsed === null) {\n return {}\n }\n\n return parsed as PnpmWorkspace\n}\n\nexport async function writePnpmWorkspace(\n filePath: string,\n workspace: PnpmWorkspace,\n): Promise<void> {\n const raw = stringify(workspace)\n\n await writeFile(filePath, raw, \"utf8\")\n}\n","export const PLATFORM_PACKAGES = [\n \"@highstate/api\",\n \"@highstate/backend\",\n \"@highstate/backend-api\",\n \"@highstate/cli\",\n \"@highstate/contract\",\n \"@highstate/designer\",\n \"@highstate/pulumi\",\n \"@highstate/worker-sdk\",\n]\n\nexport const STDLIB_PACKAGES = [\n \"@highstate/cilium\",\n \"@highstate/cloudflare\",\n \"@highstate/common\",\n \"@highstate/distributions\",\n \"@highstate/git\",\n \"@highstate/k3s\",\n \"@highstate/k8s\",\n \"@highstate/k8s.apps\",\n \"@highstate/k8s.game-servers\",\n \"@highstate/k8s.obfuscators\",\n \"@highstate/library\",\n \"@highstate/mullvad\",\n \"@highstate/nixos\",\n \"@highstate/proxmox\",\n \"@highstate/restic\",\n \"@highstate/sops\",\n \"@highstate/talos\",\n \"@highstate/timeweb\",\n \"@highstate/wireguard\",\n \"@highstate/yandex\",\n]\n\nexport const PULUMI_PACKAGES = [\"@pulumi/pulumi\"]\n","import type { PackageManagerName } from \"nypm\"\nimport type { VersionBundle } from \"./version-bundle\"\nimport { access } from \"node:fs/promises\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { writeJsonFile } from \"./package-json\"\nimport { readPnpmWorkspace, resolvePnpmWorkspacePath, writePnpmWorkspace } from \"./pnpm-workspace\"\nimport { PLATFORM_PACKAGES, PULUMI_PACKAGES, STDLIB_PACKAGES } from \"./version-sets\"\n\nexport type Overrides = Record<string, string>\n\nexport function buildOverrides(bundle: VersionBundle): Overrides {\n const platform = Object.fromEntries(PLATFORM_PACKAGES.map(name => [name, bundle.platformVersion]))\n const stdlib = Object.fromEntries(STDLIB_PACKAGES.map(name => [name, bundle.stdlibVersion]))\n const pulumi = Object.fromEntries(PULUMI_PACKAGES.map(name => [name, bundle.pulumiVersion]))\n\n const merged: Overrides = {\n ...platform,\n ...stdlib,\n ...pulumi,\n }\n\n return merged\n}\n\nexport type ApplyOverridesArgs = {\n packageManager: PackageManagerName\n overrides: Overrides\n projectRoot: string\n}\n\nexport async function applyOverrides(args: ApplyOverridesArgs): Promise<void> {\n const { packageManager, overrides, projectRoot } = args\n\n if (packageManager === \"pnpm\") {\n const pnpmWorkspacePath = resolvePnpmWorkspacePath(projectRoot)\n\n try {\n await access(pnpmWorkspacePath)\n } catch {\n throw new Error(`PNPM workspace file is missing: \"${pnpmWorkspacePath}\"`)\n }\n\n const workspace = await readPnpmWorkspace(pnpmWorkspacePath)\n const nextWorkspace = {\n ...workspace,\n overrides,\n }\n\n await writePnpmWorkspace(pnpmWorkspacePath, nextWorkspace)\n return\n }\n\n const packageJsonPath = await resolvePackageJSON(projectRoot)\n const packageJson = await readPackageJSON(projectRoot)\n\n if (packageManager === \"npm\") {\n await writeJsonFile(packageJsonPath, {\n ...packageJson,\n overrides,\n })\n return\n }\n\n if (packageManager === \"yarn\") {\n await writeJsonFile(packageJsonPath, {\n ...packageJson,\n resolutions: overrides,\n })\n return\n }\n\n await writeJsonFile(packageJsonPath, packageJson)\n}\n","import type { PackageManagerName } from \"nypm\"\nimport type { PackageJson } from \"pkg-types\"\nimport { readFile } from \"node:fs/promises\"\nimport { resolvePackageJSON } from \"pkg-types\"\nimport { readPnpmWorkspace, resolvePnpmWorkspacePath } from \"./pnpm-workspace\"\n\nexport async function getProjectOverrideVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName; packageName: string },\n): Promise<string | null> {\n const { packageManager, packageName } = args\n\n if (packageManager === \"pnpm\") {\n const path = resolvePnpmWorkspacePath(projectRoot)\n const workspace = await readPnpmWorkspace(path)\n return workspace.overrides?.[packageName] ?? null\n }\n\n const packageJsonPath = await resolvePackageJSON(projectRoot)\n const rawPackageJson = await readFile(packageJsonPath, \"utf8\")\n const packageJson = JSON.parse(rawPackageJson) as PackageJson\n\n if (packageManager === \"npm\") {\n const overrides = packageJson.overrides as Record<string, string> | undefined\n return overrides?.[packageName] ?? null\n }\n\n if (packageManager === \"yarn\") {\n const resolutions = packageJson.resolutions as Record<string, string> | undefined\n return resolutions?.[packageName] ?? null\n }\n\n return null\n}\n\nexport async function getProjectPlatformVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName },\n): Promise<string | null> {\n return await getProjectOverrideVersion(projectRoot, {\n packageManager: args.packageManager,\n packageName: \"@highstate/pulumi\",\n })\n}\n\nexport async function getProjectPulumiSdkVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName },\n): Promise<string | null> {\n return await getProjectOverrideVersion(projectRoot, {\n packageManager: args.packageManager,\n packageName: \"@pulumi/pulumi\",\n })\n}\n","import { execFile } from \"node:child_process\"\nimport { promisify } from \"node:util\"\n\nconst execFileAsync = promisify(execFile)\n\nexport async function getPulumiCliVersion(cwd: string): Promise<string | null> {\n try {\n const { stdout } = await execFileAsync(\"pulumi\", [\"version\"], {\n cwd,\n })\n\n const raw = stdout.trim()\n if (raw.length === 0) {\n return null\n }\n\n return raw.startsWith(\"v\") ? raw.slice(1) : raw\n } catch {\n return null\n }\n}\n","import type { Plugin } from \"esbuild\"\nimport { readFile } from \"node:fs/promises\"\nimport MagicString from \"magic-string\"\nimport {\n type CallExpression,\n type Comment,\n type MemberExpression,\n type ObjectProperty,\n parseAsync,\n} from \"oxc-parser\"\nimport { type Node, walk } from \"oxc-walker\"\n\nexport const schemaTransformerPlugin: Plugin = {\n name: \"schema-transformer\",\n setup(build) {\n build.onLoad({ filter: /src\\/.*\\.ts$/ }, async args => {\n const content = await readFile(args.path, \"utf-8\")\n\n return {\n contents: await applySchemaTransformations(content),\n loader: \"ts\",\n }\n })\n },\n}\n\nexport async function applySchemaTransformations(content: string): Promise<string> {\n // first pass: apply zod meta transformations\n let result = await applyZodMetaTransformations(content)\n\n // second pass: apply helper function transformations\n result = await applyHelperFunctionTransformations(result)\n\n // third pass: apply define function meta transformations\n result = await applyDefineFunctionMetaTransformations(result)\n\n return result\n}\n\nasync function applyZodMetaTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n let hasTransformations = false\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle zod object patterns\n if (isZodObjectProperty(node, parentStack)) {\n const jsdoc = findLeadingComment(content, node, comments)\n if (!jsdoc) {\n return\n }\n\n const description = cleanJsdoc(jsdoc.value)\n const fieldName =\n \"name\" in node.key && typeof node.key.name === \"string\" ? node.key.name : \"unknown\"\n\n // Getter properties (get foo() { return ... }) need special handling:\n // we inject `.meta(...)` into the returned schema expression.\n if (isGetterProperty(node)) {\n const returnArgument = findFirstReturnArgument(node)\n if (!returnArgument) {\n return\n }\n\n const originalReturnValue = content.substring(returnArgument.start, returnArgument.end)\n if (originalReturnValue.includes(\".meta(\")) {\n return\n }\n\n const newReturnValue = `${originalReturnValue}.meta({ title: __camelCaseToHumanReadable(\"${fieldName}\"), description: \\`${description}\\` })`\n result.update(returnArgument.start, returnArgument.end, newReturnValue)\n hasTransformations = true\n return\n }\n\n // Standard properties (foo: z.string())\n if (!hasValue(node) || !hasSourceRange(node.value)) {\n return\n }\n\n const originalValue = content.substring(node.value.start, node.value.end)\n\n if (!originalValue.includes(\".meta(\")) {\n const newValue = `${originalValue}.meta({ title: __camelCaseToHumanReadable(\"${fieldName}\"), description: \\`${description}\\` })`\n result.update(node.value.start, node.value.end, newValue)\n hasTransformations = true\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n let finalResult = result.toString()\n\n // add import at the beginning if needed\n if (hasTransformations && !content.includes(\"__camelCaseToHumanReadable\")) {\n finalResult =\n 'import { camelCaseToHumanReadable as __camelCaseToHumanReadable } from \"@highstate/contract\"\\n' +\n finalResult\n }\n\n return finalResult\n}\n\nasync function applyHelperFunctionTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n let hasTransformations = false\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle properties in args, inputs, outputs, secrets objects\n if (node.type === \"Property\" && \"key\" in node && node.key?.type === \"Identifier\") {\n const propertyNode = node\n const helperFunction = getHelperFunctionForProperty(parentStack)\n\n if (helperFunction) {\n const jsdoc = findLeadingComment(content, node, comments)\n\n if (jsdoc) {\n const description = cleanJsdoc(jsdoc.value)\n // Getter properties (get foo() { return ... }) need special handling:\n // inject the helper call into the returned expression.\n if (isGetterProperty(propertyNode)) {\n const returnArgument = findFirstReturnArgument(propertyNode)\n if (!returnArgument) {\n return\n }\n\n const originalReturnValue = content.substring(\n returnArgument.start,\n returnArgument.end,\n )\n if (originalReturnValue.trimStart().startsWith(`${helperFunction}(`)) {\n return\n }\n\n const newReturnValue = `${helperFunction}(${originalReturnValue}, \\`${description}\\`)`\n result.update(returnArgument.start, returnArgument.end, newReturnValue)\n hasTransformations = true\n return\n }\n\n if (!hasValue(propertyNode) || !hasSourceRange(propertyNode.value)) {\n return\n }\n\n const originalValue = content.substring(\n propertyNode.value.start,\n propertyNode.value.end,\n )\n const newValue = `${helperFunction}(${originalValue}, \\`${description}\\`)`\n result.update(propertyNode.value.start, propertyNode.value.end, newValue)\n hasTransformations = true\n }\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n let finalResult = result.toString()\n\n // add import at the beginning if needed\n if (hasTransformations && !content.includes(\"$addArgumentDescription\")) {\n finalResult =\n 'import { $addArgumentDescription, $addInputDescription } from \"@highstate/contract\"\\n' +\n finalResult\n }\n\n return finalResult\n}\n\nasync function applyDefineFunctionMetaTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle defineUnit, defineEntity, defineComponent function calls\n if (node.type === \"CallExpression\" && \"callee\" in node && node.callee.type === \"Identifier\") {\n const callNode = node\n const callee = callNode.callee\n const functionName =\n \"name\" in callee && typeof callee.name === \"string\" ? callee.name : undefined\n\n if (\n functionName &&\n [\"defineUnit\", \"defineEntity\", \"defineComponent\"].includes(functionName)\n ) {\n // look for JSDoc comment on the parent declaration/export, not the function call itself\n const jsdoc = findJsdocForDefineFunction(content, parentStack, comments)\n\n if (jsdoc && callNode.arguments && callNode.arguments.length > 0) {\n const description = cleanJsdoc(jsdoc.value)\n const firstArg = callNode.arguments[0]\n\n // find meta property in the object expression\n if (firstArg.type === \"ObjectExpression\" && \"properties\" in firstArg) {\n const properties = firstArg.properties\n const metaProperty = properties?.find(\n prop =>\n prop.type === \"Property\" &&\n \"key\" in prop &&\n prop.key?.type === \"Identifier\" &&\n prop.key?.name === \"meta\",\n ) as ObjectProperty | undefined\n\n if (metaProperty && \"value\" in metaProperty) {\n // inject description into existing meta object\n const originalMetaValue = content.substring(\n metaProperty.value.start,\n metaProperty.value.end,\n )\n const newMetaValue = injectDescriptionIntoMetaObject(originalMetaValue, description)\n result.update(metaProperty.value.start, metaProperty.value.end, newMetaValue)\n } else if (properties && properties.length > 0) {\n // add meta property with description\n const lastProperty = properties[properties.length - 1] as ObjectProperty\n if (lastProperty && \"end\" in lastProperty) {\n const insertPos = lastProperty.end\n const newMetaProperty = `,\n\n meta: {\n description: \\`${description}\\`,\n }`\n result.appendLeft(insertPos, newMetaProperty)\n }\n }\n }\n }\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n return result.toString()\n}\n\nfunction findJsdocForDefineFunction(\n content: string,\n parentStack: Node[],\n comments: Comment[],\n): Comment | null {\n // look for the variable declaration or export declaration that contains the function call\n for (let i = parentStack.length - 1; i >= 0; i--) {\n const node = parentStack[i]\n\n // check for variable declaration (const x = defineUnit(...))\n if (node.type === \"VariableDeclarator\" && \"id\" in node && node.id?.type === \"Identifier\") {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n\n // check for export variable declaration (export const x = defineUnit(...))\n if (node.type === \"VariableDeclaration\") {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n\n // check for export declaration (export const x = ...)\n if (node.type === \"ExportNamedDeclaration\" && \"declaration\" in node && node.declaration) {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n }\n\n return null\n}\n\nfunction isZodObjectProperty(node: Node, parentStack: Node[]): node is ObjectProperty {\n return (\n node.type === \"Property\" &&\n \"key\" in node &&\n node.key?.type === \"Identifier\" &&\n isInsideZodObject(parentStack)\n )\n}\n\ntype GetterObjectProperty = ObjectProperty & {\n kind: \"get\"\n value: Node & { type: \"FunctionExpression\" }\n}\n\nfunction isGetterProperty(node: Node): node is GetterObjectProperty {\n if (node.type !== \"Property\") {\n return false\n }\n\n if (!hasValue(node)) {\n return false\n }\n\n return \"kind\" in node && node.kind === \"get\" && node.value.type === \"FunctionExpression\"\n}\n\nfunction findFirstReturnArgument(node: ObjectProperty): Node | null {\n if (!hasValue(node) || node.value.type !== \"FunctionExpression\") {\n return null\n }\n\n const body = node.value.body\n if (!body || body.type !== \"BlockStatement\") {\n return null\n }\n\n for (const statement of body.body) {\n if (statement.type !== \"ReturnStatement\") {\n continue\n }\n\n const returnArgument = \"argument\" in statement ? statement.argument : null\n if (returnArgument && hasSourceRange(returnArgument)) {\n return returnArgument\n }\n }\n\n return null\n}\n\nfunction hasValue(node: Node): node is Node & { value: Node } {\n return \"value\" in node && !!node.value\n}\n\nfunction hasSourceRange(node: Node): node is Node & { start: number; end: number } {\n return (\n \"start\" in node &&\n typeof node.start === \"number\" &&\n \"end\" in node &&\n typeof node.end === \"number\"\n )\n}\n\nfunction findLeadingComment(content: string, node: Node, comments: Comment[]): Comment | null {\n return comments.find(comment => isLeadingComment(content, node, comment)) ?? null\n}\n\nfunction isLeadingComment(content: string, node: Node, comment: Comment) {\n if (comment.end > node.start) {\n return false\n }\n\n const contentRange = content.substring(comment.end, node.start)\n\n return contentRange.trim().length === 0\n}\n\nfunction cleanJsdoc(str: string) {\n return (\n str\n // remove leading asterisks\n .replace(/^\\s*\\*/gm, \"\")\n\n // escape backticks and dollar signs\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/`/g, \"\\\\`\")\n .replace(/\\${/g, \"\\\\${\")\n .trim()\n )\n}\n\nfunction injectDescriptionIntoMetaObject(objectString: string, description: string): string {\n const trimmed = objectString.trim()\n\n // Check if description already exists\n const hasDescription = /description\\s*:/.test(trimmed)\n\n if (hasDescription) {\n // Replace existing description\n return trimmed.replace(/description\\s*:\\s*`[^`]*`/, `description: \\`${description}\\``)\n } else {\n // Add description field at the beginning of the object\n const openBraceIndex = trimmed.indexOf(\"{\")\n if (openBraceIndex === -1) {\n return trimmed\n }\n\n const beforeBrace = trimmed.substring(0, openBraceIndex + 1)\n const afterBrace = trimmed.substring(openBraceIndex + 1)\n\n return `${beforeBrace}\n description: \\`${description}\\`,${afterBrace}`\n }\n}\n\nfunction isInsideZodObject(parentStack: Node[]): boolean {\n // look for z.object() call expression in the parent stack\n for (let i = parentStack.length - 1; i >= 0; i--) {\n const node = parentStack[i]\n if (\n node.type === \"CallExpression\" &&\n \"callee\" in node &&\n node.callee.type === \"MemberExpression\" &&\n isZodObjectCall(node.callee)\n ) {\n return true\n }\n }\n return false\n}\n\nfunction getHelperFunctionForProperty(\n parentStack: Node[],\n): \"$addInputDescription\" | \"$addArgumentDescription\" | null {\n if (parentStack.length < 3) {\n return null\n }\n\n const objectExpression = parentStack[parentStack.length - 2]\n if (!objectExpression || objectExpression.type !== \"ObjectExpression\") {\n return null\n }\n\n const containerParent = parentStack[parentStack.length - 3]\n if (!containerParent) {\n return null\n }\n\n if (\n containerParent.type === \"Property\" &&\n \"value\" in containerParent &&\n containerParent.value === objectExpression &&\n containerParent.key?.type === \"Identifier\"\n ) {\n const keyName = containerParent.key.name\n if (keyName === \"inputs\" || keyName === \"outputs\") {\n return \"$addInputDescription\"\n }\n if (keyName === \"args\" || keyName === \"secrets\") {\n return \"$addArgumentDescription\"\n }\n\n return null\n }\n\n if (\n containerParent.type === \"CallExpression\" &&\n containerParent.callee.type === \"Identifier\" &&\n containerParent.arguments.length > 0 &&\n containerParent.arguments[0] === objectExpression\n ) {\n const calleeName = containerParent.callee.name\n if (calleeName === \"$inputs\" || calleeName === \"$outputs\") {\n return \"$addInputDescription\"\n }\n if (calleeName === \"$args\" || calleeName === \"$secrets\") {\n return \"$addArgumentDescription\"\n }\n }\n\n return null\n}\n\nfunction isZodObjectCall(memberExpression: Node): boolean {\n if (\n memberExpression.type !== \"MemberExpression\" ||\n !(\"object\" in memberExpression) ||\n !(\"property\" in memberExpression)\n ) {\n return false\n }\n\n const member = memberExpression as MemberExpression\n\n // handle direct z.object() calls\n if (\n member.object.type === \"Identifier\" &&\n \"name\" in member.object &&\n member.object.name === \"z\" &&\n member.property.type === \"Identifier\" &&\n member.property.name === \"object\"\n ) {\n return true\n }\n\n // handle chained calls like z.discriminatedUnion().default().object()\n // or any other chained Zod methods that end with .object()\n if (\n member.property.type === \"Identifier\" &&\n member.property.name === \"object\" &&\n member.object.type === \"CallExpression\" &&\n \"callee\" in member.object &&\n member.object.callee.type === \"MemberExpression\"\n ) {\n // recursively check if this is part of a z.* chain\n return startsWithZodCall(member.object)\n }\n\n return false\n}\n\nfunction startsWithZodCall(callExpression: CallExpression): boolean {\n if (!callExpression || callExpression.type !== \"CallExpression\") {\n return false\n }\n\n if (callExpression.callee.type === \"MemberExpression\") {\n const callee = callExpression.callee\n\n // check if this is a direct z.* call\n if (\n callee.object.type === \"Identifier\" &&\n \"name\" in callee.object &&\n callee.object.name === \"z\"\n ) {\n return true\n }\n\n // recursively check nested calls\n if (callee.object.type === \"CallExpression\") {\n return startsWithZodCall(callee.object)\n }\n }\n\n return false\n}\n","import { z } from \"zod\"\n\n/**\n * Schema for the sourceHash configuration in package.json\n */\nexport const sourceHashConfigSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"manual\"),\n version: z.string(),\n }),\n z.object({\n mode: z.literal(\"auto\"),\n }),\n z.object({\n mode: z.literal(\"version\"),\n }),\n z.object({\n mode: z.literal(\"none\"),\n }),\n])\n\n/**\n * Schema for the highstate configuration in package.json\n */\nexport const highstateConfigSchema = z.object({\n type: z.enum([\"source\", \"library\", \"worker\"]).default(\"source\"),\n sourceHash: z\n .union([sourceHashConfigSchema, z.record(z.string(), sourceHashConfigSchema)])\n .optional(),\n})\n\n/**\n * Schema for the highstate manifest file\n */\nexport const highstateManifestSchema = z.object({\n sourceHashes: z.record(z.string(), z.number()).optional(),\n})\n\nexport type SourceHashConfig = z.infer<typeof sourceHashConfigSchema>\nexport type HighstateConfig = z.infer<typeof highstateConfigSchema>\nexport type HighstateManifest = z.infer<typeof highstateManifestSchema>\n","import type { Services } from \"@highstate/backend\"\nimport { logger } from \"./logger\"\n\nlet services: Promise<Services> | undefined\nlet disposePromise: Promise<void> | undefined\n\nexport function getBackendServices(): Promise<Services> {\n if (services) {\n return services\n }\n\n services = import(\"@highstate/backend\").then(({ getSharedServices }) => {\n return getSharedServices({\n services: {\n logger: logger.child({}, { msgPrefix: \"[backend] \" }),\n },\n })\n })\n\n return services\n}\n\nexport function disposeServices(): Promise<void> {\n if (!services) {\n return Promise.resolve()\n }\n\n if (disposePromise) {\n return disposePromise\n }\n\n disposePromise = import(\"@highstate/backend\")\n //\n .then(({ disposeServices }) => services!.then(s => disposeServices(s)))\n\n return disposePromise\n}\n","import type { Logger } from \"pino\"\nimport { readFile, writeFile } from \"node:fs/promises\"\nimport { dirname, relative, resolve } from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { crc32 } from \"@aws-crypto/crc32\"\nimport { resolve as importMetaResolve } from \"import-meta-resolve\"\nimport { type PackageJson, readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { z } from \"zod\"\nimport {\n type HighstateConfig,\n type HighstateManifest,\n highstateConfigSchema,\n highstateManifestSchema,\n type SourceHashConfig,\n sourceHashConfigSchema,\n} from \"./schemas\"\nimport { int32ToBytes } from \"./utils\"\n\ntype FileDependency =\n | {\n type: \"relative\"\n id: string\n fullPath: string\n }\n | {\n type: \"npm\"\n id: string\n package: string\n }\n\nexport function parseFileDependencies(filePath: string, content: string): FileDependency[] {\n type DependencyMatch = {\n relativePath?: string\n nodeBuiltin?: string\n npmPackage?: string\n }\n\n const dependencyRegex =\n /^[ \\t]*import\\b[\\s\\S]*?\\bfrom\\s*[\"']((?<relativePath>\\.\\.?\\/[^\"']+)|(?<nodeBuiltin>node:[^\"']+)|(?<npmPackage>[^\"']+))[\"']/gm\n\n const matches = content.matchAll(dependencyRegex)\n const dependencies: FileDependency[] = []\n\n for (const match of matches) {\n const { nodeBuiltin, npmPackage, relativePath } = match.groups as DependencyMatch\n\n if (relativePath) {\n const fullPath = resolve(dirname(filePath), relativePath)\n\n dependencies.push({\n type: \"relative\",\n id: `relative:${fullPath}`,\n fullPath,\n })\n } else if (npmPackage) {\n dependencies.push({\n type: \"npm\",\n id: `npm:${npmPackage}`,\n package: npmPackage,\n })\n } else if (nodeBuiltin) {\n // ignore node built-in modules\n }\n }\n\n return dependencies\n}\n\nexport class SourceHashCalculator {\n private readonly dependencyHashes = new Map<string, Promise<number>>()\n private readonly fileHashes = new Map<string, Promise<number>>()\n\n constructor(\n private readonly packageJsonPath: string,\n private readonly packageJson: PackageJson,\n private readonly logger: Logger,\n ) {}\n\n /**\n * Calculates CRC32 hash of a string.\n */\n private hashString(input: string): number {\n return crc32(Buffer.from(input))\n }\n\n /**\n * Gets the highstate configuration from package.json with defaults.\n */\n private getHighstateConfig(packageJson: PackageJson): HighstateConfig {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const rawConfig = packageJson.highstate\n if (!rawConfig) {\n return { type: \"source\" }\n }\n\n try {\n return highstateConfigSchema.parse(rawConfig)\n } catch (error) {\n this.logger.warn(\n { error, packageName: packageJson.name },\n \"invalid highstate configuration, using defaults\",\n )\n return { type: \"source\" }\n }\n }\n\n /**\n * Gets the effective source hash configuration with defaults for a specific output.\n */\n private getSourceHashConfig(\n highstateConfig: HighstateConfig,\n exportKey?: string,\n ): SourceHashConfig {\n if (highstateConfig.sourceHash) {\n // Try to parse as a single config first\n const singleConfigResult = sourceHashConfigSchema.safeParse(highstateConfig.sourceHash)\n if (singleConfigResult.success) {\n return singleConfigResult.data\n }\n\n // Try to parse as a record of configs\n const recordConfigResult = z\n .record(z.string(), sourceHashConfigSchema)\n .safeParse(highstateConfig.sourceHash)\n if (recordConfigResult.success && exportKey) {\n const perOutputConfig = recordConfigResult.data[exportKey]\n if (perOutputConfig) {\n return perOutputConfig\n }\n }\n }\n\n if (highstateConfig.type === \"library\") {\n return { mode: \"none\" }\n }\n\n return { mode: \"auto\" }\n }\n\n async writeHighstateManifest(\n distBasePath: string,\n distPathToExportKey: Map<string, string>,\n ): Promise<void> {\n const highstateConfig = this.getHighstateConfig(this.packageJson)\n\n const promises: Promise<{ distPath: string; hash: number }>[] = []\n\n for (const [distPath, exportKey] of distPathToExportKey) {\n const fullPath = resolve(distPath)\n const sourceHashConfig = this.getSourceHashConfig(highstateConfig, exportKey)\n\n switch (sourceHashConfig.mode) {\n case \"manual\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: this.hashString(sourceHashConfig.version),\n }),\n )\n break\n case \"version\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: this.hashString(this.packageJson.version ?? \"\"),\n }),\n )\n break\n case \"none\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: 0,\n }),\n )\n break\n default:\n promises.push(\n this.getFileHash(fullPath).then(hash => ({\n distPath,\n hash,\n })),\n )\n break\n }\n }\n\n const manifest: HighstateManifest = {\n sourceHashes: {},\n }\n\n const hashes = await Promise.all(promises)\n for (const { distPath, hash } of hashes) {\n manifest.sourceHashes![distPath] = hash\n }\n\n const manifestPath = resolve(distBasePath, \"highstate.manifest.json\")\n await writeFile(manifestPath, JSON.stringify(manifest, null, 2), \"utf8\")\n }\n\n private async getFileHash(fullPath: string): Promise<number> {\n const existingHash = this.fileHashes.get(fullPath)\n if (existingHash) {\n return existingHash\n }\n\n const hash = this.calculateFileHash(fullPath)\n this.fileHashes.set(fullPath, hash)\n\n return hash\n }\n\n private async calculateFileHash(fullPath: string): Promise<number> {\n const content = await readFile(fullPath, \"utf8\")\n const fileDeps = parseFileDependencies(fullPath, content)\n\n const hashes = await Promise.all([\n this.hashString(content),\n ...fileDeps.map(dep => this.getDependencyHash(dep)),\n ])\n\n return crc32(Buffer.concat(hashes.map(int32ToBytes)))\n }\n\n getDependencyHash(dependency: FileDependency): Promise<number> {\n const existingHash = this.dependencyHashes.get(dependency.id)\n if (existingHash) {\n return existingHash\n }\n\n const hash = this.calculateDependencyHash(dependency)\n this.dependencyHashes.set(dependency.id, hash)\n\n return hash\n }\n\n private async calculateDependencyHash(dependency: FileDependency): Promise<number> {\n switch (dependency.type) {\n case \"relative\": {\n return await this.getFileHash(dependency.fullPath)\n }\n case \"npm\": {\n let resolvedUrl: string\n try {\n const baseUrl = pathToFileURL(this.packageJsonPath)\n\n resolvedUrl = importMetaResolve(dependency.package, baseUrl.toString())\n } catch (error) {\n this.logger.error(`failed to resolve package \"%s\"`, dependency.package)\n throw error\n }\n\n // TODO: does this really needed?\n // if (resolvedUrl.startsWith(\"node:\")) {\n // throw new Error(`\"${dependency.package}\" imported without \"node:\" prefix`)\n // }\n\n const resolvedPath = fileURLToPath(resolvedUrl)\n\n const [depPackageJsonPath, depPackageJson] = await this.getPackageJson(resolvedPath)\n const packageName = depPackageJson.name!\n\n this.logger.debug(\n `resolved package.json for \"%s\": \"%s\"`,\n dependency.package,\n depPackageJsonPath,\n )\n\n if (\n !this.packageJson.dependencies?.[packageName] &&\n !this.packageJson.peerDependencies?.[packageName]\n ) {\n this.logger.warn(`package \"%s\" is not listed in package.json dependencies`, packageName)\n }\n\n // try to get source hash from manifest first\n let relativePath = relative(dirname(depPackageJsonPath), resolvedPath)\n relativePath = relativePath.startsWith(\".\") ? relativePath : `./${relativePath}`\n\n const highstateManifestPath = resolve(\n dirname(depPackageJsonPath),\n \"dist\",\n \"highstate.manifest.json\",\n )\n\n let manifest: HighstateManifest | undefined\n try {\n const manifestContent = await readFile(highstateManifestPath, \"utf8\")\n manifest = highstateManifestSchema.parse(JSON.parse(manifestContent))\n } catch (error) {\n this.logger.debug(\n { error },\n `failed to read highstate manifest for package \"%s\"`,\n packageName,\n )\n }\n\n const sourceHash = manifest?.sourceHashes?.[relativePath]\n\n if (sourceHash) {\n this.logger.debug(`resolved source hash for package \"%s\"`, packageName)\n return sourceHash\n }\n\n // use the package version as a fallback hash\n // this case will be applied for most npm packages\n this.logger.debug(`using package version as a fallback hash for \"%s\"`, packageName)\n return this.hashString(depPackageJson.version ?? \"0.0.0\")\n }\n }\n }\n\n private async getPackageJson(basePath: string): Promise<[string, PackageJson]> {\n while (true) {\n const packageJson = await readPackageJSON(basePath)\n if (packageJson.name) {\n const packageJsonPath = await resolvePackageJSON(basePath)\n\n return [packageJsonPath, packageJson]\n }\n\n basePath = resolve(dirname(basePath), \"..\")\n }\n }\n}\n","import { fetchLatestVersion, fetchManifest, getDependencyRange } from \"./npm-registry\"\n\nexport type VersionBundle = {\n platformVersion: string\n stdlibVersion: string\n pulumiVersion: string\n}\n\nexport type ResolveVersionBundleArgs = {\n platformVersion?: string\n stdlibVersion?: string\n}\n\nconst platformSourcePackage = \"@highstate/pulumi\"\nconst stdlibSourcePackage = \"@highstate/library\"\n\nexport async function resolveVersionBundle(args: ResolveVersionBundleArgs): Promise<VersionBundle> {\n const platformVersion = normalizeProvidedVersion(args.platformVersion, \"platform\")\n const stdlibVersion = normalizeProvidedVersion(args.stdlibVersion, \"stdlib\")\n\n const resolvedPlatformVersion =\n platformVersion ?? (await fetchLatestVersion(platformSourcePackage))\n const resolvedStdlibVersion = stdlibVersion ?? (await fetchLatestVersion(stdlibSourcePackage))\n\n const platformManifest = await fetchManifest(platformSourcePackage, resolvedPlatformVersion)\n const inferredPulumi = getDependencyRange(platformManifest, \"@pulumi/pulumi\")\n if (!inferredPulumi) {\n throw new Error(\n `Unable to infer \"@pulumi/pulumi\" version from \"${platformSourcePackage}@${resolvedPlatformVersion}\"`,\n )\n }\n\n return {\n platformVersion: resolvedPlatformVersion,\n stdlibVersion: resolvedStdlibVersion,\n pulumiVersion: inferredPulumi,\n }\n}\n\nfunction normalizeProvidedVersion(value: string | undefined, label: string): string | undefined {\n if (value === undefined) {\n return undefined\n }\n\n const trimmed = value.trim()\n if (trimmed.length === 0) {\n throw new Error(`Version flag \"${label}\" must not be empty`)\n }\n\n return trimmed\n}\n","import { existsSync } from \"node:fs\"\nimport { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\"\nimport { join, relative, resolve } from \"node:path\"\nimport { z } from \"zod\"\nimport { highstateConfigSchema } from \"./schemas\"\n\n/**\n * Represents a Highstate package in the workspace\n */\nexport interface HighstatePackage {\n /** Absolute path to the package directory */\n path: string\n /** Relative path from workspace root */\n relativePath: string\n /** Package name from package.json */\n name: string\n /** Package type from highstate config */\n type?: \"source\" | \"library\" | \"worker\"\n}\n\n/**\n * Schema for package.json files\n */\nconst packageJsonSchema = z.object({\n name: z.string(),\n highstate: highstateConfigSchema.optional(),\n})\n\n/**\n * Generates tsconfig content with correct relative path based on package depth\n */\nfunction generateTsconfigContent(workspaceRoot: string, packagePath: string) {\n const relativePath = relative(workspaceRoot, packagePath)\n const depth = relativePath.split(\"/\").length\n const relativeNodeModules = `${\"../\".repeat(depth)}node_modules/@highstate/cli/assets/tsconfig.base.json`\n\n return {\n extends: relativeNodeModules,\n include: [\"./src/**/*.ts\", \"./package.json\", \"./assets/**/*.json\"],\n }\n}\n\n/**\n * Finds the workspace root by looking for package.json with workspaces\n */\nexport async function findWorkspaceRoot(startPath: string = process.cwd()): Promise<string> {\n let currentPath = resolve(startPath)\n\n while (currentPath !== \"/\") {\n const packageJsonPath = join(currentPath, \"package.json\")\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, \"utf-8\")\n const packageJson = JSON.parse(content) as { workspaces?: unknown }\n\n if (packageJson.workspaces) {\n return currentPath\n }\n } catch {\n // ignore invalid package.json files\n }\n }\n\n const parentPath = resolve(currentPath, \"..\")\n if (parentPath === currentPath) break\n currentPath = parentPath\n }\n\n throw new Error(\"Could not find workspace root (no package.json with workspaces found)\")\n}\n\n/**\n * Recursively scans for packages in the workspace\n */\nexport async function scanWorkspacePackages(workspaceRoot: string): Promise<HighstatePackage[]> {\n const packages: HighstatePackage[] = []\n const packagesDir = join(workspaceRoot, \"packages\")\n\n if (!existsSync(packagesDir)) {\n return packages\n }\n\n async function scanDirectory(dirPath: string, depth = 0): Promise<void> {\n // skip node_modules and hidden directories at any depth\n const dirName = relative(packagesDir, dirPath).split(\"/\").pop()\n if (dirName?.startsWith(\".\") || dirName === \"node_modules\") {\n return\n }\n\n const entries = await readdir(dirPath, { withFileTypes: true })\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue\n\n const entryPath = join(dirPath, entry.name)\n\n // skip node_modules and hidden directories\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") {\n continue\n }\n\n const packageJsonPath = join(entryPath, \"package.json\")\n\n // check if this directory has a package.json\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, \"utf-8\")\n const packageJson = packageJsonSchema.parse(JSON.parse(content))\n\n const relativePath = relative(workspaceRoot, entryPath)\n const type = packageJson.highstate?.type ?? \"source\"\n\n packages.push({\n path: entryPath,\n relativePath,\n name: packageJson.name,\n type,\n })\n } catch {\n // ignore directories with invalid package.json files\n }\n }\n\n // continue scanning subdirectories, but with limited depth to avoid deep node_modules\n if (depth < 3) {\n await scanDirectory(entryPath, depth + 1)\n }\n }\n }\n\n await scanDirectory(packagesDir)\n return packages.sort((a, b) => a.relativePath.localeCompare(b.relativePath))\n}\n\n/**\n * Updates the root tsconfig.json with package references\n */\nexport async function updateTsconfigReferences(\n workspaceRoot: string,\n packages: HighstatePackage[],\n ensureTsconfigs = false,\n): Promise<void> {\n const tsconfigPath = join(workspaceRoot, \"tsconfig.json\")\n\n // ensure all packages have valid tsconfig.json files\n if (ensureTsconfigs) {\n await ensurePackageTsconfigs(\n workspaceRoot,\n\n // only udate for Highstate-managed packages\n packages.filter(pkg => pkg.type !== undefined),\n )\n }\n\n // generate references array\n const references = packages.map(pkg => ({\n path: `./${pkg.relativePath}/tsconfig.json`,\n }))\n\n const tsconfigContent = {\n files: [],\n references,\n }\n\n // write the file with proper formatting\n await writeFile(tsconfigPath, `${JSON.stringify(tsconfigContent, null, 2)}\\n`, \"utf-8\")\n}\n\n/**\n * Ensures all packages have valid tsconfig.json files\n */\nasync function ensurePackageTsconfigs(\n workspaceRoot: string,\n packages: HighstatePackage[],\n): Promise<void> {\n for (const pkg of packages) {\n const tsconfigPath = join(pkg.path, \"tsconfig.json\")\n const tsconfigContent = generateTsconfigContent(workspaceRoot, pkg.path)\n\n await writeFile(tsconfigPath, `${JSON.stringify(tsconfigContent, null, 2)}\\n`, \"utf-8\")\n }\n}\n\n/**\n * Creates a new package of the specified type\n */\nexport async function createPackage(\n workspaceRoot: string,\n name: string,\n type: \"source\" | \"library\" | \"worker\",\n): Promise<HighstatePackage> {\n const packagePath = join(workspaceRoot, \"packages\", name)\n const srcPath = join(packagePath, \"src\")\n\n // create directories\n await mkdir(packagePath, { recursive: true })\n await mkdir(srcPath, { recursive: true })\n\n // create package.json\n const packageJson = {\n name: `@highstate/${name}`,\n version: \"0.0.1\",\n type: \"module\",\n highstate: {\n type,\n },\n }\n\n await writeFile(\n join(packagePath, \"package.json\"),\n `${JSON.stringify(packageJson, null, 2)}\\n`,\n \"utf-8\",\n )\n\n // create tsconfig.json\n const tsconfigContent = generateTsconfigContent(workspaceRoot, packagePath)\n await writeFile(\n join(packagePath, \"tsconfig.json\"),\n `${JSON.stringify(tsconfigContent, null, 2)}\\n`,\n \"utf-8\",\n )\n\n // create basic index.ts\n await writeFile(join(srcPath, \"index.ts\"), `// ${name} package\\n`, \"utf-8\")\n\n return {\n path: packagePath,\n relativePath: `packages/${name}`,\n name: `@highstate/${name}`,\n type,\n }\n}\n","import { hostname } from \"node:os\"\nimport { loadConfig } from \"@highstate/backend\"\nimport { identityToRecipient } from \"age-encryption\"\nimport { Command } from \"clipanion\"\nimport { logger } from \"../../shared\"\n\nexport class BackendIdentityCommand extends Command {\n static paths = [[\"backend\", \"identity\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Ensures the backend identity is set up and returns the recipient.\",\n })\n\n async execute(): Promise<void> {\n // do not initialize the backend services here, because the state might not be available yet\n const { getOrCreateBackendIdentity } = await import(\"@highstate/backend\")\n const config = await loadConfig()\n\n const backendIdentity = await getOrCreateBackendIdentity(config, logger)\n const recipient = await identityToRecipient(backendIdentity)\n\n logger.info(`stored backend identity: \"%s\"`, recipient)\n\n const suggestedTitle = hostname()\n\n if (!suggestedTitle) {\n logger.info(`run \"highstate backend unlock-method add %s\" on a trusted device`, recipient)\n return\n }\n\n logger.info(\n `run \"highstate backend unlock-method add %s --title %s\" on a trusted device`,\n recipient,\n suggestedTitle,\n )\n }\n}\n","import { input } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodAddCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"add\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Adds a new backend unlock method for the current workspace.\",\n examples: [[\"Add recipient\", \"highstate backend unlock-method add age1example --title Laptop\"]],\n })\n\n recipient = Option.String()\n title = Option.String(\"--title\")\n description = Option.String(\"--description\")\n\n async execute(): Promise<void> {\n let title = this.title\n if (!title) {\n title = await input({\n message: \"Unlock Method Title\",\n default: \"New Device\",\n validate: value => (value.trim().length > 0 ? true : \"Title is required\"),\n })\n }\n\n let description = this.description\n if (description === undefined) {\n description = await input({\n message: \"Description (optional)\",\n default: \"\",\n })\n }\n\n const services = await getBackendServices()\n\n try {\n const result = await services.backendUnlockService.addUnlockMethod({\n recipient: this.recipient,\n meta: description\n ? { title: title.trim(), description: description.trim() }\n : { title: title.trim() },\n })\n\n logger.info(`added backend unlock method \"%s\"`, result.id)\n } finally {\n await disposeServices()\n }\n\n // TODO: investigate why this is needed to properly exit\n process.exit(0)\n }\n}\n","import { confirm } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodDeleteCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"delete\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Removes a backend unlock method by its identifier.\",\n })\n\n id = Option.String()\n force = Option.Boolean(\"--force\", false)\n\n async execute(): Promise<void> {\n if (!this.force) {\n const answer = await confirm({\n message: `Delete backend unlock method ${this.id}?`,\n default: false,\n })\n\n if (!answer) {\n logger.info(\"cancelled backend unlock method deletion\")\n return\n }\n }\n\n const services = await getBackendServices()\n\n try {\n await services.backendUnlockService.deleteUnlockMethod(this.id)\n logger.info(`deleted backend unlock method \"%s\"`, this.id)\n } finally {\n await disposeServices()\n }\n\n process.exit(0)\n }\n}\n","import { Command } from \"clipanion\"\nimport { Table } from \"console-table-printer\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodListCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"list\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Lists backend unlock methods registered for the current workspace.\",\n })\n\n async execute(): Promise<void> {\n const services = await getBackendServices()\n\n try {\n const methods = await services.backendUnlockService.listUnlockMethods()\n\n if (methods.length === 0) {\n logger.warn(\"no backend unlock methods configured\")\n return\n }\n\n const table = new Table({\n columns: [\n { name: \"title\", title: \"Title\" },\n { name: \"id\", title: \"ID\" },\n { name: \"recipient\", title: \"Recipient\" },\n { name: \"description\", title: \"Description\", maxLen: 30 },\n ],\n defaultColumnOptions: {\n alignment: \"left\",\n },\n })\n\n table.addRows(\n methods.map(method => ({\n title: method.meta.title,\n id: method.id,\n recipient: method.recipient,\n description: method.meta.description ?? \"\",\n })),\n )\n\n table.printTable()\n } finally {\n await disposeServices()\n }\n\n process.exit(0)\n }\n}\n","import type { Plugin } from \"esbuild\"\nimport { writeFile } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { encode } from \"@msgpack/msgpack\"\nimport { Command, Option } from \"clipanion\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { mapValues } from \"remeda\"\nimport { build } from \"tsup\"\nimport {\n createBinTransformerPlugin,\n extractEntryPoints,\n highstateConfigSchema,\n logger,\n SourceHashCalculator,\n schemaTransformerPlugin,\n} from \"../shared\"\n\nexport class BuildCommand extends Command {\n static paths = [[\"build\"]]\n\n static usage = Command.Usage({\n category: \"Builder\",\n description: \"Builds the Highstate library or unit package.\",\n })\n\n watch = Option.Boolean(\"--watch\", false)\n library = Option.Boolean(\"--library\", false)\n silent = Option.Boolean(\"--silent\", true)\n noSourceHash = Option.Boolean(\"--no-source-hash\", false)\n\n async execute(): Promise<void> {\n const packageJson = await readPackageJSON()\n\n const highstateConfig = highstateConfigSchema.parse(packageJson.highstate ?? {})\n if (highstateConfig.type === \"library\") {\n this.library = true\n }\n\n if (highstateConfig.type === \"worker\") {\n this.noSourceHash = true\n }\n\n if (!packageJson.name) {\n throw new Error(\"package.json must have a name field\")\n }\n\n const entryPoints = extractEntryPoints(packageJson)\n\n if (Object.keys(entryPoints).length === 0) {\n return\n }\n\n const esbuildPlugins: Plugin[] = []\n\n const binSourceFilePaths = Object.values(entryPoints)\n .filter(value => value.isBin)\n .map(value => value.entryPoint.slice(2)) // remove \"./\"\n\n if (this.library) {\n esbuildPlugins.push(schemaTransformerPlugin)\n }\n\n if (binSourceFilePaths.length > 0) {\n esbuildPlugins.push(createBinTransformerPlugin(binSourceFilePaths))\n }\n\n await build({\n entry: mapValues(entryPoints, value => value.entryPoint),\n outDir: \"dist\",\n watch: this.watch,\n sourcemap: true,\n clean: true,\n format: \"esm\",\n target: \"es2024\",\n platform: \"node\",\n external: [\"@pulumi/pulumi\"],\n esbuildPlugins,\n treeshake: true,\n removeNodeProtocol: false,\n silent: this.silent || [\"warn\", \"error\", \"fatal\"].includes(logger.level),\n })\n\n const packageJsonPath = await resolvePackageJSON()\n const upToDatePackageJson = await readPackageJSON()\n\n if (!this.noSourceHash) {\n const sourceHashCalculator = new SourceHashCalculator(\n packageJsonPath,\n upToDatePackageJson,\n logger,\n )\n\n const distPathToExportKey = new Map<string, string>()\n for (const value of Object.values(entryPoints)) {\n distPathToExportKey.set(value.distPath, value.key)\n }\n\n await sourceHashCalculator.writeHighstateManifest(\"./dist\", distPathToExportKey)\n }\n\n // write the \"highstate.library.json\" file if the library flag is set\n if (this.library) {\n const { loadLibrary } = await import(\"../shared/library-loader.js\")\n const fullModulePaths = Object.values(entryPoints).map(value => resolve(value.distPath))\n\n logger.info(\"evaluating library components from modules: %s\", fullModulePaths.join(\", \"))\n\n const library = await loadLibrary(logger, fullModulePaths)\n const libraryPath = resolve(\"./dist\", \"highstate.library.msgpack\")\n\n await writeFile(libraryPath, encode(library), \"utf8\")\n }\n\n logger.info(\"build completed successfully\")\n }\n}\n","import { pathToFileURL } from \"node:url\"\nimport { Command, UsageError } from \"clipanion\"\nimport { consola } from \"consola\"\nimport { colorize } from \"consola/utils\"\nimport { getPort } from \"get-port-please\"\nimport { resolve as importMetaResolve } from \"import-meta-resolve\"\nimport { addDevDependency, detectPackageManager } from \"nypm\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport {\n getBackendServices,\n getProjectPulumiSdkVersion,\n getPulumiCliVersion,\n logger,\n} from \"../shared\"\n\nexport class DesignerCommand extends Command {\n static paths = [[\"designer\"]]\n\n static usage = Command.Usage({\n category: \"Designer\",\n description: \"Starts the Highstate designer in the current project.\",\n })\n\n async execute(): Promise<void> {\n const packageJsonPath = await resolvePackageJSON()\n const packageJsonUrl = pathToFileURL(packageJsonPath).toString()\n const packageJson = await readPackageJSON(packageJsonPath)\n\n if (!packageJson.devDependencies?.[\"@highstate/cli\"]) {\n throw new UsageError(\n \"This project is not a Highstate project.\\n@highstate/cli must be installed as a devDependency.\",\n )\n }\n\n if (!packageJson.devDependencies?.[\"@highstate/designer\"]) {\n logger.info(\"Installing @highstate/designer...\")\n\n await addDevDependency([\"@highstate/designer\", \"classic-level\"])\n }\n\n const projectRoot = process.cwd()\n const detected = await detectPackageManager(projectRoot)\n const packageManager = detected?.name\n\n if (packageManager === \"npm\" || packageManager === \"pnpm\" || packageManager === \"yarn\") {\n const expectedPulumiSdk = await getProjectPulumiSdkVersion(projectRoot, { packageManager })\n const actualPulumiCli = await getPulumiCliVersion(projectRoot)\n\n if (expectedPulumiSdk && actualPulumiCli && expectedPulumiSdk !== actualPulumiCli) {\n logger.warn(\n `pulumi version mismatch detected, this may cause incompatibilities\\nexpected \"%s\" (from overrides for \"@pulumi/pulumi\"), got \"%s\" (from \"pulumi version\")\\nrecommended: run \"highstate update\" or downgrade your Pulumi CLI to \"%s\"`,\n expectedPulumiSdk,\n actualPulumiCli,\n expectedPulumiSdk,\n )\n }\n }\n\n logger.info(\"starting highstate designer...\")\n\n await getBackendServices()\n\n const oldConsoleLog = console.log\n\n const port = await getPort({ port: 3000 })\n const eventsPort = await getPort({ port: 3001 })\n\n const designerPackageJsonPath = importMetaResolve(\n \"@highstate/designer/package.json\",\n packageJsonUrl,\n )\n const designerPackageJson = await readPackageJSON(designerPackageJsonPath)\n\n process.env.NITRO_PORT = port.toString()\n process.env.NITRO_HOST = \"0.0.0.0\"\n process.env.NUXT_PUBLIC_VERSION = designerPackageJson.version\n process.env.NUXT_PUBLIC_EVENTS_PORT = eventsPort.toString()\n\n await new Promise<void>(resolve => {\n console.log = (message: string) => {\n if (message.startsWith(\"Listening on\")) {\n resolve()\n }\n }\n\n const serverPath = importMetaResolve(\"@highstate/designer/server\", packageJsonUrl)\n void import(serverPath)\n })\n\n console.log = oldConsoleLog\n\n consola.log(\n [\n \"\\n \",\n colorize(\"bold\", colorize(\"cyanBright\", \"Highstate Designer\")),\n \"\\n \",\n colorize(\"greenBright\", \"➜ Local: \"),\n colorize(\"underline\", colorize(\"cyanBright\", `http://localhost:${port}`)),\n \"\\n\",\n ].join(\"\"),\n )\n\n process.on(\"SIGINT\", () => {\n process.stdout.write(\"\\r\")\n consola.info(\"shutting down highstate designer...\")\n\n setTimeout(() => process.exit(0), 1000)\n })\n }\n}\n","import type { PackageManagerName } from \"nypm\"\nimport { access, mkdir, readdir } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { input, select } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { installDependencies } from \"nypm\"\nimport {\n applyOverrides,\n buildOverrides,\n generateFromTemplate,\n logger,\n resolveVersionBundle,\n} from \"../shared\"\n\nexport class InitCommand extends Command {\n static paths = [[\"init\"]]\n\n static usage = Command.Usage({\n description: \"Initializes a new Highstate project.\",\n })\n\n pathOption = Option.String(\"--path,-p\", {\n description: \"The path where the project should be initialized.\",\n })\n\n packageManager = Option.String(\"--package-manager\", {\n description: \"The package manager to use (npm, yarn, pnpm).\",\n })\n\n name = Option.String(\"--name\", {\n description: \"The project name.\",\n })\n\n platformVersion = Option.String(\"--platform-version\", {\n description: \"The Highstate platform version to use.\",\n })\n\n stdlibVersion = Option.String(\"--stdlib-version\", {\n description: \"The Highstate standard library version to use.\",\n })\n\n async execute(): Promise<void> {\n const availablePackageManagers = await detectAvailablePackageManagers([\"npm\", \"pnpm\", \"yarn\"])\n if (availablePackageManagers.length === 0) {\n throw new Error('No supported package managers found in PATH (\"npm\", \"pnpm\", \"yarn\")')\n }\n\n const projectName = await resolveProjectName(this.name)\n const destinationPath = await resolveDestinationPath(this.pathOption, projectName)\n\n const selectedPackageManager = await resolvePackageManager(\n this.packageManager,\n availablePackageManagers,\n )\n\n const templatePath = resolveTemplatePath()\n\n const versionBundle = await resolveVersionBundle({\n platformVersion: this.platformVersion,\n stdlibVersion: this.stdlibVersion,\n })\n\n await mkdir(destinationPath, { recursive: true })\n\n const isEmptyOrMissing = await isEmptyDirectory(destinationPath)\n if (!isEmptyOrMissing) {\n throw new Error(`Destination path is not empty: \"${destinationPath}\"`)\n }\n\n logger.info(\"initializing highstate project in %s\", destinationPath)\n\n await generateFromTemplate(templatePath, destinationPath, {\n projectName,\n packageName: projectName,\n platformVersion: versionBundle.platformVersion,\n libraryVersion: versionBundle.stdlibVersion,\n isPnpm: selectedPackageManager === \"pnpm\" ? \"true\" : \"\",\n isYarn: selectedPackageManager === \"yarn\" ? \"true\" : \"\",\n isNpm: selectedPackageManager === \"npm\" ? \"true\" : \"\",\n })\n\n const overrides = buildOverrides(versionBundle)\n await applyOverrides({\n projectRoot: destinationPath,\n packageManager: selectedPackageManager,\n overrides,\n })\n\n logger.info(\"installing dependencies using %s...\", selectedPackageManager)\n\n await installDependencies({\n cwd: destinationPath,\n packageManager: selectedPackageManager,\n silent: false,\n })\n\n logger.info(\"project initialized successfully\")\n }\n}\n\nasync function resolveDestinationPath(\n pathOption: string | undefined,\n projectName: string,\n): Promise<string> {\n if (pathOption) {\n return resolve(pathOption)\n }\n\n const defaultPath = resolve(process.cwd(), projectName)\n\n const pathValue = await input({\n message: \"Project path\",\n default: defaultPath,\n validate: value => (value.trim().length > 0 ? true : \"Path is required\"),\n })\n\n return resolve(pathValue)\n}\n\nasync function resolveProjectName(nameOption: string | undefined): Promise<string> {\n if (nameOption !== undefined) {\n const trimmed = nameOption.trim()\n if (trimmed.length === 0) {\n throw new Error('Flag \"--name\" must not be empty')\n }\n\n return trimmed\n }\n\n const value = await input({\n message: \"Project name\",\n default: \"my-project\",\n validate: inputValue => (inputValue.trim().length > 0 ? true : \"Name is required\"),\n })\n\n return value.trim()\n}\n\nasync function resolvePackageManager(\n packageManagerOption: string | undefined,\n available: PackageManagerName[],\n): Promise<PackageManagerName> {\n if (packageManagerOption) {\n if (!isSupportedPackageManagerName(packageManagerOption)) {\n throw new Error(`Unsupported package manager: \"${packageManagerOption}\"`)\n }\n\n const name = packageManagerOption\n if (!available.includes(name)) {\n throw new Error(`Package manager not found in PATH: \"${name}\"`)\n }\n\n return name\n }\n\n const preferredOrder: PackageManagerName[] = [\"pnpm\", \"yarn\", \"npm\"]\n const defaultValue = preferredOrder.find(value => available.includes(value)) ?? available[0]\n\n return await select({\n message: \"Package manager\",\n default: defaultValue,\n choices: available.map(value => ({ name: value, value })),\n })\n}\n\nfunction isSupportedPackageManagerName(value: string): value is PackageManagerName {\n return value === \"npm\" || value === \"pnpm\" || value === \"yarn\"\n}\n\nasync function detectAvailablePackageManagers(\n candidates: PackageManagerName[],\n): Promise<PackageManagerName[]> {\n const results: PackageManagerName[] = []\n\n for (const candidate of candidates) {\n const exists = await isExecutableInPath(candidate)\n if (exists) {\n results.push(candidate)\n }\n }\n\n return results\n}\n\nasync function isExecutableInPath(command: string): Promise<boolean> {\n const pathValue = process.env.PATH\n if (!pathValue) {\n return false\n }\n\n const parts = pathValue.split(\":\").filter(Boolean)\n for (const part of parts) {\n const candidate = resolve(part, command)\n try {\n await access(candidate)\n return true\n } catch {\n // ignore\n }\n }\n\n return false\n}\n\nasync function isEmptyDirectory(path: string): Promise<boolean> {\n try {\n const entries = await readdir(path)\n return entries.length === 0\n } catch {\n return true\n }\n}\n\nfunction resolveTemplatePath(): string {\n const here = fileURLToPath(new URL(import.meta.url))\n return resolve(here, \"..\", \"..\", \"assets\", \"template\")\n}\n","import { Command, Option } from \"clipanion\"\nimport {\n createPackage,\n findWorkspaceRoot,\n highstateConfigSchema,\n logger,\n scanWorkspacePackages,\n updateTsconfigReferences,\n} from \"../../shared\"\n\nexport class PackageCreateCommand extends Command {\n static paths = [[\"package\", \"create\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Creates a new package in the workspace.\",\n })\n\n name = Option.String({ required: true })\n type = Option.String(\"--type,-t\", {\n description: \"Package type (source, library, worker)\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packageType = highstateConfigSchema.shape.type.parse(this.type)\n\n await createPackage(workspaceRoot, this.name, packageType)\n\n // update tsconfig references\n const packages = await scanWorkspacePackages(workspaceRoot)\n await updateTsconfigReferences(workspaceRoot, packages)\n\n logger.info(`created package: @highstate/${this.name} (${packageType})`)\n }\n}\n","import { Command } from \"clipanion\"\nimport { Table } from \"console-table-printer\"\nimport { findWorkspaceRoot, logger, scanWorkspacePackages } from \"../../shared\"\n\nexport class PackageListCommand extends Command {\n static paths = [[\"package\", \"list\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Lists all packages in the workspace with their types.\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n if (packages.length === 0) {\n logger.info(\"no packages found in workspace\")\n return\n }\n\n const table = new Table({\n columns: [\n { name: \"name\", title: \"Name\" },\n { name: \"type\", title: \"Type\" },\n { name: \"path\", title: \"Path\" },\n ],\n })\n\n table.addRows(\n packages.map(pkg => ({\n name: pkg.name,\n type: pkg.type ?? \"unknown\",\n path: pkg.relativePath,\n })),\n )\n\n table.printTable()\n }\n}\n","import { rm } from \"node:fs/promises\"\nimport { Command, Option } from \"clipanion\"\nimport {\n findWorkspaceRoot,\n logger,\n scanWorkspacePackages,\n updateTsconfigReferences,\n} from \"../../shared\"\n\nexport class PackageRemoveCommand extends Command {\n static paths = [[\"package\", \"remove\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Removes a package from the workspace.\",\n })\n\n name = Option.String({ required: true })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n const targetPackage = packages.find(\n pkg =>\n pkg.name === this.name ||\n pkg.name === `@highstate/${this.name}` ||\n pkg.relativePath.endsWith(this.name),\n )\n\n if (!targetPackage) {\n logger.error(`package not found: ${this.name}`)\n process.exit(1)\n }\n\n // remove the package directory\n await rm(targetPackage.path, { recursive: true, force: true })\n\n // update tsconfig references\n const remainingPackages = await scanWorkspacePackages(workspaceRoot)\n await updateTsconfigReferences(workspaceRoot, remainingPackages)\n\n logger.info(`removed package: ${targetPackage.name}`)\n }\n}\n","import { Command } from \"clipanion\"\nimport { findWorkspaceRoot, scanWorkspacePackages, updateTsconfigReferences } from \"../../shared\"\n\nexport class PackageUpdateReferencesCommand extends Command {\n static paths = [[\"package\", \"update-references\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Updates the root tsconfig.json with references to all packages in the workspace.\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n await updateTsconfigReferences(workspaceRoot, packages, true)\n }\n}\n","import { readFile } from \"node:fs/promises\"\nimport { Command, Option } from \"clipanion\"\nimport { detectPackageManager } from \"nypm\"\nimport semver from \"semver\"\nimport {\n applyOverrides,\n buildOverrides,\n fetchManifest,\n getDependencyRange,\n getProjectPlatformVersion,\n logger,\n resolveVersionBundle,\n} from \"../shared\"\n\nexport class UpdateCommand extends Command {\n static paths = [[\"update\"]]\n\n static usage = Command.Usage({\n description: \"Updates version overrides in an existing Highstate project.\",\n })\n\n platformVersion = Option.String(\"--platform-version\", {\n description: \"The Highstate platform version to set.\",\n })\n\n stdlibVersion = Option.String(\"--stdlib-version\", {\n description: \"The Highstate standard library version to set.\",\n })\n\n platformOnly = Option.Boolean(\"--platform\", false, {\n description: \"Update only platform versions.\",\n })\n\n stdlibOnly = Option.Boolean(\"--stdlib\", false, {\n description: \"Update only standard library versions.\",\n })\n\n install = Option.Boolean(\"--install\", true, {\n description: \"Install dependencies after updating overrides.\",\n })\n\n async execute(): Promise<void> {\n const projectRoot = process.cwd()\n\n const packageManager = await resolveProjectPackageManager(projectRoot)\n\n if (this.platformOnly && this.stdlibOnly) {\n throw new Error('Flags \"--platform\" and \"--stdlib\" cannot be used together')\n }\n\n const updatePlatform = this.platformOnly || !this.stdlibOnly\n const updateStdlib = this.stdlibOnly || !this.platformOnly\n\n if (this.stdlibOnly) {\n const currentPlatformVersion = await getProjectPlatformVersion(projectRoot, {\n packageManager,\n })\n if (!currentPlatformVersion) {\n throw new Error('Current platform version is not set in overrides for \"@highstate/pulumi\"')\n }\n\n const targetStdlibVersion = (this.stdlibVersion ?? \"\").trim()\n if (targetStdlibVersion.length === 0) {\n throw new Error('Flag \"--stdlib-version\" must be provided when using \"--stdlib\"')\n }\n\n const stdlibManifest = await fetchManifest(\"@highstate/library\", targetStdlibVersion)\n const supportedPlatformRange = getDependencyRange(stdlibManifest, \"@highstate/pulumi\")\n if (!supportedPlatformRange) {\n throw new Error(\n `Unable to infer \"@highstate/pulumi\" version from \"@highstate/library@${targetStdlibVersion}\"`,\n )\n }\n\n const validPlatform = semver.valid(currentPlatformVersion)\n if (!validPlatform) {\n throw new Error(\n `Current platform version is not a valid semver \"${currentPlatformVersion}\"`,\n )\n }\n\n const ok = semver.satisfies(validPlatform, supportedPlatformRange, {\n includePrerelease: true,\n })\n if (!ok) {\n throw new Error(\n `Current platform version \"${currentPlatformVersion}\" does not satisfy requirement \"${supportedPlatformRange}\"`,\n )\n }\n }\n\n const bundle = await resolveVersionBundle({\n platformVersion: updatePlatform ? this.platformVersion : undefined,\n stdlibVersion: updateStdlib ? this.stdlibVersion : undefined,\n })\n\n const overrides = buildOverrides(bundle)\n await applyOverrides({\n projectRoot,\n packageManager,\n overrides,\n })\n\n logger.info(\n \"updated overrides: platform=%s stdlib=%s pulumi=%s\",\n bundle.platformVersion,\n bundle.stdlibVersion,\n bundle.pulumiVersion,\n )\n\n if (this.install) {\n const { installDependencies } = await import(\"nypm\")\n\n logger.info(\"installing dependencies using %s...\", packageManager)\n\n await installDependencies({\n cwd: projectRoot,\n packageManager,\n silent: false,\n })\n }\n\n logger.info(\"update completed successfully\")\n }\n}\n\nasync function resolveProjectPackageManager(projectRoot: string) {\n const detected = await detectPackageManager(projectRoot)\n if (!detected?.name) {\n throw new Error(\"Unable to detect package manager for this project\")\n }\n\n if (detected.name === \"bun\") {\n throw new Error('Package manager \"bun\" is not supported')\n }\n\n if (detected.name === \"deno\") {\n throw new Error('Package manager \"deno\" is not supported')\n }\n\n if (detected.name !== \"npm\" && detected.name !== \"pnpm\" && detected.name !== \"yarn\") {\n throw new Error(`Unsupported package manager: \"${detected.name}\"`)\n }\n\n await assertPackageJsonExists(projectRoot)\n\n return detected.name\n}\n\nasync function assertPackageJsonExists(projectRoot: string): Promise<void> {\n try {\n await readFile(`${projectRoot}/package.json`, \"utf8\")\n } catch {\n throw new Error(`File \"package.json\" not found in \"${projectRoot}\"`)\n }\n}\n"]}
|
package/dist/commands/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { BackendIdentityCommand, BackendUnlockMethodAddCommand, BackendUnlockMethodDeleteCommand, BackendUnlockMethodListCommand, BuildCommand, DesignerCommand, InitCommand, PackageCreateCommand, PackageListCommand, PackageRemoveCommand, PackageUpdateReferencesCommand, UpdateCommand } from '../chunk-
|
|
1
|
+
export { BackendIdentityCommand, BackendUnlockMethodAddCommand, BackendUnlockMethodDeleteCommand, BackendUnlockMethodListCommand, BuildCommand, DesignerCommand, InitCommand, PackageCreateCommand, PackageListCommand, PackageRemoveCommand, PackageUpdateReferencesCommand, UpdateCommand } from '../chunk-6X5WTUTR.js';
|
|
2
2
|
import '../chunk-CMECLVT7.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { BuildCommand, DesignerCommand, InitCommand, UpdateCommand, BackendIdentityCommand, BackendUnlockMethodListCommand, BackendUnlockMethodAddCommand, BackendUnlockMethodDeleteCommand, PackageUpdateReferencesCommand, PackageListCommand, PackageCreateCommand, PackageRemoveCommand } from './chunk-
|
|
2
|
+
import { BuildCommand, DesignerCommand, InitCommand, UpdateCommand, BackendIdentityCommand, BackendUnlockMethodListCommand, BackendUnlockMethodAddCommand, BackendUnlockMethodDeleteCommand, PackageUpdateReferencesCommand, PackageListCommand, PackageCreateCommand, PackageRemoveCommand } from './chunk-6X5WTUTR.js';
|
|
3
3
|
import './chunk-CMECLVT7.js';
|
|
4
4
|
import { Cli, Builtins } from 'clipanion';
|
|
5
5
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@highstate/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "The CLI for the Highstate project.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"tsup": "^8.4.0",
|
|
51
51
|
"yaml": "^2.8.2",
|
|
52
52
|
"zod": "^4.0.5",
|
|
53
|
-
"@highstate/backend": "0.
|
|
54
|
-
"@highstate/contract": "0.
|
|
53
|
+
"@highstate/backend": "0.19.1",
|
|
54
|
+
"@highstate/contract": "0.19.1"
|
|
55
55
|
},
|
|
56
56
|
"peerDependenciesMeta": {
|
|
57
57
|
"@pulumi/pulumi": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/logger.ts","../src/shared/bin-transformer.ts","../src/shared/entry-points.ts","../src/shared/generator.ts","../src/shared/npm-registry.ts","../src/shared/package-json.ts","../src/shared/pnpm-workspace.ts","../src/shared/version-sets.ts","../src/shared/overrides.ts","../src/shared/project-versions.ts","../src/shared/pulumi-cli.ts","../src/shared/schema-transformer.ts","../src/shared/schemas.ts","../src/shared/services.ts","../src/shared/source-hash-calculator.ts","../src/shared/version-bundle.ts","../src/shared/workspace.ts","../src/commands/backend/identity.ts","../src/commands/backend/unlock-method/add.ts","../src/commands/backend/unlock-method/delete.ts","../src/commands/backend/unlock-method/list.ts","../src/commands/build.ts","../src/commands/designer.ts","../src/commands/init.ts","../src/commands/package/create.ts","../src/commands/package/list.ts","../src/commands/package/remove.ts","../src/commands/package/update-references.ts","../src/commands/update.ts"],"names":["build","readFile","writeFile","resolve","resolvePackageJSON","disposeServices","dirname","logger","input","z","importMetaResolve","relative","readPackageJSON","join","readdir","mkdir","Command","services","Option","pathToFileURL","consola","access","fileURLToPath","Table","installDependencies","detectPackageManager"],"mappings":"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","file":"chunk-SA46IMPG.js","sourcesContent":["import { PassThrough } from \"node:stream\"\nimport { consola, LogLevels } from \"consola\"\nimport pino, { levels } from \"pino\"\n\nexport const logger = pino(\n {\n name: \"highstate-cli\",\n level: process.env.LOG_LEVEL ?? \"info\",\n },\n createConsolaStream(),\n)\n\nconsola.level = LogLevels[(process.env.LOG_LEVEL as keyof typeof LogLevels) ?? \"info\"]\n\nfunction createConsolaStream() {\n const stream = new PassThrough()\n\n stream.on(\"data\", data => {\n const { level, msg, error } = JSON.parse(String(data)) as {\n msg: string\n level: number\n error?: unknown\n }\n\n const levelLabel = levels.labels[level]\n\n switch (levelLabel) {\n case \"info\":\n consola.info(msg)\n break\n case \"warn\":\n consola.warn(msg)\n break\n case \"error\":\n if (error) {\n consola.error(msg, error)\n } else {\n consola.error(msg)\n }\n break\n case \"debug\":\n consola.debug(msg)\n break\n case \"fatal\":\n consola.fatal(msg)\n break\n case \"trace\":\n consola.trace(msg)\n break\n }\n })\n\n return stream\n}\n","import type { Plugin } from \"esbuild\"\nimport { readFile } from \"node:fs/promises\"\nimport { logger } from \"./logger\"\n\nexport function createBinTransformerPlugin(sourceFilePaths: string[]): Plugin {\n const filter = new RegExp(`(${sourceFilePaths.join(\"|\")})$`)\n\n logger.debug(\"created bin transformer plugin with filter: %s\", filter)\n\n return {\n name: \"bin-transformer\",\n setup(build) {\n build.onLoad({ filter }, async args => {\n const content = await readFile(args.path, \"utf-8\")\n\n return {\n contents: `#!/usr/bin/env node\\n\\n${content}`,\n loader: \"ts\",\n }\n })\n },\n }\n}\n","import type { PackageJson } from \"pkg-types\"\nimport { logger } from \"./logger\"\n\nexport interface EntryPoint {\n targetName: string\n entryPoint: string\n distPath: string\n isBin: boolean\n key: string\n}\n\n/**\n * Extracts entry points from package.json exports and bin fields\n */\nexport function extractEntryPoints(packageJson: PackageJson): Record<string, EntryPoint> {\n const exports = packageJson.exports\n let bin = packageJson.bin\n\n if (!exports && !bin) {\n logger.warn(\"no exports or bin found in package.json\")\n return {}\n }\n\n if (exports !== undefined && (typeof exports !== \"object\" || Array.isArray(exports))) {\n throw new Error(\"Exports field in package.json must be an object\")\n }\n\n if (bin !== undefined && typeof bin !== \"object\") {\n if (!packageJson.name) {\n throw new Error(\"Package name is required when bin is a string\")\n }\n bin = { [packageJson.name]: bin as string }\n }\n\n const result: Record<string, EntryPoint> = {}\n\n // process exports entries\n if (exports) {\n for (const [key, value] of Object.entries(exports)) {\n let distPath: string\n\n if (typeof value === \"string\") {\n distPath = value\n } else if (typeof value === \"object\" && !Array.isArray(value)) {\n if (!value.default) {\n throw new Error(`Export \"${key}\" must have a default field in package.json`)\n }\n\n if (typeof value.default !== \"string\") {\n throw new Error(`Export \"${key}\" default field must be a string in package.json`)\n }\n\n distPath = value.default\n } else {\n throw new Error(`Export \"${key}\" must be a string or an object in package.json`)\n }\n\n const isJsonExport = distPath.endsWith(\".json\")\n const isJsExport = distPath.endsWith(\".js\")\n\n if (!isJsonExport && !isJsExport) {\n throw new Error(\n `The default value of export \"${key}\" must end with \".js\" or \".json\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (isJsExport && !distPath.startsWith(\"./dist/\")) {\n throw new Error(\n `The default value of export \"${key}\" must start with \"./dist/\" when exporting \".js\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (isJsonExport) {\n continue\n }\n\n const targetName = distPath.slice(7).slice(0, -3)\n\n result[targetName] = {\n entryPoint: `./src/${targetName}.ts`,\n targetName,\n distPath,\n isBin: false,\n key,\n }\n }\n }\n\n // process bin entries\n if (bin) {\n for (const [key, value] of Object.entries(bin)) {\n if (typeof value !== \"string\") {\n throw new Error(`Bin entry \"${key}\" must be a string in package.json`)\n }\n\n const distPath = value\n\n if (!distPath.startsWith(\"./dist/\")) {\n throw new Error(\n `The value of bin entry \"${key}\" must start with \"./dist/\" in package.json, got \"${distPath}\"`,\n )\n }\n\n if (!distPath.endsWith(\".js\")) {\n throw new Error(\n `The value of bin entry \"${key}\" must end with \".js\" in package.json, got \"${distPath}\"`,\n )\n }\n\n const targetName = distPath.slice(7).slice(0, -3)\n\n result[targetName] = {\n entryPoint: `./src/${targetName}.ts`,\n targetName,\n distPath,\n isBin: true,\n key,\n }\n }\n }\n\n return result\n}\n","import { mkdir, readdir, readFile, stat, writeFile } from \"node:fs/promises\"\nimport { dirname, join, relative, resolve } from \"node:path\"\nimport Handlebars from \"handlebars\"\n\n/**\n * Copies all files from a template path to a destination path, replacing\n * variables in the format {{variableName}} with their corresponding values\n * and removing `.tpl` segments from file names.\n *\n * For example, `package.tpl.json` becomes `package.json` and `config.tpl` becomes `config`.\n *\n * @param templatePath The absolute path to the template directory.\n * @param destinationPath The absolute path to the destination directory.\n * @param variables The record of variable names and their replacement values.\n */\nexport async function generateFromTemplate(\n templatePath: string,\n destinationPath: string,\n variables: Record<string, string>,\n): Promise<void> {\n const resolvedTemplatePath = resolve(templatePath)\n const resolvedDestinationPath = resolve(destinationPath)\n\n const templateStats = await stat(resolvedTemplatePath)\n if (!templateStats.isDirectory()) {\n throw new Error(`templatePath must be a directory: ${resolvedTemplatePath}`)\n }\n\n await mkdir(resolvedDestinationPath, { recursive: true })\n\n const renderTemplate = (raw: string): string => {\n const template = Handlebars.compile(raw, {\n strict: true,\n noEscape: true,\n })\n\n return template(variables)\n }\n\n const visit = async (absoluteSourcePath: string): Promise<void> => {\n const sourceStats = await stat(absoluteSourcePath)\n if (sourceStats.isDirectory()) {\n const relativePath = relative(resolvedTemplatePath, absoluteSourcePath)\n const destinationDirPath = join(resolvedDestinationPath, relativePath)\n\n await mkdir(destinationDirPath, { recursive: true })\n\n const entries = await readdir(absoluteSourcePath, { withFileTypes: true })\n for (const entry of entries) {\n await visit(join(absoluteSourcePath, entry.name))\n }\n\n return\n }\n\n if (!sourceStats.isFile()) {\n return\n }\n\n const relativeFilePath = relative(resolvedTemplatePath, absoluteSourcePath)\n const destinationRelativePath = relativeFilePath.replaceAll(\".tpl\", \"\")\n const destinationFilePath = join(resolvedDestinationPath, destinationRelativePath)\n\n await mkdir(dirname(destinationFilePath), { recursive: true })\n\n const contents = await readFile(absoluteSourcePath, \"utf8\")\n const rendered = renderTemplate(contents)\n if (rendered.trim().length === 0) {\n return\n }\n\n await writeFile(destinationFilePath, rendered, \"utf8\")\n }\n\n await visit(resolvedTemplatePath)\n}\n","export type NpmRegistryManifest = {\n name?: string\n version?: string\n peerDependencies?: Record<string, string>\n dependencies?: Record<string, string>\n optionalDependencies?: Record<string, string>\n}\n\nexport type NpmRegistryPackument = {\n \"dist-tags\"?: {\n latest?: string\n }\n versions?: Record<string, NpmRegistryManifest>\n}\n\nexport async function fetchNpmPackument(packageName: string): Promise<NpmRegistryPackument> {\n const encoded = encodeURIComponent(packageName)\n const url = `https://registry.npmjs.org/${encoded}`\n\n const response = await fetch(url)\n if (!response.ok) {\n throw new Error(\n `Failed to fetch package \"${packageName}\" from NPM registry (HTTP ${response.status})`,\n )\n }\n\n return (await response.json()) as NpmRegistryPackument\n}\n\nexport async function fetchLatestVersion(packageName: string): Promise<string> {\n const packument = await fetchNpmPackument(packageName)\n const latest = packument[\"dist-tags\"]?.latest\n if (!latest) {\n throw new Error(\n `NPM registry response for package \"${packageName}\" does not include \"dist-tags.latest\"`,\n )\n }\n\n return latest\n}\n\nexport async function fetchManifest(\n packageName: string,\n version: string,\n): Promise<NpmRegistryManifest> {\n const packument = await fetchNpmPackument(packageName)\n const manifest = packument.versions?.[version]\n if (!manifest) {\n throw new Error(\n `NPM registry response for package \"${packageName}\" does not include version \"${version}\"`,\n )\n }\n\n return manifest\n}\n\nexport function getDependencyRange(\n manifest: NpmRegistryManifest,\n dependencyName: string,\n): string | null {\n return (\n manifest.peerDependencies?.[dependencyName] ??\n manifest.dependencies?.[dependencyName] ??\n manifest.optionalDependencies?.[dependencyName] ??\n null\n )\n}\n","import { writeFile } from \"node:fs/promises\"\n\nexport async function writeJsonFile(filePath: string, value: unknown): Promise<void> {\n const contents = `${JSON.stringify(value, null, 2)}\\n`\n await writeFile(filePath, contents, \"utf8\")\n}\n","import { readFile, writeFile } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { parse, stringify } from \"yaml\"\n\nexport type PnpmWorkspace = {\n packages?: string[]\n overrides?: Record<string, string>\n}\n\nexport function resolvePnpmWorkspacePath(projectRoot: string): string {\n return resolve(projectRoot, \"pnpm-workspace.yaml\")\n}\n\nexport async function readPnpmWorkspace(filePath: string): Promise<PnpmWorkspace> {\n const raw = await readFile(filePath, \"utf8\")\n const parsed = parse(raw)\n\n if (typeof parsed !== \"object\" || parsed === null) {\n return {}\n }\n\n return parsed as PnpmWorkspace\n}\n\nexport async function writePnpmWorkspace(\n filePath: string,\n workspace: PnpmWorkspace,\n): Promise<void> {\n const raw = stringify(workspace)\n\n await writeFile(filePath, raw, \"utf8\")\n}\n","export const PLATFORM_PACKAGES = [\n \"@highstate/api\",\n \"@highstate/backend\",\n \"@highstate/backend-api\",\n \"@highstate/cli\",\n \"@highstate/contract\",\n \"@highstate/designer\",\n \"@highstate/pulumi\",\n \"@highstate/worker-sdk\",\n]\n\nexport const STDLIB_PACKAGES = [\n \"@highstate/cilium\",\n \"@highstate/cloudflare\",\n \"@highstate/common\",\n \"@highstate/distributions\",\n \"@highstate/git\",\n \"@highstate/k3s\",\n \"@highstate/k8s\",\n \"@highstate/k8s.apps\",\n \"@highstate/k8s.game-servers\",\n \"@highstate/k8s.monitor-worker\",\n \"@highstate/k8s.obfuscators\",\n \"@highstate/library\",\n \"@highstate/mullvad\",\n \"@highstate/nixos\",\n \"@highstate/proxmox\",\n \"@highstate/restic\",\n \"@highstate/sops\",\n \"@highstate/talos\",\n \"@highstate/timeweb\",\n \"@highstate/wireguard\",\n \"@highstate/yandex\",\n]\n\nexport const PULUMI_PACKAGES = [\"@pulumi/pulumi\"]\n","import type { PackageManagerName } from \"nypm\"\nimport type { VersionBundle } from \"./version-bundle\"\nimport { access } from \"node:fs/promises\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { writeJsonFile } from \"./package-json\"\nimport { readPnpmWorkspace, resolvePnpmWorkspacePath, writePnpmWorkspace } from \"./pnpm-workspace\"\nimport { PLATFORM_PACKAGES, PULUMI_PACKAGES, STDLIB_PACKAGES } from \"./version-sets\"\n\nexport type Overrides = Record<string, string>\n\nexport function buildOverrides(bundle: VersionBundle): Overrides {\n const platform = Object.fromEntries(PLATFORM_PACKAGES.map(name => [name, bundle.platformVersion]))\n const stdlib = Object.fromEntries(STDLIB_PACKAGES.map(name => [name, bundle.stdlibVersion]))\n const pulumi = Object.fromEntries(PULUMI_PACKAGES.map(name => [name, bundle.pulumiVersion]))\n\n const merged: Overrides = {\n ...platform,\n ...stdlib,\n ...pulumi,\n }\n\n return merged\n}\n\nexport type ApplyOverridesArgs = {\n packageManager: PackageManagerName\n overrides: Overrides\n projectRoot: string\n}\n\nexport async function applyOverrides(args: ApplyOverridesArgs): Promise<void> {\n const { packageManager, overrides, projectRoot } = args\n\n if (packageManager === \"pnpm\") {\n const pnpmWorkspacePath = resolvePnpmWorkspacePath(projectRoot)\n\n try {\n await access(pnpmWorkspacePath)\n } catch {\n throw new Error(`PNPM workspace file is missing: \"${pnpmWorkspacePath}\"`)\n }\n\n const workspace = await readPnpmWorkspace(pnpmWorkspacePath)\n const nextWorkspace = {\n ...workspace,\n overrides,\n }\n\n await writePnpmWorkspace(pnpmWorkspacePath, nextWorkspace)\n return\n }\n\n const packageJsonPath = await resolvePackageJSON(projectRoot)\n const packageJson = await readPackageJSON(projectRoot)\n\n if (packageManager === \"npm\") {\n await writeJsonFile(packageJsonPath, {\n ...packageJson,\n overrides,\n })\n return\n }\n\n if (packageManager === \"yarn\") {\n await writeJsonFile(packageJsonPath, {\n ...packageJson,\n resolutions: overrides,\n })\n return\n }\n\n await writeJsonFile(packageJsonPath, packageJson)\n}\n","import type { PackageManagerName } from \"nypm\"\nimport type { PackageJson } from \"pkg-types\"\nimport { readFile } from \"node:fs/promises\"\nimport { resolvePackageJSON } from \"pkg-types\"\nimport { readPnpmWorkspace, resolvePnpmWorkspacePath } from \"./pnpm-workspace\"\n\nexport async function getProjectOverrideVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName; packageName: string },\n): Promise<string | null> {\n const { packageManager, packageName } = args\n\n if (packageManager === \"pnpm\") {\n const path = resolvePnpmWorkspacePath(projectRoot)\n const workspace = await readPnpmWorkspace(path)\n return workspace.overrides?.[packageName] ?? null\n }\n\n const packageJsonPath = await resolvePackageJSON(projectRoot)\n const rawPackageJson = await readFile(packageJsonPath, \"utf8\")\n const packageJson = JSON.parse(rawPackageJson) as PackageJson\n\n if (packageManager === \"npm\") {\n const overrides = packageJson.overrides as Record<string, string> | undefined\n return overrides?.[packageName] ?? null\n }\n\n if (packageManager === \"yarn\") {\n const resolutions = packageJson.resolutions as Record<string, string> | undefined\n return resolutions?.[packageName] ?? null\n }\n\n return null\n}\n\nexport async function getProjectPlatformVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName },\n): Promise<string | null> {\n return await getProjectOverrideVersion(projectRoot, {\n packageManager: args.packageManager,\n packageName: \"@highstate/pulumi\",\n })\n}\n\nexport async function getProjectPulumiSdkVersion(\n projectRoot: string,\n args: { packageManager: PackageManagerName },\n): Promise<string | null> {\n return await getProjectOverrideVersion(projectRoot, {\n packageManager: args.packageManager,\n packageName: \"@pulumi/pulumi\",\n })\n}\n","import { execFile } from \"node:child_process\"\nimport { promisify } from \"node:util\"\n\nconst execFileAsync = promisify(execFile)\n\nexport async function getPulumiCliVersion(cwd: string): Promise<string | null> {\n try {\n const { stdout } = await execFileAsync(\"pulumi\", [\"version\"], {\n cwd,\n })\n\n const raw = stdout.trim()\n if (raw.length === 0) {\n return null\n }\n\n return raw.startsWith(\"v\") ? raw.slice(1) : raw\n } catch {\n return null\n }\n}\n","import type { Plugin } from \"esbuild\"\nimport { readFile } from \"node:fs/promises\"\nimport MagicString from \"magic-string\"\nimport {\n type CallExpression,\n type Comment,\n type MemberExpression,\n type ObjectProperty,\n parseAsync,\n} from \"oxc-parser\"\nimport { type Node, walk } from \"oxc-walker\"\n\nexport const schemaTransformerPlugin: Plugin = {\n name: \"schema-transformer\",\n setup(build) {\n build.onLoad({ filter: /src\\/.*\\.ts$/ }, async args => {\n const content = await readFile(args.path, \"utf-8\")\n\n return {\n contents: await applySchemaTransformations(content),\n loader: \"ts\",\n }\n })\n },\n}\n\nexport async function applySchemaTransformations(content: string): Promise<string> {\n // first pass: apply zod meta transformations\n let result = await applyZodMetaTransformations(content)\n\n // second pass: apply helper function transformations\n result = await applyHelperFunctionTransformations(result)\n\n // third pass: apply define function meta transformations\n result = await applyDefineFunctionMetaTransformations(result)\n\n return result\n}\n\nasync function applyZodMetaTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n let hasTransformations = false\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle zod object patterns\n if (isZodObjectProperty(node, parentStack)) {\n const jsdoc = findLeadingComment(content, node, comments)\n if (!jsdoc) {\n return\n }\n\n const description = cleanJsdoc(jsdoc.value)\n const fieldName =\n \"name\" in node.key && typeof node.key.name === \"string\" ? node.key.name : \"unknown\"\n\n // Getter properties (get foo() { return ... }) need special handling:\n // we inject `.meta(...)` into the returned schema expression.\n if (isGetterProperty(node)) {\n const returnArgument = findFirstReturnArgument(node)\n if (!returnArgument) {\n return\n }\n\n const originalReturnValue = content.substring(returnArgument.start, returnArgument.end)\n if (originalReturnValue.includes(\".meta(\")) {\n return\n }\n\n const newReturnValue = `${originalReturnValue}.meta({ title: __camelCaseToHumanReadable(\"${fieldName}\"), description: \\`${description}\\` })`\n result.update(returnArgument.start, returnArgument.end, newReturnValue)\n hasTransformations = true\n return\n }\n\n // Standard properties (foo: z.string())\n if (!hasValue(node) || !hasSourceRange(node.value)) {\n return\n }\n\n const originalValue = content.substring(node.value.start, node.value.end)\n\n if (!originalValue.includes(\".meta(\")) {\n const newValue = `${originalValue}.meta({ title: __camelCaseToHumanReadable(\"${fieldName}\"), description: \\`${description}\\` })`\n result.update(node.value.start, node.value.end, newValue)\n hasTransformations = true\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n let finalResult = result.toString()\n\n // add import at the beginning if needed\n if (hasTransformations && !content.includes(\"__camelCaseToHumanReadable\")) {\n finalResult =\n 'import { camelCaseToHumanReadable as __camelCaseToHumanReadable } from \"@highstate/contract\"\\n' +\n finalResult\n }\n\n return finalResult\n}\n\nasync function applyHelperFunctionTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n let hasTransformations = false\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle properties in args, inputs, outputs, secrets objects\n if (node.type === \"Property\" && \"key\" in node && node.key?.type === \"Identifier\") {\n const propertyNode = node\n const helperFunction = getHelperFunctionForProperty(parentStack)\n\n if (helperFunction) {\n const jsdoc = findLeadingComment(content, node, comments)\n\n if (jsdoc) {\n const description = cleanJsdoc(jsdoc.value)\n // Getter properties (get foo() { return ... }) need special handling:\n // inject the helper call into the returned expression.\n if (isGetterProperty(propertyNode)) {\n const returnArgument = findFirstReturnArgument(propertyNode)\n if (!returnArgument) {\n return\n }\n\n const originalReturnValue = content.substring(\n returnArgument.start,\n returnArgument.end,\n )\n if (originalReturnValue.trimStart().startsWith(`${helperFunction}(`)) {\n return\n }\n\n const newReturnValue = `${helperFunction}(${originalReturnValue}, \\`${description}\\`)`\n result.update(returnArgument.start, returnArgument.end, newReturnValue)\n hasTransformations = true\n return\n }\n\n if (!hasValue(propertyNode) || !hasSourceRange(propertyNode.value)) {\n return\n }\n\n const originalValue = content.substring(\n propertyNode.value.start,\n propertyNode.value.end,\n )\n const newValue = `${helperFunction}(${originalValue}, \\`${description}\\`)`\n result.update(propertyNode.value.start, propertyNode.value.end, newValue)\n hasTransformations = true\n }\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n let finalResult = result.toString()\n\n // add import at the beginning if needed\n if (hasTransformations && !content.includes(\"$addArgumentDescription\")) {\n finalResult =\n 'import { $addArgumentDescription, $addInputDescription } from \"@highstate/contract\"\\n' +\n finalResult\n }\n\n return finalResult\n}\n\nasync function applyDefineFunctionMetaTransformations(content: string): Promise<string> {\n const { program, comments } = await parseAsync(\"file.ts\", content)\n const parentStack: Node[] = []\n const result = new MagicString(content)\n\n walk(program, {\n enter(node) {\n parentStack.push(node)\n\n // handle defineUnit, defineEntity, defineComponent function calls\n if (node.type === \"CallExpression\" && \"callee\" in node && node.callee.type === \"Identifier\") {\n const callNode = node\n const callee = callNode.callee\n const functionName =\n \"name\" in callee && typeof callee.name === \"string\" ? callee.name : undefined\n\n if (\n functionName &&\n [\"defineUnit\", \"defineEntity\", \"defineComponent\"].includes(functionName)\n ) {\n // look for JSDoc comment on the parent declaration/export, not the function call itself\n const jsdoc = findJsdocForDefineFunction(content, parentStack, comments)\n\n if (jsdoc && callNode.arguments && callNode.arguments.length > 0) {\n const description = cleanJsdoc(jsdoc.value)\n const firstArg = callNode.arguments[0]\n\n // find meta property in the object expression\n if (firstArg.type === \"ObjectExpression\" && \"properties\" in firstArg) {\n const properties = firstArg.properties\n const metaProperty = properties?.find(\n prop =>\n prop.type === \"Property\" &&\n \"key\" in prop &&\n prop.key?.type === \"Identifier\" &&\n prop.key?.name === \"meta\",\n ) as ObjectProperty | undefined\n\n if (metaProperty && \"value\" in metaProperty) {\n // inject description into existing meta object\n const originalMetaValue = content.substring(\n metaProperty.value.start,\n metaProperty.value.end,\n )\n const newMetaValue = injectDescriptionIntoMetaObject(originalMetaValue, description)\n result.update(metaProperty.value.start, metaProperty.value.end, newMetaValue)\n } else if (properties && properties.length > 0) {\n // add meta property with description\n const lastProperty = properties[properties.length - 1] as ObjectProperty\n if (lastProperty && \"end\" in lastProperty) {\n const insertPos = lastProperty.end\n const newMetaProperty = `,\n\n meta: {\n description: \\`${description}\\`,\n }`\n result.appendLeft(insertPos, newMetaProperty)\n }\n }\n }\n }\n }\n }\n },\n leave() {\n parentStack.pop()\n },\n })\n\n return result.toString()\n}\n\nfunction findJsdocForDefineFunction(\n content: string,\n parentStack: Node[],\n comments: Comment[],\n): Comment | null {\n // look for the variable declaration or export declaration that contains the function call\n for (let i = parentStack.length - 1; i >= 0; i--) {\n const node = parentStack[i]\n\n // check for variable declaration (const x = defineUnit(...))\n if (node.type === \"VariableDeclarator\" && \"id\" in node && node.id?.type === \"Identifier\") {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n\n // check for export variable declaration (export const x = defineUnit(...))\n if (node.type === \"VariableDeclaration\") {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n\n // check for export declaration (export const x = ...)\n if (node.type === \"ExportNamedDeclaration\" && \"declaration\" in node && node.declaration) {\n const jsdoc = findLeadingComment(content, node, comments)\n if (jsdoc) return jsdoc\n }\n }\n\n return null\n}\n\nfunction isZodObjectProperty(node: Node, parentStack: Node[]): node is ObjectProperty {\n return (\n node.type === \"Property\" &&\n \"key\" in node &&\n node.key?.type === \"Identifier\" &&\n isInsideZodObject(parentStack)\n )\n}\n\ntype GetterObjectProperty = ObjectProperty & {\n kind: \"get\"\n value: Node & { type: \"FunctionExpression\" }\n}\n\nfunction isGetterProperty(node: Node): node is GetterObjectProperty {\n if (node.type !== \"Property\") {\n return false\n }\n\n if (!hasValue(node)) {\n return false\n }\n\n return \"kind\" in node && node.kind === \"get\" && node.value.type === \"FunctionExpression\"\n}\n\nfunction findFirstReturnArgument(node: ObjectProperty): Node | null {\n if (!hasValue(node) || node.value.type !== \"FunctionExpression\") {\n return null\n }\n\n const body = node.value.body\n if (!body || body.type !== \"BlockStatement\") {\n return null\n }\n\n for (const statement of body.body) {\n if (statement.type !== \"ReturnStatement\") {\n continue\n }\n\n const returnArgument = \"argument\" in statement ? statement.argument : null\n if (returnArgument && hasSourceRange(returnArgument)) {\n return returnArgument\n }\n }\n\n return null\n}\n\nfunction hasValue(node: Node): node is Node & { value: Node } {\n return \"value\" in node && !!node.value\n}\n\nfunction hasSourceRange(node: Node): node is Node & { start: number; end: number } {\n return (\n \"start\" in node &&\n typeof node.start === \"number\" &&\n \"end\" in node &&\n typeof node.end === \"number\"\n )\n}\n\nfunction findLeadingComment(content: string, node: Node, comments: Comment[]): Comment | null {\n return comments.find(comment => isLeadingComment(content, node, comment)) ?? null\n}\n\nfunction isLeadingComment(content: string, node: Node, comment: Comment) {\n if (comment.end > node.start) {\n return false\n }\n\n const contentRange = content.substring(comment.end, node.start)\n\n return contentRange.trim().length === 0\n}\n\nfunction cleanJsdoc(str: string) {\n return (\n str\n // remove leading asterisks\n .replace(/^\\s*\\*/gm, \"\")\n\n // escape backticks and dollar signs\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/`/g, \"\\\\`\")\n .replace(/\\${/g, \"\\\\${\")\n .trim()\n )\n}\n\nfunction injectDescriptionIntoMetaObject(objectString: string, description: string): string {\n const trimmed = objectString.trim()\n\n // Check if description already exists\n const hasDescription = /description\\s*:/.test(trimmed)\n\n if (hasDescription) {\n // Replace existing description\n return trimmed.replace(/description\\s*:\\s*`[^`]*`/, `description: \\`${description}\\``)\n } else {\n // Add description field at the beginning of the object\n const openBraceIndex = trimmed.indexOf(\"{\")\n if (openBraceIndex === -1) {\n return trimmed\n }\n\n const beforeBrace = trimmed.substring(0, openBraceIndex + 1)\n const afterBrace = trimmed.substring(openBraceIndex + 1)\n\n return `${beforeBrace}\n description: \\`${description}\\`,${afterBrace}`\n }\n}\n\nfunction isInsideZodObject(parentStack: Node[]): boolean {\n // look for z.object() call expression in the parent stack\n for (let i = parentStack.length - 1; i >= 0; i--) {\n const node = parentStack[i]\n if (\n node.type === \"CallExpression\" &&\n \"callee\" in node &&\n node.callee.type === \"MemberExpression\" &&\n isZodObjectCall(node.callee)\n ) {\n return true\n }\n }\n return false\n}\n\nfunction getHelperFunctionForProperty(\n parentStack: Node[],\n): \"$addInputDescription\" | \"$addArgumentDescription\" | null {\n if (parentStack.length < 3) {\n return null\n }\n\n const objectExpression = parentStack[parentStack.length - 2]\n if (!objectExpression || objectExpression.type !== \"ObjectExpression\") {\n return null\n }\n\n const containerParent = parentStack[parentStack.length - 3]\n if (!containerParent) {\n return null\n }\n\n if (\n containerParent.type === \"Property\" &&\n \"value\" in containerParent &&\n containerParent.value === objectExpression &&\n containerParent.key?.type === \"Identifier\"\n ) {\n const keyName = containerParent.key.name\n if (keyName === \"inputs\" || keyName === \"outputs\") {\n return \"$addInputDescription\"\n }\n if (keyName === \"args\" || keyName === \"secrets\") {\n return \"$addArgumentDescription\"\n }\n\n return null\n }\n\n if (\n containerParent.type === \"CallExpression\" &&\n containerParent.callee.type === \"Identifier\" &&\n containerParent.arguments.length > 0 &&\n containerParent.arguments[0] === objectExpression\n ) {\n const calleeName = containerParent.callee.name\n if (calleeName === \"$inputs\" || calleeName === \"$outputs\") {\n return \"$addInputDescription\"\n }\n if (calleeName === \"$args\" || calleeName === \"$secrets\") {\n return \"$addArgumentDescription\"\n }\n }\n\n return null\n}\n\nfunction isZodObjectCall(memberExpression: Node): boolean {\n if (\n memberExpression.type !== \"MemberExpression\" ||\n !(\"object\" in memberExpression) ||\n !(\"property\" in memberExpression)\n ) {\n return false\n }\n\n const member = memberExpression as MemberExpression\n\n // handle direct z.object() calls\n if (\n member.object.type === \"Identifier\" &&\n \"name\" in member.object &&\n member.object.name === \"z\" &&\n member.property.type === \"Identifier\" &&\n member.property.name === \"object\"\n ) {\n return true\n }\n\n // handle chained calls like z.discriminatedUnion().default().object()\n // or any other chained Zod methods that end with .object()\n if (\n member.property.type === \"Identifier\" &&\n member.property.name === \"object\" &&\n member.object.type === \"CallExpression\" &&\n \"callee\" in member.object &&\n member.object.callee.type === \"MemberExpression\"\n ) {\n // recursively check if this is part of a z.* chain\n return startsWithZodCall(member.object)\n }\n\n return false\n}\n\nfunction startsWithZodCall(callExpression: CallExpression): boolean {\n if (!callExpression || callExpression.type !== \"CallExpression\") {\n return false\n }\n\n if (callExpression.callee.type === \"MemberExpression\") {\n const callee = callExpression.callee\n\n // check if this is a direct z.* call\n if (\n callee.object.type === \"Identifier\" &&\n \"name\" in callee.object &&\n callee.object.name === \"z\"\n ) {\n return true\n }\n\n // recursively check nested calls\n if (callee.object.type === \"CallExpression\") {\n return startsWithZodCall(callee.object)\n }\n }\n\n return false\n}\n","import { z } from \"zod\"\n\n/**\n * Schema for the sourceHash configuration in package.json\n */\nexport const sourceHashConfigSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"manual\"),\n version: z.string(),\n }),\n z.object({\n mode: z.literal(\"auto\"),\n }),\n z.object({\n mode: z.literal(\"version\"),\n }),\n z.object({\n mode: z.literal(\"none\"),\n }),\n])\n\n/**\n * Schema for the highstate configuration in package.json\n */\nexport const highstateConfigSchema = z.object({\n type: z.enum([\"source\", \"library\", \"worker\"]).default(\"source\"),\n sourceHash: z\n .union([sourceHashConfigSchema, z.record(z.string(), sourceHashConfigSchema)])\n .optional(),\n})\n\n/**\n * Schema for the highstate manifest file\n */\nexport const highstateManifestSchema = z.object({\n sourceHashes: z.record(z.string(), z.number()).optional(),\n})\n\nexport type SourceHashConfig = z.infer<typeof sourceHashConfigSchema>\nexport type HighstateConfig = z.infer<typeof highstateConfigSchema>\nexport type HighstateManifest = z.infer<typeof highstateManifestSchema>\n","import type { Services } from \"@highstate/backend\"\nimport { logger } from \"./logger\"\n\nlet services: Promise<Services> | undefined\nlet disposePromise: Promise<void> | undefined\n\nexport function getBackendServices(): Promise<Services> {\n if (services) {\n return services\n }\n\n services = import(\"@highstate/backend\").then(({ getSharedServices }) => {\n return getSharedServices({\n services: {\n logger: logger.child({}, { msgPrefix: \"[backend] \" }),\n },\n })\n })\n\n return services\n}\n\nexport function disposeServices(): Promise<void> {\n if (!services) {\n return Promise.resolve()\n }\n\n if (disposePromise) {\n return disposePromise\n }\n\n disposePromise = import(\"@highstate/backend\")\n //\n .then(({ disposeServices }) => services!.then(s => disposeServices(s)))\n\n return disposePromise\n}\n","import type { Logger } from \"pino\"\nimport { readFile, writeFile } from \"node:fs/promises\"\nimport { dirname, relative, resolve } from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { crc32 } from \"@aws-crypto/crc32\"\nimport { resolve as importMetaResolve } from \"import-meta-resolve\"\nimport { type PackageJson, readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { z } from \"zod\"\nimport {\n type HighstateConfig,\n type HighstateManifest,\n highstateConfigSchema,\n highstateManifestSchema,\n type SourceHashConfig,\n sourceHashConfigSchema,\n} from \"./schemas\"\nimport { int32ToBytes } from \"./utils\"\n\ntype FileDependency =\n | {\n type: \"relative\"\n id: string\n fullPath: string\n }\n | {\n type: \"npm\"\n id: string\n package: string\n }\n\nexport function parseFileDependencies(filePath: string, content: string): FileDependency[] {\n type DependencyMatch = {\n relativePath?: string\n nodeBuiltin?: string\n npmPackage?: string\n }\n\n const dependencyRegex =\n /^[ \\t]*import\\b[\\s\\S]*?\\bfrom\\s*[\"']((?<relativePath>\\.\\.?\\/[^\"']+)|(?<nodeBuiltin>node:[^\"']+)|(?<npmPackage>[^\"']+))[\"']/gm\n\n const matches = content.matchAll(dependencyRegex)\n const dependencies: FileDependency[] = []\n\n for (const match of matches) {\n const { nodeBuiltin, npmPackage, relativePath } = match.groups as DependencyMatch\n\n if (relativePath) {\n const fullPath = resolve(dirname(filePath), relativePath)\n\n dependencies.push({\n type: \"relative\",\n id: `relative:${fullPath}`,\n fullPath,\n })\n } else if (npmPackage) {\n dependencies.push({\n type: \"npm\",\n id: `npm:${npmPackage}`,\n package: npmPackage,\n })\n } else if (nodeBuiltin) {\n // ignore node built-in modules\n }\n }\n\n return dependencies\n}\n\nexport class SourceHashCalculator {\n private readonly dependencyHashes = new Map<string, Promise<number>>()\n private readonly fileHashes = new Map<string, Promise<number>>()\n\n constructor(\n private readonly packageJsonPath: string,\n private readonly packageJson: PackageJson,\n private readonly logger: Logger,\n ) {}\n\n /**\n * Calculates CRC32 hash of a string.\n */\n private hashString(input: string): number {\n return crc32(Buffer.from(input))\n }\n\n /**\n * Gets the highstate configuration from package.json with defaults.\n */\n private getHighstateConfig(packageJson: PackageJson): HighstateConfig {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const rawConfig = packageJson.highstate\n if (!rawConfig) {\n return { type: \"source\" }\n }\n\n try {\n return highstateConfigSchema.parse(rawConfig)\n } catch (error) {\n this.logger.warn(\n { error, packageName: packageJson.name },\n \"invalid highstate configuration, using defaults\",\n )\n return { type: \"source\" }\n }\n }\n\n /**\n * Gets the effective source hash configuration with defaults for a specific output.\n */\n private getSourceHashConfig(\n highstateConfig: HighstateConfig,\n exportKey?: string,\n ): SourceHashConfig {\n if (highstateConfig.sourceHash) {\n // Try to parse as a single config first\n const singleConfigResult = sourceHashConfigSchema.safeParse(highstateConfig.sourceHash)\n if (singleConfigResult.success) {\n return singleConfigResult.data\n }\n\n // Try to parse as a record of configs\n const recordConfigResult = z\n .record(z.string(), sourceHashConfigSchema)\n .safeParse(highstateConfig.sourceHash)\n if (recordConfigResult.success && exportKey) {\n const perOutputConfig = recordConfigResult.data[exportKey]\n if (perOutputConfig) {\n return perOutputConfig\n }\n }\n }\n\n if (highstateConfig.type === \"library\") {\n return { mode: \"none\" }\n }\n\n return { mode: \"auto\" }\n }\n\n async writeHighstateManifest(\n distBasePath: string,\n distPathToExportKey: Map<string, string>,\n ): Promise<void> {\n const highstateConfig = this.getHighstateConfig(this.packageJson)\n\n const promises: Promise<{ distPath: string; hash: number }>[] = []\n\n for (const [distPath, exportKey] of distPathToExportKey) {\n const fullPath = resolve(distPath)\n const sourceHashConfig = this.getSourceHashConfig(highstateConfig, exportKey)\n\n switch (sourceHashConfig.mode) {\n case \"manual\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: this.hashString(sourceHashConfig.version),\n }),\n )\n break\n case \"version\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: this.hashString(this.packageJson.version ?? \"\"),\n }),\n )\n break\n case \"none\":\n promises.push(\n Promise.resolve({\n distPath,\n hash: 0,\n }),\n )\n break\n default:\n promises.push(\n this.getFileHash(fullPath).then(hash => ({\n distPath,\n hash,\n })),\n )\n break\n }\n }\n\n const manifest: HighstateManifest = {\n sourceHashes: {},\n }\n\n const hashes = await Promise.all(promises)\n for (const { distPath, hash } of hashes) {\n manifest.sourceHashes![distPath] = hash\n }\n\n const manifestPath = resolve(distBasePath, \"highstate.manifest.json\")\n await writeFile(manifestPath, JSON.stringify(manifest, null, 2), \"utf8\")\n }\n\n private async getFileHash(fullPath: string): Promise<number> {\n const existingHash = this.fileHashes.get(fullPath)\n if (existingHash) {\n return existingHash\n }\n\n const hash = this.calculateFileHash(fullPath)\n this.fileHashes.set(fullPath, hash)\n\n return hash\n }\n\n private async calculateFileHash(fullPath: string): Promise<number> {\n const content = await readFile(fullPath, \"utf8\")\n const fileDeps = parseFileDependencies(fullPath, content)\n\n const hashes = await Promise.all([\n this.hashString(content),\n ...fileDeps.map(dep => this.getDependencyHash(dep)),\n ])\n\n return crc32(Buffer.concat(hashes.map(int32ToBytes)))\n }\n\n getDependencyHash(dependency: FileDependency): Promise<number> {\n const existingHash = this.dependencyHashes.get(dependency.id)\n if (existingHash) {\n return existingHash\n }\n\n const hash = this.calculateDependencyHash(dependency)\n this.dependencyHashes.set(dependency.id, hash)\n\n return hash\n }\n\n private async calculateDependencyHash(dependency: FileDependency): Promise<number> {\n switch (dependency.type) {\n case \"relative\": {\n return await this.getFileHash(dependency.fullPath)\n }\n case \"npm\": {\n let resolvedUrl: string\n try {\n const baseUrl = pathToFileURL(this.packageJsonPath)\n\n resolvedUrl = importMetaResolve(dependency.package, baseUrl.toString())\n } catch (error) {\n this.logger.error(`failed to resolve package \"%s\"`, dependency.package)\n throw error\n }\n\n // TODO: does this really needed?\n // if (resolvedUrl.startsWith(\"node:\")) {\n // throw new Error(`\"${dependency.package}\" imported without \"node:\" prefix`)\n // }\n\n const resolvedPath = fileURLToPath(resolvedUrl)\n\n const [depPackageJsonPath, depPackageJson] = await this.getPackageJson(resolvedPath)\n const packageName = depPackageJson.name!\n\n this.logger.debug(\n `resolved package.json for \"%s\": \"%s\"`,\n dependency.package,\n depPackageJsonPath,\n )\n\n if (\n !this.packageJson.dependencies?.[packageName] &&\n !this.packageJson.peerDependencies?.[packageName]\n ) {\n this.logger.warn(`package \"%s\" is not listed in package.json dependencies`, packageName)\n }\n\n // try to get source hash from manifest first\n let relativePath = relative(dirname(depPackageJsonPath), resolvedPath)\n relativePath = relativePath.startsWith(\".\") ? relativePath : `./${relativePath}`\n\n const highstateManifestPath = resolve(\n dirname(depPackageJsonPath),\n \"dist\",\n \"highstate.manifest.json\",\n )\n\n let manifest: HighstateManifest | undefined\n try {\n const manifestContent = await readFile(highstateManifestPath, \"utf8\")\n manifest = highstateManifestSchema.parse(JSON.parse(manifestContent))\n } catch (error) {\n this.logger.debug(\n { error },\n `failed to read highstate manifest for package \"%s\"`,\n packageName,\n )\n }\n\n const sourceHash = manifest?.sourceHashes?.[relativePath]\n\n if (sourceHash) {\n this.logger.debug(`resolved source hash for package \"%s\"`, packageName)\n return sourceHash\n }\n\n // use the package version as a fallback hash\n // this case will be applied for most npm packages\n this.logger.debug(`using package version as a fallback hash for \"%s\"`, packageName)\n return this.hashString(depPackageJson.version ?? \"0.0.0\")\n }\n }\n }\n\n private async getPackageJson(basePath: string): Promise<[string, PackageJson]> {\n while (true) {\n const packageJson = await readPackageJSON(basePath)\n if (packageJson.name) {\n const packageJsonPath = await resolvePackageJSON(basePath)\n\n return [packageJsonPath, packageJson]\n }\n\n basePath = resolve(dirname(basePath), \"..\")\n }\n }\n}\n","import { fetchLatestVersion, fetchManifest, getDependencyRange } from \"./npm-registry\"\n\nexport type VersionBundle = {\n platformVersion: string\n stdlibVersion: string\n pulumiVersion: string\n}\n\nexport type ResolveVersionBundleArgs = {\n platformVersion?: string\n stdlibVersion?: string\n}\n\nconst platformSourcePackage = \"@highstate/pulumi\"\nconst stdlibSourcePackage = \"@highstate/library\"\n\nexport async function resolveVersionBundle(args: ResolveVersionBundleArgs): Promise<VersionBundle> {\n const platformVersion = normalizeProvidedVersion(args.platformVersion, \"platform\")\n const stdlibVersion = normalizeProvidedVersion(args.stdlibVersion, \"stdlib\")\n\n const resolvedPlatformVersion =\n platformVersion ?? (await fetchLatestVersion(platformSourcePackage))\n const resolvedStdlibVersion = stdlibVersion ?? (await fetchLatestVersion(stdlibSourcePackage))\n\n const platformManifest = await fetchManifest(platformSourcePackage, resolvedPlatformVersion)\n const inferredPulumi = getDependencyRange(platformManifest, \"@pulumi/pulumi\")\n if (!inferredPulumi) {\n throw new Error(\n `Unable to infer \"@pulumi/pulumi\" version from \"${platformSourcePackage}@${resolvedPlatformVersion}\"`,\n )\n }\n\n return {\n platformVersion: resolvedPlatformVersion,\n stdlibVersion: resolvedStdlibVersion,\n pulumiVersion: inferredPulumi,\n }\n}\n\nfunction normalizeProvidedVersion(value: string | undefined, label: string): string | undefined {\n if (value === undefined) {\n return undefined\n }\n\n const trimmed = value.trim()\n if (trimmed.length === 0) {\n throw new Error(`Version flag \"${label}\" must not be empty`)\n }\n\n return trimmed\n}\n","import { existsSync } from \"node:fs\"\nimport { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\"\nimport { join, relative, resolve } from \"node:path\"\nimport { z } from \"zod\"\nimport { highstateConfigSchema } from \"./schemas\"\n\n/**\n * Represents a Highstate package in the workspace\n */\nexport interface HighstatePackage {\n /** Absolute path to the package directory */\n path: string\n /** Relative path from workspace root */\n relativePath: string\n /** Package name from package.json */\n name: string\n /** Package type from highstate config */\n type?: \"source\" | \"library\" | \"worker\"\n}\n\n/**\n * Schema for package.json files\n */\nconst packageJsonSchema = z.object({\n name: z.string(),\n highstate: highstateConfigSchema.optional(),\n})\n\n/**\n * Generates tsconfig content with correct relative path based on package depth\n */\nfunction generateTsconfigContent(workspaceRoot: string, packagePath: string) {\n const relativePath = relative(workspaceRoot, packagePath)\n const depth = relativePath.split(\"/\").length\n const relativeNodeModules = `${\"../\".repeat(depth)}node_modules/@highstate/cli/assets/tsconfig.base.json`\n\n return {\n extends: relativeNodeModules,\n include: [\"./src/**/*.ts\", \"./package.json\", \"./assets/**/*.json\"],\n }\n}\n\n/**\n * Finds the workspace root by looking for package.json with workspaces\n */\nexport async function findWorkspaceRoot(startPath: string = process.cwd()): Promise<string> {\n let currentPath = resolve(startPath)\n\n while (currentPath !== \"/\") {\n const packageJsonPath = join(currentPath, \"package.json\")\n\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, \"utf-8\")\n const packageJson = JSON.parse(content) as { workspaces?: unknown }\n\n if (packageJson.workspaces) {\n return currentPath\n }\n } catch {\n // ignore invalid package.json files\n }\n }\n\n const parentPath = resolve(currentPath, \"..\")\n if (parentPath === currentPath) break\n currentPath = parentPath\n }\n\n throw new Error(\"Could not find workspace root (no package.json with workspaces found)\")\n}\n\n/**\n * Recursively scans for packages in the workspace\n */\nexport async function scanWorkspacePackages(workspaceRoot: string): Promise<HighstatePackage[]> {\n const packages: HighstatePackage[] = []\n const packagesDir = join(workspaceRoot, \"packages\")\n\n if (!existsSync(packagesDir)) {\n return packages\n }\n\n async function scanDirectory(dirPath: string, depth = 0): Promise<void> {\n // skip node_modules and hidden directories at any depth\n const dirName = relative(packagesDir, dirPath).split(\"/\").pop()\n if (dirName?.startsWith(\".\") || dirName === \"node_modules\") {\n return\n }\n\n const entries = await readdir(dirPath, { withFileTypes: true })\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue\n\n const entryPath = join(dirPath, entry.name)\n\n // skip node_modules and hidden directories\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") {\n continue\n }\n\n const packageJsonPath = join(entryPath, \"package.json\")\n\n // check if this directory has a package.json\n if (existsSync(packageJsonPath)) {\n try {\n const content = await readFile(packageJsonPath, \"utf-8\")\n const packageJson = packageJsonSchema.parse(JSON.parse(content))\n\n const relativePath = relative(workspaceRoot, entryPath)\n const type = packageJson.highstate?.type ?? \"source\"\n\n packages.push({\n path: entryPath,\n relativePath,\n name: packageJson.name,\n type,\n })\n } catch {\n // ignore directories with invalid package.json files\n }\n }\n\n // continue scanning subdirectories, but with limited depth to avoid deep node_modules\n if (depth < 3) {\n await scanDirectory(entryPath, depth + 1)\n }\n }\n }\n\n await scanDirectory(packagesDir)\n return packages.sort((a, b) => a.relativePath.localeCompare(b.relativePath))\n}\n\n/**\n * Updates the root tsconfig.json with package references\n */\nexport async function updateTsconfigReferences(\n workspaceRoot: string,\n packages: HighstatePackage[],\n ensureTsconfigs = false,\n): Promise<void> {\n const tsconfigPath = join(workspaceRoot, \"tsconfig.json\")\n\n // ensure all packages have valid tsconfig.json files\n if (ensureTsconfigs) {\n await ensurePackageTsconfigs(\n workspaceRoot,\n\n // only udate for Highstate-managed packages\n packages.filter(pkg => pkg.type !== undefined),\n )\n }\n\n // generate references array\n const references = packages.map(pkg => ({\n path: `./${pkg.relativePath}/tsconfig.json`,\n }))\n\n const tsconfigContent = {\n files: [],\n references,\n }\n\n // write the file with proper formatting\n await writeFile(tsconfigPath, `${JSON.stringify(tsconfigContent, null, 2)}\\n`, \"utf-8\")\n}\n\n/**\n * Ensures all packages have valid tsconfig.json files\n */\nasync function ensurePackageTsconfigs(\n workspaceRoot: string,\n packages: HighstatePackage[],\n): Promise<void> {\n for (const pkg of packages) {\n const tsconfigPath = join(pkg.path, \"tsconfig.json\")\n const tsconfigContent = generateTsconfigContent(workspaceRoot, pkg.path)\n\n await writeFile(tsconfigPath, `${JSON.stringify(tsconfigContent, null, 2)}\\n`, \"utf-8\")\n }\n}\n\n/**\n * Creates a new package of the specified type\n */\nexport async function createPackage(\n workspaceRoot: string,\n name: string,\n type: \"source\" | \"library\" | \"worker\",\n): Promise<HighstatePackage> {\n const packagePath = join(workspaceRoot, \"packages\", name)\n const srcPath = join(packagePath, \"src\")\n\n // create directories\n await mkdir(packagePath, { recursive: true })\n await mkdir(srcPath, { recursive: true })\n\n // create package.json\n const packageJson = {\n name: `@highstate/${name}`,\n version: \"0.0.1\",\n type: \"module\",\n highstate: {\n type,\n },\n }\n\n await writeFile(\n join(packagePath, \"package.json\"),\n `${JSON.stringify(packageJson, null, 2)}\\n`,\n \"utf-8\",\n )\n\n // create tsconfig.json\n const tsconfigContent = generateTsconfigContent(workspaceRoot, packagePath)\n await writeFile(\n join(packagePath, \"tsconfig.json\"),\n `${JSON.stringify(tsconfigContent, null, 2)}\\n`,\n \"utf-8\",\n )\n\n // create basic index.ts\n await writeFile(join(srcPath, \"index.ts\"), `// ${name} package\\n`, \"utf-8\")\n\n return {\n path: packagePath,\n relativePath: `packages/${name}`,\n name: `@highstate/${name}`,\n type,\n }\n}\n","import { hostname } from \"node:os\"\nimport { loadConfig } from \"@highstate/backend\"\nimport { identityToRecipient } from \"age-encryption\"\nimport { Command } from \"clipanion\"\nimport { logger } from \"../../shared\"\n\nexport class BackendIdentityCommand extends Command {\n static paths = [[\"backend\", \"identity\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Ensures the backend identity is set up and returns the recipient.\",\n })\n\n async execute(): Promise<void> {\n // do not initialize the backend services here, because the state might not be available yet\n const { getOrCreateBackendIdentity } = await import(\"@highstate/backend\")\n const config = await loadConfig()\n\n const backendIdentity = await getOrCreateBackendIdentity(config, logger)\n const recipient = await identityToRecipient(backendIdentity)\n\n logger.info(`stored backend identity: \"%s\"`, recipient)\n\n const suggestedTitle = hostname()\n\n if (!suggestedTitle) {\n logger.info(`run \"highstate backend unlock-method add %s\" on a trusted device`, recipient)\n return\n }\n\n logger.info(\n `run \"highstate backend unlock-method add %s --title %s\" on a trusted device`,\n recipient,\n suggestedTitle,\n )\n }\n}\n","import { input } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodAddCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"add\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Adds a new backend unlock method for the current workspace.\",\n examples: [[\"Add recipient\", \"highstate backend unlock-method add age1example --title Laptop\"]],\n })\n\n recipient = Option.String()\n title = Option.String(\"--title\")\n description = Option.String(\"--description\")\n\n async execute(): Promise<void> {\n let title = this.title\n if (!title) {\n title = await input({\n message: \"Unlock Method Title\",\n default: \"New Device\",\n validate: value => (value.trim().length > 0 ? true : \"Title is required\"),\n })\n }\n\n let description = this.description\n if (description === undefined) {\n description = await input({\n message: \"Description (optional)\",\n default: \"\",\n })\n }\n\n const services = await getBackendServices()\n\n try {\n const result = await services.backendUnlockService.addUnlockMethod({\n recipient: this.recipient,\n meta: description\n ? { title: title.trim(), description: description.trim() }\n : { title: title.trim() },\n })\n\n logger.info(`added backend unlock method \"%s\"`, result.id)\n } finally {\n await disposeServices()\n }\n\n // TODO: investigate why this is needed to properly exit\n process.exit(0)\n }\n}\n","import { confirm } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodDeleteCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"delete\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Removes a backend unlock method by its identifier.\",\n })\n\n id = Option.String()\n force = Option.Boolean(\"--force\", false)\n\n async execute(): Promise<void> {\n if (!this.force) {\n const answer = await confirm({\n message: `Delete backend unlock method ${this.id}?`,\n default: false,\n })\n\n if (!answer) {\n logger.info(\"cancelled backend unlock method deletion\")\n return\n }\n }\n\n const services = await getBackendServices()\n\n try {\n await services.backendUnlockService.deleteUnlockMethod(this.id)\n logger.info(`deleted backend unlock method \"%s\"`, this.id)\n } finally {\n await disposeServices()\n }\n\n process.exit(0)\n }\n}\n","import { Command } from \"clipanion\"\nimport { Table } from \"console-table-printer\"\nimport { disposeServices, getBackendServices, logger } from \"../../../shared\"\n\nexport class BackendUnlockMethodListCommand extends Command {\n static paths = [[\"backend\", \"unlock-method\", \"list\"]]\n\n static usage = Command.Usage({\n category: \"Backend\",\n description: \"Lists backend unlock methods registered for the current workspace.\",\n })\n\n async execute(): Promise<void> {\n const services = await getBackendServices()\n\n try {\n const methods = await services.backendUnlockService.listUnlockMethods()\n\n if (methods.length === 0) {\n logger.warn(\"no backend unlock methods configured\")\n return\n }\n\n const table = new Table({\n columns: [\n { name: \"title\", title: \"Title\" },\n { name: \"id\", title: \"ID\" },\n { name: \"recipient\", title: \"Recipient\" },\n { name: \"description\", title: \"Description\", maxLen: 30 },\n ],\n defaultColumnOptions: {\n alignment: \"left\",\n },\n })\n\n table.addRows(\n methods.map(method => ({\n title: method.meta.title,\n id: method.id,\n recipient: method.recipient,\n description: method.meta.description ?? \"\",\n })),\n )\n\n table.printTable()\n } finally {\n await disposeServices()\n }\n\n process.exit(0)\n }\n}\n","import type { Plugin } from \"esbuild\"\nimport { writeFile } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { encode } from \"@msgpack/msgpack\"\nimport { Command, Option } from \"clipanion\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport { mapValues } from \"remeda\"\nimport { build } from \"tsup\"\nimport {\n createBinTransformerPlugin,\n extractEntryPoints,\n highstateConfigSchema,\n logger,\n SourceHashCalculator,\n schemaTransformerPlugin,\n} from \"../shared\"\n\nexport class BuildCommand extends Command {\n static paths = [[\"build\"]]\n\n static usage = Command.Usage({\n category: \"Builder\",\n description: \"Builds the Highstate library or unit package.\",\n })\n\n watch = Option.Boolean(\"--watch\", false)\n library = Option.Boolean(\"--library\", false)\n silent = Option.Boolean(\"--silent\", true)\n noSourceHash = Option.Boolean(\"--no-source-hash\", false)\n\n async execute(): Promise<void> {\n const packageJson = await readPackageJSON()\n\n const highstateConfig = highstateConfigSchema.parse(packageJson.highstate ?? {})\n if (highstateConfig.type === \"library\") {\n this.library = true\n }\n\n if (highstateConfig.type === \"worker\") {\n this.noSourceHash = true\n }\n\n if (!packageJson.name) {\n throw new Error(\"package.json must have a name field\")\n }\n\n const entryPoints = extractEntryPoints(packageJson)\n\n if (Object.keys(entryPoints).length === 0) {\n return\n }\n\n const esbuildPlugins: Plugin[] = []\n\n const binSourceFilePaths = Object.values(entryPoints)\n .filter(value => value.isBin)\n .map(value => value.entryPoint.slice(2)) // remove \"./\"\n\n if (this.library) {\n esbuildPlugins.push(schemaTransformerPlugin)\n }\n\n if (binSourceFilePaths.length > 0) {\n esbuildPlugins.push(createBinTransformerPlugin(binSourceFilePaths))\n }\n\n await build({\n entry: mapValues(entryPoints, value => value.entryPoint),\n outDir: \"dist\",\n watch: this.watch,\n sourcemap: true,\n clean: true,\n format: \"esm\",\n target: \"es2024\",\n platform: \"node\",\n external: [\"@pulumi/pulumi\"],\n esbuildPlugins,\n treeshake: true,\n removeNodeProtocol: false,\n silent: this.silent || [\"warn\", \"error\", \"fatal\"].includes(logger.level),\n })\n\n const packageJsonPath = await resolvePackageJSON()\n const upToDatePackageJson = await readPackageJSON()\n\n if (!this.noSourceHash) {\n const sourceHashCalculator = new SourceHashCalculator(\n packageJsonPath,\n upToDatePackageJson,\n logger,\n )\n\n const distPathToExportKey = new Map<string, string>()\n for (const value of Object.values(entryPoints)) {\n distPathToExportKey.set(value.distPath, value.key)\n }\n\n await sourceHashCalculator.writeHighstateManifest(\"./dist\", distPathToExportKey)\n }\n\n // write the \"highstate.library.json\" file if the library flag is set\n if (this.library) {\n const { loadLibrary } = await import(\"../shared/library-loader.js\")\n const fullModulePaths = Object.values(entryPoints).map(value => resolve(value.distPath))\n\n logger.info(\"evaluating library components from modules: %s\", fullModulePaths.join(\", \"))\n\n const library = await loadLibrary(logger, fullModulePaths)\n const libraryPath = resolve(\"./dist\", \"highstate.library.msgpack\")\n\n await writeFile(libraryPath, encode(library), \"utf8\")\n }\n\n logger.info(\"build completed successfully\")\n }\n}\n","import { pathToFileURL } from \"node:url\"\nimport { Command, UsageError } from \"clipanion\"\nimport { consola } from \"consola\"\nimport { colorize } from \"consola/utils\"\nimport { getPort } from \"get-port-please\"\nimport { resolve as importMetaResolve } from \"import-meta-resolve\"\nimport { addDevDependency, detectPackageManager } from \"nypm\"\nimport { readPackageJSON, resolvePackageJSON } from \"pkg-types\"\nimport {\n getBackendServices,\n getProjectPulumiSdkVersion,\n getPulumiCliVersion,\n logger,\n} from \"../shared\"\n\nexport class DesignerCommand extends Command {\n static paths = [[\"designer\"]]\n\n static usage = Command.Usage({\n category: \"Designer\",\n description: \"Starts the Highstate designer in the current project.\",\n })\n\n async execute(): Promise<void> {\n const packageJsonPath = await resolvePackageJSON()\n const packageJsonUrl = pathToFileURL(packageJsonPath).toString()\n const packageJson = await readPackageJSON(packageJsonPath)\n\n if (!packageJson.devDependencies?.[\"@highstate/cli\"]) {\n throw new UsageError(\n \"This project is not a Highstate project.\\n@highstate/cli must be installed as a devDependency.\",\n )\n }\n\n if (!packageJson.devDependencies?.[\"@highstate/designer\"]) {\n logger.info(\"Installing @highstate/designer...\")\n\n await addDevDependency([\"@highstate/designer\", \"classic-level\"])\n }\n\n const projectRoot = process.cwd()\n const detected = await detectPackageManager(projectRoot)\n const packageManager = detected?.name\n\n if (packageManager === \"npm\" || packageManager === \"pnpm\" || packageManager === \"yarn\") {\n const expectedPulumiSdk = await getProjectPulumiSdkVersion(projectRoot, { packageManager })\n const actualPulumiCli = await getPulumiCliVersion(projectRoot)\n\n if (expectedPulumiSdk && actualPulumiCli && expectedPulumiSdk !== actualPulumiCli) {\n logger.warn(\n `pulumi version mismatch detected, this may cause incompatibilities\\nexpected \"%s\" (from overrides for \"@pulumi/pulumi\"), got \"%s\" (from \"pulumi version\")\\nrecommended: run \"highstate update\" or downgrade your Pulumi CLI to \"%s\"`,\n expectedPulumiSdk,\n actualPulumiCli,\n expectedPulumiSdk,\n )\n }\n }\n\n logger.info(\"starting highstate designer...\")\n\n await getBackendServices()\n\n const oldConsoleLog = console.log\n\n const port = await getPort({ port: 3000 })\n const eventsPort = await getPort({ port: 3001 })\n\n const designerPackageJsonPath = importMetaResolve(\n \"@highstate/designer/package.json\",\n packageJsonUrl,\n )\n const designerPackageJson = await readPackageJSON(designerPackageJsonPath)\n\n process.env.NITRO_PORT = port.toString()\n process.env.NITRO_HOST = \"0.0.0.0\"\n process.env.NUXT_PUBLIC_VERSION = designerPackageJson.version\n process.env.NUXT_PUBLIC_EVENTS_PORT = eventsPort.toString()\n\n await new Promise<void>(resolve => {\n console.log = (message: string) => {\n if (message.startsWith(\"Listening on\")) {\n resolve()\n }\n }\n\n const serverPath = importMetaResolve(\"@highstate/designer/server\", packageJsonUrl)\n void import(serverPath)\n })\n\n console.log = oldConsoleLog\n\n consola.log(\n [\n \"\\n \",\n colorize(\"bold\", colorize(\"cyanBright\", \"Highstate Designer\")),\n \"\\n \",\n colorize(\"greenBright\", \"➜ Local: \"),\n colorize(\"underline\", colorize(\"cyanBright\", `http://localhost:${port}`)),\n \"\\n\",\n ].join(\"\"),\n )\n\n process.on(\"SIGINT\", () => {\n process.stdout.write(\"\\r\")\n consola.info(\"shutting down highstate designer...\")\n\n setTimeout(() => process.exit(0), 1000)\n })\n }\n}\n","import type { PackageManagerName } from \"nypm\"\nimport { access, mkdir, readdir } from \"node:fs/promises\"\nimport { resolve } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { input, select } from \"@inquirer/prompts\"\nimport { Command, Option } from \"clipanion\"\nimport { installDependencies } from \"nypm\"\nimport {\n applyOverrides,\n buildOverrides,\n generateFromTemplate,\n logger,\n resolveVersionBundle,\n} from \"../shared\"\n\nexport class InitCommand extends Command {\n static paths = [[\"init\"]]\n\n static usage = Command.Usage({\n description: \"Initializes a new Highstate project.\",\n })\n\n pathOption = Option.String(\"--path,-p\", {\n description: \"The path where the project should be initialized.\",\n })\n\n packageManager = Option.String(\"--package-manager\", {\n description: \"The package manager to use (npm, yarn, pnpm).\",\n })\n\n name = Option.String(\"--name\", {\n description: \"The project name.\",\n })\n\n platformVersion = Option.String(\"--platform-version\", {\n description: \"The Highstate platform version to use.\",\n })\n\n stdlibVersion = Option.String(\"--stdlib-version\", {\n description: \"The Highstate standard library version to use.\",\n })\n\n async execute(): Promise<void> {\n const availablePackageManagers = await detectAvailablePackageManagers([\"npm\", \"pnpm\", \"yarn\"])\n if (availablePackageManagers.length === 0) {\n throw new Error('No supported package managers found in PATH (\"npm\", \"pnpm\", \"yarn\")')\n }\n\n const projectName = await resolveProjectName(this.name)\n const destinationPath = await resolveDestinationPath(this.pathOption, projectName)\n\n const selectedPackageManager = await resolvePackageManager(\n this.packageManager,\n availablePackageManagers,\n )\n\n const templatePath = resolveTemplatePath()\n\n const versionBundle = await resolveVersionBundle({\n platformVersion: this.platformVersion,\n stdlibVersion: this.stdlibVersion,\n })\n\n await mkdir(destinationPath, { recursive: true })\n\n const isEmptyOrMissing = await isEmptyDirectory(destinationPath)\n if (!isEmptyOrMissing) {\n throw new Error(`Destination path is not empty: \"${destinationPath}\"`)\n }\n\n logger.info(\"initializing highstate project in %s\", destinationPath)\n\n await generateFromTemplate(templatePath, destinationPath, {\n projectName,\n packageName: projectName,\n platformVersion: versionBundle.platformVersion,\n libraryVersion: versionBundle.stdlibVersion,\n isPnpm: selectedPackageManager === \"pnpm\" ? \"true\" : \"\",\n isYarn: selectedPackageManager === \"yarn\" ? \"true\" : \"\",\n isNpm: selectedPackageManager === \"npm\" ? \"true\" : \"\",\n })\n\n const overrides = buildOverrides(versionBundle)\n await applyOverrides({\n projectRoot: destinationPath,\n packageManager: selectedPackageManager,\n overrides,\n })\n\n logger.info(\"installing dependencies using %s...\", selectedPackageManager)\n\n await installDependencies({\n cwd: destinationPath,\n packageManager: selectedPackageManager,\n silent: false,\n })\n\n logger.info(\"project initialized successfully\")\n }\n}\n\nasync function resolveDestinationPath(\n pathOption: string | undefined,\n projectName: string,\n): Promise<string> {\n if (pathOption) {\n return resolve(pathOption)\n }\n\n const defaultPath = resolve(process.cwd(), projectName)\n\n const pathValue = await input({\n message: \"Project path\",\n default: defaultPath,\n validate: value => (value.trim().length > 0 ? true : \"Path is required\"),\n })\n\n return resolve(pathValue)\n}\n\nasync function resolveProjectName(nameOption: string | undefined): Promise<string> {\n if (nameOption !== undefined) {\n const trimmed = nameOption.trim()\n if (trimmed.length === 0) {\n throw new Error('Flag \"--name\" must not be empty')\n }\n\n return trimmed\n }\n\n const value = await input({\n message: \"Project name\",\n default: \"my-project\",\n validate: inputValue => (inputValue.trim().length > 0 ? true : \"Name is required\"),\n })\n\n return value.trim()\n}\n\nasync function resolvePackageManager(\n packageManagerOption: string | undefined,\n available: PackageManagerName[],\n): Promise<PackageManagerName> {\n if (packageManagerOption) {\n if (!isSupportedPackageManagerName(packageManagerOption)) {\n throw new Error(`Unsupported package manager: \"${packageManagerOption}\"`)\n }\n\n const name = packageManagerOption\n if (!available.includes(name)) {\n throw new Error(`Package manager not found in PATH: \"${name}\"`)\n }\n\n return name\n }\n\n const preferredOrder: PackageManagerName[] = [\"pnpm\", \"yarn\", \"npm\"]\n const defaultValue = preferredOrder.find(value => available.includes(value)) ?? available[0]\n\n return await select({\n message: \"Package manager\",\n default: defaultValue,\n choices: available.map(value => ({ name: value, value })),\n })\n}\n\nfunction isSupportedPackageManagerName(value: string): value is PackageManagerName {\n return value === \"npm\" || value === \"pnpm\" || value === \"yarn\"\n}\n\nasync function detectAvailablePackageManagers(\n candidates: PackageManagerName[],\n): Promise<PackageManagerName[]> {\n const results: PackageManagerName[] = []\n\n for (const candidate of candidates) {\n const exists = await isExecutableInPath(candidate)\n if (exists) {\n results.push(candidate)\n }\n }\n\n return results\n}\n\nasync function isExecutableInPath(command: string): Promise<boolean> {\n const pathValue = process.env.PATH\n if (!pathValue) {\n return false\n }\n\n const parts = pathValue.split(\":\").filter(Boolean)\n for (const part of parts) {\n const candidate = resolve(part, command)\n try {\n await access(candidate)\n return true\n } catch {\n // ignore\n }\n }\n\n return false\n}\n\nasync function isEmptyDirectory(path: string): Promise<boolean> {\n try {\n const entries = await readdir(path)\n return entries.length === 0\n } catch {\n return true\n }\n}\n\nfunction resolveTemplatePath(): string {\n const here = fileURLToPath(new URL(import.meta.url))\n return resolve(here, \"..\", \"..\", \"assets\", \"template\")\n}\n","import { Command, Option } from \"clipanion\"\nimport {\n createPackage,\n findWorkspaceRoot,\n highstateConfigSchema,\n logger,\n scanWorkspacePackages,\n updateTsconfigReferences,\n} from \"../../shared\"\n\nexport class PackageCreateCommand extends Command {\n static paths = [[\"package\", \"create\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Creates a new package in the workspace.\",\n })\n\n name = Option.String({ required: true })\n type = Option.String(\"--type,-t\", {\n description: \"Package type (source, library, worker)\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packageType = highstateConfigSchema.shape.type.parse(this.type)\n\n await createPackage(workspaceRoot, this.name, packageType)\n\n // update tsconfig references\n const packages = await scanWorkspacePackages(workspaceRoot)\n await updateTsconfigReferences(workspaceRoot, packages)\n\n logger.info(`created package: @highstate/${this.name} (${packageType})`)\n }\n}\n","import { Command } from \"clipanion\"\nimport { Table } from \"console-table-printer\"\nimport { findWorkspaceRoot, logger, scanWorkspacePackages } from \"../../shared\"\n\nexport class PackageListCommand extends Command {\n static paths = [[\"package\", \"list\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Lists all packages in the workspace with their types.\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n if (packages.length === 0) {\n logger.info(\"no packages found in workspace\")\n return\n }\n\n const table = new Table({\n columns: [\n { name: \"name\", title: \"Name\" },\n { name: \"type\", title: \"Type\" },\n { name: \"path\", title: \"Path\" },\n ],\n })\n\n table.addRows(\n packages.map(pkg => ({\n name: pkg.name,\n type: pkg.type ?? \"unknown\",\n path: pkg.relativePath,\n })),\n )\n\n table.printTable()\n }\n}\n","import { rm } from \"node:fs/promises\"\nimport { Command, Option } from \"clipanion\"\nimport {\n findWorkspaceRoot,\n logger,\n scanWorkspacePackages,\n updateTsconfigReferences,\n} from \"../../shared\"\n\nexport class PackageRemoveCommand extends Command {\n static paths = [[\"package\", \"remove\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Removes a package from the workspace.\",\n })\n\n name = Option.String({ required: true })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n const targetPackage = packages.find(\n pkg =>\n pkg.name === this.name ||\n pkg.name === `@highstate/${this.name}` ||\n pkg.relativePath.endsWith(this.name),\n )\n\n if (!targetPackage) {\n logger.error(`package not found: ${this.name}`)\n process.exit(1)\n }\n\n // remove the package directory\n await rm(targetPackage.path, { recursive: true, force: true })\n\n // update tsconfig references\n const remainingPackages = await scanWorkspacePackages(workspaceRoot)\n await updateTsconfigReferences(workspaceRoot, remainingPackages)\n\n logger.info(`removed package: ${targetPackage.name}`)\n }\n}\n","import { Command } from \"clipanion\"\nimport { findWorkspaceRoot, scanWorkspacePackages, updateTsconfigReferences } from \"../../shared\"\n\nexport class PackageUpdateReferencesCommand extends Command {\n static paths = [[\"package\", \"update-references\"]]\n\n static usage = Command.Usage({\n category: \"Package\",\n description: \"Updates the root tsconfig.json with references to all packages in the workspace.\",\n })\n\n async execute(): Promise<void> {\n const workspaceRoot = await findWorkspaceRoot()\n const packages = await scanWorkspacePackages(workspaceRoot)\n\n await updateTsconfigReferences(workspaceRoot, packages, true)\n }\n}\n","import { readFile } from \"node:fs/promises\"\nimport { Command, Option } from \"clipanion\"\nimport { detectPackageManager } from \"nypm\"\nimport semver from \"semver\"\nimport {\n applyOverrides,\n buildOverrides,\n fetchManifest,\n getDependencyRange,\n getProjectPlatformVersion,\n logger,\n resolveVersionBundle,\n} from \"../shared\"\n\nexport class UpdateCommand extends Command {\n static paths = [[\"update\"]]\n\n static usage = Command.Usage({\n description: \"Updates version overrides in an existing Highstate project.\",\n })\n\n platformVersion = Option.String(\"--platform-version\", {\n description: \"The Highstate platform version to set.\",\n })\n\n stdlibVersion = Option.String(\"--stdlib-version\", {\n description: \"The Highstate standard library version to set.\",\n })\n\n platformOnly = Option.Boolean(\"--platform\", false, {\n description: \"Update only platform versions.\",\n })\n\n stdlibOnly = Option.Boolean(\"--stdlib\", false, {\n description: \"Update only standard library versions.\",\n })\n\n install = Option.Boolean(\"--install\", true, {\n description: \"Install dependencies after updating overrides.\",\n })\n\n async execute(): Promise<void> {\n const projectRoot = process.cwd()\n\n const packageManager = await resolveProjectPackageManager(projectRoot)\n\n if (this.platformOnly && this.stdlibOnly) {\n throw new Error('Flags \"--platform\" and \"--stdlib\" cannot be used together')\n }\n\n const updatePlatform = this.platformOnly || !this.stdlibOnly\n const updateStdlib = this.stdlibOnly || !this.platformOnly\n\n if (this.stdlibOnly) {\n const currentPlatformVersion = await getProjectPlatformVersion(projectRoot, {\n packageManager,\n })\n if (!currentPlatformVersion) {\n throw new Error('Current platform version is not set in overrides for \"@highstate/pulumi\"')\n }\n\n const targetStdlibVersion = (this.stdlibVersion ?? \"\").trim()\n if (targetStdlibVersion.length === 0) {\n throw new Error('Flag \"--stdlib-version\" must be provided when using \"--stdlib\"')\n }\n\n const stdlibManifest = await fetchManifest(\"@highstate/library\", targetStdlibVersion)\n const supportedPlatformRange = getDependencyRange(stdlibManifest, \"@highstate/pulumi\")\n if (!supportedPlatformRange) {\n throw new Error(\n `Unable to infer \"@highstate/pulumi\" version from \"@highstate/library@${targetStdlibVersion}\"`,\n )\n }\n\n const validPlatform = semver.valid(currentPlatformVersion)\n if (!validPlatform) {\n throw new Error(\n `Current platform version is not a valid semver \"${currentPlatformVersion}\"`,\n )\n }\n\n const ok = semver.satisfies(validPlatform, supportedPlatformRange, {\n includePrerelease: true,\n })\n if (!ok) {\n throw new Error(\n `Current platform version \"${currentPlatformVersion}\" does not satisfy requirement \"${supportedPlatformRange}\"`,\n )\n }\n }\n\n const bundle = await resolveVersionBundle({\n platformVersion: updatePlatform ? this.platformVersion : undefined,\n stdlibVersion: updateStdlib ? this.stdlibVersion : undefined,\n })\n\n const overrides = buildOverrides(bundle)\n await applyOverrides({\n projectRoot,\n packageManager,\n overrides,\n })\n\n logger.info(\n \"updated overrides: platform=%s stdlib=%s pulumi=%s\",\n bundle.platformVersion,\n bundle.stdlibVersion,\n bundle.pulumiVersion,\n )\n\n if (this.install) {\n const { installDependencies } = await import(\"nypm\")\n\n logger.info(\"installing dependencies using %s...\", packageManager)\n\n await installDependencies({\n cwd: projectRoot,\n packageManager,\n silent: false,\n })\n }\n\n logger.info(\"update completed successfully\")\n }\n}\n\nasync function resolveProjectPackageManager(projectRoot: string) {\n const detected = await detectPackageManager(projectRoot)\n if (!detected?.name) {\n throw new Error(\"Unable to detect package manager for this project\")\n }\n\n if (detected.name === \"bun\") {\n throw new Error('Package manager \"bun\" is not supported')\n }\n\n if (detected.name === \"deno\") {\n throw new Error('Package manager \"deno\" is not supported')\n }\n\n if (detected.name !== \"npm\" && detected.name !== \"pnpm\" && detected.name !== \"yarn\") {\n throw new Error(`Unsupported package manager: \"${detected.name}\"`)\n }\n\n await assertPackageJsonExists(projectRoot)\n\n return detected.name\n}\n\nasync function assertPackageJsonExists(projectRoot: string): Promise<void> {\n try {\n await readFile(`${projectRoot}/package.json`, \"utf8\")\n } catch {\n throw new Error(`File \"package.json\" not found in \"${projectRoot}\"`)\n }\n}\n"]}
|