@powerhousedao/shared 6.2.3-dev.16 → 6.2.3-dev.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["_AGENTS","#message","#input","#jsonParseError","#codeFrame","#getCodeFrame","#rawCodeFrame","#o","#m","#A","#d","#g","#y","#s","#i","#t","#a","#u","#l","#h","#b","#e","#x","#D","#F","#O","#p","#c","#_","#n","#L","#U","#w","#C","#S","#v","#r","#T","#I","#f","#B","#j","#N","#R","#E","#z","#W","#P","#M","#G","#H","#k","#V","#gitHosts","#protocols","#fill","URL","execFileCallback"],"sources":["../../clis/constants.ts","../../clis/file-system/get-config.ts","../../clis/args/common.ts","../../clis/args/access-token.ts","../../clis/args/connect.ts","../../processors/constants.ts","../../clis/args/generate.ts","../../clis/args/inspect.ts","../../clis/args/install.ts","../../clis/args/list.ts","../../clis/args/login.ts","../../clis/args/migrate.ts","../../clis/args/publish.ts","../../clis/args/registry.ts","../../clis/args/switchboard.ts","../../clis/args/uninstall.ts","../../clis/project-env.ts","../../clis/args/vetra.ts","../../clis/command-names.ts","../../clis/args/help.ts","../../clis/args/init.ts","../../clis/args/service.ts","../../clis/args/unpublish.ts","../../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../../node_modules/.pnpm/js-tokens@4.0.0/node_modules/js-tokens/index.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/identifier.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/keyword.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/index.js","../../../../node_modules/.pnpm/@babel+code-frame@7.29.0/node_modules/@babel/code-frame/lib/index.js","../../../../node_modules/.pnpm/index-to-position@1.2.0/node_modules/index-to-position/index.js","../../../../node_modules/.pnpm/parse-json@8.3.0/node_modules/parse-json/index.js","../../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/index.json","../../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/deprecated.json","../../../../node_modules/.pnpm/spdx-exceptions@2.5.0/node_modules/spdx-exceptions/index.json","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/scan.js","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/parse.js","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/index.js","../../../../node_modules/.pnpm/spdx-correct@3.2.0/node_modules/spdx-correct/index.js","../../../../node_modules/.pnpm/validate-npm-package-license@3.0.4/node_modules/validate-npm-package-license/index.js","../../../../node_modules/.pnpm/lru-cache@11.2.7/node_modules/lru-cache/dist/commonjs/index.min.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/hosts.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/parse-url.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/from-url.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/index.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/extract_description.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/typos.json","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/fixer.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/warning_messages.json","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/make_warning.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/normalize.js","../../../../node_modules/.pnpm/unicorn-magic@0.4.0/node_modules/unicorn-magic/node.js","../../../../node_modules/.pnpm/read-pkg@10.1.0/node_modules/read-pkg/index.js","../../clis/file-system/spawn-async.ts","../../clis/file-system/dependencies.ts","../../clis/file-system/directory-exists.ts","../../clis/file-system/file-exists.ts","../../clis/file-system/package-json.ts","../../clis/file-system/projects.ts","../../clis/file-system/run-cmd.ts","../../clis/file-system/version-info.ts","../../clis/file-system/write-file-ensuring-dir.ts","../../clis/services/telemetry.ts","../../constants.ts","../../clis/services/use-local.ts","../../connect/schema-fragments.ts","../../clis/source-config-schema.ts","../../clis/utils.ts"],"sourcesContent":["import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { Manifest } from \"../document-model/types.js\";\nimport type { PowerhouseConfig } from \"./types.js\";\n\nexport const SERVICE_ACTIONS = [\n \"start\",\n \"stop\",\n \"status\",\n \"setup\",\n \"restart\",\n] as const;\n\nexport const SECONDS_IN_DAY = 24 * 60 * 60;\nexport const DEFAULT_EXPIRY_DAYS = 7;\nexport const DEFAULT_EXPIRY_SECONDS = DEFAULT_EXPIRY_DAYS * SECONDS_IN_DAY;\n\nexport const DRIVES_PRESERVE_STRATEGIES = [\n \"preserve-all\",\n \"preserve-by-url-and-detach\",\n] as const;\n\nexport const LOG_LEVELS = [\n \"debug\",\n \"info\",\n \"warn\",\n \"error\",\n \"verbose\",\n] as const;\n\nexport const DEFAULT_TIMEOUT = 300 as const;\n\nexport const DEFAULT_CONNECT_STUDIO_PORT = 3000 as const;\n\nexport const DEFAULT_VETRA_CONNECT_PORT = 3001 as const;\n\nexport const DEFAULT_CONNECT_PREVIEW_PORT = 4173 as const;\n\nexport const DEFAULT_CONNECT_OUTDIR = \".ph/connect-build/dist/\" as const;\n\nexport const DEFAULT_RENOWN_URL = \"https://www.renown.id\" as const;\n\nexport const DEFAULT_REGISTRY_URL = \"https://registry.vetra.io\" as const;\n\nexport const DEFAULT_SWITCHBOARD_PORT = 4001 as const;\n\n// Per-project dev-server port bands. `ph init` assigns each project a port\n// triple derived from its name, so two projects never collide and an agent's\n// MCP URL can be baked into .mcp.json before a session starts.\n//\n// Two hard constraints picked these bands, both below 10000:\n//\n// 1. Below the OS ephemeral range. Linux allocates outbound source ports\n// from 32768-60999 (`/proc/sys/net/ipv4/ip_local_port_range`); macOS and\n// Windows start at 49152. A listener parked in that window can lose a\n// race to a transient outbound socket, which would surface as a\n// `--strictPort` failure blaming a project conflict that does not exist.\n// 2. Below 10000, which is where ph-clint starts. ph-clint derives its own\n// per-CLI ports by hashing into 10000-59900, so staying under 10000\n// keeps the two schemes from ever contending.\n//\n// Within those limits the blocks were chosen by measuring which ports the\n// Powerhouse repos actually reference: 2000-2999 has none, 7000-7999 has one,\n// 6000-6999 has five. See PROJECT_PORT_DENYLIST in project-ports.ts for the\n// individual ports skipped inside them.\nexport const PROJECT_PORT_BAND_SIZE = 1000 as const;\nexport const PROJECT_PORT_BAND_SWITCHBOARD = 7000 as const;\nexport const PROJECT_PORT_BAND_STUDIO = 6000 as const;\nexport const PROJECT_PORT_BAND_VETRA_CONNECT = 2000 as const;\n\nexport const DEFAULT_VETRA_DRIVE_ID = \"vetra\" as const;\n\nexport const MINIMUM_NODE_VERSION = \"24.0.0\" as const;\nexport const PH_BIN = \"ph-cli-legacy\" as const;\nexport const POWERHOUSE_CONFIG_FILE = \"powerhouse.config.json\" as const;\nexport const PH_GLOBAL_DIR_NAME = \".ph\" as const;\n// Keep PH_GLOBAL_PROJECT_NAME for backwards compatibility\nexport const PH_GLOBAL_PROJECT_NAME = PH_GLOBAL_DIR_NAME;\n\nexport const HOME_DIR = homedir();\n\nexport const POWERHOUSE_GLOBAL_DIR = join(HOME_DIR, PH_GLOBAL_DIR_NAME);\n\n// Workspace packages that go in peerDependencies of every generated project.\nexport const VERSIONED_PEER_DEPENDENCIES = [\n \"document-model\",\n \"@powerhousedao/reactor-browser\",\n];\n\ntype PeerSpec = { peer: string; dev: string };\n\nexport const REACTOR_API_PACKAGE = \"@powerhousedao/reactor-api\";\nexport const ANALYTICS_ENGINE_CORE_PACKAGE =\n \"@powerhousedao/analytics-engine-core\";\nexport const GRAPHQL_PACKAGE = \"graphql\";\nexport const GRAPHQL_TAG_PACKAGE = \"graphql-tag\";\nexport const PIECES_FRAMEWORK_PACKAGE = \"@powerhousedao/pieces-framework\";\n\n// External peerDependencies of every generated project.\n// `peer` is the consumer-facing range; `dev` is the exact build-tested pin.\n// graphql / graphql-tag are always-on because the workspace packages pulled\n// in by every `ph init` project (codegen, reactor-api, reactor-browser,\n// vetra-packages) declare them as peers — even projects without subgraphs\n// need them in scope so pnpm hoists a single graphql instance.\nexport const PEER_EXTERNAL_DEPENDENCIES = {\n [GRAPHQL_PACKAGE]: { peer: \"^16\", dev: \"16.12.0\" },\n [GRAPHQL_TAG_PACKAGE]: { peer: \"^2\", dev: \"2.12.6\" },\n react: { peer: \"^19\", dev: \"19.2.6\" },\n \"react-dom\": { peer: \"^19\", dev: \"19.2.6\" },\n zod: { peer: \"^4\", dev: \"4.3.6\" },\n} as const satisfies Record<string, PeerSpec>;\n\n// Per-feature deps added dynamically by codegen when required. `devVersioned`\n// is for a workspace package the build inlines, which no consumer provides.\nexport const FEATURE_DEPENDENCIES = {\n analyticsProcessor: {\n peerVersioned: [ANALYTICS_ENGINE_CORE_PACKAGE],\n peerExternal: {},\n devVersioned: [],\n },\n // Each piece is bundled whole (build-pieces.mts), framework included, so the\n // framework is only ever needed to compile the piece's own source.\n piece: {\n peerVersioned: [],\n peerExternal: {},\n devVersioned: [PIECES_FRAMEWORK_PACKAGE],\n },\n} as const satisfies Record<\n string,\n {\n peerVersioned: readonly string[];\n peerExternal: Record<string, PeerSpec>;\n devVersioned: readonly string[];\n }\n>;\n\nexport const VERSIONED_DEPENDENCIES = [\n ...VERSIONED_PEER_DEPENDENCIES,\n ...FEATURE_DEPENDENCIES.analyticsProcessor.peerVersioned,\n];\n\n// Transitive dependencies whose postinstall scripts the generated project\n// trusts. Mirrors the `allowBuilds` map in the boilerplate's\n// pnpm-workspace.yaml and is also passed as `--allow-build` flags to\n// `pnpm dlx @powerhousedao/ph-cli init` so pnpm 11's strict-dep-builds\n// default doesn't prompt during the outer dlx download.\nexport const BOILERPLATE_ALLOWED_BUILDS = [\n \"@apollo/protobufjs\",\n \"@datadog/pprof\",\n \"@parcel/watcher\",\n \"@reown/appkit\",\n \"bufferutil\",\n \"esbuild\",\n \"keccak\",\n \"protobufjs\",\n \"utf-8-validate\",\n] as const;\n\n// Single-version pins the boilerplate enforces on generated projects,\n// avoiding duplicates from coexisting version ranges. Rendered as pnpm\n// `overrides` (pnpm-workspace.yaml) and as yarn v1 `resolutions`\n// (package.json). Generated-project only — never change the monorepo\n// catalog for this (a re-resolution there pulls a tsc-crashing TS6 beta).\nexport const BOILERPLATE_DEPENDENCY_OVERRIDES = {\n \"date-fns\": \"4.3.0\",\n vite: \"8.0.14\",\n rolldown: \"1.0.2\",\n} as const satisfies Record<string, string>;\n\nexport const VERSIONED_DEV_DEPENDENCIES = [\n \"@powerhousedao/ph-cli\",\n \"@powerhousedao/reactor\",\n \"@powerhousedao/shared\",\n \"@powerhousedao/connect\",\n \"@powerhousedao/design-system\",\n];\n\nexport const packageJsonExports = {\n \".\": {\n types: \"./dist/types/index.d.ts\",\n browser: \"./dist/browser/index.js\",\n node: \"./dist/node/index.mjs\",\n },\n \"./reactor\": {\n types: \"./dist/types/reactor/index.d.ts\",\n browser: \"./dist/browser/reactor/index.js\",\n },\n \"./document-models\": {\n types: \"./dist/types/document-models/index.d.ts\",\n browser: \"./dist/browser/document-models/index.js\",\n node: \"./dist/node/document-models/index.mjs\",\n },\n \"./document-models/*\": {\n types: \"./dist/types/document-models/*/index.d.ts\",\n browser: \"./dist/browser/document-models/*/index.js\",\n node: \"./dist/node/document-models/*/index.mjs\",\n },\n \"./editors\": {\n types: \"./dist/types/editors/index.d.ts\",\n browser: \"./dist/browser/editors/index.js\",\n node: \"./dist/node/editors/index.mjs\",\n },\n \"./editors/*\": {\n types: \"./dist/types/editors/*/editor.d.ts\",\n browser: \"./dist/browser/editors/*/editor.js\",\n node: \"./dist/node/editors/*/editor.mjs\",\n },\n \"./subgraphs\": {\n types: \"./dist/types/subgraphs/index.d.ts\",\n browser: \"./dist/browser/subgraphs/index.js\",\n node: \"./dist/node/subgraphs/index.mjs\",\n },\n \"./processors\": {\n types: \"./dist/types/processors/index.d.ts\",\n browser: \"./dist/browser/processors/index.js\",\n node: \"./dist/node/processors/index.mjs\",\n },\n // Node only, as the build is: a piece is loaded by a host process, never by\n // the browser. Without these a package can build a piece and still fail the\n // `packageName/pieces` import a host resolves it through.\n \"./pieces\": {\n types: \"./dist/types/pieces/index.d.ts\",\n node: \"./dist/node/pieces/index.mjs\",\n },\n \"./pieces/*\": {\n types: \"./dist/types/pieces/*/index.d.ts\",\n node: \"./dist/node/pieces/*/index.mjs\",\n },\n \"./manifest\": \"./dist/powerhouse.manifest.json\",\n \"./style.css\": \"./dist/style.css\",\n} as const;\n\nexport const packageScripts = {\n \"test:watch\": \"vitest\",\n lint: \"oxlint --type-aware --type-check\",\n \"lint:fix\": \"oxlint --type-aware --type-check --fix\",\n format: \"oxfmt\",\n \"format:check\": \"oxfmt --check\",\n tsc: \"tsc\",\n \"tsc:watch\": \"tsc --watch\",\n generate: \"ph-cli generate\",\n connect: \"ph-cli connect\",\n build: \"ph-cli build\",\n reactor: \"ph-cli reactor\",\n service: \"ph-cli service\",\n vetra: \"ph-cli vetra\",\n \"service-startup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-startup.sh\",\n \"service-unstartup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-unstartup.sh\",\n} as const;\n\nexport const externalDependencies = {} as const;\n\n// eslint/prettier devDependencies present in projects scaffolded before the oxc migration.\n// Stripped from package.json during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_DEPENDENCIES = [\n \"@eslint/js\",\n \"eslint\",\n \"eslint-config-prettier\",\n \"eslint-plugin-prettier\",\n \"eslint-plugin-react\",\n \"eslint-plugin-react-hooks\",\n \"globals\",\n \"prettier\",\n \"typescript-eslint\",\n] as const;\n\n// Legacy lint/format config files written by eslint/prettier boilerplate.\n// Removed from the project root during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_FILES = [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \".eslintrc\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.json\",\n \".eslintrc.yml\",\n \".eslintrc.yaml\",\n \".eslintignore\",\n \".prettierrc\",\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.json\",\n \".prettierrc.yml\",\n \".prettierrc.yaml\",\n \"prettier.config.js\",\n \"prettier.config.cjs\",\n \"prettier.config.mjs\",\n \".prettierignore\",\n] as const;\n\nexport const externalDevDependencies = {\n \"@electric-sql/pglite\": \"0.3.15\",\n \"@electric-sql/pglite-tools\": \"0.2.20\",\n \"@powerhousedao/document-engineering\": \"1.40.5\",\n \"@tailwindcss/cli\": \"^4.1.18\",\n \"@tailwindcss/vite\": \"^4.1.18\",\n \"@types/node\": \"^24.9.2\",\n \"@types/react\": \"^19.2.3\",\n \"@types/react-dom\": \"^19.2.3\",\n \"@vitejs/plugin-react\": \"^6.0.1\",\n \"@vitest/coverage-v8\": \"4.1.1\",\n oxfmt: \"0.55.0\",\n oxlint: \"1.70.0\",\n \"oxlint-tsgolint\": \"0.23.0\",\n tailwindcss: \"^4.1.16\",\n typescript: \"^5.9.3\",\n vite: \"^8.0.10\",\n \"vite-tsconfig-paths\": \"6.1.1\",\n vitest: \"4.1.1\",\n} as const;\n\nexport const defaultManifest: Manifest = {\n name: \"\",\n description: \"\",\n category: \"\",\n publisher: {\n name: \"\",\n url: \"\",\n },\n documentModels: [],\n editors: [],\n apps: [],\n subgraphs: [],\n processors: [],\n};\n\nconst DEFAULT_DOCUMENT_MODELS_DIR = \"./document-models\";\nconst DEFAULT_EDITORS_DIR = \"./editors\";\nconst DEFAULT_PROCESSORS_DIR = \"./processors\";\nconst DEFAULT_SUBGRAPHS_DIR = \"./subgraphs\";\nconst DEFAULT_IMPORT_SCRIPTS_DIR = \"./scripts\";\nconst DEFAULT_SKIP_FORMAT = false;\nconst DEFAULT_LOG_LEVEL = \"info\";\n\nexport const DEFAULT_CONFIG: PowerhouseConfig = {\n documentModelsDir: DEFAULT_DOCUMENT_MODELS_DIR,\n editorsDir: DEFAULT_EDITORS_DIR,\n processorsDir: DEFAULT_PROCESSORS_DIR,\n subgraphsDir: DEFAULT_SUBGRAPHS_DIR,\n importScriptsDir: DEFAULT_IMPORT_SCRIPTS_DIR,\n skipFormat: DEFAULT_SKIP_FORMAT,\n logLevel: DEFAULT_LOG_LEVEL,\n auth: {\n enabled: false,\n admins: [],\n },\n};\n","import { readFileSync } from \"node:fs\";\nimport { DEFAULT_CONFIG } from \"../constants.js\";\nimport type { PowerhouseConfig } from \"../types.js\";\n\nexport function getConfig(path = \"./powerhouse.config.json\") {\n let config: PowerhouseConfig = { ...DEFAULT_CONFIG };\n try {\n const configStr = readFileSync(path, \"utf-8\");\n const userConfig = JSON.parse(configStr) as PowerhouseConfig;\n config = { ...config, ...userConfig };\n } catch {\n // console.warn(\"No powerhouse.config.json found, using defaults\");\n }\n\n return config;\n}\n","import {\n array,\n boolean,\n command,\n flag,\n multioption,\n number,\n oneOf,\n option,\n optional,\n string,\n} from \"cmd-ts\";\n// Sub-path: avoids pulling the package-manager-detector runtime here,\n// which `oneOf(AGENTS)` below would force at module load.\nimport type { Agent } from \"package-manager-detector\";\nimport { AGENTS as _AGENTS } from \"package-manager-detector/constants\";\nimport {\n DEFAULT_TIMEOUT,\n DRIVES_PRESERVE_STRATEGIES,\n LOG_LEVELS,\n} from \"../constants.js\";\nimport { getConfig } from \"../file-system/get-config.js\";\n\nexport const AGENTS: Agent[] = _AGENTS;\n\nexport const debugArgs = {\n debug: flag({\n type: optional(boolean),\n long: \"debug\",\n description: \"Log arguments passed to this command\",\n }),\n};\n\nexport const buildArgs = {\n outDir: option({\n type: string,\n long: \"out-dir\",\n description: \"Where to output the bundled code\",\n defaultValue: () => \"dist\" as const,\n defaultValueIsSerializable: true,\n }),\n noSharedDeps: flag({\n type: boolean,\n long: \"no-shared-deps\",\n description:\n \"Bundle the shared dependency set instead of externalizing it (default: externalize)\",\n defaultValue: () => false as const,\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n\nexport const packageManagerArgs = {\n packageManager: option({\n type: optional(oneOf(AGENTS)),\n long: \"package-manager\",\n short: \"p\",\n description:\n \"Specify the package manager to use for your project. Can be one of: `npm`, `pnpm`, `yarn`, or `bun`. Defaults to your environment package manager.\",\n }),\n npm: flag({\n type: optional(boolean),\n long: \"npm\",\n description: \"Use 'npm' as package manager\",\n }),\n pnpm: flag({\n type: optional(boolean),\n long: \"pnpm\",\n description: \"Use 'pnpm' as package manager\",\n }),\n yarn: flag({\n type: optional(boolean),\n long: \"yarn\",\n description: \"Use 'yarn' as package manager\",\n }),\n bun: flag({\n type: optional(boolean),\n long: \"bun\",\n description: \"Use 'bun' as package manager\",\n }),\n};\nexport const getPackageManagerCommand = command({\n name: \"get-package-manager\",\n args: packageManagerArgs,\n handler: (args) => args,\n});\nexport const packages = option({\n type: optional(string),\n long: \"packages\",\n description: \"Comma-separated list of package names to load\",\n env: \"PH_PACKAGES\" as const,\n});\n\nexport const localPackage = option({\n type: optional(string),\n long: \"local-package\",\n description: \"Path to local package to load during development\",\n env: \"PH_LOCAL_PACKAGE\" as const,\n});\n\nexport const disableLocalPackages = flag({\n type: boolean,\n long: \"ignore-local\",\n description: \"Do not load local packages from this project\",\n defaultValue: () => false,\n});\n\nexport const httpsKeyFile = option({\n type: optional(string),\n long: \"https-key-file\",\n description: \"path to the ssl key file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.keyPath;\n },\n});\n\nexport const httpsCertFile = option({\n type: optional(string),\n long: \"https-cert-file\",\n description: \"path to the ssl cert file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.certPath;\n },\n});\n\nexport const https = flag({\n type: optional(boolean),\n long: \"https\",\n description: \"Use https\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (typeof https === \"boolean\") return https;\n return undefined;\n },\n});\n\nexport const vetraSwitchboardArgs = {\n https,\n httpsKeyFile,\n httpsCertFile,\n dev: flag({\n type: optional(boolean),\n long: \"dev\",\n description: \"enable development mode to load local packages\",\n }),\n remoteDrives: multioption({\n type: array(string),\n long: \"remote-drives\",\n description: \"Specify remote drive URLs to use\",\n defaultValue: () => [],\n }),\n disableLocalPackages,\n ...debugArgs,\n};\n\nexport const defaultDrivesUrl = option({\n type: optional(string),\n long: \"default-drives-url\",\n description: \"Comma-separated drive URLs to use as Connect's default drives.\",\n defaultValue: () => \"\",\n});\n\nexport const logLevel = option({\n type: oneOf(LOG_LEVELS),\n long: \"log-level\",\n description: \"Log level for the application\",\n defaultValue: () => \"info\" as const,\n defaultValueIsSerializable: true,\n env: \"PH_CONNECT_LOG_LEVEL\" as const,\n});\n\nexport const connectBasePath = option({\n long: \"base\",\n type: string,\n description: \"Base path for the app\",\n defaultValue: () => \"/\",\n});\n\nexport const renownNamespace = option({\n type: optional(string),\n long: \"renown-namespace\",\n description:\n \"Renown localStorage namespace; share it across Connects to share login.\",\n});\n\nexport const renownSwitchboardUrl = option({\n type: optional(string),\n long: \"renown-switchboard-url\",\n description:\n \"Override connect.renown.switchboardUrl. When set, enables in-page Renown sign-in.\",\n});\n\nexport const drivesPreserveStrategy = option({\n type: oneOf(DRIVES_PRESERVE_STRATEGIES),\n long: \"drive-preserve-strategy\",\n description: \"The preservation strategy to use on default drives\",\n defaultValue: () => \"preserve-by-url-and-detach\" as const,\n defaultValueIsSerializable: true,\n});\n\nexport const force = flag({\n type: optional(boolean),\n long: \"force\",\n description:\n \"Force dep pre-optimization regardless of whether deps have changed.\",\n});\n\nexport const commonArgs = {\n connectBasePath,\n logLevel,\n packages,\n localPackage,\n disableLocalPackages,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n force,\n ...debugArgs,\n};\n\nexport const commonServerArgs = {\n host: option({\n type: optional(string),\n long: \"host\",\n description:\n \"Expose the server to the network. Pass an IP (e.g. 0.0.0.0) to bind to a specific address.\",\n }),\n open: flag({\n type: optional(boolean),\n long: \"open\",\n description: \"Open browser on startup\",\n }),\n cors: flag({\n type: optional(boolean),\n long: \"cors\",\n description: \"Enable CORS\",\n }),\n strictPort: flag({\n type: optional(boolean),\n long: \"strictPort\",\n description: \"Exit if specified port is already in use\",\n }),\n printUrls: flag({\n type: boolean,\n long: \"print-urls\",\n description: \"Print server urls\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n bindCLIShortcuts: flag({\n type: boolean,\n long: \"bind-cli-shortcuts\",\n description: \"Bind CLI shortcuts\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n watchTimeout: option({\n type: number,\n long: \"watch-timeout\",\n description: \"Amount of time to wait before a file is considered changed\",\n defaultValue: () => DEFAULT_TIMEOUT,\n defaultValueIsSerializable: true,\n }),\n};\n","import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_EXPIRY_DAYS } from \"../constants.js\";\n\nexport const accessTokenArgs = {\n expiry: option({\n long: \"expiry\",\n type: optional(string),\n description: `Token expiry duration. Supports: \"7d\" (days), \"24h\" (hours), \"3600\" or \"3600s\" (seconds)`,\n defaultValue: () => `${DEFAULT_EXPIRY_DAYS}d` as const,\n defaultValueIsSerializable: true,\n }),\n audience: option({\n long: \"audience\",\n type: optional(string),\n description: \"Target audience URL for the token\",\n }),\n ...debugArgs,\n};\n","import type { Type } from \"cmd-ts\";\nimport {\n boolean,\n flag,\n number,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport {\n DEFAULT_CONNECT_OUTDIR,\n DEFAULT_CONNECT_PREVIEW_PORT,\n DEFAULT_CONNECT_STUDIO_PORT,\n} from \"../constants.js\";\nimport {\n commonArgs,\n commonServerArgs,\n connectBasePath,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n logLevel,\n renownNamespace,\n renownSwitchboardUrl,\n} from \"./common.js\";\n\n// cmd-ts's built-in `boolean` is intended for `flag()` (presence/absence). With\n// `option()` we need to parse the next argv as a value, but cmd-ts's `boolean`\n// does not coerce the string. This custom Type does.\nconst cliBoolean: Type<string, boolean> = {\n from: (input) => {\n const v = input.toLowerCase();\n if (v === \"true\") return Promise.resolve(true);\n if (v === \"false\") return Promise.resolve(false);\n return Promise.reject(\n new Error(\n `Expected 'true' or 'false' (case-insensitive), got '${input}'.`,\n ),\n );\n },\n description: \"true | false\",\n};\n\nexport const connectStudioArgs = {\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to run the dev server on.\",\n defaultValue: () => DEFAULT_CONNECT_STUDIO_PORT,\n defaultValueIsSerializable: true,\n }),\n renownNamespace,\n ...commonArgs,\n ...commonServerArgs,\n};\n\n// Runtime-config override flags. Each is optional with no default — undefined\n// means \"user did not pass this flag\", so runConnectBuild can include only\n// explicitly-set values in `cliConnectOverride` and avoid clobbering source\n// `powerhouse.config.json` values when no override was intended.\n//\n// These flags occupy the top of the precedence ladder for the runtime config\n// emitted into `dist/powerhouse.config.json`:\n//\n// DEFAULT_CONNECT_CONFIG < source connect.* < --json < individual --flag\n//\n// `--json` accepts a partial `connect.*` blob (e.g. `{\"renown\":{\"url\":\"...\"}}`).\n// Individual flags merge on top of `--json` inside the same CLI layer, so they\n// win on collision. Env vars are NOT part of this build-time merge;\n// PH_CONNECT_CONFIG_JSON is applied to the dist file at container start by\n// the Docker entrypoint (operator-wins: concrete values override the baked\n// file, null/omitted keep it; connect.app.basePath excluded).\nconst connectRuntimeOverrideArgs = {\n json: option({\n type: optional(string),\n long: \"json\",\n description:\n 'Inline JSON override for the runtime connect.* block, e.g. \\'{\"renown\":{\"url\":\"...\"}}\\'. Validated against the runtime schema; deep-merged on top of env seeds and source powerhouse.config.json. Individual --flag values beat --json on collision.',\n }),\n renownUrl: option({\n type: optional(string),\n long: \"renown-url\",\n description: \"Override connect.renown.url.\",\n }),\n renownNetworkId: option({\n type: optional(string),\n long: \"renown-network-id\",\n description: \"Override connect.renown.networkId.\",\n }),\n renownChainId: option({\n type: optional(number),\n long: \"renown-chain-id\",\n description: \"Override connect.renown.chainId.\",\n }),\n renownNamespace,\n renownSwitchboardUrl,\n allowAddDrive: option({\n type: optional(cliBoolean),\n long: \"allow-add-drive\",\n description:\n \"Override connect.drives.allowAddDrive (top-level add-drive toggle).\",\n }),\n externalPackages: option({\n type: optional(cliBoolean),\n long: \"external-packages\",\n description: \"Override connect.packages.externalEnabled.\",\n }),\n workflows: option({\n type: optional(cliBoolean),\n long: \"workflows\",\n description:\n \"Override connect.app.workflowsEnabled (load the @powerhousedao/workflow package: workflow + connection documents, their editors and Workflow Studio).\",\n }),\n remoteDrivesEnabled: option({\n type: optional(cliBoolean),\n long: \"remote-drives-enabled\",\n description:\n \"Override connect.drives.sections.remote.enabled (the unified cloud+public section).\",\n }),\n remoteDrivesAllowAdd: option({\n type: optional(cliBoolean),\n long: \"remote-drives-allow-add\",\n description: \"Override connect.drives.sections.remote.allowAdd.\",\n }),\n remoteDrivesAllowDelete: option({\n type: optional(cliBoolean),\n long: \"remote-drives-allow-delete\",\n description: \"Override connect.drives.sections.remote.allowDelete.\",\n }),\n localDrivesEnabled: option({\n type: optional(cliBoolean),\n long: \"local-drives-enabled\",\n description: \"Override connect.drives.sections.local.enabled.\",\n }),\n localDrivesAllowAdd: option({\n type: optional(cliBoolean),\n long: \"local-drives-allow-add\",\n description: \"Override connect.drives.sections.local.allowAdd.\",\n }),\n localDrivesAllowDelete: option({\n type: optional(cliBoolean),\n long: \"local-drives-allow-delete\",\n description: \"Override connect.drives.sections.local.allowDelete.\",\n }),\n packagesRegistry: option({\n type: optional(string),\n long: \"packages-registry\",\n description: \"Override the top-level packageRegistryUrl.\",\n }),\n appName: option({\n type: optional(string),\n long: \"app-name\",\n description: \"Override connect.branding.appName.\",\n }),\n homeBackground: option({\n type: optional(string),\n long: \"home-background\",\n description:\n 'Override connect.branding.homeBackground. URL or path to an image; pass an empty string (\"\") to reset to the bundled default.',\n }),\n sentryDsn: option({\n type: optional(string),\n long: \"sentry-dsn\",\n description:\n 'Override connect.sentry.dsn (Sentry DSN URL). Pass an empty string (\"\") to set null and disable Sentry.',\n }),\n sentryEnv: option({\n type: optional(string),\n long: \"sentry-env\",\n description: \"Override connect.sentry.env (Sentry environment label).\",\n }),\n sentryTracingEnabled: option({\n type: optional(cliBoolean),\n long: \"sentry-tracing-enabled\",\n description:\n \"Override connect.sentry.tracing (Sentry performance tracing).\",\n }),\n};\n\n// Positional pair shared by `ph connect build` and `ph connect config`. Both\n// commands accept `<key> <value>` to set a single runtime-config field; `config`\n// additionally accepts `<key>` alone for read-mode (`build` rejects the\n// 1-positional case because it has no read semantics). Both are optional in the\n// parser; the handler enforces the per-command shape.\nconst connectPositionalArgs = {\n keyPositional: positional({\n type: optional(string),\n displayName: \"key\",\n description:\n \"Dotted path inside the runtime config (e.g. connect.renown.url). Pair with <value> to set; pass alone to `ph connect config` to read.\",\n }),\n valuePositional: positional({\n type: optional(string),\n displayName: \"value\",\n description:\n \"Value to set at <key>. Coerced against the runtime schema (string, bool, number, enum). Arrays and objects require --json instead.\",\n }),\n};\n\nexport const connectBuildArgs = {\n outDir: option({\n type: string,\n long: \"outDir\",\n description: \"Output directory\",\n defaultValue: () => DEFAULT_CONNECT_OUTDIR,\n defaultValueIsSerializable: true,\n }),\n ...connectRuntimeOverrideArgs,\n ...connectPositionalArgs,\n dynamicBase: flag({\n type: optional(boolean),\n long: \"dynamic-base\",\n description:\n \"Build one bundle that serves under any subpath; base resolved at serve time from a runtime global. Overrides --base.\",\n }),\n favicon: option({\n type: optional(string),\n long: \"favicon\",\n description:\n \"Path to a favicon file (e.g. .ico) to bundle in place of the default Connect icon. Emitted as icon.ico; resolved relative to the build cwd.\",\n }),\n ...commonArgs,\n};\n\nexport const connectPreviewArgs = {\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to run the preview server on.\",\n defaultValue: () => DEFAULT_CONNECT_PREVIEW_PORT,\n defaultValueIsSerializable: true,\n }),\n outDir: option({\n type: string,\n long: \"outDir\",\n description: \"Output directory\",\n defaultValue: () => DEFAULT_CONNECT_OUTDIR,\n defaultValueIsSerializable: true,\n }),\n ...commonArgs,\n ...commonServerArgs,\n};\n\n// `ph connect config` — read, set, or list the runtime config under the\n// `connect.*` block of the dist `powerhouse.config.json`.\n//\n// Mode matrix (exactly one mode per invocation; mutex enforced in\n// `runConnectConfig`):\n//\n// ph connect config → list (print effective merged config)\n// ph connect config <key> → get one value at the dotted key (positional)\n// ph connect config --get <dotted.path> → same as positional <key> (kept for backward compat)\n// ph connect config <key> <value> → set + dual-write to source + dist (positional)\n// ph connect config --<field> <value> → set + dual-write via per-field flag\n// ph connect config --json '{\"…\":\"…\"}' → bulk set + dual-write\n//\n// The 16 field flags below come from `connectRuntimeOverrideArgs`, so\n// `config` and `build` share an identical surface for runtime fields. The 4\n// flags imported individually from `common.ts` (`connectBasePath` /\n// `logLevel` / `defaultDrivesUrl` / `drivesPreserveStrategy`) extend that to\n// 20-flag coverage. The positional `<key>`/`<value>` pair is also shared with\n// `ph connect build` so both commands accept the same set-mode grammar.\n// `--dist-dir` lets Docker / non-default deployments point at a custom dist\n// location; falls back to PH_CONNECT_OUTDIR env, then to the standard\n// `.ph/connect-build/dist/` path.\n//\n// NOTE: the 4 commonArgs flags have built-in cmd-ts defaults\n// (e.g. logLevel=\"info\"), so always parse as defined. The service detects\n// \"user explicitly passed this flag\" via process.argv inspection — see\n// `clis/ph-cli/src/utils/cli-connect-override.ts:wasFlagExplicitlyPassed`.\nexport const connectConfigArgs = {\n get: option({\n type: optional(string),\n long: \"get\",\n description:\n 'Dotted path inside connect.* (e.g. \"connect.renown.url\") to read the effective value. Mutually exclusive with the set modes. Equivalent to `ph connect config <key>` (positional).',\n }),\n distDir: option({\n type: optional(string),\n long: \"dist-dir\",\n description:\n \"Path to the directory containing the dist powerhouse.config.json. Defaults to the PH_CONNECT_OUTDIR env or `.ph/connect-build/dist/`.\",\n }),\n ...connectRuntimeOverrideArgs,\n ...connectPositionalArgs,\n connectBasePath,\n logLevel,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n};\n\nexport const connectArgs = {\n ...connectStudioArgs,\n ...connectBuildArgs,\n ...connectPreviewArgs,\n ...connectConfigArgs,\n};\n","export const PROCESSOR_APPS = [\"connect\", \"switchboard\"] as const;\nexport const DEFAULT_RELATIONAL_PROCESSOR_DB_NAME = \"relational-db\";\nexport const DEFAULT_ANALYTICS_PROCESSOR_DB_NAME = \"analytics-db\";\n","import type { Type } from \"cmd-ts\";\nimport {\n array,\n boolean,\n flag,\n multioption,\n oneOf,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport { PROCESSOR_APPS } from \"processors\";\nimport { debugArgs } from \"./common.js\";\n\nconst ProcessorAppType: Type<string[], (\"connect\" | \"switchboard\")[]> = {\n from(processorApps) {\n if (processorApps.length === 0) {\n throw new Error(\n `No arguments provided for processor apps. Must be \"connect\" and/or \"switchboard\"`,\n );\n }\n if (processorApps.length > 2) {\n throw new Error(\n `Too many arguments provided for processor apps. Must be \"connect\" and/or \"switchboard\"`,\n );\n }\n const allowed = new Set(PROCESSOR_APPS);\n if (\n !processorApps.every((p) => allowed.has(p as \"connect\" | \"switchboard\"))\n ) {\n throw new Error(\n `Processor apps can only be \"connect\" and/or \"switchboard\".`,\n );\n }\n return Promise.resolve(processorApps as (\"connect\" | \"switchboard\")[]);\n },\n};\n\nexport const generateArgs = {\n documentModelFilePositional: positional({\n type: optional(string),\n displayName: \"document model file path\",\n description: \"Path to the document model file.\",\n }),\n documentModelFileOption: option({\n type: optional(string),\n long: \"file\",\n description: \"Path to the document model file.\",\n }),\n editorName: option({\n type: optional(string),\n long: \"editor\",\n description: \"Editor name.\",\n }),\n editorId: option({\n type: optional(string),\n long: \"editor-id\",\n description: \"Editor ID\",\n }),\n editorDirName: option({\n type: optional(string),\n long: \"editor-dir-name\",\n description:\n \"Use a different directory name for the generated editor. Default is the editor name in kebab case.\",\n }),\n documentType: option({\n type: optional(string),\n long: \"document-type\",\n description: \"Document type for the generated document editor.\",\n }),\n documentTypes: option({\n type: optional(string),\n long: \"document-types\",\n description:\n \"[DEPRECATED] Comma separated list of document types for the generated document editor. [WARNING] Generated editor code is not set up to handle multiple document types.\",\n }),\n appName: option({\n type: optional(string),\n long: \"app\",\n description: \"App name.\",\n }),\n appId: option({\n type: optional(string),\n long: \"app-id\",\n description: \"App ID.\",\n }),\n appDirName: option({\n type: optional(string),\n long: \"app-dir-name\",\n description:\n \"Use a different directory name for the generated app. Default is the app name in kebab case.\",\n }),\n processorName: option({\n type: optional(string),\n long: \"processor\",\n description: \"Processor name.\",\n }),\n processorType: option({\n type: oneOf([\"relationalDb\", \"analytics\"] as const),\n long: \"processor-type\",\n description:\n \"Whether to generate an analytics processor or a relational DB processor. Default is analytics.\",\n defaultValue: () => \"analytics\" as const,\n defaultValueIsSerializable: true,\n }),\n processorApps: multioption({\n long: \"processor-apps\",\n type: ProcessorAppType,\n description: \"The apps where the generated processor will run\",\n defaultValue: () => [\"switchboard\" as const],\n defaultValueIsSerializable: true,\n }),\n subgraphName: option({\n type: optional(string),\n long: \"subgraph\",\n description: \"Subgraph name.\",\n }),\n importScriptName: option({\n type: optional(string),\n long: \"import-script\",\n description: \"Import script name.\",\n }),\n allowedDocumentTypes: multioption({\n type: optional(array(string)),\n long: \"allowed-document-types\",\n description: \"Supported document types for a app.\",\n }),\n migrationFile: option({\n type: optional(string),\n long: \"migration-file\",\n description: \"Path to the migration file.\",\n }),\n schemaFile: option({\n type: optional(string),\n long: \"schema-file\",\n description: \"Path to the output file. Defaults to './schema.ts'\",\n }),\n disableDragAndDrop: flag({\n type: optional(boolean),\n long: \"disable-drag-and-drop\",\n description: \"Disable drag and drop in the generated app.\",\n }),\n force: flag({\n type: optional(boolean),\n long: \"force\",\n short: \"f\",\n description: \"Overwrite operation reducers.\",\n }),\n verbose: flag({\n type: optional(boolean),\n long: \"logs\",\n description: \"Show additional logging information.\",\n }),\n watch: flag({\n type: optional(boolean),\n long: \"watch\",\n short: \"w\",\n description: \"Watch the generated code.\",\n }),\n skipFormat: flag({\n type: optional(boolean),\n long: \"skip-format\",\n short: \"sf\",\n description: \"Skip formatting the generated code.\",\n }),\n useVersioning: flag({\n type: boolean,\n long: \"use-versioning\",\n description: \"Allow upgrading document models with versioning.\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n migrateLegacy: flag({\n type: boolean,\n long: \"migrate-legacy\",\n description:\n \"Migrate existing legacy document model code to versioned structure. Implies --use-versioning.\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n","import { positional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const inspectArgs = {\n packageName: positional({\n type: string,\n displayName: \"package-name\",\n description: \"The name of the package to inspect\",\n }),\n ...debugArgs,\n};\n","import {\n array,\n boolean,\n flag,\n multioption,\n option,\n optional,\n restPositionals,\n string,\n} from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const installArgs = {\n dependencies: restPositionals({\n type: string,\n displayName: \"dependencies\",\n description: \"Names of the dependencies to install\",\n }),\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to install from (overrides config and environment)\",\n }),\n local: flag({\n type: optional(boolean),\n long: \"local\",\n description:\n 'Also install packages into node_modules (marks them as provider: \"local\" so they get bundled into ph connect build)',\n }),\n allowBuild: multioption({\n type: array(string),\n long: \"allow-build\",\n description:\n \"A list of package names that are allowed to run postinstall scripts during installation.\",\n defaultValue: () => [],\n }),\n ...packageManagerArgs,\n ...debugArgs,\n};\n","import { debugArgs } from \"./common.js\";\n\nexport const listArgs = {\n ...debugArgs,\n};\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_RENOWN_URL, DEFAULT_TIMEOUT } from \"../constants.js\";\n\nexport const loginArgs = {\n renownUrl: option({\n type: string,\n long: \"renown-url\",\n defaultValue: () => DEFAULT_RENOWN_URL,\n description: `Renown server URL.`,\n defaultValueIsSerializable: true,\n env: \"PH_CONNECT_RENOWN_URL\",\n }),\n timeout: option({\n type: number,\n long: \"timeout\",\n defaultValue: () => DEFAULT_TIMEOUT,\n description: \"Authentication timeout in seconds.\",\n defaultValueIsSerializable: true,\n }),\n logout: flag({\n type: optional(boolean),\n long: \"logout\",\n description: \"Sign out and clear stored credentials\",\n }),\n status: flag({\n type: optional(boolean),\n long: \"status\",\n description: \"Show current authentication status\",\n }),\n showDid: flag({\n type: optional(boolean),\n long: \"show-did\",\n description: \"Show the CLI's DID and exit\",\n }),\n ...debugArgs,\n};\n","import { boolean, flag, option, optional, positional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const migrateArgs = {\n versionPositional: positional({\n type: optional(string),\n displayName: \"version\",\n description:\n \"The version to migrate to. Accepts a valid semver version or `staging`, `dev`, `latest`.\",\n }),\n version: option({\n long: \"version\",\n short: \"v\",\n type: string,\n description:\n \"The version to migrate to. Accepts a valid semver version or `staging`, `dev`, `latest`.\",\n defaultValue: () => \"latest\" as const,\n defaultValueIsSerializable: true,\n }),\n force: flag({\n type: optional(boolean),\n long: \"force\",\n short: \"f\",\n description:\n \"Run migrate from the bundled codegen even if the target version cannot be resolved from the npm registry or differs from the installed ph-cli version.\",\n }),\n ...debugArgs,\n};\n","import { option, optional, rest, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const publishArgs = {\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to publish to (overrides config and environment)\",\n }),\n ...debugArgs,\n forwardedArgs: rest({\n displayName: \"npm-args\",\n description: \"Extra arguments forwarded to npm publish (e.g. --tag dev)\",\n }),\n};\n","import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const DEFAULT_REGISTRY_LOGIN_EXPIRY = \"30d\";\n\nexport const registryLoginArgs = {\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to log in to (overrides PH_REGISTRY_URL and powerhouse.config.json)\",\n }),\n expiry: option({\n type: string,\n long: \"expiry\",\n defaultValue: () => DEFAULT_REGISTRY_LOGIN_EXPIRY,\n description:\n \"Token expiry — formats: '7d' (days), '24h' (hours), '3600' (seconds).\",\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport { packages, vetraSwitchboardArgs } from \"./common.js\";\nimport {\n DEFAULT_SWITCHBOARD_PORT,\n DEFAULT_VETRA_DRIVE_ID,\n} from \"../constants.js\";\n\nexport const switchboardArgs = {\n ...vetraSwitchboardArgs,\n packages,\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to host the api\",\n defaultValue: () => DEFAULT_SWITCHBOARD_PORT,\n defaultValueIsSerializable: true,\n }),\n basePath: option({\n type: optional(string),\n long: \"base-path\",\n description:\n \"base path for the API endpoints (sets the BASE_PATH environment variable)\",\n }),\n keypairPath: option({\n type: optional(string),\n long: \"keypair-path\",\n description: \"path to custom keypair file for identity\",\n }),\n vetraDriveId: option({\n type: string,\n long: \"vetra-drive-id\",\n description: \"Specify a Vetra drive ID\",\n defaultValue: () => DEFAULT_VETRA_DRIVE_ID,\n defaultValueIsSerializable: true,\n }),\n dbPath: option({\n type: optional(string),\n long: \"db-path\",\n description: \"path to the database\",\n }),\n useIdentity: flag({\n type: optional(boolean),\n long: \"use-identity\",\n description:\n \"enable identity using keypair from ph login (uses ~/.ph/keypair.json)\",\n }),\n requireIdentity: flag({\n type: optional(boolean),\n long: \"require-identity\",\n description:\n \"require existing keypair, fail if not found (implies --use-identity)\",\n }),\n migrate: flag({\n type: optional(boolean),\n long: \"migrate\",\n description: \"Run database migrations and exit\",\n }),\n migrateStatus: flag({\n type: optional(boolean),\n long: \"migrate-status\",\n description: \"Show migration status and exit\",\n }),\n reset: flag({\n type: optional(boolean),\n long: \"reset\",\n description:\n \"Wipe the local PGlite switchboard storage after confirmation, then exit\",\n }),\n yes: flag({\n type: optional(boolean),\n long: \"yes\",\n short: \"y\",\n description:\n \"Skip the interactive confirmation prompt for --reset (required for non-interactive use)\",\n }),\n mcp: flag({\n type: boolean,\n long: \"mcp\",\n description: \"enable Mcp route at /mcp\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n useVetraDrive: flag({\n type: boolean,\n long: \"use-vetra-drive\",\n description: \"Use a Vetra drive\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n};\n","import { restPositionals, string } from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const uninstallArgs = {\n dependencies: restPositionals({\n type: string,\n displayName: \"dependencies\",\n description: \"Names of the dependencies to uninstall\",\n }),\n ...packageManagerArgs,\n ...debugArgs,\n};\n","import dotenv from \"dotenv\";\nimport { join } from \"node:path\";\n\nlet loadedFor: string | undefined;\n\n/**\n * Load the project's `.env.local` and `.env` into `process.env`.\n *\n * `dotenv` never overwrites a variable that is already set, so loading\n * `.env.local` first and `.env` second produces the precedence the CLI\n * documents: a real `process.env` value beats `.env.local`, which beats\n * `.env`. One `process.env` lookup afterwards therefore covers all three\n * sources.\n *\n * Idempotent per directory — CLI argument defaults call it lazily and may\n * call it more than once per process.\n */\nexport function loadProjectEnv(cwd: string = process.cwd()): void {\n if (loadedFor === cwd) return;\n loadedFor = cwd;\n // dotenv 16 logs nothing for a missing file, so no suppression option is\n // needed here (and none exists before dotenv 17).\n dotenv.config({ path: join(cwd, \".env.local\") });\n dotenv.config({ path: join(cwd, \".env\") });\n}\n\n/** Test seam: forget which directory has already been loaded. */\nexport function resetProjectEnvForTests(): void {\n loadedFor = undefined;\n}\n\n/**\n * Read an environment variable as a TCP port.\n *\n * Anything that is not a plain integer in 1-65535 is ignored rather than\n * throwing: a typo in `.env` should fall through to the next source in the\n * precedence chain, not break the CLI.\n */\nexport function readPortEnv(name: string): number | undefined {\n const raw = process.env[name]?.trim();\n if (!raw || !/^\\d+$/.test(raw)) return undefined;\n const port = Number(raw);\n if (port < 1 || port > 65535) return undefined;\n return port;\n}\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport {\n DEFAULT_SWITCHBOARD_PORT,\n DEFAULT_VETRA_CONNECT_PORT,\n} from \"../constants.js\";\nimport { getConfig } from \"../file-system/get-config.js\";\nimport { loadProjectEnv, readPortEnv } from \"../project-env.js\";\nimport {\n commonArgs,\n commonServerArgs,\n renownNamespace,\n vetraSwitchboardArgs,\n} from \"./common.js\";\n\n/**\n * Resolve the Vetra Switchboard port.\n *\n * Precedence: CLI flag (cmd-ts applies that above this function) →\n * `process.env` → `.env.local` → `.env` → `powerhouse.config.json` →\n * constant. `loadProjectEnv` folds the two files into `process.env` without\n * clobbering anything already set, so a single lookup covers the middle three.\n */\nexport function resolveSwitchboardPortDefault(): number {\n loadProjectEnv();\n return (\n readPortEnv(\"PH_SWITCHBOARD_PORT\") ??\n getConfig().reactor?.port ??\n DEFAULT_SWITCHBOARD_PORT\n );\n}\n\n/** Resolve the Vetra Connect port through the same chain. */\nexport function resolveConnectPortDefault(): number {\n loadProjectEnv();\n return (\n readPortEnv(\"PH_VETRA_CONNECT_PORT\") ??\n getConfig().vetra?.connectPort ??\n DEFAULT_VETRA_CONNECT_PORT\n );\n}\n\nexport const vetraArgs = {\n switchboardPort: option({\n type: number,\n long: \"switchboard-port\",\n description: \"port to use for the Vetra Switchboard\",\n defaultValue: resolveSwitchboardPortDefault,\n }),\n connectPort: option({\n type: number,\n long: \"connect-port\",\n // Deliberately not `defaultValueIsSerializable`: the value is now\n // per-project, and cmd-ts prints serializable defaults into `--help`,\n // which would bake one project's port into the help text.\n description: \"port to use for the Vetra Connect\",\n defaultValue: resolveConnectPortDefault,\n }),\n remoteDrive: option({\n type: optional(string),\n long: \"remote-drive\",\n description:\n \"URL of remote drive to connect to (skips switchboard initialization)\",\n defaultValue: () => {\n const baseConfig = getConfig();\n return baseConfig.vetra?.driveUrl;\n },\n }),\n watch: flag({\n type: boolean,\n long: \"watch\",\n short: \"w\",\n description:\n \"Enable dynamic loading for document-models and editors in connect-studio and switchboard\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n verbose: flag({\n type: boolean,\n long: \"logs\",\n description: \"Show additional logs\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n disableConnect: flag({\n type: boolean,\n long: \"disable-connect\",\n description:\n \"Skip Connect initialization (only start switchboard and reactor)\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n interactive: flag({\n type: boolean,\n long: \"interactive\",\n description:\n \"Enable interactive mode for code generation (requires user confirmation before generating code)\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n drivesPublicBase: option({\n type: optional(string),\n long: \"drives-public-base\",\n description:\n \"public base URL for the drive URLs advertised to Connect; each drive is exposed as <base>/d/<slug> instead of http://localhost:<switchboard-port>/d/<slug>. Use when the switchboard is reachable through a reverse proxy.\",\n }),\n dbPath: option({\n type: optional(string),\n long: \"db-path\",\n description:\n \"Database path or connection string. Use a `postgres://` URL for Postgres; otherwise treated as a PGlite filesystem path. Leave unset for in-memory PGlite.\",\n }),\n renownNamespace,\n ...commonArgs,\n ...commonServerArgs,\n ...vetraSwitchboardArgs,\n};\n","// Hardcoded so ph-cmd's dispatch doesn't have to evaluate phCliHelpCommands.\n// The compile-time guard in args/help.ts catches drift.\nexport const phCliCommandNames = [\n \"generate\",\n \"vetra\",\n \"connect\",\n \"build\",\n \"publish\",\n \"list\",\n \"l\",\n \"access-token\",\n \"registry-login\",\n \"inspect\",\n \"is\",\n \"migrate\",\n \"switchboard\",\n \"reactor\",\n \"login\",\n \"logout\",\n \"install\",\n \"add\",\n \"i\",\n \"uninstall\",\n \"remove\",\n] as const;\n","import { command } from \"cmd-ts\";\nimport type { phCliCommandNames } from \"../command-names.js\";\nimport { accessTokenArgs } from \"./access-token.js\";\nimport { debugArgs } from \"./common.js\";\nimport { connectArgs } from \"./connect.js\";\nimport { generateArgs } from \"./generate.js\";\nimport { inspectArgs } from \"./inspect.js\";\nimport { installArgs } from \"./install.js\";\nimport { listArgs } from \"./list.js\";\nimport { loginArgs } from \"./login.js\";\nimport { migrateArgs } from \"./migrate.js\";\nimport { publishArgs } from \"./publish.js\";\nimport { registryLoginArgs } from \"./registry.js\";\nimport { switchboardArgs } from \"./switchboard.js\";\nimport { uninstallArgs } from \"./uninstall.js\";\nimport { vetraArgs } from \"./vetra.js\";\n\n// Thin wrapper around `command()` that preserves the literal types of\n// `name` and `aliases` on the return value.\nfunction helpCommand<\n const N extends string,\n const A extends readonly string[] = readonly [],\n>(\n config: Parameters<typeof command>[0] & { name: N; aliases?: A },\n): ReturnType<typeof command> & { readonly name: N; readonly aliases: A } {\n const aliases = (config.aliases ?? ([] as readonly string[])) as A;\n // Forward the original config (with the normalized aliases) through cmd-ts\n // and re-attach the literal types via a localized cast.\n return Object.assign(command({ ...config, aliases: [...aliases] }), {\n name: config.name,\n aliases,\n }) as ReturnType<typeof command> & {\n readonly name: N;\n readonly aliases: A;\n };\n}\n\nexport const phCliHelpCommands = {\n generate: helpCommand({\n name: \"generate\",\n args: generateArgs,\n description: \"Generate powerhouse code\",\n handler: () => {},\n }),\n vetra: helpCommand({\n name: \"vetra\",\n args: vetraArgs,\n description:\n \"Starts Vetra development environment with switchboard, reactor, and connect\",\n handler: () => {},\n }),\n connect: helpCommand({\n name: \"connect\",\n args: connectArgs,\n description: \"Powerhouse Connect commands\",\n handler: () => {},\n }),\n build: helpCommand({\n name: \"build\",\n args: debugArgs,\n description: \"Build your project for publishing to the registry\",\n handler: () => {},\n }),\n publish: helpCommand({\n name: \"publish\",\n args: publishArgs,\n description: \"Publish a package to the Powerhouse registry\",\n handler: () => {},\n }),\n list: helpCommand({\n name: \"list\",\n aliases: [\"l\"],\n args: listArgs,\n description: \"List installed packages\",\n handler: () => {},\n }),\n \"access-token\": helpCommand({\n name: \"access-token\",\n args: accessTokenArgs,\n description: \"Generate a bearer token for API authentication\",\n handler: () => {},\n }),\n \"registry-login\": helpCommand({\n name: \"registry-login\",\n args: registryLoginArgs,\n description:\n \"Log in to a Powerhouse registry (writes a Renown bearer token to ~/.npmrc)\",\n handler: () => {},\n }),\n inspect: helpCommand({\n name: \"inspect\",\n aliases: [\"is\"],\n args: inspectArgs,\n description: \"Inspect a package\",\n handler: () => {},\n }),\n migrate: helpCommand({\n name: \"migrate\",\n args: migrateArgs,\n description: \"Run migrations\",\n handler: () => {},\n }),\n switchboard: helpCommand({\n name: \"switchboard\",\n aliases: [\"reactor\"],\n args: switchboardArgs,\n description: \"Starts local Switchboard\",\n handler: () => {},\n }),\n login: helpCommand({\n name: \"login\",\n args: loginArgs,\n description: \"Authenticate with Renown using your Ethereum wallet\",\n handler: () => {},\n }),\n logout: helpCommand({\n name: \"logout\",\n args: loginArgs,\n description: \"Deletes an existing session created with 'ph login'\",\n handler: () => {},\n }),\n install: helpCommand({\n name: \"install\",\n aliases: [\"add\", \"i\"],\n args: installArgs,\n description: \"Install a Powerhouse dependency\",\n handler: () => {},\n }),\n uninstall: helpCommand({\n name: \"uninstall\",\n aliases: [\"remove\"],\n args: uninstallArgs,\n description: \"Uninstall a Powerhouse dependency\",\n handler: () => {},\n }),\n};\n\nexport { phCliCommandNames } from \"../command-names.js\";\n\n// Compile-time drift guard: phCliCommandNames must match the names+aliases\n// declared above. If you add or rename a command/alias, the type of\n// `_DerivedNames` changes and the assignment below errors until\n// `command-names.ts` is updated to match. Costs nothing at runtime.\ntype _DerivedNames = {\n [K in keyof typeof phCliHelpCommands]:\n | (typeof phCliHelpCommands)[K][\"name\"]\n | (typeof phCliHelpCommands)[K][\"aliases\"][number];\n}[keyof typeof phCliHelpCommands];\n\ntype _Names = (typeof phCliCommandNames)[number];\n\ntype _Equal<A, B> =\n (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2\n ? true\n : false;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst _phCliCommandNamesInSync: _Equal<_DerivedNames, _Names> extends true\n ? true\n : never = true;\n","import {\n boolean,\n flag,\n oneOf,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const initArgs = {\n namePositional: positional({\n type: optional(string),\n displayName: \"name\",\n description:\n \"The name of your project. A new directory will be created in your current directory with this name.\",\n }),\n nameOption: option({\n type: optional(string),\n long: \"name\",\n short: \"n\",\n description:\n \"The name of your project. A new directory will be created in your current directory with this name.\",\n }),\n ...packageManagerArgs,\n tag: option({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\", \"rc\"])),\n long: \"tag\",\n short: \"t\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", \"dev\", or \"rc\".`,\n }),\n version: option({\n type: optional(string),\n long: \"version\",\n short: \"v\",\n description:\n \"Specify the exact semver release version to use for your project.\",\n }),\n dev: flag({\n type: optional(boolean),\n long: \"dev\",\n short: \"d\",\n description: \"Use the `dev` release tag.\",\n }),\n staging: flag({\n type: optional(boolean),\n long: \"staging\",\n short: \"s\",\n description: \"Use the `staging` release tag.\",\n }),\n rc: flag({\n type: optional(boolean),\n long: \"rc\",\n description: \"Use the `rc` release tag.\",\n }),\n remoteDrive: option({\n type: optional(string),\n long: \"remote-drive\",\n short: \"r\",\n description: \"Remote drive identifier.\",\n }),\n clone: option({\n type: optional(string),\n long: \"clone\",\n description:\n \"Path to an existing scaffolded project to clone instead of resolving deps from scratch. Install runs offline from the cloned project's pnpm-lock.yaml (requires --pnpm; --version/--tag are ignored).\",\n }),\n ...debugArgs,\n};\n","import { oneOf, optional, positional } from \"cmd-ts\";\nimport { SERVICE_ACTIONS } from \"../constants.js\";\nimport { debugArgs } from \"./common.js\";\n\nexport type { ServiceAction } from \"../types.js\";\n\nexport const serviceArgs = {\n action: positional({\n type: optional(oneOf(SERVICE_ACTIONS)),\n }),\n ...debugArgs,\n};\n","import {\n boolean,\n flag,\n option,\n optional,\n positional,\n rest,\n string,\n} from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const unpublishArgs = {\n spec: positional({\n type: optional(string),\n displayName: \"package-spec\",\n description:\n \"Package to unpublish: `<name>` (whole package) or `<name>@<version>` (single version). If omitted, uses the current project's `name@version` from package.json.\",\n }),\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to unpublish from (overrides config and environment)\",\n }),\n yes: flag({\n type: optional(boolean),\n long: \"yes\",\n short: \"y\",\n description: \"Skip the confirmation prompt\",\n }),\n ...debugArgs,\n forwardedArgs: rest({\n displayName: \"npm-args\",\n description: \"Extra arguments forwarded to npm unpublish\",\n }),\n};\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nexports.isIdentifierStart = isIdentifierStart;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\n//# sourceMappingURL=identifier.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isKeyword = isKeyword;\nexports.isReservedWord = isReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\n//# sourceMappingURL=keyword.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nvar _identifier = require(\"./identifier.js\");\nvar _keyword = require(\"./keyword.js\");\n\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar picocolors = require('picocolors');\nvar jsTokens = require('js-tokens');\nvar helperValidatorIdentifier = require('@babel/helper-validator-identifier');\n\nfunction isColorSupported() {\n return (typeof process === \"object\" && (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\") ? false : picocolors.isColorSupported\n );\n}\nconst compose = (f, g) => v => f(g(v));\nfunction buildDefs(colors) {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n reset: colors.reset\n };\n}\nconst defsOn = buildDefs(picocolors.createColors(true));\nconst defsOff = buildDefs(picocolors.createColors(false));\nfunction getDefs(enabled) {\n return enabled ? defsOn : defsOff;\n}\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\nconst NEWLINE$1 = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n const tokenValue = token.value;\n if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {\n return \"keyword\";\n }\n if (JSX_TAG.test(tokenValue) && (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")) {\n return \"jsxIdentifier\";\n }\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n if (token.type === \"invalid\" && (token.value === \"@\" || token.value === \"#\")) {\n return \"punctuator\";\n }\n return token.type;\n};\ntokenize = function* (text) {\n let match;\n while (match = jsTokens.default.exec(text)) {\n const token = jsTokens.matchToToken(match);\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value\n };\n }\n};\nfunction highlight(text) {\n if (text === \"\") return \"\";\n const defs = getDefs(true);\n let highlighted = \"\";\n for (const {\n type,\n value\n } of tokenize(text)) {\n if (type in defs) {\n highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n return highlighted;\n}\n\nlet deprecationWarningShown = false;\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source, opts, startLineBaseZero) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n if (startLine === -1) {\n start = 0;\n }\n if (endLine === -1) {\n end = source.length;\n }\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return {\n start,\n end,\n markerLines\n };\n}\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const defs = getDefs(shouldHighlight);\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts, startLineBaseZero);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end + startLineBaseZero).length;\n const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", defs.gutter(gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, defs.marker(\"^\").repeat(numberOfMarkers)].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [defs.marker(\">\"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\n}\nfunction index (rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}\n\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = index;\nexports.highlight = highlight;\n//# sourceMappingURL=index.js.map\n","const getOffsets = ({\n\toneBased,\n\toneBasedLine = oneBased,\n\toneBasedColumn = oneBased,\n} = {}) => [oneBasedLine ? 1 : 0, oneBasedColumn ? 1 : 0];\n\n// Performance https://github.com/sindresorhus/index-to-position/pull/9\nfunction getPosition(text, textIndex, options) {\n\tconst lineBreakBefore = textIndex === 0 ? -1 : text.lastIndexOf('\\n', textIndex - 1);\n\tconst [lineOffset, columnOffset] = getOffsets(options);\n\treturn {\n\t\tline: lineBreakBefore === -1\n\t\t\t? lineOffset\n\t\t\t: text.slice(0, lineBreakBefore + 1).match(/\\n/g).length + lineOffset,\n\t\tcolumn: textIndex - lineBreakBefore - 1 + columnOffset,\n\t};\n}\n\nexport default function indexToPosition(text, textIndex, options) {\n\tif (typeof text !== 'string') {\n\t\tthrow new TypeError('Text parameter should be a string');\n\t}\n\n\tif (!Number.isInteger(textIndex)) {\n\t\tthrow new TypeError('Index parameter should be an integer');\n\t}\n\n\tif (textIndex < 0 || textIndex > text.length) {\n\t\tthrow new RangeError('Index out of bounds');\n\t}\n\n\treturn getPosition(text, textIndex, options);\n}\n","import {codeFrameColumns} from '@babel/code-frame';\nimport indexToPosition from 'index-to-position';\n\nconst getCodePoint = character => `\\\\u{${character.codePointAt(0).toString(16)}}`;\n\nexport class JSONError extends Error {\n\tname = 'JSONError';\n\tfileName;\n\t#input;\n\t#jsonParseError;\n\t#message;\n\t#codeFrame;\n\t#rawCodeFrame;\n\n\tconstructor(messageOrOptions) {\n\t\t// JSONError constructor used accept string\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (typeof messageOrOptions === 'string') {\n\t\t\tsuper();\n\t\t\tthis.#message = messageOrOptions;\n\t\t} else {\n\t\t\tconst {jsonParseError, fileName, input} = messageOrOptions;\n\t\t\t// We cannot pass message to `super()`, otherwise the message accessor will be overridden.\n\t\t\t// https://262.ecma-international.org/14.0/#sec-error-message\n\t\t\tsuper(undefined, {cause: jsonParseError});\n\n\t\t\tthis.#input = input;\n\t\t\tthis.#jsonParseError = jsonParseError;\n\t\t\tthis.fileName = fileName;\n\t\t}\n\n\t\tError.captureStackTrace?.(this, JSONError);\n\t}\n\n\tget message() {\n\t\tthis.#message ??= `${addCodePointToUnexpectedToken(this.#jsonParseError.message)}${this.#input === '' ? ' while parsing empty string' : ''}`;\n\n\t\tconst {codeFrame} = this;\n\t\treturn `${this.#message}${this.fileName ? ` in ${this.fileName}` : ''}${codeFrame ? `\\n\\n${codeFrame}\\n` : ''}`;\n\t}\n\n\tset message(message) {\n\t\tthis.#message = message;\n\t}\n\n\t#getCodeFrame(highlightCode) {\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (!this.#jsonParseError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = this.#input;\n\n\t\tconst location = getErrorLocation(input, this.#jsonParseError.message);\n\t\tif (!location) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn codeFrameColumns(input, {start: location}, {highlightCode});\n\t}\n\n\tget codeFrame() {\n\t\tthis.#codeFrame ??= this.#getCodeFrame(/* highlightCode */ true);\n\t\treturn this.#codeFrame;\n\t}\n\n\tget rawCodeFrame() {\n\t\tthis.#rawCodeFrame ??= this.#getCodeFrame(/* highlightCode */ false);\n\t\treturn this.#rawCodeFrame;\n\t}\n}\n\nconst getErrorLocation = (string, message) => {\n\tconst match = message.match(/in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/);\n\n\tif (!match) {\n\t\treturn;\n\t}\n\n\tconst {index, line, column} = match.groups;\n\n\tif (line && column) {\n\t\treturn {line: Number(line), column: Number(column)};\n\t}\n\n\treturn indexToPosition(string, Number(index), {oneBased: true});\n};\n\nconst addCodePointToUnexpectedToken = message => message.replace(\n\t// TODO[engine:node@>=20]: The token always quoted after Node.js 20\n\t/(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\t(_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n);\n\nexport default function parseJson(string, reviver, fileName) {\n\tif (typeof reviver === 'string') {\n\t\tfileName = reviver;\n\t\treviver = undefined;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(string, reviver);\n\t} catch (error) {\n\t\tthrow new JSONError({\n\t\t\tjsonParseError: error,\n\t\t\tfileName,\n\t\t\tinput: string,\n\t\t});\n\t}\n}\n","","","","'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n","'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n","'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n","/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Sorting function that orders the given array of transpositions such\n// that a transposition with the longer pattern comes before a transposition\n// with a shorter pattern. This is to prevent e.g. the transposition\n// [\"General Public License\", \"GPL\"] from matching to \"Lesser General Public License\"\n// before a longer and more accurate transposition [\"Lesser General Public License\", \"LGPL\"]\n// has a chance to be recognized.\nfunction sortTranspositions(a, b) {\n var length = b[0].length - a[0].length\n if (length !== 0) return length\n return a[0].toUpperCase().localeCompare(b[0].toUpperCase())\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU LGPL', 'LGPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['GNU Lesser General Public License', 'LGPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['GNU Lesser General Public License', 'LGPL-2.1'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['Lesser General Public License', 'LGPL'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['Lesser General Public License', 'LGPL-2.1'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['WTFGPL', 'WTFPL'],\n ['-License', '']\n].sort(sortTranspositions)\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion).sort(sortTranspositions)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n","var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN <filename>\"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});exports.LRUCache=void 0;var G=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,U=new Set,R=typeof process==\"object\"&&process?process:{},I=(c,t,e,i)=>{typeof R.emitWarning==\"function\"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>\"u\"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{c&&(c=!1,I(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var x=c=>!U.has(c),H=Symbol(\"type\"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class c{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#m=v??G,e!==0&&!y(e))throw new TypeError(\"max option must be a nonnegative integer\");let O=e?M(e):Array;if(!O)throw new Error(\"invalid max value: \"+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(S!==void 0&&typeof S!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#U=S,l!==void 0&&typeof l!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a==\"function\"&&(this.#w=a),typeof w==\"function\"&&(this.#C=w),typeof f==\"function\"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!y(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E=\"LRU_CACHE_UNBOUNDED\";x(E)&&(U.add(E),I(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],\"expire\")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(s=n(i,e),!y(s))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#G(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],\"expire\"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set=\"miss\",r.maxEntrySizeExceeded=!0),this.#E(t,\"set\"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set=\"add\"),a=!1,this.#I&&this.#C?.(e,t,\"add\");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,\"set\"),this.#f&&this.#r?.push([g,t,\"set\"]))}else o||(this.#T&&this.#w?.(d,t,\"set\"),this.#f&&this.#r?.push([d,t,\"set\"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set=\"replace\";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set=\"update\");this.#I&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#G(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#G(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error(\"evicted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,\"evict\"),this.#f&&this.#r?.push([s,i,\"evict\"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has=\"stale\",this.#z(s,n));else return i&&this.#R(n),s&&(s.has=\"hit\",this.#z(s,n)),!0}else s&&(s.has=\"miss\");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener(\"abort\",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,\"fetch\"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,\"fetch\"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener(\"abort\",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch=\"get\"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch=\"miss\");let u=this.#x(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch=\"inflight\",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch=\"hit\"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#x(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?\"stale\":\"refresh\",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error(\"fetch() returned undefined\");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error(\"no memoMethod provided to constructor\");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get=\"stale\"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,\"expire\"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get=\"hit\"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get=\"miss\")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,\"delete\")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error(\"deleted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V(\"delete\")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error(\"deleted\"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;\n//# sourceMappingURL=index.min.js.map\n","/* eslint-disable max-len */\n\n'use strict'\n\nconst maybeJoin = (...args) => args.every(arg => arg) ? args.join('') : ''\nconst maybeEncode = (arg) => arg ? encodeURIComponent(arg) : ''\nconst formatHashFragment = (f) => f.toLowerCase()\n .replace(/^\\W+/g, '') // strip leading non-characters\n .replace(/(?<!\\W)\\W+$/, '') // strip trailing non-characters\n .replace(/\\//g, '') // strip all slashes\n .replace(/\\W+/g, '-') // replace remaining non-characters with '-'\n\nconst defaults = {\n sshtemplate: ({ domain, user, project, committish }) =>\n `git@${domain}:${user}/${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, user, project, committish }) =>\n `git+ssh://git@${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath, path }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', editpath, '/', maybeEncode(committish || 'HEAD'), '/', path)}`,\n browsetemplate: ({ domain, user, project, committish, treepath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, user, project, committish, treepath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${treepath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n browseblobtemplate: ({ domain, user, project, committish, blobpath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${blobpath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n docstemplate: ({ domain, user, project, treepath, committish }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}#readme`,\n httpstemplate: ({ auth, domain, user, project, committish }) =>\n `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/raw/${maybeEncode(committish || 'HEAD')}/${path}`,\n shortcuttemplate: ({ type, user, project, committish }) =>\n `${type}:${user}/${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ user, project, committish }) =>\n `${user}/${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, user, project }) =>\n `https://${domain}/${user}/${project}/issues`,\n hashformat: formatHashFragment,\n}\n\nconst hosts = {}\nhosts.github = {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n protocols: ['git:', 'http:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'github.com',\n treepath: 'tree',\n blobpath: 'blob',\n editpath: 'edit',\n filetemplate: ({ auth, user, project, committish, path }) =>\n `https://${maybeJoin(auth, '@')}raw.githubusercontent.com/${user}/${project}/${maybeEncode(committish || 'HEAD')}/${path}`,\n gittemplate: ({ auth, domain, user, project, committish }) =>\n `git://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://codeload.${domain}/${user}/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, type, committish] = url.pathname.split('/', 5)\n if (type && type !== 'tree') {\n return\n }\n\n if (!type) {\n committish = url.hash.slice(1)\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish }\n },\n}\n\nhosts.bitbucket = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'bitbucket.org',\n treepath: 'src',\n blobpath: 'src',\n editpath: '?mode=edit',\n edittemplate: ({ domain, user, project, committish, treepath, path, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish || 'HEAD'), '/', path, editpath)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/get/${maybeEncode(committish || 'HEAD')}.tar.gz`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (['get'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gitlab = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gitlab.com',\n treepath: 'tree',\n blobpath: 'tree',\n editpath: '-/edit',\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/repository/archive.tar.gz?ref=${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n const path = url.pathname.slice(1)\n if (path.includes('/-/') || path.includes('/archive.tar.gz')) {\n return\n }\n\n const segments = path.split('/')\n let project = segments.pop()\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n const user = segments.join('/')\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gist = {\n protocols: ['git:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gist.github.com',\n editpath: 'edit',\n sshtemplate: ({ domain, project, committish }) =>\n `git@${domain}:${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, project, committish }) =>\n `git+ssh://git@${domain}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', maybeEncode(committish))}/${editpath}`,\n browsetemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n browseblobtemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n docstemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n httpstemplate: ({ domain, project, committish }) =>\n `git+https://${domain}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ user, project, committish, path }) =>\n `https://gist.githubusercontent.com/${user}/${project}/raw${maybeJoin('/', maybeEncode(committish))}/${path}`,\n shortcuttemplate: ({ type, project, committish }) =>\n `${type}:${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ project, committish }) =>\n `${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, project }) =>\n `https://${domain}/${project}`,\n gittemplate: ({ domain, project, committish }) =>\n `git://${domain}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ project, committish }) =>\n `https://codeload.github.com/gist/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (aux === 'raw') {\n return\n }\n\n if (!project) {\n if (!user) {\n return\n }\n\n project = user\n user = null\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n hashformat: function (fragment) {\n return fragment && 'file-' + formatHashFragment(fragment)\n },\n}\n\nhosts.sourcehut = {\n protocols: ['git+ssh:', 'https:'],\n domain: 'git.sr.ht',\n treepath: 'tree',\n blobpath: 'tree',\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/blob/${maybeEncode(committish) || 'HEAD'}/${path}`,\n httpstemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/archive/${maybeEncode(committish) || 'HEAD'}.tar.gz`,\n bugstemplate: () => null,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n\n // tarball url\n if (['archive'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n hosts[name] = Object.assign({}, defaults, host)\n}\n\nmodule.exports = hosts\n","const url = require('url')\n\nconst lastIndexOfBefore = (str, char, beforeChar) => {\n const startPosition = str.indexOf(beforeChar)\n return str.lastIndexOf(char, startPosition > -1 ? startPosition : Infinity)\n}\n\nconst safeUrl = (u) => {\n try {\n return new url.URL(u)\n } catch {\n // this fn should never throw\n }\n}\n\n// accepts input like git:github.com:user/repo and inserts the // after the first :\nconst correctProtocol = (arg, protocols) => {\n const firstColon = arg.indexOf(':')\n const proto = arg.slice(0, firstColon + 1)\n if (Object.prototype.hasOwnProperty.call(protocols, proto)) {\n return arg\n }\n\n if (arg.substr(firstColon, 3) === '://') {\n // If arg is given as <foo>://<bar>, then this is already a valid URL.\n return arg\n }\n\n const firstAt = arg.indexOf('@')\n if (firstAt > -1) {\n if (firstAt > firstColon) {\n // URL has the form of <foo>:<bar>@<baz>. Assume this is a git+ssh URL.\n return `git+ssh://${arg}`\n } else {\n // URL has the form 'git@github.com:npm/hosted-git-info.git'.\n return arg\n }\n }\n\n // Correct <foo>:<bar> to <foo>://<bar>\n return `${arg.slice(0, firstColon + 1)}//${arg.slice(firstColon + 1)}`\n}\n\n// attempt to correct an scp style url so that it will parse with `new URL()`\nconst correctUrl = (giturl) => {\n // ignore @ that come after the first hash since the denotes the start\n // of a committish which can contain @ characters\n const firstAt = lastIndexOfBefore(giturl, '@', '#')\n // ignore colons that come after the hash since that could include colons such as:\n // git@github.com:user/package-2#semver:^1.0.0\n const lastColonBeforeHash = lastIndexOfBefore(giturl, ':', '#')\n\n if (lastColonBeforeHash > firstAt) {\n // the last : comes after the first @ (or there is no @)\n // like it would in:\n // proto://hostname.com:user/repo\n // username@hostname.com:user/repo\n // :password@hostname.com:user/repo\n // username:password@hostname.com:user/repo\n // proto://username@hostname.com:user/repo\n // proto://:password@hostname.com:user/repo\n // proto://username:password@hostname.com:user/repo\n // then we replace the last : with a / to create a valid path\n giturl = giturl.slice(0, lastColonBeforeHash) + '/' + giturl.slice(lastColonBeforeHash + 1)\n }\n\n if (lastIndexOfBefore(giturl, ':', '#') === -1 && giturl.indexOf('//') === -1) {\n // we have no : at all\n // as it would be in:\n // username@hostname.com/user/repo\n // then we prepend a protocol\n giturl = `git+ssh://${giturl}`\n }\n\n return giturl\n}\n\nmodule.exports = (giturl, protocols) => {\n const withProtocol = protocols ? correctProtocol(giturl, protocols) : giturl\n return safeUrl(withProtocol) || safeUrl(correctUrl(withProtocol))\n}\n","'use strict'\n\nconst parseUrl = require('./parse-url')\n\n// look for github shorthand inputs, such as npm/cli\nconst isGitHubShorthand = (arg) => {\n // it cannot contain whitespace before the first #\n // it cannot start with a / because that's probably an absolute file path\n // but it must include a slash since repos are username/repository\n // it cannot start with a . because that's probably a relative file path\n // it cannot start with an @ because that's a scoped package if it passes the other tests\n // it cannot contain a : before a # because that tells us that there's a protocol\n // a second / may not exist before a #\n const firstHash = arg.indexOf('#')\n const firstSlash = arg.indexOf('/')\n const secondSlash = arg.indexOf('/', firstSlash + 1)\n const firstColon = arg.indexOf(':')\n const firstSpace = /\\s/.exec(arg)\n const firstAt = arg.indexOf('@')\n\n const spaceOnlyAfterHash = !firstSpace || (firstHash > -1 && firstSpace.index > firstHash)\n const atOnlyAfterHash = firstAt === -1 || (firstHash > -1 && firstAt > firstHash)\n const colonOnlyAfterHash = firstColon === -1 || (firstHash > -1 && firstColon > firstHash)\n const secondSlashOnlyAfterHash = secondSlash === -1 || (firstHash > -1 && secondSlash > firstHash)\n const hasSlash = firstSlash > 0\n // if a # is found, what we really want to know is that the character\n // immediately before # is not a /\n const doesNotEndWithSlash = firstHash > -1 ? arg[firstHash - 1] !== '/' : !arg.endsWith('/')\n const doesNotStartWithDot = !arg.startsWith('.')\n\n return spaceOnlyAfterHash && hasSlash && doesNotEndWithSlash &&\n doesNotStartWithDot && atOnlyAfterHash && colonOnlyAfterHash &&\n secondSlashOnlyAfterHash\n}\n\nmodule.exports = (giturl, opts, { gitHosts, protocols }) => {\n if (!giturl) {\n return\n }\n\n const correctedUrl = isGitHubShorthand(giturl) ? `github:${giturl}` : giturl\n const parsed = parseUrl(correctedUrl, protocols)\n if (!parsed) {\n return\n }\n\n const gitHostShortcut = gitHosts.byShortcut[parsed.protocol]\n const gitHostDomain = gitHosts.byDomain[parsed.hostname.startsWith('www.')\n ? parsed.hostname.slice(4)\n : parsed.hostname]\n const gitHostName = gitHostShortcut || gitHostDomain\n if (!gitHostName) {\n return\n }\n\n const gitHostInfo = gitHosts[gitHostShortcut || gitHostDomain]\n let auth = null\n if (protocols[parsed.protocol]?.auth && (parsed.username || parsed.password)) {\n auth = `${parsed.username}${parsed.password ? ':' + parsed.password : ''}`\n }\n\n let committish = null\n let user = null\n let project = null\n let defaultRepresentation = null\n\n try {\n if (gitHostShortcut) {\n let pathname = parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname\n const firstAt = pathname.indexOf('@')\n // we ignore auth for shortcuts, so just trim it out\n if (firstAt > -1) {\n pathname = pathname.slice(firstAt + 1)\n }\n\n const lastSlash = pathname.lastIndexOf('/')\n if (lastSlash > -1) {\n user = decodeURIComponent(pathname.slice(0, lastSlash))\n // we want nulls only, never empty strings\n if (!user) {\n user = null\n }\n project = decodeURIComponent(pathname.slice(lastSlash + 1))\n } else {\n project = decodeURIComponent(pathname)\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (parsed.hash) {\n committish = decodeURIComponent(parsed.hash.slice(1))\n }\n\n defaultRepresentation = 'shortcut'\n } else {\n if (!gitHostInfo.protocols.includes(parsed.protocol)) {\n return\n }\n\n const segments = gitHostInfo.extract(parsed)\n if (!segments) {\n return\n }\n\n user = segments.user && decodeURIComponent(segments.user)\n project = decodeURIComponent(segments.project)\n committish = decodeURIComponent(segments.committish)\n defaultRepresentation = protocols[parsed.protocol]?.name || parsed.protocol.slice(0, -1)\n }\n } catch (err) {\n /* istanbul ignore else */\n if (err instanceof URIError) {\n return\n } else {\n throw err\n }\n }\n\n return [gitHostName, user, auth, project, committish, defaultRepresentation, opts]\n}\n","'use strict'\n\nconst { LRUCache } = require('lru-cache')\nconst hosts = require('./hosts.js')\nconst fromUrl = require('./from-url.js')\nconst parseUrl = require('./parse-url.js')\n\nconst cache = new LRUCache({ max: 1000 })\n\nfunction unknownHostedUrl (url) {\n try {\n const {\n protocol,\n hostname,\n pathname,\n } = new URL(url)\n\n if (!hostname) {\n return null\n }\n\n const proto = /(?:git\\+)http:$/.test(protocol) ? 'http:' : 'https:'\n const path = pathname.replace(/\\.git$/, '')\n return `${proto}//${hostname}${path}`\n } catch {\n return null\n }\n}\n\nclass GitHost {\n constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) {\n Object.assign(this, GitHost.#gitHosts[type], {\n type,\n user,\n auth,\n project,\n committish,\n default: defaultRepresentation,\n opts,\n })\n }\n\n static #gitHosts = { byShortcut: {}, byDomain: {} }\n static #protocols = {\n 'git+ssh:': { name: 'sshurl' },\n 'ssh:': { name: 'sshurl' },\n 'git+https:': { name: 'https', auth: true },\n 'git:': { auth: true },\n 'http:': { auth: true },\n 'https:': { auth: true },\n 'git+http:': { auth: true },\n }\n\n static addHost (name, host) {\n GitHost.#gitHosts[name] = host\n GitHost.#gitHosts.byDomain[host.domain] = name\n GitHost.#gitHosts.byShortcut[`${name}:`] = name\n GitHost.#protocols[`${name}:`] = { name }\n }\n\n static fromUrl (giturl, opts) {\n if (typeof giturl !== 'string') {\n return\n }\n\n const key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n const hostArgs = fromUrl(giturl, opts, {\n gitHosts: GitHost.#gitHosts,\n protocols: GitHost.#protocols,\n })\n cache.set(key, hostArgs ? new GitHost(...hostArgs) : undefined)\n }\n\n return cache.get(key)\n }\n\n static fromManifest (manifest, opts = {}) {\n if (!manifest || typeof manifest !== 'object') {\n return\n }\n\n const r = manifest.repository\n // TODO: look into also checking the `bugs`/`homepage` URLs\n\n const rurl = r && (\n typeof r === 'string'\n ? r\n : typeof r === 'object' && typeof r.url === 'string'\n ? r.url\n : null\n )\n\n if (!rurl) {\n throw new Error('no repository')\n }\n\n const info = (rurl && GitHost.fromUrl(rurl.replace(/^git\\+/, ''), opts)) || null\n if (info) {\n return info\n }\n const unk = unknownHostedUrl(rurl)\n return GitHost.fromUrl(unk, opts) || unk\n }\n\n static parseUrl (url) {\n return parseUrl(url)\n }\n\n #fill (template, opts) {\n if (typeof template !== 'function') {\n return null\n }\n\n const options = { ...this, ...this.opts, ...opts }\n\n // the path should always be set so we don't end up with 'undefined' in urls\n if (!options.path) {\n options.path = ''\n }\n\n // template functions will insert the leading slash themselves\n if (options.path.startsWith('/')) {\n options.path = options.path.slice(1)\n }\n\n if (options.noCommittish) {\n options.committish = null\n }\n\n const result = template(options)\n return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result\n }\n\n hash () {\n return this.committish ? `#${this.committish}` : ''\n }\n\n ssh (opts) {\n return this.#fill(this.sshtemplate, opts)\n }\n\n sshurl (opts) {\n return this.#fill(this.sshurltemplate, opts)\n }\n\n browse (path, ...args) {\n // not a string, treat path as opts\n if (typeof path !== 'string') {\n return this.#fill(this.browsetemplate, path)\n }\n\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browsetreetemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browsetreetemplate, { ...args[1], fragment: args[0], path })\n }\n\n // If the path is known to be a file, then browseFile should be used. For some hosts\n // the url is the same as browse, but for others like GitHub a file can use both `/tree/`\n // and `/blob/` in the path. When using a default committish of `HEAD` then the `/tree/`\n // path will redirect to a specific commit. Using the `/blob/` path avoids this and\n // does not redirect to a different commit.\n browseFile (path, ...args) {\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browseblobtemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browseblobtemplate, { ...args[1], fragment: args[0], path })\n }\n\n docs (opts) {\n return this.#fill(this.docstemplate, opts)\n }\n\n bugs (opts) {\n return this.#fill(this.bugstemplate, opts)\n }\n\n https (opts) {\n return this.#fill(this.httpstemplate, opts)\n }\n\n git (opts) {\n return this.#fill(this.gittemplate, opts)\n }\n\n shortcut (opts) {\n return this.#fill(this.shortcuttemplate, opts)\n }\n\n path (opts) {\n return this.#fill(this.pathtemplate, opts)\n }\n\n tarball (opts) {\n return this.#fill(this.tarballtemplate, { ...opts, noCommittish: false })\n }\n\n file (path, opts) {\n return this.#fill(this.filetemplate, { ...opts, path })\n }\n\n edit (path, opts) {\n return this.#fill(this.edittemplate, { ...opts, path })\n }\n\n getDefaultRepresentation () {\n return this.default\n }\n\n toString (opts) {\n if (this.default && typeof this[this.default] === 'function') {\n return this[this.default](opts)\n }\n\n return this.sshurl(opts)\n }\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n GitHost.addHost(name, host)\n}\n\nmodule.exports = GitHost\n","module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) {\n return\n }\n if (d === 'ERROR: No README data found!') {\n return\n }\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n let s = 0\n while (d[s] && d[s].trim().match(/^(#|$)/)) {\n s++\n }\n const l = d.length\n let e = s + 1\n while (e < l && d[e].trim()) {\n e++\n }\n return d.slice(s, e).join(' ').trim()\n}\n","","var { URL } = require('node:url')\nvar isValidSemver = require('semver/functions/valid')\nvar cleanSemver = require('semver/functions/clean')\nvar validateLicense = require('validate-npm-package-license')\nvar hostedGitInfo = require('hosted-git-info')\nvar { isBuiltin } = require('node:module')\nvar depTypes = ['dependencies', 'devDependencies', 'optionalDependencies']\nvar extractDescription = require('./extract_description')\nvar typos = require('./typos.json')\n\nvar isEmail = str => str.includes('@') && (str.indexOf('@') < str.lastIndexOf('.'))\n\nmodule.exports = {\n // default warning function\n warn: function () {},\n\n fixRepositoryField: function (data) {\n if (data.repositories) {\n this.warn('repositories')\n data.repository = data.repositories[0]\n }\n if (!data.repository) {\n return this.warn('missingRepository')\n }\n if (typeof data.repository === 'string') {\n data.repository = {\n type: 'git',\n url: data.repository,\n }\n }\n var r = data.repository.url || ''\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() === 'shortcut' ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^/]+\\/[^/]+\\.git\\.git$/)) {\n this.warn('brokenGitUrl', r)\n }\n },\n\n fixTypos: function (data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (Object.prototype.hasOwnProperty.call(data, d)) {\n this.warn('typo', d, typos.topLevel[d])\n }\n }, this)\n },\n\n fixScriptsField: function (data) {\n if (!data.scripts) {\n return\n }\n if (typeof data.scripts !== 'object') {\n this.warn('nonObjectScripts')\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== 'string') {\n this.warn('nonStringScript')\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn('typo', k, typos.script[k], 'scripts')\n }\n }, this)\n },\n\n fixFilesField: function (data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn('nonArrayFiles')\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function (file) {\n if (!file || typeof file !== 'string') {\n this.warn('invalidFilename', file)\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixBinField: function (data) {\n if (!data.bin) {\n return\n }\n if (typeof data.bin === 'string') {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n },\n\n fixManField: function (data) {\n if (!data.man) {\n return\n }\n if (typeof data.man === 'string') {\n data.man = [data.man]\n }\n },\n fixBundleDependenciesField: function (data) {\n var bdd = 'bundledDependencies'\n var bd = 'bundleDependencies'\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn('nonArrayBundleDependencies')\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function (filtered) {\n if (!filtered || typeof filtered !== 'string') {\n this.warn('nonStringBundleDependency', filtered)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!Object.prototype.hasOwnProperty.call(data.dependencies, filtered)) {\n this.warn('nonDependencyBundleDependency', filtered)\n data.dependencies[filtered] = '*'\n }\n return true\n }\n }, this)\n }\n },\n\n fixDependencies: function (data) {\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies', 'devDependencies'].forEach(function (deps) {\n if (!(deps in data)) {\n return\n }\n if (!data[deps] || typeof data[deps] !== 'object') {\n this.warn('nonObjectDependencies', deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn('nonStringDependency', d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) {\n data[deps][d] = hosted.toString()\n }\n }, this)\n }, this)\n },\n\n fixModulesField: function (data) {\n if (data.modules) {\n this.warn('deprecatedModules')\n delete data.modules\n }\n },\n\n fixKeywordsField: function (data) {\n if (typeof data.keywords === 'string') {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn('nonArrayKeywords')\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function (kw) {\n if (typeof kw !== 'string' || !kw) {\n this.warn('nonStringKeyword')\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixVersionField: function (data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = ''\n return true\n }\n if (!isValidSemver(data.version, loose)) {\n throw new Error('Invalid version: \"' + data.version + '\"')\n }\n data.version = cleanSemver(data.version, loose)\n return true\n },\n\n fixPeople: function (data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n },\n\n fixNameField: function (data, options) {\n if (typeof options === 'boolean') {\n options = { strict: options }\n } else if (typeof options === 'undefined') {\n options = {}\n }\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = ''\n return\n }\n if (typeof data.name !== 'string') {\n throw new Error('name field must be a string.')\n }\n if (!strict) {\n data.name = data.name.trim()\n }\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltin(data.name)) {\n this.warn('conflictingName', data.name)\n }\n },\n\n fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn('nonStringDescription')\n delete data.description\n }\n if (data.readme && !data.description) {\n data.description = extractDescription(data.readme)\n }\n if (data.description === undefined) {\n delete data.description\n }\n if (!data.description) {\n this.warn('missingDescription')\n }\n },\n\n fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn('missingReadme')\n data.readme = 'ERROR: No README data found!'\n }\n },\n\n fixBugsField: function (data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.bugs()) {\n data.bugs = { url: hosted.bugs() }\n }\n } else if (data.bugs) {\n if (typeof data.bugs === 'string') {\n if (isEmail(data.bugs)) {\n data.bugs = { email: data.bugs }\n } else if (URL.canParse(data.bugs)) {\n data.bugs = { url: data.bugs }\n } else {\n this.warn('nonEmailUrlBugsString')\n }\n } else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if (oldBugs.url) {\n if (URL.canParse(oldBugs.url)) {\n data.bugs.url = oldBugs.url\n } else {\n this.warn('nonUrlBugsUrlField')\n }\n }\n if (oldBugs.email) {\n if (typeof (oldBugs.email) === 'string' && isEmail(oldBugs.email)) {\n data.bugs.email = oldBugs.email\n } else {\n this.warn('nonEmailBugsEmailField')\n }\n }\n }\n if (!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn('emptyNormalizedBugs')\n }\n }\n },\n\n fixHomepageField: function (data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) {\n data.homepage = hosted.docs()\n }\n }\n if (!data.homepage) {\n return\n }\n\n if (typeof data.homepage !== 'string') {\n this.warn('nonUrlHomepage')\n return delete data.homepage\n }\n if (!URL.canParse(data.homepage)) {\n data.homepage = 'http://' + data.homepage\n }\n },\n\n fixLicenseField: function (data) {\n const license = data.license || data.licence\n if (!license) {\n return this.warn('missingLicense')\n }\n if (\n typeof (license) !== 'string' ||\n license.length < 1 ||\n license.trim() === ''\n ) {\n return this.warn('invalidLicense')\n }\n if (!validateLicense(license).validForNewPackages) {\n return this.warn('invalidLicense')\n }\n },\n}\n\nfunction isValidScopedPackageName (spec) {\n if (spec.charAt(0) !== '@') {\n return false\n }\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) {\n return false\n }\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName (spec) {\n return !spec.match(/[/@\\s+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === '.' ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === 'node_modules' ||\n name.toLowerCase() === 'favicon.ico') {\n throw new Error('Invalid name: ' + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) {\n data.author = fn(data.author)\n }['maintainers', 'contributors'].forEach(function (set) {\n if (!Array.isArray(data[set])) {\n return\n }\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === 'string') {\n return person\n }\n var name = person.name || ''\n var u = person.url || person.web\n var wrappedUrl = u ? (' (' + u + ')') : ''\n var e = person.email || person.mail\n var wrappedEmail = e ? (' <' + e + '>') : ''\n return name + wrappedEmail + wrappedUrl\n}\n\nfunction parsePerson (person) {\n if (typeof person !== 'string') {\n return person\n }\n var matchedName = person.match(/^([^(<]+)/)\n var matchedUrl = person.match(/\\(([^()]+)\\)/)\n var matchedEmail = person.match(/<([^<>]+)>/)\n var obj = {}\n if (matchedName && matchedName[0].trim()) {\n obj.name = matchedName[0].trim()\n }\n if (matchedEmail) {\n obj.email = matchedEmail[1]\n }\n if (matchedUrl) {\n obj.url = matchedUrl[1]\n }\n return obj\n}\n\nfunction addOptionalDepsToDeps (data) {\n var o = data.optionalDependencies\n if (!o) {\n return\n }\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) {\n return {}\n }\n if (typeof deps === 'string') {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) {\n return deps\n }\n warn('deprecatedArrayDependencies', type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === 'string'\n }).forEach(function (d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join('')\n dv = dv.trim()\n dv = dv.replace(/^@/, '')\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) {\n return\n }\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos (bugs, warn) {\n if (!bugs) {\n return\n }\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn('typo', k, typos.bugs[k], 'bugs')\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n","","var util = require('util')\nvar messages = require('./warning_messages.json')\n\nmodule.exports = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName === 'typo') {\n return makeTypoWarning.apply(null, args)\n } else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n","module.exports = normalize\n\nvar fixer = require('./fixer')\nnormalize.fixer = fixer\n\nvar makeWarning = require('./make_warning')\n\nvar fieldsToFix = ['name', 'version', 'description', 'repository', 'modules', 'scripts',\n 'files', 'bin', 'man', 'bugs', 'keywords', 'readme', 'homepage', 'license']\nvar otherThingsToFix = ['dependencies', 'people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function (fieldName) {\n return ucFirst(fieldName) + 'Field'\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if (warn === true) {\n warn = null\n strict = true\n }\n if (!strict) {\n strict = false\n }\n if (!warn || data.private) {\n warn = function () { /* noop */ }\n }\n\n if (data.scripts &&\n data.scripts.install === 'node-gyp rebuild' &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function () {\n warn(makeWarning.apply(null, arguments))\n }\n thingsToFix.forEach(function (thingName) {\n fixer['fix' + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + '@' + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n}\n","import {promisify} from 'node:util';\nimport {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nconst execFileOriginal = promisify(execFileCallback);\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport function rootDirectory(pathInput) {\n\treturn path.parse(toPath(pathInput)).root;\n}\n\nexport function traversePathUp(startPath) {\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\tlet currentPath = path.resolve(toPath(startPath));\n\t\t\tlet previousPath;\n\n\t\t\twhile (previousPath !== currentPath) {\n\t\t\t\tyield currentPath;\n\t\t\t\tpreviousPath = currentPath;\n\t\t\t\tcurrentPath = path.resolve(currentPath, '..');\n\t\t\t}\n\t\t},\n\t};\n}\n\nconst TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;\n\nexport async function execFile(file, arguments_, options = {}) {\n\treturn execFileOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\t...options,\n\t});\n}\n\nexport function execFileSync(file, arguments_ = [], options = {}) {\n\treturn execFileSyncOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\tencoding: 'utf8',\n\t\tstdio: 'pipe',\n\t\t...options,\n\t});\n}\n\nexport * from './default.js';\n","import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path from 'node:path';\nimport parseJson from 'parse-json';\nimport normalizePackageData from 'normalize-package-data';\nimport {toPath} from 'unicorn-magic/node';\n\nconst getPackagePath = cwd => path.resolve(toPath(cwd) ?? '.', 'package.json');\n\nconst _readPackage = (file, normalize) => {\n\tconst json = typeof file === 'string'\n\t\t? parseJson(file)\n\t\t: file;\n\n\tif (normalize) {\n\t\tnormalizePackageData(json);\n\t}\n\n\treturn json;\n};\n\nexport async function readPackage({cwd, normalize = true} = {}) {\n\tconst packageFile = await fsPromises.readFile(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function readPackageSync({cwd, normalize = true} = {}) {\n\tconst packageFile = fs.readFileSync(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function parsePackage(packageFile, {normalize = true} = {}) {\n\tconst isObject = packageFile !== null && typeof packageFile === 'object' && !Array.isArray(packageFile);\n\tconst isString = typeof packageFile === 'string';\n\n\tif (!isObject && !isString) {\n\t\tthrow new TypeError('`packageFile` should be either an `object` or a `string`.');\n\t}\n\n\tconst clonedPackageFile = isObject ? structuredClone(packageFile) : packageFile;\n\n\treturn _readPackage(clonedPackageFile, normalize);\n}\n","import spawn from \"cross-spawn\";\n\nexport function spawnAsync(\n command: string,\n args: string[],\n options: {\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n } = {},\n): Promise<string> {\n return new Promise((resolve, reject) => {\n // cross-spawn rather than node:child_process.spawn. On Windows npm, pnpm\n // and yarn are all `.cmd` shims, and since the fix for CVE-2024-27980\n // (Node 18.20.2 / 20.12.2 / 21.7.3 and later) `spawn` refuses to execute\n // `.bat`/`.cmd` unless `shell: true` -- it throws `spawn EINVAL`, and\n // synchronously, so an `error` listener never sees it. Passing\n // `shell: true` instead would hand the arguments to cmd.exe, which strips\n // quotes and splits on shell metacharacters. cross-spawn resolves the shim\n // and escapes the arguments itself, so the call keeps shell-less argument\n // semantics on every platform.\n const child = spawn(command, args, {\n cwd: options.cwd,\n env: options.env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n child.stdout?.on(\"data\", (d: Buffer) => {\n stdout += d.toString();\n });\n\n child.stderr?.on(\"data\", (d: Buffer) => {\n stderr += d.toString();\n });\n\n child.on(\"error\", reject);\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve(stdout.trim());\n } else {\n reject(\n new Error(stderr.trim() || `${command} exited with code ${code}`),\n );\n }\n });\n });\n}\n","import chalk from \"chalk\";\nimport type { Agent } from \"package-manager-detector\";\nimport { readPackage } from \"read-pkg\";\nimport { clean, valid } from \"semver\";\nimport { spawnAsync } from \"./spawn-async.js\";\n\nexport async function fetchNpmVersionFromRegistryForTag(\n packageName: string,\n tag: string,\n) {\n // npm will assume tag is `\"latest\"` unless otherwise specified\n const packageAtTag = `${packageName}@${tag}`;\n\n const version = await fetchPackageVersionFromNpmRegistry(packageAtTag);\n const cleanedVersion = clean(version);\n\n if (!cleanedVersion) {\n throw new Error(\n `Failed to fetch version for package \"${packageName}\" at tag \"${tag}\".`,\n );\n }\n return cleanedVersion;\n}\n\nexport async function fetchPackageVersionFromNpmRegistry(\n packageSpecifier: string,\n registryUrl?: string,\n) {\n const failedFetchErrorMessage = `Failed to fetch version from npm registry for ${packageSpecifier}.`;\n try {\n const args = [\"view\", packageSpecifier, \"version\"];\n if (registryUrl) {\n args.push(\"--registry\", registryUrl);\n }\n const version = await spawnAsync(\"npm\", args);\n return version;\n } catch (e) {\n console.error(failedFetchErrorMessage);\n const error = e instanceof Error ? e : new Error(\"Unknown error\");\n throw error;\n }\n}\n\nexport async function parsePackageVersion(args: {\n name: string;\n version?: string;\n tag?: string;\n}) {\n if (args.version) {\n if (!valid(clean(args.version))) {\n throw new Error(`Invalid version specified: ${args.version}`);\n }\n return args.version;\n }\n\n const versionForTag = await fetchNpmVersionFromRegistryForTag(\n args.name,\n args.tag ?? \"latest\",\n );\n return versionForTag;\n}\n\nexport async function makeVersionedDependencies(args: {\n names: string[];\n version?: string;\n tag?: string;\n}) {\n return await Promise.all(\n args.names.map((name) =>\n makeVersionedDependency({\n name,\n ...args,\n }),\n ),\n );\n}\n\nexport async function makeVersionedDependenciesMap(args: {\n names: readonly string[];\n version?: string;\n tag?: string;\n}): Promise<Record<string, string>> {\n const entries = await Promise.all(\n args.names.map(async (name) => {\n const version = await parsePackageVersion({ name, ...args });\n return [name, version] as const;\n }),\n );\n return Object.fromEntries(entries);\n}\n\nasync function makeVersionedDependency(args: {\n name: string;\n version?: string;\n tag?: string;\n}) {\n const version = await parsePackageVersion(args);\n return `\"${args.name}\": \"${version}\"`;\n}\n\nexport function parseTag(args: {\n tag?: string;\n dev?: boolean;\n staging?: boolean;\n rc?: boolean;\n}) {\n const { tag, dev, staging, rc } = args;\n if (tag) return tag;\n if (dev) return \"dev\";\n if (staging) return \"staging\";\n if (rc) return \"rc\";\n return \"latest\";\n}\n\nexport function parsePackageManager(args?: {\n packageManager?: Agent;\n npm?: boolean;\n pnpm?: boolean;\n yarn?: boolean;\n bun?: boolean;\n}): Agent | undefined {\n const { npm, pnpm, yarn, bun, packageManager } = args ?? {};\n if (npm) return \"npm\";\n if (pnpm) return \"pnpm\";\n if (yarn) return \"yarn\";\n if (bun) return \"bun\";\n if (packageManager) return packageManager;\n return undefined;\n}\n\nexport function handleMutuallyExclusiveOptions(\n options: Record<string, string | boolean | number | undefined>,\n optionsName: string,\n) {\n const mutuallyExclusiveOptions = Object.entries(options)\n .map(([k, v]) => {\n if (v !== undefined) return k;\n return undefined;\n })\n .filter((v) => v !== undefined);\n\n if (mutuallyExclusiveOptions.length > 1) {\n throw new Error(\n `Cannot specify multiple ${optionsName} options. You provided: ${mutuallyExclusiveOptions.join(\", \")}`,\n );\n }\n}\n\nexport function getTagFromVersion(version: string) {\n if (version.includes(\"dev\")) return \"dev\";\n if (version.includes(\"staging\")) return \"staging\";\n if (version.includes(\"rc\")) return \"rc\";\n return \"latest\";\n}\n\nexport function logVersionUpdate(args: {\n name: string;\n version: string;\n newVersion: string;\n}) {\n const { name, version, newVersion } = args;\n console.log(\n `⚙️ Updating ${chalk.bold(name)}: ${chalk.blue(version)} -> ${chalk.green(newVersion)}`,\n );\n}\n\nexport async function getPackageVersionFromPackageJson(\n packageJsonPath: string,\n) {\n const packageJson = await readPackage({ cwd: packageJsonPath });\n const version = packageJson.version;\n return version;\n}\n","import type { Dirent } from \"node:fs\";\nimport { statSync } from \"node:fs\";\nimport { stat } from \"node:fs/promises\";\nimport { isTruthy } from \"remeda\";\nexport async function directoryExists(path: string | null | undefined) {\n if (!path) return false;\n try {\n const stats = await stat(path);\n if (stats.isDirectory()) return true;\n } catch (e) {\n return false;\n }\n return false;\n}\n\nexport function directoryExistsSync(\n path: string | null | undefined,\n): path is string {\n if (!isTruthy(path)) return false;\n return statSync(path, { throwIfNoEntry: false })?.isDirectory() === true;\n}\n\nexport function isDirectory(\n dirent: Dirent | undefined | null,\n): dirent is Dirent {\n return dirent?.isDirectory() === true;\n}\n","import type { Dirent } from \"node:fs\";\nimport { statSync } from \"node:fs\";\nimport { stat } from \"node:fs/promises\";\nimport { isTruthy } from \"remeda\";\nexport async function fileExists(path: string | null | undefined) {\n if (!path) return false;\n try {\n const stats = await stat(path);\n if (stats.isFile()) return true;\n } catch (e) {\n return false;\n }\n return false;\n}\n\nexport function fileExistsSync(\n path: string | null | undefined,\n): path is string {\n if (!isTruthy(path)) return false;\n return statSync(path, { throwIfNoEntry: false })?.isFile() === true;\n}\n\nexport function isFile(dirent: Dirent | undefined | null): dirent is Dirent {\n return dirent?.isFile() === true;\n}\n","import { readPackage } from \"read-pkg\";\n\nexport async function getPackageNameFromPackageJson() {\n const packageJson = await readPackage();\n return packageJson.name;\n}\n","import path from \"node:path\";\nimport npa from \"npm-package-arg\";\nimport { packageDirectory } from \"package-directory\";\nimport type { Agent } from \"package-manager-detector\";\nimport { POWERHOUSE_CONFIG_FILE, POWERHOUSE_GLOBAL_DIR } from \"../constants.js\";\nimport type { PackageManagerArgs } from \"../types.js\";\nimport {\n fetchPackageVersionFromNpmRegistry,\n parsePackageManager,\n} from \"./dependencies.js\";\nimport { directoryExists } from \"./directory-exists.js\";\nimport { fileExists } from \"./file-exists.js\";\n\nexport async function isPowerhouseProject(dir: string) {\n const powerhouseConfigPath = path.join(dir, POWERHOUSE_CONFIG_FILE);\n\n return await fileExists(powerhouseConfigPath);\n}\n\nexport async function getLocalPowerhouseProjectDirPath() {\n const projectDirPath = await packageDirectory();\n if (!projectDirPath) return undefined;\n\n const dirIsPowerhouseProject = await isPowerhouseProject(projectDirPath);\n if (!dirIsPowerhouseProject) return undefined;\n\n return projectDirPath;\n}\n\nexport async function getGlobalPowerhouseProjectDirPath() {\n const hasPowerhouseGlobalDir = await directoryExists(POWERHOUSE_GLOBAL_DIR);\n if (!hasPowerhouseGlobalDir) return undefined;\n\n const globalDirIsPowerhouseProject = await isPowerhouseProject(\n POWERHOUSE_GLOBAL_DIR,\n );\n if (!globalDirIsPowerhouseProject) return undefined;\n\n return POWERHOUSE_GLOBAL_DIR;\n}\n\nexport async function getPackageManagerAtPowerhouseProjectDirPath(\n projectDirPath: string | undefined,\n) {\n const { detect } = await import(\"package-manager-detector\");\n const detectResult = await detect({\n cwd: projectDirPath,\n });\n return detectResult?.agent;\n}\n\nexport async function getPowerhouseProjectInstallCommand(\n packageManagerAgent: Agent,\n args: string[] = [],\n) {\n const { resolveCommand } = await import(\"package-manager-detector\");\n const resolvedCommand = resolveCommand(packageManagerAgent, \"install\", args);\n if (!resolvedCommand) {\n console.warn(\n `Failed to get install command in project directory, calling back to 'npm install'`,\n );\n return \"npm install\";\n }\n const { command: packageManager, args: installArgs } = resolvedCommand;\n return `${packageManager} ${installArgs.join(\" \")}`;\n}\n\nexport async function getPowerhouseProjectUninstallCommand(\n projectDirPath: string | undefined,\n args: string[] = [],\n) {\n const agent =\n await getPackageManagerAtPowerhouseProjectDirPath(projectDirPath);\n if (!agent) {\n console.warn(\n `Failed to detect package manager in project directory, falling back to 'npm' as package manager.`,\n );\n }\n const { resolveCommand } = await import(\"package-manager-detector\");\n const resolvedCommand = resolveCommand(agent ?? \"npm\", \"uninstall\", args);\n if (!resolvedCommand) {\n console.warn(\n `Failed to get uninstall command in project directory, calling back to 'npm uninstall'`,\n );\n return \"npm uninstall\";\n }\n const { command: packageManager, args: uninstallArgs } = resolvedCommand;\n return `${packageManager} ${uninstallArgs.join(\" \")}`;\n}\n\nexport async function makeDependenciesWithVersions(\n dependencies: string[],\n registryUrl?: string,\n) {\n const dependenciesWithVersions = await Promise.all(\n dependencies.map(async (dependency) => {\n const parsed = npa(dependency);\n const { name } = parsed;\n if (!name) {\n throw new Error(`Package name for ${dependency} is invalid.`);\n }\n // Dist-tag specs (e.g. `name@dev`, `name@staging`) are preserved\n // verbatim in powerhouse.config.json so Connect re-resolves them\n // against the registry at load time — which matches the user's\n // intent when they typed a tag (\"follow this stream\") rather than a\n // version (\"pin this build\"). Semver versions/ranges and bare names\n // still resolve to a concrete value via `npm view` so builds stay\n // reproducible.\n if (parsed.type === \"tag\") {\n const tag = parsed.fetchSpec ?? parsed.rawSpec;\n if (tag) {\n return { name, version: tag };\n }\n }\n const version = await fetchPackageVersionFromNpmRegistry(\n dependency,\n registryUrl,\n );\n return { name, version };\n }),\n );\n return dependenciesWithVersions;\n}\n\nexport async function getPowerhouseProjectInfo(\n args?: Partial<PackageManagerArgs>,\n options?: { silent?: boolean },\n) {\n const localProjectPath = await getLocalPowerhouseProjectDirPath();\n const globalProjectPath = await getGlobalPowerhouseProjectDirPath();\n const projectPath = localProjectPath ?? globalProjectPath;\n const isGlobal = !localProjectPath && !!globalProjectPath;\n const packageManagerFromArgs = parsePackageManager(args);\n const packageManagerFromProject =\n await getPackageManagerAtPowerhouseProjectDirPath(projectPath);\n\n if (\n packageManagerFromArgs &&\n packageManagerFromProject &&\n packageManagerFromArgs !== packageManagerFromProject\n ) {\n throw new Error(\n `You specified package manager ${packageManagerFromArgs} but your project already has dependencies installed with ${packageManagerFromProject}. Please first remove your lockfile and node_modules before running install with ${packageManagerFromArgs}.`,\n );\n }\n\n if (\n !packageManagerFromArgs &&\n !packageManagerFromProject &&\n !options?.silent\n ) {\n console.warn(\n \"No package manager specified or detected, falling back to `npm`...\",\n );\n }\n\n const packageManager =\n packageManagerFromArgs ?? packageManagerFromProject ?? \"npm\";\n\n return {\n projectPath,\n localProjectPath,\n globalProjectPath,\n packageManager,\n isGlobal,\n };\n}\n","import { execSync } from \"child_process\";\n\nexport function runCmd(command: string, options: { cwd?: string } = {}) {\n try {\n execSync(command, { stdio: \"inherit\", cwd: options.cwd });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n throw error;\n }\n}\n","import path from \"node:path\";\nimport { readPackage } from \"read-pkg\";\nimport { fileExists } from \"./file-exists.js\";\nimport { getPowerhouseProjectInfo } from \"./projects.js\";\n\nexport async function getPhCmdVersionInfo(phCmdVersion: string) {\n const phCliVersionInfo = await getPhCliVersionInfo();\n\n return `\n-------------------------------------\nPH CMD version: ${phCmdVersion}\n${phCliVersionInfo}\n-------------------------------------\n`.trim();\n}\n\nexport async function getPhCliVersionInfo() {\n const noProjectWarningMessage = `\n No Powerhouse project directory found.\n To create a local project, run \\`ph init\\`.\n To create a global project, run \\`ph setup-globals\\`.\n`.trim();\n const { projectPath, packageManager, isGlobal } =\n await getPowerhouseProjectInfo(undefined, { silent: true });\n if (!projectPath) {\n return noProjectWarningMessage;\n }\n const projectPackageJsonPath = path.join(projectPath, \"package.json\");\n const projectPackageJsonExists = await fileExists(projectPackageJsonPath);\n if (!projectPackageJsonExists) {\n return noProjectWarningMessage;\n }\n const projectPackageJson = await readPackage({\n cwd: projectPath,\n normalize: false,\n });\n const phCliVersion =\n projectPackageJson.dependencies?.[\"@powerhousedao/ph-cli\"] ??\n projectPackageJson.devDependencies?.[\"@powerhousedao/ph-cli\"];\n if (!phCliVersion) {\n return `\n \\`ph-cli\\` is not installed.\n For a local project, run \\`${packageManager} install @powerhousedao/ph-cli\\`. \n For a global project, run \\`ph setup-globals\\`.\n `.trim();\n }\n return `\nPH CLI version: ${phCliVersion}\nPH CLI path: ${projectPath}\nPH CLI is global project: ${isGlobal}\nPH CLI package manager: ${packageManager}\n `.trim();\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"path\";\n\nexport async function writeFileEnsuringDir(\n filePath: string,\n contents: string | Buffer,\n) {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, contents, { encoding: \"utf-8\" });\n}\n","/**\n * CLI telemetry (error reporting via Sentry).\n *\n * Design:\n * - Opt-out by default, asked once on first interactive run.\n * - Stores consent in ~/.ph/telemetry.json so we never ask twice.\n * - Respects PH_NO_TELEMETRY=1 and DO_NOT_TRACK=1 as immediate kill switches.\n * - Non-interactive (TTY missing, CI, piped) defaults to DISABLED — we don't\n * want to hang a CI pipeline on an unanswered prompt, and we don't want to\n * capture errors without informed consent.\n * - DSN is published in the CLI binary; Sentry DSNs accept events but grant\n * no read access, so this is safe. Hardcoded so users can't accidentally\n * misroute events.\n *\n * PII scrubbing in beforeSend hook:\n * - Home-directory paths collapsed to ~\n * - Flag/arg values that look like secrets (tokens, keys) stripped\n * - No source-context from user files\n */\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\n// Sentry project \"ph-cli\" on the powerhouse-hosted Sentry instance.\n// Public DSNs are safe to ship — they grant write-only ingest access.\nconst SENTRY_DSN =\n \"https://0e7793802288589b4923896118374462@sentry.monitoring.vetra.io/3\";\n\nconst TELEMETRY_FILE = join(homedir(), \".ph\", \"telemetry.json\");\n\ntype TelemetryConfig = {\n enabled: boolean;\n askedAt: string;\n};\n\nexport type CliInvocationInfo = {\n command?: string;\n subcommand?: string;\n pm?: string;\n argv: string[];\n cwd?: string;\n};\n\nexport type TelemetryClient = {\n /**\n * Attaches per-invocation context (command, sanitized argv, package\n * manager) as Sentry tags + a `invocation` context block, plus a single\n * \"cli invoked\" breadcrumb. Safe to call once per process.\n */\n attachInvocationContext: (info: CliInvocationInfo) => void;\n /**\n * Captures an error (if telemetry is initialized) and flushes before the\n * caller calls process.exit(). Safe no-op when telemetry is disabled.\n */\n captureCliError: (\n err: unknown,\n opts?: { kind?: \"crash\" | \"user\" },\n ) => Promise<void>;\n};\n\nfunction isExplicitlyDisabled(): boolean {\n // Standard opt-out signals respected by most OSS CLIs.\n return (\n process.env.PH_NO_TELEMETRY === \"1\" ||\n process.env.PH_NO_TELEMETRY === \"true\" ||\n process.env.DO_NOT_TRACK === \"1\" ||\n process.env.DO_NOT_TRACK === \"true\"\n );\n}\n\nfunction isExplicitlyEnabled(): boolean {\n return (\n process.env.PH_TELEMETRY === \"1\" || process.env.PH_TELEMETRY === \"true\"\n );\n}\n\nfunction isInteractive(): boolean {\n // Only ask if stdin is a TTY and CI env isn't set.\n return Boolean(process.stdin.isTTY) && !process.env.CI;\n}\n\nfunction readConfig(): TelemetryConfig | null {\n try {\n if (!existsSync(TELEMETRY_FILE)) return null;\n return JSON.parse(readFileSync(TELEMETRY_FILE, \"utf8\")) as TelemetryConfig;\n } catch {\n return null;\n }\n}\n\nfunction writeConfig(cfg: TelemetryConfig): void {\n try {\n mkdirSync(join(homedir(), \".ph\"), { recursive: true });\n writeFileSync(TELEMETRY_FILE, JSON.stringify(cfg, null, 2));\n } catch {\n // non-fatal; we'll just ask again next time\n }\n}\n\n/**\n * Prompts the user once, caches the answer. Must be called before init.\n * Returns `true` if telemetry should be enabled, `false` otherwise.\n */\nexport async function resolveTelemetryConsent(): Promise<boolean> {\n if (isExplicitlyDisabled()) return false;\n if (isExplicitlyEnabled()) return true;\n\n const cached = readConfig();\n if (cached) return cached.enabled;\n\n if (!isInteractive()) {\n // Non-interactive first run: stay silent, don't ask, don't send. User can\n // opt in later with `ph telemetry on` or PH_TELEMETRY=1.\n return false;\n }\n\n const enquirer = await import(\"enquirer\");\n try {\n const { enabled } = await enquirer.default.prompt<{ enabled: boolean }>({\n type: \"confirm\",\n name: \"enabled\",\n message:\n \"Help improve Powerhouse by sending anonymous error reports? \" +\n \"(stack traces only, paths and secrets are scrubbed)\",\n initial: true,\n });\n writeConfig({ enabled, askedAt: new Date().toISOString() });\n return enabled;\n } catch {\n // user hit Ctrl-C during prompt — treat as no, but don't persist so we\n // ask again next time\n return false;\n }\n}\n\nfunction scrubString(input: string): string {\n if (!input) return input;\n const home = homedir();\n let out = input;\n // Collapse home dir to ~\n if (home && out.includes(home)) {\n out = out.split(home).join(\"~\");\n }\n // Strip common secret-shaped flag values: --token=XYZ, --api-key XYZ, etc.\n out = out.replace(\n /(--?(?:token|api[-_]?key|password|secret|auth)[=\\s])([^\\s]+)/gi,\n \"$1<redacted>\",\n );\n return out;\n}\n\ntype ScrubbableFrame = {\n filename?: string;\n abs_path?: string;\n pre_context?: unknown;\n context_line?: unknown;\n post_context?: unknown;\n vars?: unknown;\n};\n\ntype ScrubbableException = {\n value?: string;\n stacktrace?: { frames?: ScrubbableFrame[] };\n};\n\ntype ScrubbableEvent = {\n message?: string;\n logentry?: { message?: string };\n exception?: { values?: ScrubbableException[] };\n server_name?: string;\n extra?: Record<string, unknown>;\n};\n\nfunction scrubEvent<T>(event: T): T {\n const e = event as ScrubbableEvent;\n try {\n if (e.message) e.message = scrubString(e.message);\n if (e.logentry?.message) {\n e.logentry.message = scrubString(e.logentry.message);\n }\n const values = e.exception?.values;\n if (Array.isArray(values)) {\n for (const ex of values) {\n if (ex.value) ex.value = scrubString(ex.value);\n const frames = ex.stacktrace?.frames;\n if (Array.isArray(frames)) {\n for (const f of frames) {\n if (f.filename) f.filename = scrubString(f.filename);\n if (f.abs_path) f.abs_path = scrubString(f.abs_path);\n // Drop captured source context from user machines — privacy.\n delete f.pre_context;\n delete f.context_line;\n delete f.post_context;\n delete f.vars;\n }\n }\n }\n }\n // Server name can leak the user's machine hostname; drop it.\n delete e.server_name;\n // Strip raw argv from extra context.\n if (e.extra) {\n delete e.extra.argv;\n delete e.extra.env;\n }\n } catch {\n // Never let scrubbing throw — worst case we drop the event below.\n }\n return event;\n}\n\n/**\n * Initializes Sentry for CLI error reporting if telemetry is enabled.\n * Safe to call multiple times; only the first call takes effect.\n */\nexport async function initCliTelemetry(opts: {\n cliName: \"ph-cli\" | \"ph-cmd\";\n release?: string;\n}): Promise<TelemetryClient | undefined> {\n const enabled = await resolveTelemetryConsent();\n if (!enabled) return;\n\n const Sentry = await import(\"@sentry/node-core/light\");\n const os = await import(\"node:os\");\n const sentryClient = Sentry.init({\n dsn: SENTRY_DSN,\n release: opts.release,\n environment: process.env.NODE_ENV || \"production\",\n sendDefaultPii: false,\n defaultIntegrations: false,\n integrations: [\n // Only the bare minimum — no automatic HTTP/FS instrumentation.\n ],\n beforeSend(event) {\n return scrubEvent(event);\n },\n beforeBreadcrumb(breadcrumb) {\n if (breadcrumb.message) {\n breadcrumb.message = scrubString(breadcrumb.message);\n }\n return breadcrumb;\n },\n });\n Sentry.setTag(\"cli_name\", opts.cliName);\n if (opts.release) Sentry.setTag(\"cli_version\", opts.release);\n // Environment tags — `defaultIntegrations: false` strips Sentry's auto\n // node-context, so attach the bits we care about manually (and keep\n // hostname out of it).\n Sentry.setTag(\"os\", process.platform);\n Sentry.setTag(\"arch\", process.arch);\n Sentry.setTag(\"node_version\", process.version);\n Sentry.setTag(\"ci\", String(Boolean(process.env.CI)));\n Sentry.setTag(\"tty\", String(Boolean(process.stdin.isTTY)));\n Sentry.setContext(\"runtime\", {\n name: \"node\",\n version: process.version,\n });\n Sentry.setContext(\"os\", {\n name: process.platform,\n version: os.release(),\n });\n Sentry.setContext(\"device\", {\n arch: process.arch,\n });\n if (!sentryClient) {\n return;\n }\n return {\n attachInvocationContext(info: CliInvocationInfo) {\n const argv = info.argv.map(scrubString);\n const flagNames = info.argv\n .filter((a) => a.startsWith(\"-\"))\n .map((a) => a.split(\"=\")[0]);\n if (info.command) Sentry.setTag(\"command\", info.command);\n if (info.subcommand) Sentry.setTag(\"subcommand\", info.subcommand);\n if (info.pm) Sentry.setTag(\"pm\", info.pm);\n Sentry.setContext(\"invocation\", {\n command: info.command,\n subcommand: info.subcommand,\n argv,\n flag_names: flagNames,\n argv_count: argv.length,\n cwd: info.cwd ? scrubString(info.cwd) : undefined,\n });\n Sentry.addBreadcrumb({\n category: \"cli\",\n level: \"info\",\n message: \"cli invoked\",\n data: {\n command: info.command,\n pm: info.pm,\n tty: Boolean(process.stdin.isTTY),\n ci: Boolean(process.env.CI),\n },\n });\n },\n captureCliError: async (\n err: unknown,\n captureOpts?: { kind?: \"crash\" | \"user\" },\n ) => {\n try {\n Sentry.setTag(\"error_kind\", captureOpts?.kind ?? \"crash\");\n sentryClient.captureException(err);\n await sentryClient.flush(2000);\n } catch {\n // Reporting must never mask the real error.\n }\n },\n };\n}\n\n/**\n * Explicitly set telemetry consent (used by `ph telemetry on|off`).\n */\nexport function setTelemetryConsent(enabled: boolean): void {\n writeConfig({ enabled, askedAt: new Date().toISOString() });\n}\n\n/**\n * Returns the current telemetry state — useful for `ph telemetry status`.\n */\nexport function getTelemetryStatus():\n | { source: \"env\"; enabled: boolean }\n | { source: \"config\"; enabled: boolean; askedAt: string }\n | { source: \"default\"; enabled: false } {\n if (isExplicitlyDisabled()) return { source: \"env\", enabled: false };\n if (isExplicitlyEnabled()) return { source: \"env\", enabled: true };\n const cached = readConfig();\n if (cached)\n return {\n source: \"config\",\n enabled: cached.enabled,\n askedAt: cached.askedAt,\n };\n return { source: \"default\", enabled: false };\n}\n","export const PACKAGES_DEPENDENCIES = [\n \"@powerhousedao/builder-tools\",\n \"@powerhousedao/codegen\",\n \"@powerhousedao/common\",\n \"@powerhousedao/config\",\n \"@powerhousedao/design-system\",\n \"document-drive\",\n \"document-model\",\n \"@powerhousedao/reactor\",\n \"@powerhousedao/reactor-api\",\n \"@powerhousedao/reactor-browser\",\n \"@powerhousedao/reactor-mcp\",\n \"@powerhousedao/switchboard-gui\",\n \"@powerhousedao/vetra\",\n \"@powerhousedao/analytics-engine-core\",\n \"@powerhousedao/analytics-engine-knex\",\n \"@powerhousedao/analytics-engine-pg\",\n \"@powerhousedao/analytics-engine-browser\",\n \"@powerhousedao/analytics-engine-graphql\",\n \"@powerhousedao/shared\",\n \"@powerhousedao/powerhouse-vetra-packages\",\n \"@powerhousedao/analytics-engine-core\",\n \"@powerhousedao/analytics-engine-graphql\",\n \"@powerhousedao/analytics-engine-knex\",\n \"@powerhousedao/analytics-engine-pg\",\n \"@powerhousedao/analytics-engine-browser\",\n \"@renown/sdk\",\n] as const;\n\nexport const CLIS_DEPENDENCIES = [\"ph-cmd\", \"@powerhousedao/ph-cli\"];\nexport const APPS_DEPENDENCIES = [\n \"@powerhousedao/connect\",\n \"@powerhousedao/switchboard\",\n];\n\nexport const ALL_POWERHOUSE_DEPENDENCIES = [\n ...PACKAGES_DEPENDENCIES,\n ...CLIS_DEPENDENCIES,\n ...APPS_DEPENDENCIES,\n];\n","import chalk from \"chalk\";\nimport path from \"node:path\";\nimport { readPackage } from \"read-pkg\";\nimport { writePackage } from \"write-package\";\nimport {\n ALL_POWERHOUSE_DEPENDENCIES,\n APPS_DEPENDENCIES,\n CLIS_DEPENDENCIES,\n} from \"../../constants.js\";\nimport { directoryExists, logVersionUpdate, runCmd } from \"../index.mjs\";\nexport async function runUseLocal(monorepoPath: string, skipInstall?: boolean) {\n const monorepoDirExists = await directoryExists(monorepoPath);\n\n if (!monorepoDirExists) {\n throw new Error(\n \"❌ No directory found at the powerhouse monorepo path you specified.\",\n );\n }\n\n console.log(\n `\\n▶️ Linking powerhouse dependencies to \"${chalk.bold(monorepoPath)}...\\n`,\n );\n\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, version] of Object.entries(packageJson.dependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, version] of Object.entries(packageJson.devDependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n packageJson.peerDependencies[name] = \"*\";\n logVersionUpdate({\n name,\n version,\n newVersion: \"*\",\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(chalk.green(`\\n✅ Project linked successfully\\n`));\n\n if (!skipInstall) {\n console.log(`Installing linked dependencies with \\`pnpm\\`\\n`);\n runCmd(`pnpm install`);\n }\n}\n\nfunction buildPnpmLink(packageName: string, monorepoPath: string) {\n const isCli = CLIS_DEPENDENCIES.includes(packageName);\n const isApp = APPS_DEPENDENCIES.includes(packageName);\n const packageDir = isCli ? \"clis\" : isApp ? \"apps\" : \"packages\";\n const packageNameWithoutNamespace = packageName.replace(\n \"@powerhousedao/\",\n \"\",\n );\n const packagePath = path\n .join(monorepoPath, packageDir, packageNameWithoutNamespace)\n .replace(\"analytics-engine-\", \"analytics-engine/\");\n const pnpmLink = `link:${packagePath}`;\n\n return pnpmLink;\n}\n","// Single source of truth for JSON Schema shapes shared between the source\n// PowerhouseConfig schema (packages/shared/clis/source-config-schema.ts) and\n// the runtime RuntimePowerhouseConfig schema\n// (packages/builder-tools/connect-utils/runtime-config-schema.ts).\n//\n// When a shared shape changes, edit it here — both schemas pick it up.\n\nexport const powerhousePackageSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"packageName\"],\n properties: {\n packageName: {\n type: \"string\",\n description: \"Fully qualified npm package name (e.g. @scope/name).\",\n },\n version: {\n type: \"string\",\n description: \"Exact version (registry providers) or omit to take latest.\",\n },\n provider: {\n type: \"string\",\n enum: [\"npm\", \"github\", \"local\", \"registry\"],\n description: \"Where Connect should resolve the package from at runtime.\",\n },\n url: {\n type: \"string\",\n description:\n \"Override URL for non-registry providers (e.g. github tarball).\",\n },\n },\n} as const;\n\n// Reusable shape for `connect.drives.sections.{remote,local}` — three\n// affirmative-named toggles per section. The legacy public+cloud sections\n// have been collapsed into a single `remote`.\nconst driveSectionSchema = {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Visibility and add/delete affordances for a drive section in the sidebar.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description: \"When false, the section is hidden in the sidebar.\",\n default: true,\n },\n allowAdd: {\n type: \"boolean\",\n description:\n \"When false, the section's 'add drive' affordance is hidden.\",\n default: true,\n },\n allowDelete: {\n type: \"boolean\",\n description:\n \"When false, drives in this section cannot be deleted from the UI.\",\n default: true,\n },\n },\n} as const;\n\n// Reusable shape for a runtime-caching / denylist URL match. A string is\n// handed to Workbox verbatim; `{ source, flags }` is rebuilt into a RegExp at\n// build time. Function patterns aren't serialisable and can't be expressed\n// from config — only Connect's built-in rules use them (see the runtime-caching\n// rules in builder-tools' connect-utils/service-worker/service-worker.ts).\nconst pwaUrlPatternSchema = {\n description:\n \"URL match. A string is matched verbatim by Workbox; { source, flags } is rebuilt into a RegExp at build time.\",\n oneOf: [\n { type: \"string\" },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"source\"],\n properties: {\n source: { type: \"string\", description: \"RegExp source.\" },\n flags: { type: \"string\", description: \"RegExp flags (e.g. 'i').\" },\n },\n },\n ],\n} as const;\n\n// Reusable web-app-manifest icon shape (manifest.icons and file-handler icons).\nconst pwaIconSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"src\"],\n properties: {\n src: { type: \"string\" },\n sizes: { type: \"string\" },\n type: { type: \"string\" },\n purpose: { type: \"string\" },\n },\n} as const;\n\nexport const phConnectRuntimeConfigSchema = {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Connect-specific UI customisations. All fields optional; omit the section entirely for default behaviour.\",\n properties: {\n branding: {\n type: \"object\",\n additionalProperties: false,\n description: \"App identity and visual branding.\",\n properties: {\n appName: {\n type: \"string\",\n description:\n \"Browser tab title and any in-app brand text. Defaults to 'Powerhouse Connect'.\",\n },\n homeBackground: {\n type: [\"string\", \"null\"],\n description:\n \"Hero image on the empty home screen. URL or path to override; null or omitted uses the bundled default image.\",\n },\n },\n },\n app: {\n type: \"object\",\n additionalProperties: false,\n description: \"Top-level Connect application behaviour.\",\n properties: {\n logLevel: {\n type: \"string\",\n enum: [\"debug\", \"info\", \"warn\", \"error\"],\n description:\n \"Log level applied by Connect's logger at boot. Affects browser-side output only.\",\n default: \"info\",\n },\n basePath: {\n type: \"string\",\n description:\n \"Base path Connect is mounted under (e.g. '/connect' for subpath deploys). Normalised at runtime to start and end with '/'. Defaults to the build-time BASE_URL.\",\n default: \"/\",\n },\n offline: {\n type: \"boolean\",\n description:\n \"When true (default), the build emits a precaching service worker so Connect's app shell works offline, and the SPA registers it at boot. Set false to opt this deployment out: no service worker is built, the SPA skips registration, and any previously-installed worker is unregistered.\",\n default: true,\n },\n studioMode: {\n type: \"boolean\",\n description:\n \"Studio mode. Enables builder-only capabilities: Connect loads the vetra package and exposes DocumentModel (and vetra spec types) as creatable documents. Forced on by `ph vetra` / `ph connect studio`; false by default.\",\n default: false,\n },\n workflowsEnabled: {\n type: \"boolean\",\n description:\n \"Powerhouse workflows in Connect. When true the tab loads the @powerhousedao/workflow package (workflow + connection documents, their editors and Workflow Studio) and the reactor worker registers its document models. Connect's counterpart to the reactor-side `workflows.enabled` / PH_WORKFLOWS_ENABLED; independent of studioMode. False by default.\",\n default: false,\n },\n },\n },\n ai: {\n type: \"object\",\n additionalProperties: false,\n description: \"AI assistant (chat) behaviour.\",\n properties: {\n assistantEnabled: {\n type: \"boolean\",\n description:\n \"When true, Connect mounts the in-browser AI assistant (bottom-right chat FAB that talks to a user-configured OpenAI-compatible endpoint and acts on the reactor). Disabled by default.\",\n default: false,\n },\n },\n },\n packages: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Runtime behaviour for the Connect package manager (separate from top-level `packages[]`, which lists which packages to load).\",\n properties: {\n externalEnabled: {\n type: \"boolean\",\n description:\n \"When false, Connect refuses to load any package that wasn't bundled at build time. Affirmative replacement for the legacy PH_CONNECT_EXTERNAL_PACKAGES_DISABLED env var.\",\n default: true,\n },\n liveReload: {\n type: \"boolean\",\n description:\n \"When true, Connect subscribes to the static-mode `/__packages` SSE channel so live publishes flow into the running tab without a page reload. Only works under hosting that serves this channel (e.g. ph-clint static mode).\",\n default: false,\n },\n },\n },\n drives: {\n type: \"object\",\n additionalProperties: false,\n description: \"Default-drive and add-drive UI behaviour.\",\n properties: {\n allowAddDrive: {\n type: \"boolean\",\n description:\n \"When false, the SPA hides the 'add drive' affordance entirely (top-level). Per-section overrides live in `sections.{remote,local}.allowAdd`.\",\n default: true,\n },\n defaultDrives: {\n type: \"array\",\n description:\n \"Drives the SPA auto-connects to on first load. Each entry is either a remote drive (a URL, with optional name/icon overrides) or a local drive (created locally on first boot, with a stable id and optional name/icon/app).\",\n default: [],\n items: {\n oneOf: [\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"url\"],\n properties: {\n url: { type: \"string\" },\n name: { type: [\"string\", \"null\"] },\n icon: { type: [\"string\", \"null\"] },\n },\n },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"local\", \"id\"],\n properties: {\n local: {\n const: true,\n description:\n \"Discriminator: this entry is a local drive created on first boot.\",\n },\n id: {\n type: \"string\",\n description:\n \"Stable drive id. The drive is created with this id on first boot and is not re-created on later boots.\",\n },\n name: { type: [\"string\", \"null\"] },\n icon: { type: [\"string\", \"null\"] },\n app: {\n type: \"string\",\n description:\n \"Drive app (preferred editor) to open on the drive.\",\n },\n },\n },\n ],\n },\n },\n preserveStrategy: {\n type: \"string\",\n enum: [\"preserve-all\", \"preserve-by-url-and-detach\"],\n description:\n \"Strategy applied when defaultDrives change between deploys. 'preserve-all' keeps user-added drives untouched; 'preserve-by-url-and-detach' detaches removed default drives. No schema default — opt-in only.\",\n },\n sections: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-section visibility and affordance toggles. `remote` covers what was historically split into 'public' + 'cloud'; `local` is browser-local drives.\",\n properties: {\n remote: driveSectionSchema,\n local: driveSectionSchema,\n },\n },\n },\n },\n renown: {\n type: \"object\",\n additionalProperties: false,\n description: \"Renown identity / authentication coordinates.\",\n properties: {\n url: {\n type: \"string\",\n description: \"Renown auth service URL.\",\n default: \"https://www.renown.id\",\n },\n networkId: {\n type: \"string\",\n description: \"CAIP-2 network namespace (e.g. 'eip155').\",\n default: \"eip155\",\n },\n chainId: {\n type: \"number\",\n description: \"CAIP-2 chain reference within the network namespace.\",\n default: 1,\n },\n namespace: {\n type: \"string\",\n description:\n \"Renown localStorage namespace; share it across Connects to share login.\",\n },\n switchboardUrl: {\n type: \"string\",\n description:\n \"Switchboard GraphQL URL. When set, Connect enables in-page (no-redirect) Renown sign-in; otherwise it falls back to the redirect flow via `url`.\",\n },\n adapters: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-adapter wallet config for in-page auth. Presence of an adapter key enables it; omit or leave empty for redirect-only behaviour.\",\n properties: {\n rainbow: {\n type: \"object\",\n additionalProperties: false,\n description: \"wagmi + RainbowKit external-wallet adapter config.\",\n properties: {\n walletConnectProjectId: {\n type: \"string\",\n description:\n \"WalletConnect project id; required for this adapter to function.\",\n },\n infuraProjectId: {\n type: \"string\",\n description:\n \"Optional Infura project id used to build RPC transports.\",\n },\n },\n },\n privy: {\n type: \"object\",\n additionalProperties: false,\n description: \"Privy embedded/social adapter config.\",\n properties: {\n appId: {\n type: \"string\",\n description:\n \"Privy application id; required for this adapter to function.\",\n },\n clientId: {\n type: \"string\",\n description: \"Optional Privy client id.\",\n },\n methods: {\n type: \"array\",\n description:\n \"Login methods this adapter offers; default per adapter when omitted.\",\n items: { type: \"string\" },\n },\n },\n },\n },\n },\n },\n },\n sentry: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Sentry error-tracking coordinates. Set `dsn` to enable Sentry; leave `dsn` null to disable. The Sentry release tag stays build-time (stamped via Vite's `define` from WORKSPACE_VERSION) so it always matches the sourcemaps uploaded by CI.\",\n properties: {\n dsn: {\n type: [\"string\", \"null\"],\n description:\n \"Sentry DSN URL. `null` disables Sentry entirely; the SPA never loads the Sentry SDK chunk.\",\n default: null,\n },\n env: {\n type: \"string\",\n description:\n \"Sentry environment label, surfaced as the `environment` tag on every event.\",\n default: \"dev\",\n },\n tracing: {\n type: \"boolean\",\n description: \"Enable Sentry performance tracing.\",\n default: false,\n },\n },\n },\n instance: {\n type: \"object\",\n additionalProperties: false,\n required: [\"namespace\", \"reactorWorker\"],\n description:\n \"Per-instance identity. Lets one origin host multiple isolated Connect instances, each with its own storage + SharedWorker namespace.\",\n properties: {\n namespace: {\n type: [\"string\", \"null\"],\n description:\n \"Explicit storage/SharedWorker namespace for this instance. `null` derives it from the base path (and, later, the configured endpoint), so root deployments stay byte-identical.\",\n default: null,\n },\n reactorWorker: {\n type: \"boolean\",\n description:\n \"Host the reactor in a shared worker instead of on the main thread. Off by default; the main-thread reactor stays the proven path until cutover is verified.\",\n default: false,\n },\n },\n },\n reactor: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Settings for the reactor Connect runs in the browser, on the main thread or in the shared worker alike.\",\n properties: {\n featureFlags: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Enforcement flags. Each implies its predecessors, and the reactor refuses to boot on a set that names a later flag without an earlier one. These are consensus settings: a Connect syncing with a fleet must carry the same flags the fleet does, or the two reach different replay outcomes for the same history and diverge.\",\n properties: {\n documentDecisions: {\n type: \"boolean\",\n description:\n \"Decide writes from the document stream rather than the document meta cache, so a backdated deletion denies the operations that sort after it.\",\n default: false,\n },\n authEnforcement: {\n type: \"boolean\",\n description:\n \"Enforce the auth scope's policy at admission, replay, and read. Requires documentDecisions.\",\n default: false,\n },\n authGroups: {\n type: \"boolean\",\n description:\n \"Let `{ group }` principals match against the rosters of the group documents a policy names. Requires authEnforcement.\",\n default: false,\n },\n authConditions: {\n type: \"boolean\",\n description:\n \"Evaluate `where` and `match` conditions on grants. Requires authGroups. Do not enable on a fleet `preflight:auth` reports as crossing a reducer version.\",\n default: false,\n },\n },\n },\n },\n },\n pwa: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Progressive-web-app / service-worker overrides, layered on Connect's built-in PWA defaults at build time. Scalar fields deep-merge (this layer wins); the array members (icons, file_handlers, globs, runtimeCaching and denylist patterns) are additive; maximumFileSizeToCacheInBytes takes the max across contributors. (categories is not set here — it is derived from the manifest's category field.) Only applied when connect.app.offline is true.\",\n properties: {\n manifest: {\n type: \"object\",\n additionalProperties: false,\n description: \"Web-app-manifest field overrides.\",\n properties: {\n name: { type: \"string\" },\n short_name: { type: \"string\" },\n description: { type: \"string\" },\n theme_color: { type: \"string\" },\n background_color: { type: \"string\" },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n },\n start_url: { type: \"string\" },\n scope: { type: \"string\" },\n icons: {\n type: \"array\",\n description:\n \"Icons appended to the built-in set and de-duplicated by (src, sizes, purpose).\",\n items: pwaIconSchema,\n },\n file_handlers: {\n type: \"array\",\n description:\n \"File associations appended after Connect's built-in .phd/.phdm handler and de-duplicated on the whole entry. Entries only declare accepted types; there is no action field, because opening the files requires Connect's own runtime handling, so every handler opens at the app root.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"accept\"],\n properties: {\n accept: {\n type: \"object\",\n description:\n \"MIME type → file extensions. Each extension must start with '.'; browsers ignore entries without it.\",\n additionalProperties: {\n type: \"array\",\n items: { type: \"string\", pattern: \"^\\\\.\" },\n },\n },\n icons: {\n type: \"array\",\n description: \"OS-level file-type icons.\",\n items: pwaIconSchema,\n },\n launch_type: {\n type: \"string\",\n enum: [\"single-client\", \"multiple-clients\"],\n },\n },\n },\n },\n launch_handler: {\n type: \"object\",\n additionalProperties: false,\n required: [\"client_mode\"],\n description:\n \"How the OS launches the app for handled files/links. Connect defaults to focus-existing.\",\n properties: {\n client_mode: {\n type: \"string\",\n enum: [\n \"auto\",\n \"focus-existing\",\n \"navigate-existing\",\n \"navigate-new\",\n ],\n },\n },\n },\n },\n },\n globPatterns: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Extra Workbox precache globs, unioned with the built-ins.\",\n },\n globIgnores: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Extra precache ignore globs, unioned with the built-ins.\",\n },\n maximumFileSizeToCacheInBytes: {\n type: \"number\",\n description:\n \"Raise the precache file-size ceiling. The max across all contributors wins, so no contributor can shrink another's limit.\",\n },\n runtimeCaching: {\n type: \"array\",\n description:\n \"Runtime-caching rules appended after the built-in rules. Workbox is first-match-wins, so these cannot override a built-in rule matching the same URL.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"urlPattern\", \"handler\"],\n properties: {\n urlPattern: pwaUrlPatternSchema,\n handler: {\n type: \"string\",\n enum: [\n \"CacheFirst\",\n \"CacheOnly\",\n \"NetworkFirst\",\n \"NetworkOnly\",\n \"StaleWhileRevalidate\",\n ],\n },\n method: {\n type: \"string\",\n enum: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"HEAD\", \"PATCH\"],\n },\n options: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cacheName: { type: \"string\" },\n networkTimeoutSeconds: {\n type: \"number\",\n description:\n \"Seconds a NetworkFirst rule waits for the network before falling back to the cache.\",\n },\n expiration: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n maxEntries: { type: \"number\" },\n maxAgeSeconds: { type: \"number\" },\n },\n },\n cacheableResponse: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n statuses: { type: \"array\", items: { type: \"number\" } },\n headers: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n },\n },\n },\n },\n navigateFallbackDenylist: {\n type: \"array\",\n description:\n \"Extra SPA navigate-fallback denylist patterns, unioned with the built-ins.\",\n items: pwaUrlPatternSchema,\n },\n },\n },\n },\n} as const;\n","// JSON Schema (draft-07) for the source `powerhouse.config.json` (the file at\n// the project root, hand-edited by developers, consumed by the `ph` CLI).\n//\n// Mirrors the `PowerhouseConfig` TypeScript type in ./types.ts. Drift between\n// the TS type and this schema is guarded by ./source-config-schema.test.ts.\n//\n// Shared field shapes (PowerhousePackage, PHConnectRuntimeConfig) are imported\n// from `@powerhousedao/shared/connect` so the source schema and the runtime\n// schema (in builder-tools/connect-utils) stay in sync by construction.\n\nimport {\n phConnectRuntimeConfigSchema,\n powerhousePackageSchema,\n} from \"../connect/schema-fragments.js\";\nimport { LOG_LEVELS } from \"./constants.js\";\n\nexport const SOURCE_CONFIG_SCHEMA_ID =\n \"https://powerhouse.inc/schemas/powerhouse.source.json\";\n\nexport const sourceConfigSchema = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n $id: SOURCE_CONFIG_SCHEMA_ID,\n title: \"Powerhouse source configuration\",\n description:\n \"Project-root powerhouse.config.json: the developer-edited build manifest read by the `ph` CLI and Vite plugins.\",\n type: \"object\",\n additionalProperties: false,\n // No fields are strictly required at the file level: the `ph` CLI merges\n // DEFAULT_CONFIG (constants.ts) into whatever the file contains, so an\n // empty `{}` is a valid source config. The schema describes what fields\n // are *recognised* and their shapes, not what must be present.\n properties: {\n $schema: {\n type: \"string\",\n description:\n \"Optional JSON Schema reference for editor autocomplete. Set to the GitHub-hosted schema URL.\",\n },\n logLevel: {\n type: \"string\",\n enum: [...LOG_LEVELS],\n description: \"Log level for CLI commands and the reactor.\",\n },\n documentModelsDir: {\n type: \"string\",\n description: \"Path to the project's document model definitions.\",\n },\n editorsDir: {\n type: \"string\",\n description: \"Path to the project's editors.\",\n },\n processorsDir: {\n type: \"string\",\n description: \"Path to the project's processors.\",\n },\n subgraphsDir: {\n type: \"string\",\n description: \"Path to the project's subgraphs.\",\n },\n importScriptsDir: {\n type: \"string\",\n description: \"Path to the project's import scripts.\",\n },\n skipFormat: {\n type: \"boolean\",\n description:\n \"When true, codegen skips Prettier formatting on generated files.\",\n },\n interactive: {\n type: \"boolean\",\n description: \"Run CLI commands in interactive mode where applicable.\",\n },\n watch: {\n type: \"boolean\",\n description: \"Watch source files and rerun on changes.\",\n },\n reactor: {\n type: \"object\",\n additionalProperties: false,\n description: \"Reactor server configuration.\",\n properties: {\n port: {\n type: \"number\",\n description: \"Port the reactor HTTP server listens on.\",\n },\n https: {\n oneOf: [\n { type: \"boolean\" },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"keyPath\", \"certPath\"],\n properties: {\n keyPath: {\n type: \"string\",\n description: \"Path to TLS private key.\",\n },\n certPath: {\n type: \"string\",\n description: \"Path to TLS certificate.\",\n },\n },\n },\n ],\n description:\n \"Enable HTTPS. `true` for self-signed; object with key/cert paths for custom TLS.\",\n },\n storage: {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\"],\n description: \"Reactor persistent storage backend.\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"filesystem\", \"memory\", \"postgres\", \"browser\"],\n },\n filesystemPath: {\n type: \"string\",\n description: \"Required when `type: filesystem`.\",\n },\n postgresUrl: {\n type: \"string\",\n description: \"Required when `type: postgres`.\",\n },\n },\n },\n },\n },\n auth: {\n type: \"object\",\n additionalProperties: false,\n required: [\"admins\"],\n description: \"Authentication and authorisation settings.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description: \"Master toggle for the auth subsystem.\",\n },\n admins: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"DIDs granted admin role.\",\n },\n renown: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Which Renown instance this reactor authenticates against, server-side.\",\n properties: {\n source: {\n type: \"string\",\n enum: [\"remote\", \"self\"],\n description:\n 'Source of truth for credential checks. \"self\" reads this reactor\\'s own renown read model; \"remote\" (default) queries a Renown or Switchboard instance. Overridden by RENOWN_SOURCE.',\n },\n url: {\n type: \"string\",\n description:\n \"Renown base URL, also used by this reactor's own identity. Defaults to https://www.renown.id. Overridden by RENOWN_URL.\",\n },\n switchboardUrl: {\n type: \"string\",\n description:\n \"Switchboard GraphQL endpoint to read credentials from directly, skipping Renown discovery. Overridden by SWITCHBOARD_URL.\",\n },\n },\n },\n },\n },\n switchboard: {\n type: \"object\",\n additionalProperties: false,\n description: \"Switchboard server configuration.\",\n properties: {\n database: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n url: {\n type: \"string\",\n description: \"Database connection URL.\",\n },\n },\n },\n port: {\n type: \"number\",\n description: \"Port the switchboard HTTP server listens on.\",\n },\n },\n },\n studio: {\n type: \"object\",\n additionalProperties: false,\n required: [\"https\"],\n description: \"Connect Studio dev-server configuration.\",\n properties: {\n port: {\n type: \"number\",\n description: \"Port the studio dev server listens on.\",\n },\n host: {\n type: \"string\",\n description: \"Host interface to bind.\",\n },\n https: {\n type: \"boolean\",\n description: \"Serve studio over HTTPS.\",\n },\n openBrowser: {\n type: \"boolean\",\n description: \"Open a browser tab on studio start.\",\n },\n },\n },\n packages: {\n type: \"array\",\n description:\n \"Powerhouse packages this project depends on. Shape is shared with the runtime config.\",\n items: powerhousePackageSchema,\n },\n vetra: {\n type: \"object\",\n additionalProperties: false,\n description: \"Vetra integration coordinates.\",\n properties: {\n driveId: { type: \"string\" },\n driveUrl: { type: \"string\" },\n connectPort: {\n type: \"integer\",\n description:\n \"Port `ph vetra`'s Connect dev server listens on. Assigned per project by `ph init`. Overridden by PH_VETRA_CONNECT_PORT or --connect-port.\",\n },\n },\n },\n workflows: {\n type: \"object\",\n additionalProperties: false,\n description: \"Powerhouse workflows on this reactor.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description:\n \"Register the workflow document models and run workflows. Overridden by PH_WORKFLOWS_ENABLED.\",\n },\n },\n },\n packageRegistryUrl: {\n type: \"string\",\n description:\n \"Project-wide package registry endpoint. Used by `ph install` / `ph publish` / `ph registry-login` and Switchboard, and copied verbatim into the runtime config so the Connect SPA's Package Manager UI reads the same registry.\",\n },\n connect: {\n ...phConnectRuntimeConfigSchema,\n description:\n \"Connect-specific UI customisations. Copied verbatim into the runtime config at build time.\",\n },\n },\n} as const;\n","// Sub-path: this module loads on the cold path of every CLI invocation.\nimport lt from \"semver/functions/lt.js\";\nimport {\n BOILERPLATE_ALLOWED_BUILDS,\n MINIMUM_NODE_VERSION,\n} from \"./constants.js\";\n\n/**\n * Mutates a resolved `pnpm dlx ...` command to add one `--allow-build=<pkg>`\n * flag per package in {@link BOILERPLATE_ALLOWED_BUILDS}, so pnpm 11's\n * `strict-dep-builds=true` default doesn't prompt for approval during the\n * outer dlx download. No-op for other package managers or non-dlx commands.\n */\nexport function injectPnpmAllowBuilds(\n pm: string,\n resolved: { command: string; args: string[] },\n): void {\n if (pm !== \"pnpm\" || resolved.args[0] !== \"dlx\") return;\n const flags = BOILERPLATE_ALLOWED_BUILDS.map((pkg) => `--allow-build=${pkg}`);\n resolved.args = [resolved.args[0], ...flags, ...resolved.args.slice(1)];\n}\n\nexport class NodeVersionError extends Error {\n constructor(currentVersion: string, minimumVersion: string) {\n super(\n `Node version ${minimumVersion} or higher is required. Current version: ${currentVersion}`,\n );\n this.name = \"NodeVersionError\";\n }\n\n static isError(error: unknown): error is NodeVersionError {\n return error instanceof Error && error.name === \"NodeVersionError\";\n }\n}\n\nexport function assertNodeVersion(nodeVersion = process.versions.node) {\n if (!nodeVersion) return;\n\n if (lt(nodeVersion, MINIMUM_NODE_VERSION)) {\n throw new NodeVersionError(nodeVersion, MINIMUM_NODE_VERSION);\n }\n}\n"],"x_google_ignoreList":[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAa,kBAAkB;CAC7B;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,iBAAiB,OAAU;AACxC,MAAa,sBAAsB;AACnC,MAAa,yBAAA,IAA+C;AAE5D,MAAa,6BAA6B,CACxC,gBACA,6BACD;AAED,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,6BAA6B;AAE1C,MAAa,+BAA+B;AAE5C,MAAa,yBAAyB;AAEtC,MAAa,qBAAqB;AAElC,MAAa,uBAAuB;AAEpC,MAAa,2BAA2B;AAqBxC,MAAa,yBAAyB;AACtC,MAAa,gCAAgC;AAC7C,MAAa,2BAA2B;AACxC,MAAa,kCAAkC;AAE/C,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;AACpC,MAAa,SAAS;AACtB,MAAa,yBAAyB;AACtC,MAAa,qBAAqB;AAElC,MAAa,yBAAA;AAEb,MAAa,WAAW,SAAS;AAEjC,MAAa,wBAAwB,KAAK,UAAA,MAA6B;AAGvE,MAAa,8BAA8B,CACzC,kBACA,iCACD;AAID,MAAa,sBAAsB;AACnC,MAAa,gCACX;AACF,MAAa,kBAAkB;AAC/B,MAAa,sBAAsB;AACnC,MAAa,2BAA2B;AAQxC,MAAa,6BAA6B;EACvC,kBAAkB;EAAE,MAAM;EAAO,KAAK;EAAW;EACjD,sBAAsB;EAAE,MAAM;EAAM,KAAK;EAAU;CACpD,OAAO;EAAE,MAAM;EAAO,KAAK;EAAU;CACrC,aAAa;EAAE,MAAM;EAAO,KAAK;EAAU;CAC3C,KAAK;EAAE,MAAM;EAAM,KAAK;EAAS;CAClC;AAID,MAAa,uBAAuB;CAClC,oBAAoB;EAClB,eAAe,CAAC,8BAA8B;EAC9C,cAAc,EAAE;EAChB,cAAc,EAAE;EACjB;CAGD,OAAO;EACL,eAAe,EAAE;EACjB,cAAc,EAAE;EAChB,cAAc,CAAC,yBAAyB;EACzC;CACF;AASD,MAAa,yBAAyB,CACpC,GAAG,6BACH,GAAG,qBAAqB,mBAAmB,cAC5C;AAOD,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAOD,MAAa,mCAAmC;CAC9C,YAAY;CACZ,MAAM;CACN,UAAU;CACX;AAED,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,qBAAqB;CAChC,KAAK;EACH,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,aAAa;EACX,OAAO;EACP,SAAS;EACV;CACD,qBAAqB;EACnB,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,uBAAuB;EACrB,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,aAAa;EACX,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,eAAe;EACb,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,eAAe;EACb,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,gBAAgB;EACd,OAAO;EACP,SAAS;EACT,MAAM;EACP;CAID,YAAY;EACV,OAAO;EACP,MAAM;EACP;CACD,cAAc;EACZ,OAAO;EACP,MAAM;EACP;CACD,cAAc;CACd,eAAe;CAChB;AAED,MAAa,iBAAiB;CAC5B,cAAc;CACd,MAAM;CACN,YAAY;CACZ,QAAQ;CACR,gBAAgB;CAChB,KAAK;CACL,aAAa;CACb,UAAU;CACV,SAAS;CACT,OAAO;CACP,SAAS;CACT,SAAS;CACT,OAAO;CACP,mBACE;CACF,qBACE;CACH;AAED,MAAa,uBAAuB,EAAE;AAItC,MAAa,kCAAkC;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAID,MAAa,2BAA2B;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,0BAA0B;CACrC,wBAAwB;CACxB,8BAA8B;CAC9B,uCAAuC;CACvC,oBAAoB;CACpB,qBAAqB;CACrB,eAAe;CACf,gBAAgB;CAChB,oBAAoB;CACpB,wBAAwB;CACxB,uBAAuB;CACvB,OAAO;CACP,QAAQ;CACR,mBAAmB;CACnB,aAAa;CACb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EAAI;EAAI;EAAI;EAAI;EAAI;EAAK;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAK;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAK;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAK;EAAG;EAAI;EAAK;EAAK;EAAK;EAAI;EAAK;EAAM;EAAI;EAAI;EAAM;EAAI;EAAG;EAAI;EAAM;EAAG;EAAK;EAAM;EAAI;EAAM;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAK;EAAI;EAAK;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAM;EAAI;EAAI;EAAI;EAAK;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAK;EAAM;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAM;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAM;EAAI;EAAG;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAI;EAAK;EAAI;EAAK;EAAI;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAG;EAAG;EAAM;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAM;EAAO;EAAI;EAAM;EAAG;EAAM;EAAG;EAAM;EAAI;EAAK;EAAM;EAAK;EAAM;EAAM;EAAG;EAAK;CAC1tE,MAAM,wBAAwB;EAAC;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAK;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAK;EAAI;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAK;EAAG;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;E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N,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,IAAI;GACF,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY,EACV,kBAAkB;IAChB,MAAM;IACN,aACE;IACF,SAAS;IACV,EACF;GACF;EACD,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,iBAAiB;KACf,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,YAAY;KACV,MAAM;KACN,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS,EAAE;KACX,OAAO,EACL,OAAO,CACL;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,MAAM;MACjB,YAAY;OACV,KAAK,EAAE,MAAM,UAAU;OACvB,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OACnC;MACF,EACD;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,SAAS,KAAK;MACzB,YAAY;OACV,OAAO;QACL,OAAO;QACP,aACE;QACH;OACD,IAAI;QACF,MAAM;QACN,aACE;QACH;OACD,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,KAAK;QACH,MAAM;QACN,aACE;QACH;OACF;MACF,CACF,EACF;KACF;IACD,kBAAkB;KAChB,MAAM;KACN,MAAM,CAAC,gBAAgB,6BAA6B;KACpD,aACE;KACH;IACD,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,QAAQ;MACR,OAAO;MACR;KACF;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,KAAK;KACH,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,WAAW;KACT,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,SAAS;KACP,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,WAAW;KACT,MAAM;KACN,aACE;KACH;IACD,gBAAgB;KACd,MAAM;KACN,aACE;KACH;IACD,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,SAAS;OACP,MAAM;OACN,sBAAsB;OACtB,aAAa;OACb,YAAY;QACV,wBAAwB;SACtB,MAAM;SACN,aACE;SACH;QACD,iBAAiB;SACf,MAAM;SACN,aACE;SACH;QACF;OACF;MACD,OAAO;OACL,MAAM;OACN,sBAAsB;OACtB,aAAa;OACb,YAAY;QACV,OAAO;SACL,MAAM;SACN,aACE;SACH;QACD,UAAU;SACR,MAAM;SACN,aAAa;SACd;QACD,SAAS;SACP,MAAM;SACN,aACE;SACF,OAAO,EAAE,MAAM,UAAU;SAC1B;QACF;OACF;MACF;KACF;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,KAAK;KACH,MAAM,CAAC,UAAU,OAAO;KACxB,aACE;KACF,SAAS;KACV;IACD,KAAK;KACH,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,SAAS;KACP,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACF;GACF;EACD,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,aAAa,gBAAgB;GACxC,aACE;GACF,YAAY;IACV,WAAW;KACT,MAAM,CAAC,UAAU,OAAO;KACxB,aACE;KACF,SAAS;KACV;IACD,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY,EACV,cAAc;IACZ,MAAM;IACN,sBAAsB;IACtB,aACE;IACF,YAAY;KACV,mBAAmB;MACjB,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,iBAAiB;MACf,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,YAAY;MACV,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,gBAAgB;MACd,MAAM;MACN,aACE;MACF,SAAS;MACV;KACF;IACF,EACF;GACF;EACD,KAAK;GACH,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aAAa;KACb,YAAY;MACV,MAAM,EAAE,MAAM,UAAU;MACxB,YAAY,EAAE,MAAM,UAAU;MAC9B,aAAa,EAAE,MAAM,UAAU;MAC/B,aAAa,EAAE,MAAM,UAAU;MAC/B,kBAAkB,EAAE,MAAM,UAAU;MACpC,SAAS;OACP,MAAM;OACN,MAAM;QAAC;QAAc;QAAc;QAAc;QAAU;OAC5D;MACD,WAAW,EAAE,MAAM,UAAU;MAC7B,OAAO,EAAE,MAAM,UAAU;MACzB,OAAO;OACL,MAAM;OACN,aACE;OACF,OAAO;OACR;MACD,eAAe;OACb,MAAM;OACN,aACE;OACF,OAAO;QACL,MAAM;QACN,sBAAsB;QACtB,UAAU,CAAC,SAAS;QACpB,YAAY;SACV,QAAQ;UACN,MAAM;UACN,aACE;UACF,sBAAsB;WACpB,MAAM;WACN,OAAO;YAAE,MAAM;YAAU,SAAS;YAAQ;WAC3C;UACF;SACD,OAAO;UACL,MAAM;UACN,aAAa;UACb,OAAO;UACR;SACD,aAAa;UACX,MAAM;UACN,MAAM,CAAC,iBAAiB,mBAAmB;UAC5C;SACF;QACF;OACF;MACD,gBAAgB;OACd,MAAM;OACN,sBAAsB;OACtB,UAAU,CAAC,cAAc;OACzB,aACE;OACF,YAAY,EACV,aAAa;QACX,MAAM;QACN,MAAM;SACJ;SACA;SACA;SACA;SACD;QACF,EACF;OACF;MACF;KACF;IACD,cAAc;KACZ,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aACE;KACH;IACD,aAAa;KACX,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aACE;KACH;IACD,+BAA+B;KAC7B,MAAM;KACN,aACE;KACH;IACD,gBAAgB;KACd,MAAM;KACN,aACE;KACF,OAAO;MACL,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,cAAc,UAAU;MACnC,YAAY;OACV,YAAY;OACZ,SAAS;QACP,MAAM;QACN,MAAM;SACJ;SACA;SACA;SACA;SACA;SACD;QACF;OACD,QAAQ;QACN,MAAM;QACN,MAAM;SAAC;SAAO;SAAQ;SAAO;SAAU;SAAQ;SAAQ;QACxD;OACD,SAAS;QACP,MAAM;QACN,sBAAsB;QACtB,YAAY;SACV,WAAW,EAAE,MAAM,UAAU;SAC7B,uBAAuB;UACrB,MAAM;UACN,aACE;UACH;SACD,YAAY;UACV,MAAM;UACN,sBAAsB;UACtB,YAAY;WACV,YAAY,EAAE,MAAM,UAAU;WAC9B,eAAe,EAAE,MAAM,UAAU;WAClC;UACF;SACD,mBAAmB;UACjB,MAAM;UACN,sBAAsB;UACtB,YAAY;WACV,UAAU;YAAE,MAAM;YAAS,OAAO,EAAE,MAAM,UAAU;YAAE;WACtD,SAAS;YACP,MAAM;YACN,sBAAsB,EAAE,MAAM,UAAU;YACzC;WACF;UACF;SACF;QACF;OACF;MACF;KACF;IACD,0BAA0B;KACxB,MAAM;KACN,aACE;KACF,OAAO;KACR;IACF;GACF;EACF;CACF;;;AC/jBD,MAAa,0BACX;AAEF,MAAa,qBAAqB;CAChC,SAAS;CACT,KAAK;CACL,OAAO;CACP,aACE;CACF,MAAM;CACN,sBAAsB;CAKtB,YAAY;EACV,SAAS;GACP,MAAM;GACN,aACE;GACH;EACD,UAAU;GACR,MAAM;GACN,MAAM,CAAC,GAAG,WAAW;GACrB,aAAa;GACd;EACD,mBAAmB;GACjB,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,cAAc;GACZ,MAAM;GACN,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aACE;GACH;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACD,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,OAAO;KACL,OAAO,CACL,EAAE,MAAM,WAAW,EACnB;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,WAAW,WAAW;MACjC,YAAY;OACV,SAAS;QACP,MAAM;QACN,aAAa;QACd;OACD,UAAU;QACR,MAAM;QACN,aAAa;QACd;OACF;MACF,CACF;KACD,aACE;KACH;IACD,SAAS;KACP,MAAM;KACN,sBAAsB;KACtB,UAAU,CAAC,OAAO;KAClB,aAAa;KACb,YAAY;MACV,MAAM;OACJ,MAAM;OACN,MAAM;QAAC;QAAc;QAAU;QAAY;QAAU;OACtD;MACD,gBAAgB;OACd,MAAM;OACN,aAAa;OACd;MACD,aAAa;OACX,MAAM;OACN,aAAa;OACd;MACF;KACF;IACF;GACF;EACD,MAAM;GACJ,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,SAAS;GACpB,aAAa;GACb,YAAY;IACV,SAAS;KACP,MAAM;KACN,aAAa;KACd;IACD,QAAQ;KACN,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aAAa;KACd;IACD,QAAQ;KACN,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,QAAQ;OACN,MAAM;OACN,MAAM,CAAC,UAAU,OAAO;OACxB,aACE;OACH;MACD,KAAK;OACH,MAAM;OACN,aACE;OACH;MACD,gBAAgB;OACd,MAAM;OACN,aACE;OACH;MACF;KACF;IACF;GACF;EACD,aAAa;GACX,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,YAAY,EACV,KAAK;MACH,MAAM;MACN,aAAa;MACd,EACF;KACF;IACD,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,QAAQ;GACnB,aAAa;GACb,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,OAAO;KACL,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD,UAAU;GACR,MAAM;GACN,aACE;GACF,OAAO;GACR;EACD,OAAO;GACL,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,SAAS,EAAE,MAAM,UAAU;IAC3B,UAAU,EAAE,MAAM,UAAU;IAC5B,aAAa;KACX,MAAM;KACN,aACE;KACH;IACF;GACF;EACD,WAAW;GACT,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY,EACV,SAAS;IACP,MAAM;IACN,aACE;IACH,EACF;GACF;EACD,oBAAoB;GAClB,MAAM;GACN,aACE;GACH;EACD,SAAS;GACP,GAAG;GACH,aACE;GACH;EACF;CACF;;;;;;;;;ACpPD,SAAgB,sBACd,IACA,UACM;AACN,KAAI,OAAO,UAAU,SAAS,KAAK,OAAO,MAAO;CACjD,MAAM,QAAQ,2BAA2B,KAAK,QAAQ,iBAAiB,MAAM;AAC7E,UAAS,OAAO;EAAC,SAAS,KAAK;EAAI,GAAG;EAAO,GAAG,SAAS,KAAK,MAAM,EAAE;EAAC;;AAGzE,IAAa,mBAAb,cAAsC,MAAM;CAC1C,YAAY,gBAAwB,gBAAwB;AAC1D,QACE,gBAAgB,eAAe,2CAA2C,iBAC3E;AACD,OAAK,OAAO;;CAGd,OAAO,QAAQ,OAA2C;AACxD,SAAO,iBAAiB,SAAS,MAAM,SAAS;;;AAIpD,SAAgB,kBAAkB,cAAc,QAAQ,SAAS,MAAM;AACrE,KAAI,CAAC,YAAa;AAElB,KAAI,GAAG,aAAA,SAAkC,CACvC,OAAM,IAAI,iBAAiB,aAAa,qBAAqB"}
1
+ {"version":3,"file":"index.mjs","names":["_AGENTS","#message","#input","#jsonParseError","#codeFrame","#getCodeFrame","#rawCodeFrame","#o","#m","#A","#d","#g","#y","#s","#i","#t","#a","#u","#l","#h","#b","#e","#x","#D","#F","#O","#p","#c","#_","#n","#L","#U","#w","#C","#S","#v","#r","#T","#I","#f","#B","#j","#N","#R","#E","#z","#W","#P","#M","#G","#H","#k","#V","#gitHosts","#protocols","#fill","URL","execFileCallback"],"sources":["../../clis/constants.ts","../../clis/file-system/get-config.ts","../../clis/args/common.ts","../../clis/args/access-token.ts","../../clis/args/connect.ts","../../processors/constants.ts","../../clis/args/generate.ts","../../clis/args/inspect.ts","../../clis/args/install.ts","../../clis/args/list.ts","../../clis/args/login.ts","../../clis/args/migrate.ts","../../clis/args/publish.ts","../../clis/args/registry.ts","../../clis/args/switchboard.ts","../../clis/args/uninstall.ts","../../clis/project-env.ts","../../clis/args/vetra.ts","../../clis/command-names.ts","../../clis/args/help.ts","../../clis/args/init.ts","../../clis/args/service.ts","../../clis/args/unpublish.ts","../../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../../node_modules/.pnpm/js-tokens@4.0.0/node_modules/js-tokens/index.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/identifier.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/keyword.js","../../../../node_modules/.pnpm/@babel+helper-validator-identifier@7.28.5/node_modules/@babel/helper-validator-identifier/lib/index.js","../../../../node_modules/.pnpm/@babel+code-frame@7.29.0/node_modules/@babel/code-frame/lib/index.js","../../../../node_modules/.pnpm/index-to-position@1.2.0/node_modules/index-to-position/index.js","../../../../node_modules/.pnpm/parse-json@8.3.0/node_modules/parse-json/index.js","../../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/index.json","../../../../node_modules/.pnpm/spdx-license-ids@3.0.23/node_modules/spdx-license-ids/deprecated.json","../../../../node_modules/.pnpm/spdx-exceptions@2.5.0/node_modules/spdx-exceptions/index.json","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/scan.js","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/parse.js","../../../../node_modules/.pnpm/spdx-expression-parse@3.0.1/node_modules/spdx-expression-parse/index.js","../../../../node_modules/.pnpm/spdx-correct@3.2.0/node_modules/spdx-correct/index.js","../../../../node_modules/.pnpm/validate-npm-package-license@3.0.4/node_modules/validate-npm-package-license/index.js","../../../../node_modules/.pnpm/lru-cache@11.2.7/node_modules/lru-cache/dist/commonjs/index.min.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/hosts.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/parse-url.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/from-url.js","../../../../node_modules/.pnpm/hosted-git-info@9.0.2/node_modules/hosted-git-info/lib/index.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/extract_description.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/typos.json","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/fixer.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/warning_messages.json","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/make_warning.js","../../../../node_modules/.pnpm/normalize-package-data@8.0.0/node_modules/normalize-package-data/lib/normalize.js","../../../../node_modules/.pnpm/unicorn-magic@0.4.0/node_modules/unicorn-magic/node.js","../../../../node_modules/.pnpm/read-pkg@10.1.0/node_modules/read-pkg/index.js","../../clis/file-system/spawn-async.ts","../../clis/file-system/dependencies.ts","../../clis/file-system/directory-exists.ts","../../clis/file-system/file-exists.ts","../../clis/file-system/package-json.ts","../../clis/file-system/projects.ts","../../clis/file-system/run-cmd.ts","../../clis/file-system/version-info.ts","../../clis/file-system/write-file-ensuring-dir.ts","../../clis/services/telemetry.ts","../../constants.ts","../../clis/services/use-local.ts","../../connect/schema-fragments.ts","../../clis/source-config-schema.ts","../../clis/utils.ts"],"sourcesContent":["import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { Manifest } from \"../document-model/types.js\";\nimport type { PowerhouseConfig } from \"./types.js\";\n\nexport const SERVICE_ACTIONS = [\n \"start\",\n \"stop\",\n \"status\",\n \"setup\",\n \"restart\",\n] as const;\n\nexport const SECONDS_IN_DAY = 24 * 60 * 60;\nexport const DEFAULT_EXPIRY_DAYS = 7;\nexport const DEFAULT_EXPIRY_SECONDS = DEFAULT_EXPIRY_DAYS * SECONDS_IN_DAY;\n\nexport const DRIVES_PRESERVE_STRATEGIES = [\n \"preserve-all\",\n \"preserve-by-url-and-detach\",\n] as const;\n\nexport const LOG_LEVELS = [\n \"debug\",\n \"info\",\n \"warn\",\n \"error\",\n \"verbose\",\n] as const;\n\nexport const DEFAULT_TIMEOUT = 300 as const;\n\nexport const DEFAULT_CONNECT_STUDIO_PORT = 3000 as const;\n\nexport const DEFAULT_VETRA_CONNECT_PORT = 3001 as const;\n\nexport const DEFAULT_CONNECT_PREVIEW_PORT = 4173 as const;\n\nexport const DEFAULT_CONNECT_OUTDIR = \".ph/connect-build/dist/\" as const;\n\nexport const DEFAULT_RENOWN_URL = \"https://www.renown.id\" as const;\n\nexport const DEFAULT_REGISTRY_URL = \"https://registry.vetra.io\" as const;\n\nexport const DEFAULT_SWITCHBOARD_PORT = 4001 as const;\n\n// Per-project dev-server port bands. `ph init` assigns each project a port\n// triple derived from its name, so two projects never collide and an agent's\n// MCP URL can be baked into .mcp.json before a session starts.\n//\n// Two hard constraints picked these bands, both below 10000:\n//\n// 1. Below the OS ephemeral range. Linux allocates outbound source ports\n// from 32768-60999 (`/proc/sys/net/ipv4/ip_local_port_range`); macOS and\n// Windows start at 49152. A listener parked in that window can lose a\n// race to a transient outbound socket, which would surface as a\n// `--strictPort` failure blaming a project conflict that does not exist.\n// 2. Below 10000, which is where ph-clint starts. ph-clint derives its own\n// per-CLI ports by hashing into 10000-59900, so staying under 10000\n// keeps the two schemes from ever contending.\n//\n// Within those limits the blocks were chosen by measuring which ports the\n// Powerhouse repos actually reference: 2000-2999 has none, 7000-7999 has one,\n// 6000-6999 has five. See PROJECT_PORT_DENYLIST in project-ports.ts for the\n// individual ports skipped inside them.\nexport const PROJECT_PORT_BAND_SIZE = 1000 as const;\nexport const PROJECT_PORT_BAND_SWITCHBOARD = 7000 as const;\nexport const PROJECT_PORT_BAND_STUDIO = 6000 as const;\nexport const PROJECT_PORT_BAND_VETRA_CONNECT = 2000 as const;\n\nexport const DEFAULT_VETRA_DRIVE_ID = \"vetra\" as const;\n\nexport const MINIMUM_NODE_VERSION = \"24.0.0\" as const;\nexport const PH_BIN = \"ph-cli-legacy\" as const;\nexport const POWERHOUSE_CONFIG_FILE = \"powerhouse.config.json\" as const;\nexport const PH_GLOBAL_DIR_NAME = \".ph\" as const;\n// Keep PH_GLOBAL_PROJECT_NAME for backwards compatibility\nexport const PH_GLOBAL_PROJECT_NAME = PH_GLOBAL_DIR_NAME;\n\nexport const HOME_DIR = homedir();\n\nexport const POWERHOUSE_GLOBAL_DIR = join(HOME_DIR, PH_GLOBAL_DIR_NAME);\n\n// Workspace packages that go in peerDependencies of every generated project.\nexport const VERSIONED_PEER_DEPENDENCIES = [\n \"document-model\",\n \"@powerhousedao/reactor-browser\",\n];\n\ntype PeerSpec = { peer: string; dev: string };\n\nexport const REACTOR_API_PACKAGE = \"@powerhousedao/reactor-api\";\nexport const ANALYTICS_ENGINE_CORE_PACKAGE =\n \"@powerhousedao/analytics-engine-core\";\nexport const GRAPHQL_PACKAGE = \"graphql\";\nexport const GRAPHQL_TAG_PACKAGE = \"graphql-tag\";\nexport const PIECES_FRAMEWORK_PACKAGE = \"@powerhousedao/pieces-framework\";\n\n// External peerDependencies of every generated project.\n// `peer` is the consumer-facing range; `dev` is the exact build-tested pin.\n// graphql / graphql-tag are always-on because the workspace packages pulled\n// in by every `ph init` project (codegen, reactor-api, reactor-browser,\n// vetra-packages) declare them as peers — even projects without subgraphs\n// need them in scope so pnpm hoists a single graphql instance.\nexport const PEER_EXTERNAL_DEPENDENCIES = {\n [GRAPHQL_PACKAGE]: { peer: \"^16\", dev: \"16.12.0\" },\n [GRAPHQL_TAG_PACKAGE]: { peer: \"^2\", dev: \"2.12.6\" },\n react: { peer: \"^19\", dev: \"19.2.6\" },\n \"react-dom\": { peer: \"^19\", dev: \"19.2.6\" },\n zod: { peer: \"^4\", dev: \"4.3.6\" },\n} as const satisfies Record<string, PeerSpec>;\n\n// Per-feature deps added dynamically by codegen when required. `devVersioned`\n// is for a workspace package the build inlines, which no consumer provides.\nexport const FEATURE_DEPENDENCIES = {\n analyticsProcessor: {\n peerVersioned: [ANALYTICS_ENGINE_CORE_PACKAGE],\n peerExternal: {},\n devVersioned: [],\n },\n // Each piece is bundled whole (build-pieces.mts), framework included, so the\n // framework is only ever needed to compile the piece's own source.\n piece: {\n peerVersioned: [],\n peerExternal: {},\n devVersioned: [PIECES_FRAMEWORK_PACKAGE],\n },\n} as const satisfies Record<\n string,\n {\n peerVersioned: readonly string[];\n peerExternal: Record<string, PeerSpec>;\n devVersioned: readonly string[];\n }\n>;\n\nexport const VERSIONED_DEPENDENCIES = [\n ...VERSIONED_PEER_DEPENDENCIES,\n ...FEATURE_DEPENDENCIES.analyticsProcessor.peerVersioned,\n];\n\n// Transitive dependencies whose postinstall scripts the generated project\n// trusts. Mirrors the `allowBuilds` map in the boilerplate's\n// pnpm-workspace.yaml and is also passed as `--allow-build` flags to\n// `pnpm dlx @powerhousedao/ph-cli init` so pnpm 11's strict-dep-builds\n// default doesn't prompt during the outer dlx download.\nexport const BOILERPLATE_ALLOWED_BUILDS = [\n \"@apollo/protobufjs\",\n \"@datadog/pprof\",\n \"@parcel/watcher\",\n \"@reown/appkit\",\n \"bufferutil\",\n \"esbuild\",\n \"keccak\",\n \"protobufjs\",\n \"utf-8-validate\",\n] as const;\n\n// Single-version pins the boilerplate enforces on generated projects,\n// avoiding duplicates from coexisting version ranges. Rendered as pnpm\n// `overrides` (pnpm-workspace.yaml) and as yarn v1 `resolutions`\n// (package.json). Generated-project only — never change the monorepo\n// catalog for this (a re-resolution there pulls a tsc-crashing TS6 beta).\nexport const BOILERPLATE_DEPENDENCY_OVERRIDES = {\n \"date-fns\": \"4.3.0\",\n vite: \"8.0.14\",\n rolldown: \"1.0.2\",\n} as const satisfies Record<string, string>;\n\nexport const VERSIONED_DEV_DEPENDENCIES = [\n \"@powerhousedao/ph-cli\",\n \"@powerhousedao/reactor\",\n \"@powerhousedao/shared\",\n \"@powerhousedao/connect\",\n \"@powerhousedao/design-system\",\n];\n\nexport const packageJsonExports = {\n \".\": {\n types: \"./dist/types/index.d.ts\",\n browser: \"./dist/browser/index.js\",\n node: \"./dist/node/index.mjs\",\n },\n \"./reactor\": {\n types: \"./dist/types/reactor/index.d.ts\",\n browser: \"./dist/browser/reactor/index.js\",\n },\n \"./document-models\": {\n types: \"./dist/types/document-models/index.d.ts\",\n browser: \"./dist/browser/document-models/index.js\",\n node: \"./dist/node/document-models/index.mjs\",\n },\n \"./document-models/*\": {\n types: \"./dist/types/document-models/*/index.d.ts\",\n browser: \"./dist/browser/document-models/*/index.js\",\n node: \"./dist/node/document-models/*/index.mjs\",\n },\n \"./editors\": {\n types: \"./dist/types/editors/index.d.ts\",\n browser: \"./dist/browser/editors/index.js\",\n node: \"./dist/node/editors/index.mjs\",\n },\n \"./editors/*\": {\n types: \"./dist/types/editors/*/editor.d.ts\",\n browser: \"./dist/browser/editors/*/editor.js\",\n node: \"./dist/node/editors/*/editor.mjs\",\n },\n \"./subgraphs\": {\n types: \"./dist/types/subgraphs/index.d.ts\",\n browser: \"./dist/browser/subgraphs/index.js\",\n node: \"./dist/node/subgraphs/index.mjs\",\n },\n \"./processors\": {\n types: \"./dist/types/processors/index.d.ts\",\n browser: \"./dist/browser/processors/index.js\",\n node: \"./dist/node/processors/index.mjs\",\n },\n // Node only, as the build is: a piece is loaded by a host process, never by\n // the browser. Without these a package can build a piece and still fail the\n // `packageName/pieces` import a host resolves it through.\n \"./pieces\": {\n types: \"./dist/types/pieces/index.d.ts\",\n node: \"./dist/node/pieces/index.mjs\",\n },\n \"./pieces/*\": {\n types: \"./dist/types/pieces/*/index.d.ts\",\n node: \"./dist/node/pieces/*/index.mjs\",\n },\n \"./manifest\": \"./dist/powerhouse.manifest.json\",\n \"./style.css\": \"./dist/style.css\",\n} as const;\n\nexport const packageScripts = {\n \"test:watch\": \"vitest\",\n lint: \"oxlint --type-aware --type-check\",\n \"lint:fix\": \"oxlint --type-aware --type-check --fix\",\n format: \"oxfmt\",\n \"format:check\": \"oxfmt --check\",\n tsc: \"tsc\",\n \"tsc:watch\": \"tsc --watch\",\n generate: \"ph-cli generate\",\n connect: \"ph-cli connect\",\n build: \"ph-cli build\",\n reactor: \"ph-cli reactor\",\n service: \"ph-cli service\",\n vetra: \"ph-cli vetra\",\n \"service-startup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-startup.sh\",\n \"service-unstartup\":\n \"bash ./node_modules/@powerhousedao/ph-cli/dist/scripts/service-unstartup.sh\",\n} as const;\n\nexport const externalDependencies = {} as const;\n\n// eslint/prettier devDependencies present in projects scaffolded before the oxc migration.\n// Stripped from package.json during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_DEPENDENCIES = [\n \"@eslint/js\",\n \"eslint\",\n \"eslint-config-prettier\",\n \"eslint-plugin-prettier\",\n \"eslint-plugin-react\",\n \"eslint-plugin-react-hooks\",\n \"globals\",\n \"prettier\",\n \"typescript-eslint\",\n] as const;\n\n// Legacy lint/format config files written by eslint/prettier boilerplate.\n// Removed from the project root during `ph migrate`.\nexport const LEGACY_LINT_FORMAT_FILES = [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \".eslintrc\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.json\",\n \".eslintrc.yml\",\n \".eslintrc.yaml\",\n \".eslintignore\",\n \".prettierrc\",\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.json\",\n \".prettierrc.yml\",\n \".prettierrc.yaml\",\n \"prettier.config.js\",\n \"prettier.config.cjs\",\n \"prettier.config.mjs\",\n \".prettierignore\",\n] as const;\n\nexport const externalDevDependencies = {\n \"@electric-sql/pglite\": \"0.3.15\",\n \"@electric-sql/pglite-tools\": \"0.2.20\",\n \"@powerhousedao/document-engineering\": \"1.40.5\",\n \"@tailwindcss/cli\": \"^4.1.18\",\n \"@tailwindcss/vite\": \"^4.1.18\",\n \"@types/node\": \"^24.9.2\",\n \"@types/react\": \"^19.2.3\",\n \"@types/react-dom\": \"^19.2.3\",\n \"@vitejs/plugin-react\": \"^6.0.1\",\n \"@vitest/coverage-v8\": \"4.1.1\",\n oxfmt: \"0.55.0\",\n oxlint: \"1.70.0\",\n \"oxlint-tsgolint\": \"0.23.0\",\n tailwindcss: \"^4.1.16\",\n typescript: \"^5.9.3\",\n vite: \"^8.0.10\",\n \"vite-tsconfig-paths\": \"6.1.1\",\n vitest: \"4.1.1\",\n} as const;\n\nexport const defaultManifest: Manifest = {\n name: \"\",\n description: \"\",\n category: \"\",\n publisher: {\n name: \"\",\n url: \"\",\n },\n documentModels: [],\n editors: [],\n apps: [],\n subgraphs: [],\n processors: [],\n};\n\nconst DEFAULT_DOCUMENT_MODELS_DIR = \"./document-models\";\nconst DEFAULT_EDITORS_DIR = \"./editors\";\nconst DEFAULT_PROCESSORS_DIR = \"./processors\";\nconst DEFAULT_SUBGRAPHS_DIR = \"./subgraphs\";\nconst DEFAULT_IMPORT_SCRIPTS_DIR = \"./scripts\";\nconst DEFAULT_SKIP_FORMAT = false;\nconst DEFAULT_LOG_LEVEL = \"info\";\n\nexport const DEFAULT_CONFIG: PowerhouseConfig = {\n documentModelsDir: DEFAULT_DOCUMENT_MODELS_DIR,\n editorsDir: DEFAULT_EDITORS_DIR,\n processorsDir: DEFAULT_PROCESSORS_DIR,\n subgraphsDir: DEFAULT_SUBGRAPHS_DIR,\n importScriptsDir: DEFAULT_IMPORT_SCRIPTS_DIR,\n skipFormat: DEFAULT_SKIP_FORMAT,\n logLevel: DEFAULT_LOG_LEVEL,\n auth: {\n enabled: false,\n admins: [],\n },\n};\n","import { readFileSync } from \"node:fs\";\nimport { DEFAULT_CONFIG } from \"../constants.js\";\nimport type { PowerhouseConfig } from \"../types.js\";\n\nexport function getConfig(path = \"./powerhouse.config.json\") {\n let config: PowerhouseConfig = { ...DEFAULT_CONFIG };\n try {\n const configStr = readFileSync(path, \"utf-8\");\n const userConfig = JSON.parse(configStr) as PowerhouseConfig;\n config = { ...config, ...userConfig };\n } catch {\n // console.warn(\"No powerhouse.config.json found, using defaults\");\n }\n\n return config;\n}\n","import {\n array,\n boolean,\n command,\n flag,\n multioption,\n number,\n oneOf,\n option,\n optional,\n string,\n} from \"cmd-ts\";\n// Sub-path: avoids pulling the package-manager-detector runtime here,\n// which `oneOf(AGENTS)` below would force at module load.\nimport type { Agent } from \"package-manager-detector\";\nimport { AGENTS as _AGENTS } from \"package-manager-detector/constants\";\nimport {\n DEFAULT_TIMEOUT,\n DRIVES_PRESERVE_STRATEGIES,\n LOG_LEVELS,\n} from \"../constants.js\";\nimport { getConfig } from \"../file-system/get-config.js\";\n\nexport const AGENTS: Agent[] = _AGENTS;\n\nexport const debugArgs = {\n debug: flag({\n type: optional(boolean),\n long: \"debug\",\n description: \"Log arguments passed to this command\",\n }),\n};\n\nexport const buildArgs = {\n outDir: option({\n type: string,\n long: \"out-dir\",\n description: \"Where to output the bundled code\",\n defaultValue: () => \"dist\" as const,\n defaultValueIsSerializable: true,\n }),\n noSharedDeps: flag({\n type: boolean,\n long: \"no-shared-deps\",\n description:\n \"Bundle the shared dependency set instead of externalizing it (default: externalize)\",\n defaultValue: () => false as const,\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n\nexport const packageManagerArgs = {\n packageManager: option({\n type: optional(oneOf(AGENTS)),\n long: \"package-manager\",\n short: \"p\",\n description:\n \"Specify the package manager to use for your project. Can be one of: `npm`, `pnpm`, `yarn`, or `bun`. Defaults to your environment package manager.\",\n }),\n npm: flag({\n type: optional(boolean),\n long: \"npm\",\n description: \"Use 'npm' as package manager\",\n }),\n pnpm: flag({\n type: optional(boolean),\n long: \"pnpm\",\n description: \"Use 'pnpm' as package manager\",\n }),\n yarn: flag({\n type: optional(boolean),\n long: \"yarn\",\n description: \"Use 'yarn' as package manager\",\n }),\n bun: flag({\n type: optional(boolean),\n long: \"bun\",\n description: \"Use 'bun' as package manager\",\n }),\n};\nexport const getPackageManagerCommand = command({\n name: \"get-package-manager\",\n args: packageManagerArgs,\n handler: (args) => args,\n});\nexport const packages = option({\n type: optional(string),\n long: \"packages\",\n description: \"Comma-separated list of package names to load\",\n env: \"PH_PACKAGES\" as const,\n});\n\nexport const localPackage = option({\n type: optional(string),\n long: \"local-package\",\n description: \"Path to local package to load during development\",\n env: \"PH_LOCAL_PACKAGE\" as const,\n});\n\nexport const disableLocalPackages = flag({\n type: boolean,\n long: \"ignore-local\",\n description: \"Do not load local packages from this project\",\n defaultValue: () => false,\n});\n\nexport const httpsKeyFile = option({\n type: optional(string),\n long: \"https-key-file\",\n description: \"path to the ssl key file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.keyPath;\n },\n});\n\nexport const httpsCertFile = option({\n type: optional(string),\n long: \"https-cert-file\",\n description: \"path to the ssl cert file\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (https === undefined) return undefined;\n if (typeof https === \"boolean\") return undefined;\n return https.certPath;\n },\n});\n\nexport const https = flag({\n type: optional(boolean),\n long: \"https\",\n description: \"Use https\",\n defaultValue: () => {\n const baseConfig = getConfig();\n const https = baseConfig.reactor?.https;\n if (typeof https === \"boolean\") return https;\n return undefined;\n },\n});\n\nexport const vetraSwitchboardArgs = {\n https,\n httpsKeyFile,\n httpsCertFile,\n dev: flag({\n type: optional(boolean),\n long: \"dev\",\n description: \"enable development mode to load local packages\",\n }),\n remoteDrives: multioption({\n type: array(string),\n long: \"remote-drives\",\n description: \"Specify remote drive URLs to use\",\n defaultValue: () => [],\n }),\n disableLocalPackages,\n ...debugArgs,\n};\n\nexport const defaultDrivesUrl = option({\n type: optional(string),\n long: \"default-drives-url\",\n description: \"Comma-separated drive URLs to use as Connect's default drives.\",\n defaultValue: () => \"\",\n});\n\nexport const logLevel = option({\n type: oneOf(LOG_LEVELS),\n long: \"log-level\",\n description: \"Log level for the application\",\n defaultValue: () => \"info\" as const,\n defaultValueIsSerializable: true,\n env: \"PH_CONNECT_LOG_LEVEL\" as const,\n});\n\nexport const connectBasePath = option({\n long: \"base\",\n type: string,\n description: \"Base path for the app\",\n defaultValue: () => \"/\",\n});\n\nexport const renownNamespace = option({\n type: optional(string),\n long: \"renown-namespace\",\n description:\n \"Renown localStorage namespace; share it across Connects to share login.\",\n});\n\nexport const renownSwitchboardUrl = option({\n type: optional(string),\n long: \"renown-switchboard-url\",\n description:\n \"Override connect.renown.switchboardUrl. When set, enables in-page Renown sign-in.\",\n});\n\nexport const drivesPreserveStrategy = option({\n type: oneOf(DRIVES_PRESERVE_STRATEGIES),\n long: \"drive-preserve-strategy\",\n description: \"The preservation strategy to use on default drives\",\n defaultValue: () => \"preserve-by-url-and-detach\" as const,\n defaultValueIsSerializable: true,\n});\n\nexport const force = flag({\n type: optional(boolean),\n long: \"force\",\n description:\n \"Force dep pre-optimization regardless of whether deps have changed.\",\n});\n\nexport const commonArgs = {\n connectBasePath,\n logLevel,\n packages,\n localPackage,\n disableLocalPackages,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n force,\n ...debugArgs,\n};\n\nexport const commonServerArgs = {\n host: option({\n type: optional(string),\n long: \"host\",\n description:\n \"Expose the server to the network. Pass an IP (e.g. 0.0.0.0) to bind to a specific address.\",\n }),\n open: flag({\n type: optional(boolean),\n long: \"open\",\n description: \"Open browser on startup\",\n }),\n cors: flag({\n type: optional(boolean),\n long: \"cors\",\n description: \"Enable CORS\",\n }),\n strictPort: flag({\n type: optional(boolean),\n long: \"strictPort\",\n description: \"Exit if specified port is already in use\",\n }),\n printUrls: flag({\n type: boolean,\n long: \"print-urls\",\n description: \"Print server urls\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n bindCLIShortcuts: flag({\n type: boolean,\n long: \"bind-cli-shortcuts\",\n description: \"Bind CLI shortcuts\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n watchTimeout: option({\n type: number,\n long: \"watch-timeout\",\n description: \"Amount of time to wait before a file is considered changed\",\n defaultValue: () => DEFAULT_TIMEOUT,\n defaultValueIsSerializable: true,\n }),\n};\n","import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_EXPIRY_DAYS } from \"../constants.js\";\n\nexport const accessTokenArgs = {\n expiry: option({\n long: \"expiry\",\n type: optional(string),\n description: `Token expiry duration. Supports: \"7d\" (days), \"24h\" (hours), \"3600\" or \"3600s\" (seconds)`,\n defaultValue: () => `${DEFAULT_EXPIRY_DAYS}d` as const,\n defaultValueIsSerializable: true,\n }),\n audience: option({\n long: \"audience\",\n type: optional(string),\n description: \"Target audience URL for the token\",\n }),\n ...debugArgs,\n};\n","import type { Type } from \"cmd-ts\";\nimport {\n boolean,\n flag,\n number,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport {\n DEFAULT_CONNECT_OUTDIR,\n DEFAULT_CONNECT_PREVIEW_PORT,\n DEFAULT_CONNECT_STUDIO_PORT,\n} from \"../constants.js\";\nimport {\n commonArgs,\n commonServerArgs,\n connectBasePath,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n logLevel,\n renownNamespace,\n renownSwitchboardUrl,\n} from \"./common.js\";\n\n// cmd-ts's built-in `boolean` is intended for `flag()` (presence/absence). With\n// `option()` we need to parse the next argv as a value, but cmd-ts's `boolean`\n// does not coerce the string. This custom Type does.\nconst cliBoolean: Type<string, boolean> = {\n from: (input) => {\n const v = input.toLowerCase();\n if (v === \"true\") return Promise.resolve(true);\n if (v === \"false\") return Promise.resolve(false);\n return Promise.reject(\n new Error(\n `Expected 'true' or 'false' (case-insensitive), got '${input}'.`,\n ),\n );\n },\n description: \"true | false\",\n};\n\nexport const connectStudioArgs = {\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to run the dev server on.\",\n defaultValue: () => DEFAULT_CONNECT_STUDIO_PORT,\n defaultValueIsSerializable: true,\n }),\n renownNamespace,\n ...commonArgs,\n ...commonServerArgs,\n};\n\n// Runtime-config override flags. Each is optional with no default — undefined\n// means \"user did not pass this flag\", so runConnectBuild can include only\n// explicitly-set values in `cliConnectOverride` and avoid clobbering source\n// `powerhouse.config.json` values when no override was intended.\n//\n// These flags occupy the top of the precedence ladder for the runtime config\n// emitted into `dist/powerhouse.config.json`:\n//\n// DEFAULT_CONNECT_CONFIG < source connect.* < --json < individual --flag\n//\n// `--json` accepts a partial `connect.*` blob (e.g. `{\"renown\":{\"url\":\"...\"}}`).\n// Individual flags merge on top of `--json` inside the same CLI layer, so they\n// win on collision. Env vars are NOT part of this build-time merge;\n// PH_CONNECT_CONFIG_JSON is applied to the dist file at container start by\n// the Docker entrypoint (operator-wins: concrete values override the baked\n// file, null/omitted keep it; connect.app.basePath excluded).\nconst connectRuntimeOverrideArgs = {\n json: option({\n type: optional(string),\n long: \"json\",\n description:\n 'Inline JSON override for the runtime connect.* block, e.g. \\'{\"renown\":{\"url\":\"...\"}}\\'. Validated against the runtime schema; deep-merged on top of env seeds and source powerhouse.config.json. Individual --flag values beat --json on collision.',\n }),\n renownUrl: option({\n type: optional(string),\n long: \"renown-url\",\n description: \"Override connect.renown.url.\",\n }),\n renownNetworkId: option({\n type: optional(string),\n long: \"renown-network-id\",\n description: \"Override connect.renown.networkId.\",\n }),\n renownChainId: option({\n type: optional(number),\n long: \"renown-chain-id\",\n description: \"Override connect.renown.chainId.\",\n }),\n renownNamespace,\n renownSwitchboardUrl,\n allowAddDrive: option({\n type: optional(cliBoolean),\n long: \"allow-add-drive\",\n description:\n \"Override connect.drives.allowAddDrive (top-level add-drive toggle).\",\n }),\n externalPackages: option({\n type: optional(cliBoolean),\n long: \"external-packages\",\n description: \"Override connect.packages.externalEnabled.\",\n }),\n workflows: option({\n type: optional(cliBoolean),\n long: \"workflows\",\n description:\n \"Override connect.app.workflowsEnabled (load the @powerhousedao/workflow package: workflow + connection documents, their editors and Workflow Studio).\",\n }),\n remoteDrivesEnabled: option({\n type: optional(cliBoolean),\n long: \"remote-drives-enabled\",\n description:\n \"Override connect.drives.sections.remote.enabled (the unified cloud+public section).\",\n }),\n remoteDrivesAllowAdd: option({\n type: optional(cliBoolean),\n long: \"remote-drives-allow-add\",\n description: \"Override connect.drives.sections.remote.allowAdd.\",\n }),\n remoteDrivesAllowDelete: option({\n type: optional(cliBoolean),\n long: \"remote-drives-allow-delete\",\n description: \"Override connect.drives.sections.remote.allowDelete.\",\n }),\n localDrivesEnabled: option({\n type: optional(cliBoolean),\n long: \"local-drives-enabled\",\n description: \"Override connect.drives.sections.local.enabled.\",\n }),\n localDrivesAllowAdd: option({\n type: optional(cliBoolean),\n long: \"local-drives-allow-add\",\n description: \"Override connect.drives.sections.local.allowAdd.\",\n }),\n localDrivesAllowDelete: option({\n type: optional(cliBoolean),\n long: \"local-drives-allow-delete\",\n description: \"Override connect.drives.sections.local.allowDelete.\",\n }),\n packagesRegistry: option({\n type: optional(string),\n long: \"packages-registry\",\n description: \"Override the top-level packageRegistryUrl.\",\n }),\n appName: option({\n type: optional(string),\n long: \"app-name\",\n description: \"Override connect.branding.appName.\",\n }),\n homeBackground: option({\n type: optional(string),\n long: \"home-background\",\n description:\n 'Override connect.branding.homeBackground. URL or path to an image; pass an empty string (\"\") to reset to the bundled default.',\n }),\n sentryDsn: option({\n type: optional(string),\n long: \"sentry-dsn\",\n description:\n 'Override connect.sentry.dsn (Sentry DSN URL). Pass an empty string (\"\") to set null and disable Sentry.',\n }),\n sentryEnv: option({\n type: optional(string),\n long: \"sentry-env\",\n description: \"Override connect.sentry.env (Sentry environment label).\",\n }),\n sentryTracingEnabled: option({\n type: optional(cliBoolean),\n long: \"sentry-tracing-enabled\",\n description:\n \"Override connect.sentry.tracing (Sentry performance tracing).\",\n }),\n};\n\n// Positional pair shared by `ph connect build` and `ph connect config`. Both\n// commands accept `<key> <value>` to set a single runtime-config field; `config`\n// additionally accepts `<key>` alone for read-mode (`build` rejects the\n// 1-positional case because it has no read semantics). Both are optional in the\n// parser; the handler enforces the per-command shape.\nconst connectPositionalArgs = {\n keyPositional: positional({\n type: optional(string),\n displayName: \"key\",\n description:\n \"Dotted path inside the runtime config (e.g. connect.renown.url). Pair with <value> to set; pass alone to `ph connect config` to read.\",\n }),\n valuePositional: positional({\n type: optional(string),\n displayName: \"value\",\n description:\n \"Value to set at <key>. Coerced against the runtime schema (string, bool, number, enum). Arrays and objects require --json instead.\",\n }),\n};\n\nexport const connectBuildArgs = {\n outDir: option({\n type: string,\n long: \"outDir\",\n description: \"Output directory\",\n defaultValue: () => DEFAULT_CONNECT_OUTDIR,\n defaultValueIsSerializable: true,\n }),\n ...connectRuntimeOverrideArgs,\n ...connectPositionalArgs,\n dynamicBase: flag({\n type: optional(boolean),\n long: \"dynamic-base\",\n description:\n \"Build one bundle that serves under any subpath; base resolved at serve time from a runtime global. Overrides --base.\",\n }),\n favicon: option({\n type: optional(string),\n long: \"favicon\",\n description:\n \"Path to a favicon file (e.g. .ico) to bundle in place of the default Connect icon. Emitted as icon.ico; resolved relative to the build cwd.\",\n }),\n ...commonArgs,\n};\n\nexport const connectPreviewArgs = {\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to run the preview server on.\",\n defaultValue: () => DEFAULT_CONNECT_PREVIEW_PORT,\n defaultValueIsSerializable: true,\n }),\n outDir: option({\n type: string,\n long: \"outDir\",\n description: \"Output directory\",\n defaultValue: () => DEFAULT_CONNECT_OUTDIR,\n defaultValueIsSerializable: true,\n }),\n ...commonArgs,\n ...commonServerArgs,\n};\n\n// `ph connect config` — read, set, or list the runtime config under the\n// `connect.*` block of the dist `powerhouse.config.json`.\n//\n// Mode matrix (exactly one mode per invocation; mutex enforced in\n// `runConnectConfig`):\n//\n// ph connect config → list (print effective merged config)\n// ph connect config <key> → get one value at the dotted key (positional)\n// ph connect config --get <dotted.path> → same as positional <key> (kept for backward compat)\n// ph connect config <key> <value> → set + dual-write to source + dist (positional)\n// ph connect config --<field> <value> → set + dual-write via per-field flag\n// ph connect config --json '{\"…\":\"…\"}' → bulk set + dual-write\n//\n// The 16 field flags below come from `connectRuntimeOverrideArgs`, so\n// `config` and `build` share an identical surface for runtime fields. The 4\n// flags imported individually from `common.ts` (`connectBasePath` /\n// `logLevel` / `defaultDrivesUrl` / `drivesPreserveStrategy`) extend that to\n// 20-flag coverage. The positional `<key>`/`<value>` pair is also shared with\n// `ph connect build` so both commands accept the same set-mode grammar.\n// `--dist-dir` lets Docker / non-default deployments point at a custom dist\n// location; falls back to PH_CONNECT_OUTDIR env, then to the standard\n// `.ph/connect-build/dist/` path.\n//\n// NOTE: the 4 commonArgs flags have built-in cmd-ts defaults\n// (e.g. logLevel=\"info\"), so always parse as defined. The service detects\n// \"user explicitly passed this flag\" via process.argv inspection — see\n// `clis/ph-cli/src/utils/cli-connect-override.ts:wasFlagExplicitlyPassed`.\nexport const connectConfigArgs = {\n get: option({\n type: optional(string),\n long: \"get\",\n description:\n 'Dotted path inside connect.* (e.g. \"connect.renown.url\") to read the effective value. Mutually exclusive with the set modes. Equivalent to `ph connect config <key>` (positional).',\n }),\n distDir: option({\n type: optional(string),\n long: \"dist-dir\",\n description:\n \"Path to the directory containing the dist powerhouse.config.json. Defaults to the PH_CONNECT_OUTDIR env or `.ph/connect-build/dist/`.\",\n }),\n ...connectRuntimeOverrideArgs,\n ...connectPositionalArgs,\n connectBasePath,\n logLevel,\n defaultDrivesUrl,\n drivesPreserveStrategy,\n};\n\nexport const connectArgs = {\n ...connectStudioArgs,\n ...connectBuildArgs,\n ...connectPreviewArgs,\n ...connectConfigArgs,\n};\n","export const PROCESSOR_APPS = [\"connect\", \"switchboard\"] as const;\nexport const DEFAULT_RELATIONAL_PROCESSOR_DB_NAME = \"relational-db\";\nexport const DEFAULT_ANALYTICS_PROCESSOR_DB_NAME = \"analytics-db\";\n","import type { Type } from \"cmd-ts\";\nimport {\n array,\n boolean,\n flag,\n multioption,\n oneOf,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport { PROCESSOR_APPS } from \"processors\";\nimport { debugArgs } from \"./common.js\";\n\nconst ProcessorAppType: Type<string[], (\"connect\" | \"switchboard\")[]> = {\n from(processorApps) {\n if (processorApps.length === 0) {\n throw new Error(\n `No arguments provided for processor apps. Must be \"connect\" and/or \"switchboard\"`,\n );\n }\n if (processorApps.length > 2) {\n throw new Error(\n `Too many arguments provided for processor apps. Must be \"connect\" and/or \"switchboard\"`,\n );\n }\n const allowed = new Set(PROCESSOR_APPS);\n if (\n !processorApps.every((p) => allowed.has(p as \"connect\" | \"switchboard\"))\n ) {\n throw new Error(\n `Processor apps can only be \"connect\" and/or \"switchboard\".`,\n );\n }\n return Promise.resolve(processorApps as (\"connect\" | \"switchboard\")[]);\n },\n};\n\nexport const generateArgs = {\n documentModelFilePositional: positional({\n type: optional(string),\n displayName: \"document model file path\",\n description: \"Path to the document model file.\",\n }),\n documentModelFileOption: option({\n type: optional(string),\n long: \"file\",\n description: \"Path to the document model file.\",\n }),\n editorName: option({\n type: optional(string),\n long: \"editor\",\n description: \"Editor name.\",\n }),\n editorId: option({\n type: optional(string),\n long: \"editor-id\",\n description: \"Editor ID\",\n }),\n editorDirName: option({\n type: optional(string),\n long: \"editor-dir-name\",\n description:\n \"Use a different directory name for the generated editor. Default is the editor name in kebab case.\",\n }),\n documentType: option({\n type: optional(string),\n long: \"document-type\",\n description: \"Document type for the generated document editor.\",\n }),\n documentTypes: option({\n type: optional(string),\n long: \"document-types\",\n description:\n \"[DEPRECATED] Comma separated list of document types for the generated document editor. [WARNING] Generated editor code is not set up to handle multiple document types.\",\n }),\n appName: option({\n type: optional(string),\n long: \"app\",\n description: \"App name.\",\n }),\n appId: option({\n type: optional(string),\n long: \"app-id\",\n description: \"App ID.\",\n }),\n appDirName: option({\n type: optional(string),\n long: \"app-dir-name\",\n description:\n \"Use a different directory name for the generated app. Default is the app name in kebab case.\",\n }),\n processorName: option({\n type: optional(string),\n long: \"processor\",\n description: \"Processor name.\",\n }),\n processorType: option({\n type: oneOf([\"relationalDb\", \"analytics\"] as const),\n long: \"processor-type\",\n description:\n \"Whether to generate an analytics processor or a relational DB processor. Default is analytics.\",\n defaultValue: () => \"analytics\" as const,\n defaultValueIsSerializable: true,\n }),\n processorApps: multioption({\n long: \"processor-apps\",\n type: ProcessorAppType,\n description: \"The apps where the generated processor will run\",\n defaultValue: () => [\"switchboard\" as const],\n defaultValueIsSerializable: true,\n }),\n subgraphName: option({\n type: optional(string),\n long: \"subgraph\",\n description: \"Subgraph name.\",\n }),\n pieceName: option({\n type: optional(string),\n long: \"piece\",\n description: \"Piece name.\",\n }),\n pieceId: option({\n type: optional(string),\n long: \"piece-id\",\n description:\n \"Piece id a workflow block type names, e.g. @acme/piece-crm. Defaults to one derived from the package name.\",\n }),\n pieceVersion: option({\n type: optional(string),\n long: \"piece-version\",\n description:\n \"Version the pieces list declares for the generated piece. Defaults to the package version when the piece is named after the package.\",\n }),\n pieceAuth: option({\n type: oneOf([\"none\", \"secret\", \"custom\"] as const),\n long: \"piece-auth\",\n description:\n \"The kind of connection the generated piece asks for. Default is custom.\",\n defaultValue: () => \"custom\" as const,\n defaultValueIsSerializable: true,\n }),\n pieceActionName: option({\n type: optional(string),\n long: \"piece-action\",\n description: \"Name of an action to generate inside a piece.\",\n }),\n pieceTriggerName: option({\n type: optional(string),\n long: \"piece-trigger\",\n description: \"Name of a trigger to generate inside a piece.\",\n }),\n pieceTriggerStrategy: option({\n type: oneOf([\"polling\", \"webhook\"] as const),\n long: \"piece-trigger-strategy\",\n description: \"How a generated trigger fires. Default is polling.\",\n defaultValue: () => \"polling\" as const,\n defaultValueIsSerializable: true,\n }),\n importScriptName: option({\n type: optional(string),\n long: \"import-script\",\n description: \"Import script name.\",\n }),\n allowedDocumentTypes: multioption({\n type: optional(array(string)),\n long: \"allowed-document-types\",\n description: \"Supported document types for a app.\",\n }),\n migrationFile: option({\n type: optional(string),\n long: \"migration-file\",\n description: \"Path to the migration file.\",\n }),\n schemaFile: option({\n type: optional(string),\n long: \"schema-file\",\n description: \"Path to the output file. Defaults to './schema.ts'\",\n }),\n disableDragAndDrop: flag({\n type: optional(boolean),\n long: \"disable-drag-and-drop\",\n description: \"Disable drag and drop in the generated app.\",\n }),\n force: flag({\n type: optional(boolean),\n long: \"force\",\n short: \"f\",\n description: \"Overwrite operation reducers.\",\n }),\n verbose: flag({\n type: optional(boolean),\n long: \"logs\",\n description: \"Show additional logging information.\",\n }),\n watch: flag({\n type: optional(boolean),\n long: \"watch\",\n short: \"w\",\n description: \"Watch the generated code.\",\n }),\n skipFormat: flag({\n type: optional(boolean),\n long: \"skip-format\",\n short: \"sf\",\n description: \"Skip formatting the generated code.\",\n }),\n useVersioning: flag({\n type: boolean,\n long: \"use-versioning\",\n description: \"Allow upgrading document models with versioning.\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n migrateLegacy: flag({\n type: boolean,\n long: \"migrate-legacy\",\n description:\n \"Migrate existing legacy document model code to versioned structure. Implies --use-versioning.\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n","import { positional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const inspectArgs = {\n packageName: positional({\n type: string,\n displayName: \"package-name\",\n description: \"The name of the package to inspect\",\n }),\n ...debugArgs,\n};\n","import {\n array,\n boolean,\n flag,\n multioption,\n option,\n optional,\n restPositionals,\n string,\n} from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const installArgs = {\n dependencies: restPositionals({\n type: string,\n displayName: \"dependencies\",\n description: \"Names of the dependencies to install\",\n }),\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to install from (overrides config and environment)\",\n }),\n local: flag({\n type: optional(boolean),\n long: \"local\",\n description:\n 'Also install packages into node_modules (marks them as provider: \"local\" so they get bundled into ph connect build)',\n }),\n allowBuild: multioption({\n type: array(string),\n long: \"allow-build\",\n description:\n \"A list of package names that are allowed to run postinstall scripts during installation.\",\n defaultValue: () => [],\n }),\n ...packageManagerArgs,\n ...debugArgs,\n};\n","import { debugArgs } from \"./common.js\";\n\nexport const listArgs = {\n ...debugArgs,\n};\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\nimport { DEFAULT_RENOWN_URL, DEFAULT_TIMEOUT } from \"../constants.js\";\n\nexport const loginArgs = {\n renownUrl: option({\n type: string,\n long: \"renown-url\",\n defaultValue: () => DEFAULT_RENOWN_URL,\n description: `Renown server URL.`,\n defaultValueIsSerializable: true,\n env: \"PH_CONNECT_RENOWN_URL\",\n }),\n timeout: option({\n type: number,\n long: \"timeout\",\n defaultValue: () => DEFAULT_TIMEOUT,\n description: \"Authentication timeout in seconds.\",\n defaultValueIsSerializable: true,\n }),\n logout: flag({\n type: optional(boolean),\n long: \"logout\",\n description: \"Sign out and clear stored credentials\",\n }),\n status: flag({\n type: optional(boolean),\n long: \"status\",\n description: \"Show current authentication status\",\n }),\n showDid: flag({\n type: optional(boolean),\n long: \"show-did\",\n description: \"Show the CLI's DID and exit\",\n }),\n ...debugArgs,\n};\n","import { boolean, flag, option, optional, positional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const migrateArgs = {\n versionPositional: positional({\n type: optional(string),\n displayName: \"version\",\n description:\n \"The version to migrate to. Accepts a valid semver version or `staging`, `dev`, `latest`.\",\n }),\n version: option({\n long: \"version\",\n short: \"v\",\n type: string,\n description:\n \"The version to migrate to. Accepts a valid semver version or `staging`, `dev`, `latest`.\",\n defaultValue: () => \"latest\" as const,\n defaultValueIsSerializable: true,\n }),\n force: flag({\n type: optional(boolean),\n long: \"force\",\n short: \"f\",\n description:\n \"Run migrate from the bundled codegen even if the target version cannot be resolved from the npm registry or differs from the installed ph-cli version.\",\n }),\n ...debugArgs,\n};\n","import { option, optional, rest, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const publishArgs = {\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to publish to (overrides config and environment)\",\n }),\n ...debugArgs,\n forwardedArgs: rest({\n displayName: \"npm-args\",\n description: \"Extra arguments forwarded to npm publish (e.g. --tag dev)\",\n }),\n};\n","import { option, optional, string } from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const DEFAULT_REGISTRY_LOGIN_EXPIRY = \"30d\";\n\nexport const registryLoginArgs = {\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to log in to (overrides PH_REGISTRY_URL and powerhouse.config.json)\",\n }),\n expiry: option({\n type: string,\n long: \"expiry\",\n defaultValue: () => DEFAULT_REGISTRY_LOGIN_EXPIRY,\n description:\n \"Token expiry — formats: '7d' (days), '24h' (hours), '3600' (seconds).\",\n defaultValueIsSerializable: true,\n }),\n ...debugArgs,\n};\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport { packages, vetraSwitchboardArgs } from \"./common.js\";\nimport {\n DEFAULT_SWITCHBOARD_PORT,\n DEFAULT_VETRA_DRIVE_ID,\n} from \"../constants.js\";\n\nexport const switchboardArgs = {\n ...vetraSwitchboardArgs,\n packages,\n port: option({\n type: number,\n long: \"port\",\n description: \"Port to host the api\",\n defaultValue: () => DEFAULT_SWITCHBOARD_PORT,\n defaultValueIsSerializable: true,\n }),\n basePath: option({\n type: optional(string),\n long: \"base-path\",\n description:\n \"base path for the API endpoints (sets the BASE_PATH environment variable)\",\n }),\n keypairPath: option({\n type: optional(string),\n long: \"keypair-path\",\n description: \"path to custom keypair file for identity\",\n }),\n vetraDriveId: option({\n type: string,\n long: \"vetra-drive-id\",\n description: \"Specify a Vetra drive ID\",\n defaultValue: () => DEFAULT_VETRA_DRIVE_ID,\n defaultValueIsSerializable: true,\n }),\n dbPath: option({\n type: optional(string),\n long: \"db-path\",\n description: \"path to the database\",\n }),\n useIdentity: flag({\n type: optional(boolean),\n long: \"use-identity\",\n description:\n \"enable identity using keypair from ph login (uses ~/.ph/keypair.json)\",\n }),\n requireIdentity: flag({\n type: optional(boolean),\n long: \"require-identity\",\n description:\n \"require existing keypair, fail if not found (implies --use-identity)\",\n }),\n migrate: flag({\n type: optional(boolean),\n long: \"migrate\",\n description: \"Run database migrations and exit\",\n }),\n migrateStatus: flag({\n type: optional(boolean),\n long: \"migrate-status\",\n description: \"Show migration status and exit\",\n }),\n reset: flag({\n type: optional(boolean),\n long: \"reset\",\n description:\n \"Wipe the local PGlite switchboard storage after confirmation, then exit\",\n }),\n yes: flag({\n type: optional(boolean),\n long: \"yes\",\n short: \"y\",\n description:\n \"Skip the interactive confirmation prompt for --reset (required for non-interactive use)\",\n }),\n mcp: flag({\n type: boolean,\n long: \"mcp\",\n description: \"enable Mcp route at /mcp\",\n defaultValue: () => true,\n defaultValueIsSerializable: true,\n }),\n useVetraDrive: flag({\n type: boolean,\n long: \"use-vetra-drive\",\n description: \"Use a Vetra drive\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n};\n","import { restPositionals, string } from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const uninstallArgs = {\n dependencies: restPositionals({\n type: string,\n displayName: \"dependencies\",\n description: \"Names of the dependencies to uninstall\",\n }),\n ...packageManagerArgs,\n ...debugArgs,\n};\n","import dotenv from \"dotenv\";\nimport { join } from \"node:path\";\n\nlet loadedFor: string | undefined;\n\n/**\n * Load the project's `.env.local` and `.env` into `process.env`.\n *\n * `dotenv` never overwrites a variable that is already set, so loading\n * `.env.local` first and `.env` second produces the precedence the CLI\n * documents: a real `process.env` value beats `.env.local`, which beats\n * `.env`. One `process.env` lookup afterwards therefore covers all three\n * sources.\n *\n * Idempotent per directory — CLI argument defaults call it lazily and may\n * call it more than once per process.\n */\nexport function loadProjectEnv(cwd: string = process.cwd()): void {\n if (loadedFor === cwd) return;\n loadedFor = cwd;\n // dotenv 16 logs nothing for a missing file, so no suppression option is\n // needed here (and none exists before dotenv 17).\n dotenv.config({ path: join(cwd, \".env.local\") });\n dotenv.config({ path: join(cwd, \".env\") });\n}\n\n/** Test seam: forget which directory has already been loaded. */\nexport function resetProjectEnvForTests(): void {\n loadedFor = undefined;\n}\n\n/**\n * Read an environment variable as a TCP port.\n *\n * Anything that is not a plain integer in 1-65535 is ignored rather than\n * throwing: a typo in `.env` should fall through to the next source in the\n * precedence chain, not break the CLI.\n */\nexport function readPortEnv(name: string): number | undefined {\n const raw = process.env[name]?.trim();\n if (!raw || !/^\\d+$/.test(raw)) return undefined;\n const port = Number(raw);\n if (port < 1 || port > 65535) return undefined;\n return port;\n}\n","import { boolean, flag, number, option, optional, string } from \"cmd-ts\";\nimport {\n DEFAULT_SWITCHBOARD_PORT,\n DEFAULT_VETRA_CONNECT_PORT,\n} from \"../constants.js\";\nimport { getConfig } from \"../file-system/get-config.js\";\nimport { loadProjectEnv, readPortEnv } from \"../project-env.js\";\nimport {\n commonArgs,\n commonServerArgs,\n renownNamespace,\n vetraSwitchboardArgs,\n} from \"./common.js\";\n\n/**\n * Resolve the Vetra Switchboard port.\n *\n * Precedence: CLI flag (cmd-ts applies that above this function) →\n * `process.env` → `.env.local` → `.env` → `powerhouse.config.json` →\n * constant. `loadProjectEnv` folds the two files into `process.env` without\n * clobbering anything already set, so a single lookup covers the middle three.\n */\nexport function resolveSwitchboardPortDefault(): number {\n loadProjectEnv();\n return (\n readPortEnv(\"PH_SWITCHBOARD_PORT\") ??\n getConfig().reactor?.port ??\n DEFAULT_SWITCHBOARD_PORT\n );\n}\n\n/** Resolve the Vetra Connect port through the same chain. */\nexport function resolveConnectPortDefault(): number {\n loadProjectEnv();\n return (\n readPortEnv(\"PH_VETRA_CONNECT_PORT\") ??\n getConfig().vetra?.connectPort ??\n DEFAULT_VETRA_CONNECT_PORT\n );\n}\n\nexport const vetraArgs = {\n switchboardPort: option({\n type: number,\n long: \"switchboard-port\",\n description: \"port to use for the Vetra Switchboard\",\n defaultValue: resolveSwitchboardPortDefault,\n }),\n connectPort: option({\n type: number,\n long: \"connect-port\",\n // Deliberately not `defaultValueIsSerializable`: the value is now\n // per-project, and cmd-ts prints serializable defaults into `--help`,\n // which would bake one project's port into the help text.\n description: \"port to use for the Vetra Connect\",\n defaultValue: resolveConnectPortDefault,\n }),\n remoteDrive: option({\n type: optional(string),\n long: \"remote-drive\",\n description:\n \"URL of remote drive to connect to (skips switchboard initialization)\",\n defaultValue: () => {\n const baseConfig = getConfig();\n return baseConfig.vetra?.driveUrl;\n },\n }),\n watch: flag({\n type: boolean,\n long: \"watch\",\n short: \"w\",\n description:\n \"Enable dynamic loading for document-models and editors in connect-studio and switchboard\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n verbose: flag({\n type: boolean,\n long: \"logs\",\n description: \"Show additional logs\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n disableConnect: flag({\n type: boolean,\n long: \"disable-connect\",\n description:\n \"Skip Connect initialization (only start switchboard and reactor)\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n interactive: flag({\n type: boolean,\n long: \"interactive\",\n description:\n \"Enable interactive mode for code generation (requires user confirmation before generating code)\",\n defaultValue: () => false,\n defaultValueIsSerializable: true,\n }),\n drivesPublicBase: option({\n type: optional(string),\n long: \"drives-public-base\",\n description:\n \"public base URL for the drive URLs advertised to Connect; each drive is exposed as <base>/d/<slug> instead of http://localhost:<switchboard-port>/d/<slug>. Use when the switchboard is reachable through a reverse proxy.\",\n }),\n dbPath: option({\n type: optional(string),\n long: \"db-path\",\n description:\n \"Database path or connection string. Use a `postgres://` URL for Postgres; otherwise treated as a PGlite filesystem path. Leave unset for in-memory PGlite.\",\n }),\n renownNamespace,\n ...commonArgs,\n ...commonServerArgs,\n ...vetraSwitchboardArgs,\n};\n","// Hardcoded so ph-cmd's dispatch doesn't have to evaluate phCliHelpCommands.\n// The compile-time guard in args/help.ts catches drift.\nexport const phCliCommandNames = [\n \"generate\",\n \"vetra\",\n \"connect\",\n \"build\",\n \"publish\",\n \"list\",\n \"l\",\n \"access-token\",\n \"registry-login\",\n \"inspect\",\n \"is\",\n \"migrate\",\n \"switchboard\",\n \"reactor\",\n \"login\",\n \"logout\",\n \"install\",\n \"add\",\n \"i\",\n \"uninstall\",\n \"remove\",\n] as const;\n","import { command } from \"cmd-ts\";\nimport type { phCliCommandNames } from \"../command-names.js\";\nimport { accessTokenArgs } from \"./access-token.js\";\nimport { debugArgs } from \"./common.js\";\nimport { connectArgs } from \"./connect.js\";\nimport { generateArgs } from \"./generate.js\";\nimport { inspectArgs } from \"./inspect.js\";\nimport { installArgs } from \"./install.js\";\nimport { listArgs } from \"./list.js\";\nimport { loginArgs } from \"./login.js\";\nimport { migrateArgs } from \"./migrate.js\";\nimport { publishArgs } from \"./publish.js\";\nimport { registryLoginArgs } from \"./registry.js\";\nimport { switchboardArgs } from \"./switchboard.js\";\nimport { uninstallArgs } from \"./uninstall.js\";\nimport { vetraArgs } from \"./vetra.js\";\n\n// Thin wrapper around `command()` that preserves the literal types of\n// `name` and `aliases` on the return value.\nfunction helpCommand<\n const N extends string,\n const A extends readonly string[] = readonly [],\n>(\n config: Parameters<typeof command>[0] & { name: N; aliases?: A },\n): ReturnType<typeof command> & { readonly name: N; readonly aliases: A } {\n const aliases = (config.aliases ?? ([] as readonly string[])) as A;\n // Forward the original config (with the normalized aliases) through cmd-ts\n // and re-attach the literal types via a localized cast.\n return Object.assign(command({ ...config, aliases: [...aliases] }), {\n name: config.name,\n aliases,\n }) as ReturnType<typeof command> & {\n readonly name: N;\n readonly aliases: A;\n };\n}\n\nexport const phCliHelpCommands = {\n generate: helpCommand({\n name: \"generate\",\n args: generateArgs,\n description: \"Generate powerhouse code\",\n handler: () => {},\n }),\n vetra: helpCommand({\n name: \"vetra\",\n args: vetraArgs,\n description:\n \"Starts Vetra development environment with switchboard, reactor, and connect\",\n handler: () => {},\n }),\n connect: helpCommand({\n name: \"connect\",\n args: connectArgs,\n description: \"Powerhouse Connect commands\",\n handler: () => {},\n }),\n build: helpCommand({\n name: \"build\",\n args: debugArgs,\n description: \"Build your project for publishing to the registry\",\n handler: () => {},\n }),\n publish: helpCommand({\n name: \"publish\",\n args: publishArgs,\n description: \"Publish a package to the Powerhouse registry\",\n handler: () => {},\n }),\n list: helpCommand({\n name: \"list\",\n aliases: [\"l\"],\n args: listArgs,\n description: \"List installed packages\",\n handler: () => {},\n }),\n \"access-token\": helpCommand({\n name: \"access-token\",\n args: accessTokenArgs,\n description: \"Generate a bearer token for API authentication\",\n handler: () => {},\n }),\n \"registry-login\": helpCommand({\n name: \"registry-login\",\n args: registryLoginArgs,\n description:\n \"Log in to a Powerhouse registry (writes a Renown bearer token to ~/.npmrc)\",\n handler: () => {},\n }),\n inspect: helpCommand({\n name: \"inspect\",\n aliases: [\"is\"],\n args: inspectArgs,\n description: \"Inspect a package\",\n handler: () => {},\n }),\n migrate: helpCommand({\n name: \"migrate\",\n args: migrateArgs,\n description: \"Run migrations\",\n handler: () => {},\n }),\n switchboard: helpCommand({\n name: \"switchboard\",\n aliases: [\"reactor\"],\n args: switchboardArgs,\n description: \"Starts local Switchboard\",\n handler: () => {},\n }),\n login: helpCommand({\n name: \"login\",\n args: loginArgs,\n description: \"Authenticate with Renown using your Ethereum wallet\",\n handler: () => {},\n }),\n logout: helpCommand({\n name: \"logout\",\n args: loginArgs,\n description: \"Deletes an existing session created with 'ph login'\",\n handler: () => {},\n }),\n install: helpCommand({\n name: \"install\",\n aliases: [\"add\", \"i\"],\n args: installArgs,\n description: \"Install a Powerhouse dependency\",\n handler: () => {},\n }),\n uninstall: helpCommand({\n name: \"uninstall\",\n aliases: [\"remove\"],\n args: uninstallArgs,\n description: \"Uninstall a Powerhouse dependency\",\n handler: () => {},\n }),\n};\n\nexport { phCliCommandNames } from \"../command-names.js\";\n\n// Compile-time drift guard: phCliCommandNames must match the names+aliases\n// declared above. If you add or rename a command/alias, the type of\n// `_DerivedNames` changes and the assignment below errors until\n// `command-names.ts` is updated to match. Costs nothing at runtime.\ntype _DerivedNames = {\n [K in keyof typeof phCliHelpCommands]:\n | (typeof phCliHelpCommands)[K][\"name\"]\n | (typeof phCliHelpCommands)[K][\"aliases\"][number];\n}[keyof typeof phCliHelpCommands];\n\ntype _Names = (typeof phCliCommandNames)[number];\n\ntype _Equal<A, B> =\n (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2\n ? true\n : false;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst _phCliCommandNamesInSync: _Equal<_DerivedNames, _Names> extends true\n ? true\n : never = true;\n","import {\n boolean,\n flag,\n oneOf,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\nimport { debugArgs, packageManagerArgs } from \"./common.js\";\n\nexport const initArgs = {\n namePositional: positional({\n type: optional(string),\n displayName: \"name\",\n description:\n \"The name of your project. A new directory will be created in your current directory with this name.\",\n }),\n nameOption: option({\n type: optional(string),\n long: \"name\",\n short: \"n\",\n description:\n \"The name of your project. A new directory will be created in your current directory with this name.\",\n }),\n ...packageManagerArgs,\n tag: option({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\", \"rc\"])),\n long: \"tag\",\n short: \"t\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", \"dev\", or \"rc\".`,\n }),\n version: option({\n type: optional(string),\n long: \"version\",\n short: \"v\",\n description:\n \"Specify the exact semver release version to use for your project.\",\n }),\n dev: flag({\n type: optional(boolean),\n long: \"dev\",\n short: \"d\",\n description: \"Use the `dev` release tag.\",\n }),\n staging: flag({\n type: optional(boolean),\n long: \"staging\",\n short: \"s\",\n description: \"Use the `staging` release tag.\",\n }),\n rc: flag({\n type: optional(boolean),\n long: \"rc\",\n description: \"Use the `rc` release tag.\",\n }),\n remoteDrive: option({\n type: optional(string),\n long: \"remote-drive\",\n short: \"r\",\n description: \"Remote drive identifier.\",\n }),\n clone: option({\n type: optional(string),\n long: \"clone\",\n description:\n \"Path to an existing scaffolded project to clone instead of resolving deps from scratch. Install runs offline from the cloned project's pnpm-lock.yaml (requires --pnpm; --version/--tag are ignored).\",\n }),\n ...debugArgs,\n};\n","import { oneOf, optional, positional } from \"cmd-ts\";\nimport { SERVICE_ACTIONS } from \"../constants.js\";\nimport { debugArgs } from \"./common.js\";\n\nexport type { ServiceAction } from \"../types.js\";\n\nexport const serviceArgs = {\n action: positional({\n type: optional(oneOf(SERVICE_ACTIONS)),\n }),\n ...debugArgs,\n};\n","import {\n boolean,\n flag,\n option,\n optional,\n positional,\n rest,\n string,\n} from \"cmd-ts\";\nimport { debugArgs } from \"./common.js\";\n\nexport const unpublishArgs = {\n spec: positional({\n type: optional(string),\n displayName: \"package-spec\",\n description:\n \"Package to unpublish: `<name>` (whole package) or `<name>@<version>` (single version). If omitted, uses the current project's `name@version` from package.json.\",\n }),\n registry: option({\n type: optional(string),\n long: \"registry\",\n description:\n \"Registry URL to unpublish from (overrides config and environment)\",\n }),\n yes: flag({\n type: optional(boolean),\n long: \"yes\",\n short: \"y\",\n description: \"Skip the confirmation prompt\",\n }),\n ...debugArgs,\n forwardedArgs: rest({\n displayName: \"npm-args\",\n description: \"Extra arguments forwarded to npm unpublish\",\n }),\n};\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n var token = {type: \"invalid\", value: match[0], closed: undefined}\n if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n else if (match[ 5]) token.type = \"comment\"\n else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n else if (match[ 8]) token.type = \"regex\"\n else if (match[ 9]) token.type = \"number\"\n else if (match[10]) token.type = \"name\"\n else if (match[11]) token.type = \"punctuator\"\n else if (match[12]) token.type = \"whitespace\"\n return token\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isIdentifierChar = isIdentifierChar;\nexports.isIdentifierName = isIdentifierName;\nexports.isIdentifierStart = isIdentifierStart;\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\nconst nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nconst nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\nconst astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\nconst astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\nfunction isInAstralSet(code, set) {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\nfunction isIdentifierStart(code) {\n if (code < 65) return code === 36;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\nfunction isIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code <= 90) return true;\n if (code < 97) return code === 95;\n if (code <= 122) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);\n}\nfunction isIdentifierName(name) {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n\n//# sourceMappingURL=identifier.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isKeyword = isKeyword;\nexports.isReservedWord = isReservedWord;\nexports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;\nexports.isStrictBindReservedWord = isStrictBindReservedWord;\nexports.isStrictReservedWord = isStrictReservedWord;\nconst reservedWords = {\n keyword: [\"break\", \"case\", \"catch\", \"continue\", \"debugger\", \"default\", \"do\", \"else\", \"finally\", \"for\", \"function\", \"if\", \"return\", \"switch\", \"throw\", \"try\", \"var\", \"const\", \"while\", \"with\", \"new\", \"this\", \"super\", \"class\", \"extends\", \"export\", \"import\", \"null\", \"true\", \"false\", \"in\", \"instanceof\", \"typeof\", \"void\", \"delete\"],\n strict: [\"implements\", \"interface\", \"let\", \"package\", \"private\", \"protected\", \"public\", \"static\", \"yield\"],\n strictBind: [\"eval\", \"arguments\"]\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\nfunction isReservedWord(word, inModule) {\n return inModule && word === \"await\" || word === \"enum\";\n}\nfunction isStrictReservedWord(word, inModule) {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\nfunction isStrictBindOnlyReservedWord(word) {\n return reservedWordsStrictBindSet.has(word);\n}\nfunction isStrictBindReservedWord(word, inModule) {\n return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);\n}\nfunction isKeyword(word) {\n return keywords.has(word);\n}\n\n//# sourceMappingURL=keyword.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isIdentifierChar\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierChar;\n }\n});\nObject.defineProperty(exports, \"isIdentifierName\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierName;\n }\n});\nObject.defineProperty(exports, \"isIdentifierStart\", {\n enumerable: true,\n get: function () {\n return _identifier.isIdentifierStart;\n }\n});\nObject.defineProperty(exports, \"isKeyword\", {\n enumerable: true,\n get: function () {\n return _keyword.isKeyword;\n }\n});\nObject.defineProperty(exports, \"isReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindOnlyReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindOnlyReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictBindReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictBindReservedWord;\n }\n});\nObject.defineProperty(exports, \"isStrictReservedWord\", {\n enumerable: true,\n get: function () {\n return _keyword.isStrictReservedWord;\n }\n});\nvar _identifier = require(\"./identifier.js\");\nvar _keyword = require(\"./keyword.js\");\n\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar picocolors = require('picocolors');\nvar jsTokens = require('js-tokens');\nvar helperValidatorIdentifier = require('@babel/helper-validator-identifier');\n\nfunction isColorSupported() {\n return (typeof process === \"object\" && (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\") ? false : picocolors.isColorSupported\n );\n}\nconst compose = (f, g) => v => f(g(v));\nfunction buildDefs(colors) {\n return {\n keyword: colors.cyan,\n capitalized: colors.yellow,\n jsxIdentifier: colors.yellow,\n punctuator: colors.yellow,\n number: colors.magenta,\n string: colors.green,\n regex: colors.magenta,\n comment: colors.gray,\n invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n gutter: colors.gray,\n marker: compose(colors.red, colors.bold),\n message: compose(colors.red, colors.bold),\n reset: colors.reset\n };\n}\nconst defsOn = buildDefs(picocolors.createColors(true));\nconst defsOff = buildDefs(picocolors.createColors(false));\nfunction getDefs(enabled) {\n return enabled ? defsOn : defsOff;\n}\n\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\nconst NEWLINE$1 = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nconst BRACKET = /^[()[\\]{}]$/;\nlet tokenize;\nconst JSX_TAG = /^[a-z][\\w-]*$/i;\nconst getTokenType = function (token, offset, text) {\n if (token.type === \"name\") {\n const tokenValue = token.value;\n if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {\n return \"keyword\";\n }\n if (JSX_TAG.test(tokenValue) && (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")) {\n return \"jsxIdentifier\";\n }\n const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));\n if (firstChar !== firstChar.toLowerCase()) {\n return \"capitalized\";\n }\n }\n if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n return \"bracket\";\n }\n if (token.type === \"invalid\" && (token.value === \"@\" || token.value === \"#\")) {\n return \"punctuator\";\n }\n return token.type;\n};\ntokenize = function* (text) {\n let match;\n while (match = jsTokens.default.exec(text)) {\n const token = jsTokens.matchToToken(match);\n yield {\n type: getTokenType(token, match.index, text),\n value: token.value\n };\n }\n};\nfunction highlight(text) {\n if (text === \"\") return \"\";\n const defs = getDefs(true);\n let highlighted = \"\";\n for (const {\n type,\n value\n } of tokenize(text)) {\n if (type in defs) {\n highlighted += value.split(NEWLINE$1).map(str => defs[type](str)).join(\"\\n\");\n } else {\n highlighted += value;\n }\n }\n return highlighted;\n}\n\nlet deprecationWarningShown = false;\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\nfunction getMarkerLines(loc, source, opts, startLineBaseZero) {\n const startLoc = Object.assign({\n column: 0,\n line: -1\n }, loc.start);\n const endLoc = Object.assign({}, startLoc, loc.end);\n const {\n linesAbove = 2,\n linesBelow = 3\n } = opts || {};\n const startLine = startLoc.line - startLineBaseZero;\n const startColumn = startLoc.column;\n const endLine = endLoc.line - startLineBaseZero;\n const endColumn = endLoc.column;\n let start = Math.max(startLine - (linesAbove + 1), 0);\n let end = Math.min(source.length, endLine + linesBelow);\n if (startLine === -1) {\n start = 0;\n }\n if (endLine === -1) {\n end = source.length;\n }\n const lineDiff = endLine - startLine;\n const markerLines = {};\n if (lineDiff) {\n for (let i = 0; i <= lineDiff; i++) {\n const lineNumber = i + startLine;\n if (!startColumn) {\n markerLines[lineNumber] = true;\n } else if (i === 0) {\n const sourceLength = source[lineNumber - 1].length;\n markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n } else if (i === lineDiff) {\n markerLines[lineNumber] = [0, endColumn];\n } else {\n const sourceLength = source[lineNumber - i].length;\n markerLines[lineNumber] = [0, sourceLength];\n }\n }\n } else {\n if (startColumn === endColumn) {\n if (startColumn) {\n markerLines[startLine] = [startColumn, 0];\n } else {\n markerLines[startLine] = true;\n }\n } else {\n markerLines[startLine] = [startColumn, endColumn - startColumn];\n }\n }\n return {\n start,\n end,\n markerLines\n };\n}\nfunction codeFrameColumns(rawLines, loc, opts = {}) {\n const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;\n const startLineBaseZero = (opts.startLine || 1) - 1;\n const defs = getDefs(shouldHighlight);\n const lines = rawLines.split(NEWLINE);\n const {\n start,\n end,\n markerLines\n } = getMarkerLines(loc, lines, opts, startLineBaseZero);\n const hasColumns = loc.start && typeof loc.start.column === \"number\";\n const numberMaxWidth = String(end + startLineBaseZero).length;\n const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {\n const number = start + 1 + index;\n const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);\n const gutter = ` ${paddedNumber} |`;\n const hasMarker = markerLines[number];\n const lastMarkerLine = !markerLines[number + 1];\n if (hasMarker) {\n let markerLine = \"\";\n if (Array.isArray(hasMarker)) {\n const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\\t]/g, \" \");\n const numberOfMarkers = hasMarker[1] || 1;\n markerLine = [\"\\n \", defs.gutter(gutter.replace(/\\d/g, \" \")), \" \", markerSpacing, defs.marker(\"^\").repeat(numberOfMarkers)].join(\"\");\n if (lastMarkerLine && opts.message) {\n markerLine += \" \" + defs.message(opts.message);\n }\n }\n return [defs.marker(\">\"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : \"\", markerLine].join(\"\");\n } else {\n return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n }\n }).join(\"\\n\");\n if (opts.message && !hasColumns) {\n frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n }\n if (shouldHighlight) {\n return defs.reset(frame);\n } else {\n return frame;\n }\n}\nfunction index (rawLines, lineNumber, colNumber, opts = {}) {\n if (!deprecationWarningShown) {\n deprecationWarningShown = true;\n const message = \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n if (process.emitWarning) {\n process.emitWarning(message, \"DeprecationWarning\");\n } else {\n const deprecationError = new Error(message);\n deprecationError.name = \"DeprecationWarning\";\n console.warn(new Error(message));\n }\n }\n colNumber = Math.max(colNumber, 0);\n const location = {\n start: {\n column: colNumber,\n line: lineNumber\n }\n };\n return codeFrameColumns(rawLines, location, opts);\n}\n\nexports.codeFrameColumns = codeFrameColumns;\nexports.default = index;\nexports.highlight = highlight;\n//# sourceMappingURL=index.js.map\n","const getOffsets = ({\n\toneBased,\n\toneBasedLine = oneBased,\n\toneBasedColumn = oneBased,\n} = {}) => [oneBasedLine ? 1 : 0, oneBasedColumn ? 1 : 0];\n\n// Performance https://github.com/sindresorhus/index-to-position/pull/9\nfunction getPosition(text, textIndex, options) {\n\tconst lineBreakBefore = textIndex === 0 ? -1 : text.lastIndexOf('\\n', textIndex - 1);\n\tconst [lineOffset, columnOffset] = getOffsets(options);\n\treturn {\n\t\tline: lineBreakBefore === -1\n\t\t\t? lineOffset\n\t\t\t: text.slice(0, lineBreakBefore + 1).match(/\\n/g).length + lineOffset,\n\t\tcolumn: textIndex - lineBreakBefore - 1 + columnOffset,\n\t};\n}\n\nexport default function indexToPosition(text, textIndex, options) {\n\tif (typeof text !== 'string') {\n\t\tthrow new TypeError('Text parameter should be a string');\n\t}\n\n\tif (!Number.isInteger(textIndex)) {\n\t\tthrow new TypeError('Index parameter should be an integer');\n\t}\n\n\tif (textIndex < 0 || textIndex > text.length) {\n\t\tthrow new RangeError('Index out of bounds');\n\t}\n\n\treturn getPosition(text, textIndex, options);\n}\n","import {codeFrameColumns} from '@babel/code-frame';\nimport indexToPosition from 'index-to-position';\n\nconst getCodePoint = character => `\\\\u{${character.codePointAt(0).toString(16)}}`;\n\nexport class JSONError extends Error {\n\tname = 'JSONError';\n\tfileName;\n\t#input;\n\t#jsonParseError;\n\t#message;\n\t#codeFrame;\n\t#rawCodeFrame;\n\n\tconstructor(messageOrOptions) {\n\t\t// JSONError constructor used accept string\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (typeof messageOrOptions === 'string') {\n\t\t\tsuper();\n\t\t\tthis.#message = messageOrOptions;\n\t\t} else {\n\t\t\tconst {jsonParseError, fileName, input} = messageOrOptions;\n\t\t\t// We cannot pass message to `super()`, otherwise the message accessor will be overridden.\n\t\t\t// https://262.ecma-international.org/14.0/#sec-error-message\n\t\t\tsuper(undefined, {cause: jsonParseError});\n\n\t\t\tthis.#input = input;\n\t\t\tthis.#jsonParseError = jsonParseError;\n\t\t\tthis.fileName = fileName;\n\t\t}\n\n\t\tError.captureStackTrace?.(this, JSONError);\n\t}\n\n\tget message() {\n\t\tthis.#message ??= `${addCodePointToUnexpectedToken(this.#jsonParseError.message)}${this.#input === '' ? ' while parsing empty string' : ''}`;\n\n\t\tconst {codeFrame} = this;\n\t\treturn `${this.#message}${this.fileName ? ` in ${this.fileName}` : ''}${codeFrame ? `\\n\\n${codeFrame}\\n` : ''}`;\n\t}\n\n\tset message(message) {\n\t\tthis.#message = message;\n\t}\n\n\t#getCodeFrame(highlightCode) {\n\t\t// TODO[>=9]: Remove this `if` on next major version\n\t\tif (!this.#jsonParseError) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst input = this.#input;\n\n\t\tconst location = getErrorLocation(input, this.#jsonParseError.message);\n\t\tif (!location) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn codeFrameColumns(input, {start: location}, {highlightCode});\n\t}\n\n\tget codeFrame() {\n\t\tthis.#codeFrame ??= this.#getCodeFrame(/* highlightCode */ true);\n\t\treturn this.#codeFrame;\n\t}\n\n\tget rawCodeFrame() {\n\t\tthis.#rawCodeFrame ??= this.#getCodeFrame(/* highlightCode */ false);\n\t\treturn this.#rawCodeFrame;\n\t}\n}\n\nconst getErrorLocation = (string, message) => {\n\tconst match = message.match(/in JSON at position (?<index>\\d+)(?: \\(line (?<line>\\d+) column (?<column>\\d+)\\))?$/);\n\n\tif (!match) {\n\t\treturn;\n\t}\n\n\tconst {index, line, column} = match.groups;\n\n\tif (line && column) {\n\t\treturn {line: Number(line), column: Number(column)};\n\t}\n\n\treturn indexToPosition(string, Number(index), {oneBased: true});\n};\n\nconst addCodePointToUnexpectedToken = message => message.replace(\n\t// TODO[engine:node@>=20]: The token always quoted after Node.js 20\n\t/(?<=^Unexpected token )(?<quote>')?(.)\\k<quote>/,\n\t(_, _quote, token) => `\"${token}\"(${getCodePoint(token)})`,\n);\n\nexport default function parseJson(string, reviver, fileName) {\n\tif (typeof reviver === 'string') {\n\t\tfileName = reviver;\n\t\treviver = undefined;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(string, reviver);\n\t} catch (error) {\n\t\tthrow new JSONError({\n\t\t\tjsonParseError: error,\n\t\t\tfileName,\n\t\t\tinput: string,\n\t\t});\n\t}\n}\n","","","","'use strict'\n\nvar licenses = []\n .concat(require('spdx-license-ids'))\n .concat(require('spdx-license-ids/deprecated'))\nvar exceptions = require('spdx-exceptions')\n\nmodule.exports = function (source) {\n var index = 0\n\n function hasMore () {\n return index < source.length\n }\n\n // `value` can be a regexp or a string.\n // If it is recognized, the matching source string is returned and\n // the index is incremented. Otherwise `undefined` is returned.\n function read (value) {\n if (value instanceof RegExp) {\n var chars = source.slice(index)\n var match = chars.match(value)\n if (match) {\n index += match[0].length\n return match[0]\n }\n } else {\n if (source.indexOf(value, index) === index) {\n index += value.length\n return value\n }\n }\n }\n\n function skipWhitespace () {\n read(/[ ]*/)\n }\n\n function operator () {\n var string\n var possibilities = ['WITH', 'AND', 'OR', '(', ')', ':', '+']\n for (var i = 0; i < possibilities.length; i++) {\n string = read(possibilities[i])\n if (string) {\n break\n }\n }\n\n if (string === '+' && index > 1 && source[index - 2] === ' ') {\n throw new Error('Space before `+`')\n }\n\n return string && {\n type: 'OPERATOR',\n string: string\n }\n }\n\n function idstring () {\n return read(/[A-Za-z0-9-.]+/)\n }\n\n function expectIdstring () {\n var string = idstring()\n if (!string) {\n throw new Error('Expected idstring at offset ' + index)\n }\n return string\n }\n\n function documentRef () {\n if (read('DocumentRef-')) {\n var string = expectIdstring()\n return { type: 'DOCUMENTREF', string: string }\n }\n }\n\n function licenseRef () {\n if (read('LicenseRef-')) {\n var string = expectIdstring()\n return { type: 'LICENSEREF', string: string }\n }\n }\n\n function identifier () {\n var begin = index\n var string = idstring()\n\n if (licenses.indexOf(string) !== -1) {\n return {\n type: 'LICENSE',\n string: string\n }\n } else if (exceptions.indexOf(string) !== -1) {\n return {\n type: 'EXCEPTION',\n string: string\n }\n }\n\n index = begin\n }\n\n // Tries to read the next token. Returns `undefined` if no token is\n // recognized.\n function parseToken () {\n // Ordering matters\n return (\n operator() ||\n documentRef() ||\n licenseRef() ||\n identifier()\n )\n }\n\n var tokens = []\n while (hasMore()) {\n skipWhitespace()\n if (!hasMore()) {\n break\n }\n\n var token = parseToken()\n if (!token) {\n throw new Error('Unexpected `' + source[index] +\n '` at offset ' + index)\n }\n\n tokens.push(token)\n }\n return tokens\n}\n","'use strict'\n\n// The ABNF grammar in the spec is totally ambiguous.\n//\n// This parser follows the operator precedence defined in the\n// `Order of Precedence and Parentheses` section.\n\nmodule.exports = function (tokens) {\n var index = 0\n\n function hasMore () {\n return index < tokens.length\n }\n\n function token () {\n return hasMore() ? tokens[index] : null\n }\n\n function next () {\n if (!hasMore()) {\n throw new Error()\n }\n index++\n }\n\n function parseOperator (operator) {\n var t = token()\n if (t && t.type === 'OPERATOR' && operator === t.string) {\n next()\n return t.string\n }\n }\n\n function parseWith () {\n if (parseOperator('WITH')) {\n var t = token()\n if (t && t.type === 'EXCEPTION') {\n next()\n return t.string\n }\n throw new Error('Expected exception after `WITH`')\n }\n }\n\n function parseLicenseRef () {\n // TODO: Actually, everything is concatenated into one string\n // for backward-compatibility but it could be better to return\n // a nice structure.\n var begin = index\n var string = ''\n var t = token()\n if (t.type === 'DOCUMENTREF') {\n next()\n string += 'DocumentRef-' + t.string + ':'\n if (!parseOperator(':')) {\n throw new Error('Expected `:` after `DocumentRef-...`')\n }\n }\n t = token()\n if (t.type === 'LICENSEREF') {\n next()\n string += 'LicenseRef-' + t.string\n return { license: string }\n }\n index = begin\n }\n\n function parseLicense () {\n var t = token()\n if (t && t.type === 'LICENSE') {\n next()\n var node = { license: t.string }\n if (parseOperator('+')) {\n node.plus = true\n }\n var exception = parseWith()\n if (exception) {\n node.exception = exception\n }\n return node\n }\n }\n\n function parseParenthesizedExpression () {\n var left = parseOperator('(')\n if (!left) {\n return\n }\n\n var expr = parseExpression()\n\n if (!parseOperator(')')) {\n throw new Error('Expected `)`')\n }\n\n return expr\n }\n\n function parseAtom () {\n return (\n parseParenthesizedExpression() ||\n parseLicenseRef() ||\n parseLicense()\n )\n }\n\n function makeBinaryOpParser (operator, nextParser) {\n return function parseBinaryOp () {\n var left = nextParser()\n if (!left) {\n return\n }\n\n if (!parseOperator(operator)) {\n return left\n }\n\n var right = parseBinaryOp()\n if (!right) {\n throw new Error('Expected expression')\n }\n return {\n left: left,\n conjunction: operator.toLowerCase(),\n right: right\n }\n }\n }\n\n var parseAnd = makeBinaryOpParser('AND', parseAtom)\n var parseExpression = makeBinaryOpParser('OR', parseAnd)\n\n var node = parseExpression()\n if (!node || hasMore()) {\n throw new Error('Syntax error')\n }\n return node\n}\n","'use strict'\n\nvar scan = require('./scan')\nvar parse = require('./parse')\n\nmodule.exports = function (source) {\n return parse(scan(source))\n}\n","/*\nCopyright spdx-correct.js contributors\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar parse = require('spdx-expression-parse')\nvar spdxLicenseIds = require('spdx-license-ids')\n\nfunction valid (string) {\n try {\n parse(string)\n return true\n } catch (error) {\n return false\n }\n}\n\n// Sorting function that orders the given array of transpositions such\n// that a transposition with the longer pattern comes before a transposition\n// with a shorter pattern. This is to prevent e.g. the transposition\n// [\"General Public License\", \"GPL\"] from matching to \"Lesser General Public License\"\n// before a longer and more accurate transposition [\"Lesser General Public License\", \"LGPL\"]\n// has a chance to be recognized.\nfunction sortTranspositions(a, b) {\n var length = b[0].length - a[0].length\n if (length !== 0) return length\n return a[0].toUpperCase().localeCompare(b[0].toUpperCase())\n}\n\n// Common transpositions of license identifier acronyms\nvar transpositions = [\n ['APGL', 'AGPL'],\n ['Gpl', 'GPL'],\n ['GLP', 'GPL'],\n ['APL', 'Apache'],\n ['ISD', 'ISC'],\n ['GLP', 'GPL'],\n ['IST', 'ISC'],\n ['Claude', 'Clause'],\n [' or later', '+'],\n [' International', ''],\n ['GNU', 'GPL'],\n ['GUN', 'GPL'],\n ['+', ''],\n ['GNU GPL', 'GPL'],\n ['GNU LGPL', 'LGPL'],\n ['GNU/GPL', 'GPL'],\n ['GNU GLP', 'GPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['GNU Lesser General Public License', 'LGPL'],\n ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['GNU Lesser General Public License', 'LGPL-2.1'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'],\n ['Lesser General Public License', 'LGPL'],\n ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'],\n ['Lesser General Public License', 'LGPL-2.1'],\n ['GNU General Public License', 'GPL'],\n ['Gnu public license', 'GPL'],\n ['GNU Public License', 'GPL'],\n ['GNU GENERAL PUBLIC LICENSE', 'GPL'],\n ['MTI', 'MIT'],\n ['Mozilla Public License', 'MPL'],\n ['Universal Permissive License', 'UPL'],\n ['WTH', 'WTF'],\n ['WTFGPL', 'WTFPL'],\n ['-License', '']\n].sort(sortTranspositions)\n\nvar TRANSPOSED = 0\nvar CORRECT = 1\n\n// Simple corrections to nearly valid identifiers.\nvar transforms = [\n // e.g. 'mit'\n function (argument) {\n return argument.toUpperCase()\n },\n // e.g. 'MIT '\n function (argument) {\n return argument.trim()\n },\n // e.g. 'M.I.T.'\n function (argument) {\n return argument.replace(/\\./g, '')\n },\n // e.g. 'Apache- 2.0'\n function (argument) {\n return argument.replace(/\\s+/g, '')\n },\n // e.g. 'CC BY 4.0''\n function (argument) {\n return argument.replace(/\\s+/g, '-')\n },\n // e.g. 'LGPLv2.1'\n function (argument) {\n return argument.replace('v', '-')\n },\n // e.g. 'Apache 2.0'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1')\n },\n // e.g. 'GPL 2'\n function (argument) {\n return argument.replace(/,?\\s*(\\d)/, '-$1.0')\n },\n // e.g. 'Apache Version 2.0'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2')\n },\n // e.g. 'Apache Version 2'\n function (argument) {\n return argument\n .replace(/,?\\s*(V\\.|v\\.|V|v|Version|version)\\s*(\\d)/, '-$2.0')\n },\n // e.g. 'ZLIB'\n function (argument) {\n return argument[0].toUpperCase() + argument.slice(1)\n },\n // e.g. 'MPL/2.0'\n function (argument) {\n return argument.replace('/', '-')\n },\n // e.g. 'Apache 2'\n function (argument) {\n return argument\n .replace(/\\s*V\\s*(\\d)/, '-$1')\n .replace(/(\\d)$/, '$1.0')\n },\n // e.g. 'GPL-2.0', 'GPL-3.0'\n function (argument) {\n if (argument.indexOf('3.0') !== -1) {\n return argument + '-or-later'\n } else {\n return argument + '-only'\n }\n },\n // e.g. 'GPL-2.0-'\n function (argument) {\n return argument + 'only'\n },\n // e.g. 'GPL2'\n function (argument) {\n return argument.replace(/(\\d)$/, '-$1.0')\n },\n // e.g. 'BSD 3'\n function (argument) {\n return argument.replace(/(-| )?(\\d)$/, '-$2-Clause')\n },\n // e.g. 'BSD clause 3'\n function (argument) {\n return argument.replace(/(-| )clause(-| )(\\d)/, '-$3-Clause')\n },\n // e.g. 'New BSD license'\n function (argument) {\n return argument.replace(/\\b(Modified|New|Revised)(-| )?BSD((-| )License)?/i, 'BSD-3-Clause')\n },\n // e.g. 'Simplified BSD license'\n function (argument) {\n return argument.replace(/\\bSimplified(-| )?BSD((-| )License)?/i, 'BSD-2-Clause')\n },\n // e.g. 'Free BSD license'\n function (argument) {\n return argument.replace(/\\b(Free|Net)(-| )?BSD((-| )License)?/i, 'BSD-2-Clause-$1BSD')\n },\n // e.g. 'Clear BSD license'\n function (argument) {\n return argument.replace(/\\bClear(-| )?BSD((-| )License)?/i, 'BSD-3-Clause-Clear')\n },\n // e.g. 'Old BSD License'\n function (argument) {\n return argument.replace(/\\b(Old|Original)(-| )?BSD((-| )License)?/i, 'BSD-4-Clause')\n },\n // e.g. 'BY-NC-4.0'\n function (argument) {\n return 'CC-' + argument\n },\n // e.g. 'BY-NC'\n function (argument) {\n return 'CC-' + argument + '-4.0'\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '')\n },\n // e.g. 'Attribution-NonCommercial'\n function (argument) {\n return 'CC-' +\n argument\n .replace('Attribution', 'BY')\n .replace('NonCommercial', 'NC')\n .replace('NoDerivatives', 'ND')\n .replace(/ (\\d)/, '-$1')\n .replace(/ ?International/, '') +\n '-4.0'\n }\n]\n\nvar licensesWithVersions = spdxLicenseIds\n .map(function (id) {\n var match = /^(.*)-\\d+\\.\\d+$/.exec(id)\n return match\n ? [match[0], match[1]]\n : [id, null]\n })\n .reduce(function (objectMap, item) {\n var key = item[1]\n objectMap[key] = objectMap[key] || []\n objectMap[key].push(item[0])\n return objectMap\n }, {})\n\nvar licensesWithOneVersion = Object.keys(licensesWithVersions)\n .map(function makeEntries (key) {\n return [key, licensesWithVersions[key]]\n })\n .filter(function identifySoleVersions (item) {\n return (\n // Licenses has just one valid version suffix.\n item[1].length === 1 &&\n item[0] !== null &&\n // APL will be considered Apache, rather than APL-1.0\n item[0] !== 'APL'\n )\n })\n .map(function createLastResorts (item) {\n return [item[0], item[1][0]]\n })\n\nlicensesWithVersions = undefined\n\n// If all else fails, guess that strings containing certain substrings\n// meant to identify certain licenses.\nvar lastResorts = [\n ['UNLI', 'Unlicense'],\n ['WTF', 'WTFPL'],\n ['2 CLAUSE', 'BSD-2-Clause'],\n ['2-CLAUSE', 'BSD-2-Clause'],\n ['3 CLAUSE', 'BSD-3-Clause'],\n ['3-CLAUSE', 'BSD-3-Clause'],\n ['AFFERO', 'AGPL-3.0-or-later'],\n ['AGPL', 'AGPL-3.0-or-later'],\n ['APACHE', 'Apache-2.0'],\n ['ARTISTIC', 'Artistic-2.0'],\n ['Affero', 'AGPL-3.0-or-later'],\n ['BEER', 'Beerware'],\n ['BOOST', 'BSL-1.0'],\n ['BSD', 'BSD-2-Clause'],\n ['CDDL', 'CDDL-1.1'],\n ['ECLIPSE', 'EPL-1.0'],\n ['FUCK', 'WTFPL'],\n ['GNU', 'GPL-3.0-or-later'],\n ['LGPL', 'LGPL-3.0-or-later'],\n ['GPLV1', 'GPL-1.0-only'],\n ['GPL-1', 'GPL-1.0-only'],\n ['GPLV2', 'GPL-2.0-only'],\n ['GPL-2', 'GPL-2.0-only'],\n ['GPL', 'GPL-3.0-or-later'],\n ['MIT +NO-FALSE-ATTRIBS', 'MITNFA'],\n ['MIT', 'MIT'],\n ['MPL', 'MPL-2.0'],\n ['X11', 'X11'],\n ['ZLIB', 'Zlib']\n].concat(licensesWithOneVersion).sort(sortTranspositions)\n\nvar SUBSTRING = 0\nvar IDENTIFIER = 1\n\nvar validTransformation = function (identifier) {\n for (var i = 0; i < transforms.length; i++) {\n var transformed = transforms[i](identifier).trim()\n if (transformed !== identifier && valid(transformed)) {\n return transformed\n }\n }\n return null\n}\n\nvar validLastResort = function (identifier) {\n var upperCased = identifier.toUpperCase()\n for (var i = 0; i < lastResorts.length; i++) {\n var lastResort = lastResorts[i]\n if (upperCased.indexOf(lastResort[SUBSTRING]) > -1) {\n return lastResort[IDENTIFIER]\n }\n }\n return null\n}\n\nvar anyCorrection = function (identifier, check) {\n for (var i = 0; i < transpositions.length; i++) {\n var transposition = transpositions[i]\n var transposed = transposition[TRANSPOSED]\n if (identifier.indexOf(transposed) > -1) {\n var corrected = identifier.replace(\n transposed,\n transposition[CORRECT]\n )\n var checked = check(corrected)\n if (checked !== null) {\n return checked\n }\n }\n }\n return null\n}\n\nmodule.exports = function (identifier, options) {\n options = options || {}\n var upgrade = options.upgrade === undefined ? true : !!options.upgrade\n function postprocess (value) {\n return upgrade ? upgradeGPLs(value) : value\n }\n var validArugment = (\n typeof identifier === 'string' &&\n identifier.trim().length !== 0\n )\n if (!validArugment) {\n throw Error('Invalid argument. Expected non-empty string.')\n }\n identifier = identifier.trim()\n if (valid(identifier)) {\n return postprocess(identifier)\n }\n var noPlus = identifier.replace(/\\+$/, '').trim()\n if (valid(noPlus)) {\n return postprocess(noPlus)\n }\n var transformed = validTransformation(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, function (argument) {\n if (valid(argument)) {\n return argument\n }\n return validTransformation(argument)\n })\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = validLastResort(identifier)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n transformed = anyCorrection(identifier, validLastResort)\n if (transformed !== null) {\n return postprocess(transformed)\n }\n return null\n}\n\nfunction upgradeGPLs (value) {\n if ([\n 'GPL-1.0', 'LGPL-1.0', 'AGPL-1.0',\n 'GPL-2.0', 'LGPL-2.0', 'AGPL-2.0',\n 'LGPL-2.1'\n ].indexOf(value) !== -1) {\n return value + '-only'\n } else if ([\n 'GPL-1.0+', 'GPL-2.0+', 'GPL-3.0+',\n 'LGPL-2.0+', 'LGPL-2.1+', 'LGPL-3.0+',\n 'AGPL-1.0+', 'AGPL-3.0+'\n ].indexOf(value) !== -1) {\n return value.replace(/\\+$/, '-or-later')\n } else if (['GPL-3.0', 'LGPL-3.0', 'AGPL-3.0'].indexOf(value) !== -1) {\n return value + '-or-later'\n } else {\n return value\n }\n}\n","var parse = require('spdx-expression-parse');\nvar correct = require('spdx-correct');\n\nvar genericWarning = (\n 'license should be ' +\n 'a valid SPDX license expression (without \"LicenseRef\"), ' +\n '\"UNLICENSED\", or ' +\n '\"SEE LICENSE IN <filename>\"'\n);\n\nvar fileReferenceRE = /^SEE LICEN[CS]E IN (.+)$/;\n\nfunction startsWith(prefix, string) {\n return string.slice(0, prefix.length) === prefix;\n}\n\nfunction usesLicenseRef(ast) {\n if (ast.hasOwnProperty('license')) {\n var license = ast.license;\n return (\n startsWith('LicenseRef', license) ||\n startsWith('DocumentRef', license)\n );\n } else {\n return (\n usesLicenseRef(ast.left) ||\n usesLicenseRef(ast.right)\n );\n }\n}\n\nmodule.exports = function(argument) {\n var ast;\n\n try {\n ast = parse(argument);\n } catch (e) {\n var match\n if (\n argument === 'UNLICENSED' ||\n argument === 'UNLICENCED'\n ) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n unlicensed: true\n };\n } else if (match = fileReferenceRE.exec(argument)) {\n return {\n validForOldPackages: true,\n validForNewPackages: true,\n inFile: match[1]\n };\n } else {\n var result = {\n validForOldPackages: false,\n validForNewPackages: false,\n warnings: [genericWarning]\n };\n if (argument.trim().length !== 0) {\n var corrected = correct(argument);\n if (corrected) {\n result.warnings.push(\n 'license is similar to the valid expression \"' + corrected + '\"'\n );\n }\n }\n return result;\n }\n }\n\n if (usesLicenseRef(ast)) {\n return {\n validForNewPackages: false,\n validForOldPackages: false,\n spdx: true,\n warnings: [genericWarning]\n };\n } else {\n return {\n validForNewPackages: true,\n validForOldPackages: true,\n spdx: true\n };\n }\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});exports.LRUCache=void 0;var G=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,U=new Set,R=typeof process==\"object\"&&process?process:{},I=(c,t,e,i)=>{typeof R.emitWarning==\"function\"?R.emitWarning(c,t,e,i):console.error(`[${e}] ${t}: ${c}`)},C=globalThis.AbortController,L=globalThis.AbortSignal;if(typeof C>\"u\"){L=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(i,s){this._onabort.push(s)}},C=class{constructor(){t()}signal=new L;abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=!0;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i)}}};let c=R.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{c&&(c=!1,I(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var x=c=>!U.has(c),H=Symbol(\"type\"),y=c=>c&&c===Math.floor(c)&&c>0&&isFinite(c),M=c=>y(c)?c<=Math.pow(2,8)?Uint8Array:c<=Math.pow(2,16)?Uint16Array:c<=Math.pow(2,32)?Uint32Array:c<=Number.MAX_SAFE_INTEGER?z:null:null,z=class extends Array{constructor(t){super(t),this.fill(0)}},W=class c{heap;length;static#o=!1;static create(t){let e=M(t);if(!e)return[];c.#o=!0;let i=new c(t,e);return c.#o=!1,i}constructor(t,e){if(!c.#o)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},D=class c{#o;#c;#w;#C;#S;#L;#U;#m;get perf(){return this.#m}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#n;#_;#s;#i;#t;#a;#u;#l;#h;#b;#r;#y;#A;#d;#g;#T;#v;#f;#I;static unsafeExposeInternals(t){return{starts:t.#A,ttls:t.#d,autopurgeTimers:t.#g,sizes:t.#y,keyMap:t.#s,keyList:t.#i,valList:t.#t,next:t.#a,prev:t.#u,get head(){return t.#l},get tail(){return t.#h},free:t.#b,isBackgroundFetch:e=>t.#e(e),backgroundFetch:(e,i,s,n)=>t.#x(e,i,s,n),moveToTail:e=>t.#D(e),indexes:e=>t.#F(e),rindexes:e=>t.#O(e),isStale:e=>t.#p(e)}}get max(){return this.#o}get maxSize(){return this.#c}get calculatedSize(){return this.#_}get size(){return this.#n}get fetchMethod(){return this.#L}get memoMethod(){return this.#U}get dispose(){return this.#w}get onInsert(){return this.#C}get disposeAfter(){return this.#S}constructor(t){let{max:e=0,ttl:i,ttlResolution:s=1,ttlAutopurge:n,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:r,dispose:a,onInsert:w,disposeAfter:f,noDisposeOnSet:d,noUpdateTTL:g,maxSize:A=0,maxEntrySize:p=0,sizeCalculation:_,fetchMethod:l,memoMethod:S,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:m,allowStaleOnFetchRejection:u,allowStaleOnFetchAbort:T,ignoreFetchAbort:F,perf:v}=t;if(v!==void 0&&typeof v?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#m=v??G,e!==0&&!y(e))throw new TypeError(\"max option must be a nonnegative integer\");let O=e?M(e):Array;if(!O)throw new Error(\"invalid max value: \"+e);if(this.#o=e,this.#c=A,this.maxEntrySize=p||this.#c,this.sizeCalculation=_,this.sizeCalculation){if(!this.#c&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(S!==void 0&&typeof S!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#U=S,l!==void 0&&typeof l!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#L=l,this.#v=!!l,this.#s=new Map,this.#i=new Array(e).fill(void 0),this.#t=new Array(e).fill(void 0),this.#a=new O(e),this.#u=new O(e),this.#l=0,this.#h=0,this.#b=W.create(e),this.#n=0,this.#_=0,typeof a==\"function\"&&(this.#w=a),typeof w==\"function\"&&(this.#C=w),typeof f==\"function\"?(this.#S=f,this.#r=[]):(this.#S=void 0,this.#r=void 0),this.#T=!!this.#w,this.#I=!!this.#C,this.#f=!!this.#S,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!g,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!u,this.allowStaleOnFetchAbort=!!T,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(this.#c!==0&&!y(this.#c))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!y(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#B()}if(this.allowStale=!!r,this.noDeleteOnStaleGet=!!m,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=y(s)||s===0?s:1,this.ttlAutopurge=!!n,this.ttl=i||0,this.ttl){if(!y(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#j()}if(this.#o===0&&this.ttl===0&&this.#c===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#o&&!this.#c){let E=\"LRU_CACHE_UNBOUNDED\";x(E)&&(U.add(E),I(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",E,c))}}getRemainingTTL(t){return this.#s.has(t)?1/0:0}#j(){let t=new z(this.#o),e=new z(this.#o);this.#d=t,this.#A=e;let i=this.ttlAutopurge?new Array(this.#o):void 0;this.#g=i,this.#N=(h,r,a=this.#m.now())=>{e[h]=r!==0?a:0,t[h]=r,s(h,r)},this.#R=h=>{e[h]=t[h]!==0?this.#m.now():0,s(h,t[h])};let s=this.ttlAutopurge?(h,r)=>{if(i?.[h]&&(clearTimeout(i[h]),i[h]=void 0),r&&r!==0&&i){let a=setTimeout(()=>{this.#p(h)&&this.#E(this.#i[h],\"expire\")},r+1);a.unref&&a.unref(),i[h]=a}}:()=>{};this.#z=(h,r)=>{if(t[r]){let a=t[r],w=e[r];if(!a||!w)return;h.ttl=a,h.start=w,h.now=n||o();let f=h.now-w;h.remainingTTL=a-f}};let n=0,o=()=>{let h=this.#m.now();if(this.ttlResolution>0){n=h;let r=setTimeout(()=>n=0,this.ttlResolution);r.unref&&r.unref()}return h};this.getRemainingTTL=h=>{let r=this.#s.get(h);if(r===void 0)return 0;let a=t[r],w=e[r];if(!a||!w)return 1/0;let f=(n||o())-w;return a-f},this.#p=h=>{let r=e[h],a=t[h];return!!a&&!!r&&(n||o())-r>a}}#R=()=>{};#z=()=>{};#N=()=>{};#p=()=>!1;#B(){let t=new z(this.#o);this.#_=0,this.#y=t,this.#W=e=>{this.#_-=t[e],t[e]=0},this.#P=(e,i,s,n)=>{if(this.#e(i))return 0;if(!y(s))if(n){if(typeof n!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(s=n(i,e),!y(s))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return s},this.#M=(e,i,s)=>{if(t[e]=i,this.#c){let n=this.#c-t[e];for(;this.#_>n;)this.#G(!0)}this.#_+=t[e],s&&(s.entrySize=i,s.totalCalculatedSize=this.#_)}}#W=t=>{};#M=(t,e,i)=>{};#P=(t,e,i,s)=>{if(i||s)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#h;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#l));)e=this.#u[e]}*#O({allowStale:t=this.allowStale}={}){if(this.#n)for(let e=this.#l;!(!this.#H(e)||((t||!this.#p(e))&&(yield e),e===this.#h));)e=this.#a[e]}#H(t){return t!==void 0&&this.#s.get(this.#i[t])===t}*entries(){for(let t of this.#F())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*rentries(){for(let t of this.#O())this.#t[t]!==void 0&&this.#i[t]!==void 0&&!this.#e(this.#t[t])&&(yield[this.#i[t],this.#t[t]])}*keys(){for(let t of this.#F()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*rkeys(){for(let t of this.#O()){let e=this.#i[t];e!==void 0&&!this.#e(this.#t[t])&&(yield e)}}*values(){for(let t of this.#F())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}*rvalues(){for(let t of this.#O())this.#t[t]!==void 0&&!this.#e(this.#t[t])&&(yield this.#t[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;if(n!==void 0&&t(n,this.#i[i],this))return this.get(this.#i[i],e)}}forEach(t,e=this){for(let i of this.#F()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}rforEach(t,e=this){for(let i of this.#O()){let s=this.#t[i],n=this.#e(s)?s.__staleWhileFetching:s;n!==void 0&&t.call(e,n,this.#i[i],this)}}purgeStale(){let t=!1;for(let e of this.#O({allowStale:!0}))this.#p(e)&&(this.#E(this.#i[e],\"expire\"),t=!0);return t}info(t){let e=this.#s.get(t);if(e===void 0)return;let i=this.#t[e],s=this.#e(i)?i.__staleWhileFetching:i;if(s===void 0)return;let n={value:s};if(this.#d&&this.#A){let o=this.#d[e],h=this.#A[e];if(o&&h){let r=o-(this.#m.now()-h);n.ttl=r,n.start=Date.now()}}return this.#y&&(n.size=this.#y[e]),n}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let i=this.#i[e],s=this.#t[e],n=this.#e(s)?s.__staleWhileFetching:s;if(n===void 0||i===void 0)continue;let o={value:n};if(this.#d&&this.#A){o.ttl=this.#d[e];let h=this.#m.now()-this.#A[e];o.start=Math.floor(Date.now()-h)}this.#y&&(o.size=this.#y[e]),t.unshift([i,o])}return t}load(t){this.clear();for(let[e,i]of t){if(i.start){let s=Date.now()-i.start;i.start=this.#m.now()-s}this.set(e,i.value,i)}}set(t,e,i={}){if(e===void 0)return this.delete(t),this;let{ttl:s=this.ttl,start:n,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:r}=i,{noUpdateTTL:a=this.noUpdateTTL}=i,w=this.#P(t,e,i.size||0,h);if(this.maxEntrySize&&w>this.maxEntrySize)return r&&(r.set=\"miss\",r.maxEntrySizeExceeded=!0),this.#E(t,\"set\"),this;let f=this.#n===0?void 0:this.#s.get(t);if(f===void 0)f=this.#n===0?this.#h:this.#b.length!==0?this.#b.pop():this.#n===this.#o?this.#G(!1):this.#n,this.#i[f]=t,this.#t[f]=e,this.#s.set(t,f),this.#a[this.#h]=f,this.#u[f]=this.#h,this.#h=f,this.#n++,this.#M(f,w,r),r&&(r.set=\"add\"),a=!1,this.#I&&this.#C?.(e,t,\"add\");else{this.#D(f);let d=this.#t[f];if(e!==d){if(this.#v&&this.#e(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:g}=d;g!==void 0&&!o&&(this.#T&&this.#w?.(g,t,\"set\"),this.#f&&this.#r?.push([g,t,\"set\"]))}else o||(this.#T&&this.#w?.(d,t,\"set\"),this.#f&&this.#r?.push([d,t,\"set\"]));if(this.#W(f),this.#M(f,w,r),this.#t[f]=e,r){r.set=\"replace\";let g=d&&this.#e(d)?d.__staleWhileFetching:d;g!==void 0&&(r.oldValue=g)}}else r&&(r.set=\"update\");this.#I&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(s!==0&&!this.#d&&this.#j(),this.#d&&(a||this.#N(f,s,n),r&&this.#z(r,f)),!o&&this.#f&&this.#r){let d=this.#r,g;for(;g=d?.shift();)this.#S?.(...g)}return this}pop(){try{for(;this.#n;){let t=this.#t[this.#l];if(this.#G(!0),this.#e(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#f&&this.#r){let t=this.#r,e;for(;e=t?.shift();)this.#S?.(...e)}}}#G(t){let e=this.#l,i=this.#i[e],s=this.#t[e];return this.#v&&this.#e(s)?s.__abortController.abort(new Error(\"evicted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(s,i,\"evict\"),this.#f&&this.#r?.push([s,i,\"evict\"])),this.#W(e),this.#g?.[e]&&(clearTimeout(this.#g[e]),this.#g[e]=void 0),t&&(this.#i[e]=void 0,this.#t[e]=void 0,this.#b.push(e)),this.#n===1?(this.#l=this.#h=0,this.#b.length=0):this.#l=this.#a[e],this.#s.delete(i),this.#n--,e}has(t,e={}){let{updateAgeOnHas:i=this.updateAgeOnHas,status:s}=e,n=this.#s.get(t);if(n!==void 0){let o=this.#t[n];if(this.#e(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#p(n))s&&(s.has=\"stale\",this.#z(s,n));else return i&&this.#R(n),s&&(s.has=\"hit\",this.#z(s,n)),!0}else s&&(s.has=\"miss\");return!1}peek(t,e={}){let{allowStale:i=this.allowStale}=e,s=this.#s.get(t);if(s===void 0||!i&&this.#p(s))return;let n=this.#t[s];return this.#e(n)?n.__staleWhileFetching:n}#x(t,e,i,s){let n=e===void 0?void 0:this.#t[e];if(this.#e(n))return n;let o=new C,{signal:h}=i;h?.addEventListener(\"abort\",()=>o.abort(h.reason),{signal:o.signal});let r={signal:o.signal,options:i,context:s},a=(p,_=!1)=>{let{aborted:l}=o.signal,S=i.ignoreFetchAbort&&p!==void 0,b=i.ignoreFetchAbort||!!(i.allowStaleOnFetchAbort&&p!==void 0);if(i.status&&(l&&!_?(i.status.fetchAborted=!0,i.status.fetchError=o.signal.reason,S&&(i.status.fetchAbortIgnored=!0)):i.status.fetchResolved=!0),l&&!S&&!_)return f(o.signal.reason,b);let m=g,u=this.#t[e];return(u===g||S&&_&&u===void 0)&&(p===void 0?m.__staleWhileFetching!==void 0?this.#t[e]=m.__staleWhileFetching:this.#E(t,\"fetch\"):(i.status&&(i.status.fetchUpdated=!0),this.set(t,p,r.options))),p},w=p=>(i.status&&(i.status.fetchRejected=!0,i.status.fetchError=p),f(p,!1)),f=(p,_)=>{let{aborted:l}=o.signal,S=l&&i.allowStaleOnFetchAbort,b=S||i.allowStaleOnFetchRejection,m=b||i.noDeleteOnFetchRejection,u=g;if(this.#t[e]===g&&(!m||!_&&u.__staleWhileFetching===void 0?this.#E(t,\"fetch\"):S||(this.#t[e]=u.__staleWhileFetching)),b)return i.status&&u.__staleWhileFetching!==void 0&&(i.status.returnedStale=!0),u.__staleWhileFetching;if(u.__returned===u)throw p},d=(p,_)=>{let l=this.#L?.(t,n,r);l&&l instanceof Promise&&l.then(S=>p(S===void 0?void 0:S),_),o.signal.addEventListener(\"abort\",()=>{(!i.ignoreFetchAbort||i.allowStaleOnFetchAbort)&&(p(void 0),i.allowStaleOnFetchAbort&&(p=S=>a(S,!0)))})};i.status&&(i.status.fetchDispatched=!0);let g=new Promise(d).then(a,w),A=Object.assign(g,{__abortController:o,__staleWhileFetching:n,__returned:void 0});return e===void 0?(this.set(t,A,{...r.options,status:void 0}),e=this.#s.get(t)):this.#t[e]=A,A}#e(t){if(!this.#v)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof C}async fetch(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:r=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:w=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:g=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:p,forceRefresh:_=!1,status:l,signal:S}=e;if(!this.#v)return l&&(l.fetch=\"get\"),this.get(t,{allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,status:l});let b={allowStale:i,updateAgeOnGet:s,noDeleteOnStaleGet:n,ttl:o,noDisposeOnSet:h,size:r,sizeCalculation:a,noUpdateTTL:w,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:A,ignoreFetchAbort:g,status:l,signal:S},m=this.#s.get(t);if(m===void 0){l&&(l.fetch=\"miss\");let u=this.#x(t,m,b,p);return u.__returned=u}else{let u=this.#t[m];if(this.#e(u)){let E=i&&u.__staleWhileFetching!==void 0;return l&&(l.fetch=\"inflight\",E&&(l.returnedStale=!0)),E?u.__staleWhileFetching:u.__returned=u}let T=this.#p(m);if(!_&&!T)return l&&(l.fetch=\"hit\"),this.#D(m),s&&this.#R(m),l&&this.#z(l,m),u;let F=this.#x(t,m,b,p),O=F.__staleWhileFetching!==void 0&&i;return l&&(l.fetch=T?\"stale\":\"refresh\",O&&T&&(l.returnedStale=!0)),O?F.__staleWhileFetching:F.__returned=F}}async forceFetch(t,e={}){let i=await this.fetch(t,e);if(i===void 0)throw new Error(\"fetch() returned undefined\");return i}memo(t,e={}){let i=this.#U;if(!i)throw new Error(\"no memoMethod provided to constructor\");let{context:s,forceRefresh:n,...o}=e,h=this.get(t,o);if(!n&&h!==void 0)return h;let r=i(t,h,{options:o,context:s});return this.set(t,r,o),r}get(t,e={}){let{allowStale:i=this.allowStale,updateAgeOnGet:s=this.updateAgeOnGet,noDeleteOnStaleGet:n=this.noDeleteOnStaleGet,status:o}=e,h=this.#s.get(t);if(h!==void 0){let r=this.#t[h],a=this.#e(r);return o&&this.#z(o,h),this.#p(h)?(o&&(o.get=\"stale\"),a?(o&&i&&r.__staleWhileFetching!==void 0&&(o.returnedStale=!0),i?r.__staleWhileFetching:void 0):(n||this.#E(t,\"expire\"),o&&i&&(o.returnedStale=!0),i?r:void 0)):(o&&(o.get=\"hit\"),a?r.__staleWhileFetching:(this.#D(h),s&&this.#R(h),r))}else o&&(o.get=\"miss\")}#k(t,e){this.#u[e]=t,this.#a[t]=e}#D(t){t!==this.#h&&(t===this.#l?this.#l=this.#a[t]:this.#k(this.#u[t],this.#a[t]),this.#k(this.#h,t),this.#h=t)}delete(t){return this.#E(t,\"delete\")}#E(t,e){let i=!1;if(this.#n!==0){let s=this.#s.get(t);if(s!==void 0)if(this.#g?.[s]&&(clearTimeout(this.#g?.[s]),this.#g[s]=void 0),i=!0,this.#n===1)this.#V(e);else{this.#W(s);let n=this.#t[s];if(this.#e(n)?n.__abortController.abort(new Error(\"deleted\")):(this.#T||this.#f)&&(this.#T&&this.#w?.(n,t,e),this.#f&&this.#r?.push([n,t,e])),this.#s.delete(t),this.#i[s]=void 0,this.#t[s]=void 0,s===this.#h)this.#h=this.#u[s];else if(s===this.#l)this.#l=this.#a[s];else{let o=this.#u[s];this.#a[o]=this.#a[s];let h=this.#a[s];this.#u[h]=this.#u[s]}this.#n--,this.#b.push(s)}}if(this.#f&&this.#r?.length){let s=this.#r,n;for(;n=s?.shift();)this.#S?.(...n)}return i}clear(){return this.#V(\"delete\")}#V(t){for(let e of this.#O({allowStale:!0})){let i=this.#t[e];if(this.#e(i))i.__abortController.abort(new Error(\"deleted\"));else{let s=this.#i[e];this.#T&&this.#w?.(i,s,t),this.#f&&this.#r?.push([i,s,t])}}if(this.#s.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#d&&this.#A){this.#d.fill(0),this.#A.fill(0);for(let e of this.#g??[])e!==void 0&&clearTimeout(e);this.#g?.fill(void 0)}if(this.#y&&this.#y.fill(0),this.#l=0,this.#h=0,this.#b.length=0,this.#_=0,this.#n=0,this.#f&&this.#r){let e=this.#r,i;for(;i=e?.shift();)this.#S?.(...i)}}};exports.LRUCache=D;\n//# sourceMappingURL=index.min.js.map\n","/* eslint-disable max-len */\n\n'use strict'\n\nconst maybeJoin = (...args) => args.every(arg => arg) ? args.join('') : ''\nconst maybeEncode = (arg) => arg ? encodeURIComponent(arg) : ''\nconst formatHashFragment = (f) => f.toLowerCase()\n .replace(/^\\W+/g, '') // strip leading non-characters\n .replace(/(?<!\\W)\\W+$/, '') // strip trailing non-characters\n .replace(/\\//g, '') // strip all slashes\n .replace(/\\W+/g, '-') // replace remaining non-characters with '-'\n\nconst defaults = {\n sshtemplate: ({ domain, user, project, committish }) =>\n `git@${domain}:${user}/${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, user, project, committish }) =>\n `git+ssh://git@${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath, path }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', editpath, '/', maybeEncode(committish || 'HEAD'), '/', path)}`,\n browsetemplate: ({ domain, user, project, committish, treepath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, user, project, committish, treepath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${treepath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n browseblobtemplate: ({ domain, user, project, committish, blobpath, path, fragment, hashformat }) =>\n `https://${domain}/${user}/${project}/${blobpath}/${maybeEncode(committish || 'HEAD')}/${path}${maybeJoin('#', hashformat(fragment || ''))}`,\n docstemplate: ({ domain, user, project, treepath, committish }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish))}#readme`,\n httpstemplate: ({ auth, domain, user, project, committish }) =>\n `git+https://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/raw/${maybeEncode(committish || 'HEAD')}/${path}`,\n shortcuttemplate: ({ type, user, project, committish }) =>\n `${type}:${user}/${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ user, project, committish }) =>\n `${user}/${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, user, project }) =>\n `https://${domain}/${user}/${project}/issues`,\n hashformat: formatHashFragment,\n}\n\nconst hosts = {}\nhosts.github = {\n // First two are insecure and generally shouldn't be used any more, but\n // they are still supported.\n protocols: ['git:', 'http:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'github.com',\n treepath: 'tree',\n blobpath: 'blob',\n editpath: 'edit',\n filetemplate: ({ auth, user, project, committish, path }) =>\n `https://${maybeJoin(auth, '@')}raw.githubusercontent.com/${user}/${project}/${maybeEncode(committish || 'HEAD')}/${path}`,\n gittemplate: ({ auth, domain, user, project, committish }) =>\n `git://${maybeJoin(auth, '@')}${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://codeload.${domain}/${user}/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, type, committish] = url.pathname.split('/', 5)\n if (type && type !== 'tree') {\n return\n }\n\n if (!type) {\n committish = url.hash.slice(1)\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish }\n },\n}\n\nhosts.bitbucket = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'bitbucket.org',\n treepath: 'src',\n blobpath: 'src',\n editpath: '?mode=edit',\n edittemplate: ({ domain, user, project, committish, treepath, path, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', treepath, '/', maybeEncode(committish || 'HEAD'), '/', path, editpath)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/get/${maybeEncode(committish || 'HEAD')}.tar.gz`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (['get'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gitlab = {\n protocols: ['git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gitlab.com',\n treepath: 'tree',\n blobpath: 'tree',\n editpath: '-/edit',\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/repository/archive.tar.gz?ref=${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n const path = url.pathname.slice(1)\n if (path.includes('/-/') || path.includes('/archive.tar.gz')) {\n return\n }\n\n const segments = path.split('/')\n let project = segments.pop()\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n const user = segments.join('/')\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nhosts.gist = {\n protocols: ['git:', 'git+ssh:', 'git+https:', 'ssh:', 'https:'],\n domain: 'gist.github.com',\n editpath: 'edit',\n sshtemplate: ({ domain, project, committish }) =>\n `git@${domain}:${project}.git${maybeJoin('#', committish)}`,\n sshurltemplate: ({ domain, project, committish }) =>\n `git+ssh://git@${domain}/${project}.git${maybeJoin('#', committish)}`,\n edittemplate: ({ domain, user, project, committish, editpath }) =>\n `https://${domain}/${user}/${project}${maybeJoin('/', maybeEncode(committish))}/${editpath}`,\n browsetemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n browsetreetemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n browseblobtemplate: ({ domain, project, committish, path, hashformat }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}${maybeJoin('#', hashformat(path))}`,\n docstemplate: ({ domain, project, committish }) =>\n `https://${domain}/${project}${maybeJoin('/', maybeEncode(committish))}`,\n httpstemplate: ({ domain, project, committish }) =>\n `git+https://${domain}/${project}.git${maybeJoin('#', committish)}`,\n filetemplate: ({ user, project, committish, path }) =>\n `https://gist.githubusercontent.com/${user}/${project}/raw${maybeJoin('/', maybeEncode(committish))}/${path}`,\n shortcuttemplate: ({ type, project, committish }) =>\n `${type}:${project}${maybeJoin('#', committish)}`,\n pathtemplate: ({ project, committish }) =>\n `${project}${maybeJoin('#', committish)}`,\n bugstemplate: ({ domain, project }) =>\n `https://${domain}/${project}`,\n gittemplate: ({ domain, project, committish }) =>\n `git://${domain}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ project, committish }) =>\n `https://codeload.github.com/gist/${project}/tar.gz/${maybeEncode(committish || 'HEAD')}`,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n if (aux === 'raw') {\n return\n }\n\n if (!project) {\n if (!user) {\n return\n }\n\n project = user\n user = null\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n hashformat: function (fragment) {\n return fragment && 'file-' + formatHashFragment(fragment)\n },\n}\n\nhosts.sourcehut = {\n protocols: ['git+ssh:', 'https:'],\n domain: 'git.sr.ht',\n treepath: 'tree',\n blobpath: 'tree',\n filetemplate: ({ domain, user, project, committish, path }) =>\n `https://${domain}/${user}/${project}/blob/${maybeEncode(committish) || 'HEAD'}/${path}`,\n httpstemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}.git${maybeJoin('#', committish)}`,\n tarballtemplate: ({ domain, user, project, committish }) =>\n `https://${domain}/${user}/${project}/archive/${maybeEncode(committish) || 'HEAD'}.tar.gz`,\n bugstemplate: () => null,\n extract: (url) => {\n let [, user, project, aux] = url.pathname.split('/', 4)\n\n // tarball url\n if (['archive'].includes(aux)) {\n return\n }\n\n if (project && project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (!user || !project) {\n return\n }\n\n return { user, project, committish: url.hash.slice(1) }\n },\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n hosts[name] = Object.assign({}, defaults, host)\n}\n\nmodule.exports = hosts\n","const url = require('url')\n\nconst lastIndexOfBefore = (str, char, beforeChar) => {\n const startPosition = str.indexOf(beforeChar)\n return str.lastIndexOf(char, startPosition > -1 ? startPosition : Infinity)\n}\n\nconst safeUrl = (u) => {\n try {\n return new url.URL(u)\n } catch {\n // this fn should never throw\n }\n}\n\n// accepts input like git:github.com:user/repo and inserts the // after the first :\nconst correctProtocol = (arg, protocols) => {\n const firstColon = arg.indexOf(':')\n const proto = arg.slice(0, firstColon + 1)\n if (Object.prototype.hasOwnProperty.call(protocols, proto)) {\n return arg\n }\n\n if (arg.substr(firstColon, 3) === '://') {\n // If arg is given as <foo>://<bar>, then this is already a valid URL.\n return arg\n }\n\n const firstAt = arg.indexOf('@')\n if (firstAt > -1) {\n if (firstAt > firstColon) {\n // URL has the form of <foo>:<bar>@<baz>. Assume this is a git+ssh URL.\n return `git+ssh://${arg}`\n } else {\n // URL has the form 'git@github.com:npm/hosted-git-info.git'.\n return arg\n }\n }\n\n // Correct <foo>:<bar> to <foo>://<bar>\n return `${arg.slice(0, firstColon + 1)}//${arg.slice(firstColon + 1)}`\n}\n\n// attempt to correct an scp style url so that it will parse with `new URL()`\nconst correctUrl = (giturl) => {\n // ignore @ that come after the first hash since the denotes the start\n // of a committish which can contain @ characters\n const firstAt = lastIndexOfBefore(giturl, '@', '#')\n // ignore colons that come after the hash since that could include colons such as:\n // git@github.com:user/package-2#semver:^1.0.0\n const lastColonBeforeHash = lastIndexOfBefore(giturl, ':', '#')\n\n if (lastColonBeforeHash > firstAt) {\n // the last : comes after the first @ (or there is no @)\n // like it would in:\n // proto://hostname.com:user/repo\n // username@hostname.com:user/repo\n // :password@hostname.com:user/repo\n // username:password@hostname.com:user/repo\n // proto://username@hostname.com:user/repo\n // proto://:password@hostname.com:user/repo\n // proto://username:password@hostname.com:user/repo\n // then we replace the last : with a / to create a valid path\n giturl = giturl.slice(0, lastColonBeforeHash) + '/' + giturl.slice(lastColonBeforeHash + 1)\n }\n\n if (lastIndexOfBefore(giturl, ':', '#') === -1 && giturl.indexOf('//') === -1) {\n // we have no : at all\n // as it would be in:\n // username@hostname.com/user/repo\n // then we prepend a protocol\n giturl = `git+ssh://${giturl}`\n }\n\n return giturl\n}\n\nmodule.exports = (giturl, protocols) => {\n const withProtocol = protocols ? correctProtocol(giturl, protocols) : giturl\n return safeUrl(withProtocol) || safeUrl(correctUrl(withProtocol))\n}\n","'use strict'\n\nconst parseUrl = require('./parse-url')\n\n// look for github shorthand inputs, such as npm/cli\nconst isGitHubShorthand = (arg) => {\n // it cannot contain whitespace before the first #\n // it cannot start with a / because that's probably an absolute file path\n // but it must include a slash since repos are username/repository\n // it cannot start with a . because that's probably a relative file path\n // it cannot start with an @ because that's a scoped package if it passes the other tests\n // it cannot contain a : before a # because that tells us that there's a protocol\n // a second / may not exist before a #\n const firstHash = arg.indexOf('#')\n const firstSlash = arg.indexOf('/')\n const secondSlash = arg.indexOf('/', firstSlash + 1)\n const firstColon = arg.indexOf(':')\n const firstSpace = /\\s/.exec(arg)\n const firstAt = arg.indexOf('@')\n\n const spaceOnlyAfterHash = !firstSpace || (firstHash > -1 && firstSpace.index > firstHash)\n const atOnlyAfterHash = firstAt === -1 || (firstHash > -1 && firstAt > firstHash)\n const colonOnlyAfterHash = firstColon === -1 || (firstHash > -1 && firstColon > firstHash)\n const secondSlashOnlyAfterHash = secondSlash === -1 || (firstHash > -1 && secondSlash > firstHash)\n const hasSlash = firstSlash > 0\n // if a # is found, what we really want to know is that the character\n // immediately before # is not a /\n const doesNotEndWithSlash = firstHash > -1 ? arg[firstHash - 1] !== '/' : !arg.endsWith('/')\n const doesNotStartWithDot = !arg.startsWith('.')\n\n return spaceOnlyAfterHash && hasSlash && doesNotEndWithSlash &&\n doesNotStartWithDot && atOnlyAfterHash && colonOnlyAfterHash &&\n secondSlashOnlyAfterHash\n}\n\nmodule.exports = (giturl, opts, { gitHosts, protocols }) => {\n if (!giturl) {\n return\n }\n\n const correctedUrl = isGitHubShorthand(giturl) ? `github:${giturl}` : giturl\n const parsed = parseUrl(correctedUrl, protocols)\n if (!parsed) {\n return\n }\n\n const gitHostShortcut = gitHosts.byShortcut[parsed.protocol]\n const gitHostDomain = gitHosts.byDomain[parsed.hostname.startsWith('www.')\n ? parsed.hostname.slice(4)\n : parsed.hostname]\n const gitHostName = gitHostShortcut || gitHostDomain\n if (!gitHostName) {\n return\n }\n\n const gitHostInfo = gitHosts[gitHostShortcut || gitHostDomain]\n let auth = null\n if (protocols[parsed.protocol]?.auth && (parsed.username || parsed.password)) {\n auth = `${parsed.username}${parsed.password ? ':' + parsed.password : ''}`\n }\n\n let committish = null\n let user = null\n let project = null\n let defaultRepresentation = null\n\n try {\n if (gitHostShortcut) {\n let pathname = parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname\n const firstAt = pathname.indexOf('@')\n // we ignore auth for shortcuts, so just trim it out\n if (firstAt > -1) {\n pathname = pathname.slice(firstAt + 1)\n }\n\n const lastSlash = pathname.lastIndexOf('/')\n if (lastSlash > -1) {\n user = decodeURIComponent(pathname.slice(0, lastSlash))\n // we want nulls only, never empty strings\n if (!user) {\n user = null\n }\n project = decodeURIComponent(pathname.slice(lastSlash + 1))\n } else {\n project = decodeURIComponent(pathname)\n }\n\n if (project.endsWith('.git')) {\n project = project.slice(0, -4)\n }\n\n if (parsed.hash) {\n committish = decodeURIComponent(parsed.hash.slice(1))\n }\n\n defaultRepresentation = 'shortcut'\n } else {\n if (!gitHostInfo.protocols.includes(parsed.protocol)) {\n return\n }\n\n const segments = gitHostInfo.extract(parsed)\n if (!segments) {\n return\n }\n\n user = segments.user && decodeURIComponent(segments.user)\n project = decodeURIComponent(segments.project)\n committish = decodeURIComponent(segments.committish)\n defaultRepresentation = protocols[parsed.protocol]?.name || parsed.protocol.slice(0, -1)\n }\n } catch (err) {\n /* istanbul ignore else */\n if (err instanceof URIError) {\n return\n } else {\n throw err\n }\n }\n\n return [gitHostName, user, auth, project, committish, defaultRepresentation, opts]\n}\n","'use strict'\n\nconst { LRUCache } = require('lru-cache')\nconst hosts = require('./hosts.js')\nconst fromUrl = require('./from-url.js')\nconst parseUrl = require('./parse-url.js')\n\nconst cache = new LRUCache({ max: 1000 })\n\nfunction unknownHostedUrl (url) {\n try {\n const {\n protocol,\n hostname,\n pathname,\n } = new URL(url)\n\n if (!hostname) {\n return null\n }\n\n const proto = /(?:git\\+)http:$/.test(protocol) ? 'http:' : 'https:'\n const path = pathname.replace(/\\.git$/, '')\n return `${proto}//${hostname}${path}`\n } catch {\n return null\n }\n}\n\nclass GitHost {\n constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) {\n Object.assign(this, GitHost.#gitHosts[type], {\n type,\n user,\n auth,\n project,\n committish,\n default: defaultRepresentation,\n opts,\n })\n }\n\n static #gitHosts = { byShortcut: {}, byDomain: {} }\n static #protocols = {\n 'git+ssh:': { name: 'sshurl' },\n 'ssh:': { name: 'sshurl' },\n 'git+https:': { name: 'https', auth: true },\n 'git:': { auth: true },\n 'http:': { auth: true },\n 'https:': { auth: true },\n 'git+http:': { auth: true },\n }\n\n static addHost (name, host) {\n GitHost.#gitHosts[name] = host\n GitHost.#gitHosts.byDomain[host.domain] = name\n GitHost.#gitHosts.byShortcut[`${name}:`] = name\n GitHost.#protocols[`${name}:`] = { name }\n }\n\n static fromUrl (giturl, opts) {\n if (typeof giturl !== 'string') {\n return\n }\n\n const key = giturl + JSON.stringify(opts || {})\n\n if (!cache.has(key)) {\n const hostArgs = fromUrl(giturl, opts, {\n gitHosts: GitHost.#gitHosts,\n protocols: GitHost.#protocols,\n })\n cache.set(key, hostArgs ? new GitHost(...hostArgs) : undefined)\n }\n\n return cache.get(key)\n }\n\n static fromManifest (manifest, opts = {}) {\n if (!manifest || typeof manifest !== 'object') {\n return\n }\n\n const r = manifest.repository\n // TODO: look into also checking the `bugs`/`homepage` URLs\n\n const rurl = r && (\n typeof r === 'string'\n ? r\n : typeof r === 'object' && typeof r.url === 'string'\n ? r.url\n : null\n )\n\n if (!rurl) {\n throw new Error('no repository')\n }\n\n const info = (rurl && GitHost.fromUrl(rurl.replace(/^git\\+/, ''), opts)) || null\n if (info) {\n return info\n }\n const unk = unknownHostedUrl(rurl)\n return GitHost.fromUrl(unk, opts) || unk\n }\n\n static parseUrl (url) {\n return parseUrl(url)\n }\n\n #fill (template, opts) {\n if (typeof template !== 'function') {\n return null\n }\n\n const options = { ...this, ...this.opts, ...opts }\n\n // the path should always be set so we don't end up with 'undefined' in urls\n if (!options.path) {\n options.path = ''\n }\n\n // template functions will insert the leading slash themselves\n if (options.path.startsWith('/')) {\n options.path = options.path.slice(1)\n }\n\n if (options.noCommittish) {\n options.committish = null\n }\n\n const result = template(options)\n return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result\n }\n\n hash () {\n return this.committish ? `#${this.committish}` : ''\n }\n\n ssh (opts) {\n return this.#fill(this.sshtemplate, opts)\n }\n\n sshurl (opts) {\n return this.#fill(this.sshurltemplate, opts)\n }\n\n browse (path, ...args) {\n // not a string, treat path as opts\n if (typeof path !== 'string') {\n return this.#fill(this.browsetemplate, path)\n }\n\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browsetreetemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browsetreetemplate, { ...args[1], fragment: args[0], path })\n }\n\n // If the path is known to be a file, then browseFile should be used. For some hosts\n // the url is the same as browse, but for others like GitHub a file can use both `/tree/`\n // and `/blob/` in the path. When using a default committish of `HEAD` then the `/tree/`\n // path will redirect to a specific commit. Using the `/blob/` path avoids this and\n // does not redirect to a different commit.\n browseFile (path, ...args) {\n if (typeof args[0] !== 'string') {\n return this.#fill(this.browseblobtemplate, { ...args[0], path })\n }\n\n return this.#fill(this.browseblobtemplate, { ...args[1], fragment: args[0], path })\n }\n\n docs (opts) {\n return this.#fill(this.docstemplate, opts)\n }\n\n bugs (opts) {\n return this.#fill(this.bugstemplate, opts)\n }\n\n https (opts) {\n return this.#fill(this.httpstemplate, opts)\n }\n\n git (opts) {\n return this.#fill(this.gittemplate, opts)\n }\n\n shortcut (opts) {\n return this.#fill(this.shortcuttemplate, opts)\n }\n\n path (opts) {\n return this.#fill(this.pathtemplate, opts)\n }\n\n tarball (opts) {\n return this.#fill(this.tarballtemplate, { ...opts, noCommittish: false })\n }\n\n file (path, opts) {\n return this.#fill(this.filetemplate, { ...opts, path })\n }\n\n edit (path, opts) {\n return this.#fill(this.edittemplate, { ...opts, path })\n }\n\n getDefaultRepresentation () {\n return this.default\n }\n\n toString (opts) {\n if (this.default && typeof this[this.default] === 'function') {\n return this[this.default](opts)\n }\n\n return this.sshurl(opts)\n }\n}\n\nfor (const [name, host] of Object.entries(hosts)) {\n GitHost.addHost(name, host)\n}\n\nmodule.exports = GitHost\n","module.exports = extractDescription\n\n// Extracts description from contents of a readme file in markdown format\nfunction extractDescription (d) {\n if (!d) {\n return\n }\n if (d === 'ERROR: No README data found!') {\n return\n }\n // the first block of text before the first heading\n // that isn't the first line heading\n d = d.trim().split('\\n')\n let s = 0\n while (d[s] && d[s].trim().match(/^(#|$)/)) {\n s++\n }\n const l = d.length\n let e = s + 1\n while (e < l && d[e].trim()) {\n e++\n }\n return d.slice(s, e).join(' ').trim()\n}\n","","var { URL } = require('node:url')\nvar isValidSemver = require('semver/functions/valid')\nvar cleanSemver = require('semver/functions/clean')\nvar validateLicense = require('validate-npm-package-license')\nvar hostedGitInfo = require('hosted-git-info')\nvar { isBuiltin } = require('node:module')\nvar depTypes = ['dependencies', 'devDependencies', 'optionalDependencies']\nvar extractDescription = require('./extract_description')\nvar typos = require('./typos.json')\n\nvar isEmail = str => str.includes('@') && (str.indexOf('@') < str.lastIndexOf('.'))\n\nmodule.exports = {\n // default warning function\n warn: function () {},\n\n fixRepositoryField: function (data) {\n if (data.repositories) {\n this.warn('repositories')\n data.repository = data.repositories[0]\n }\n if (!data.repository) {\n return this.warn('missingRepository')\n }\n if (typeof data.repository === 'string') {\n data.repository = {\n type: 'git',\n url: data.repository,\n }\n }\n var r = data.repository.url || ''\n if (r) {\n var hosted = hostedGitInfo.fromUrl(r)\n if (hosted) {\n r = data.repository.url\n = hosted.getDefaultRepresentation() === 'shortcut' ? hosted.https() : hosted.toString()\n }\n }\n\n if (r.match(/github.com\\/[^/]+\\/[^/]+\\.git\\.git$/)) {\n this.warn('brokenGitUrl', r)\n }\n },\n\n fixTypos: function (data) {\n Object.keys(typos.topLevel).forEach(function (d) {\n if (Object.prototype.hasOwnProperty.call(data, d)) {\n this.warn('typo', d, typos.topLevel[d])\n }\n }, this)\n },\n\n fixScriptsField: function (data) {\n if (!data.scripts) {\n return\n }\n if (typeof data.scripts !== 'object') {\n this.warn('nonObjectScripts')\n delete data.scripts\n return\n }\n Object.keys(data.scripts).forEach(function (k) {\n if (typeof data.scripts[k] !== 'string') {\n this.warn('nonStringScript')\n delete data.scripts[k]\n } else if (typos.script[k] && !data.scripts[typos.script[k]]) {\n this.warn('typo', k, typos.script[k], 'scripts')\n }\n }, this)\n },\n\n fixFilesField: function (data) {\n var files = data.files\n if (files && !Array.isArray(files)) {\n this.warn('nonArrayFiles')\n delete data.files\n } else if (data.files) {\n data.files = data.files.filter(function (file) {\n if (!file || typeof file !== 'string') {\n this.warn('invalidFilename', file)\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixBinField: function (data) {\n if (!data.bin) {\n return\n }\n if (typeof data.bin === 'string') {\n var b = {}\n var match\n if (match = data.name.match(/^@[^/]+[/](.*)$/)) {\n b[match[1]] = data.bin\n } else {\n b[data.name] = data.bin\n }\n data.bin = b\n }\n },\n\n fixManField: function (data) {\n if (!data.man) {\n return\n }\n if (typeof data.man === 'string') {\n data.man = [data.man]\n }\n },\n fixBundleDependenciesField: function (data) {\n var bdd = 'bundledDependencies'\n var bd = 'bundleDependencies'\n if (data[bdd] && !data[bd]) {\n data[bd] = data[bdd]\n delete data[bdd]\n }\n if (data[bd] && !Array.isArray(data[bd])) {\n this.warn('nonArrayBundleDependencies')\n delete data[bd]\n } else if (data[bd]) {\n data[bd] = data[bd].filter(function (filtered) {\n if (!filtered || typeof filtered !== 'string') {\n this.warn('nonStringBundleDependency', filtered)\n return false\n } else {\n if (!data.dependencies) {\n data.dependencies = {}\n }\n if (!Object.prototype.hasOwnProperty.call(data.dependencies, filtered)) {\n this.warn('nonDependencyBundleDependency', filtered)\n data.dependencies[filtered] = '*'\n }\n return true\n }\n }, this)\n }\n },\n\n fixDependencies: function (data) {\n objectifyDeps(data, this.warn)\n addOptionalDepsToDeps(data, this.warn)\n this.fixBundleDependenciesField(data)\n\n ;['dependencies', 'devDependencies'].forEach(function (deps) {\n if (!(deps in data)) {\n return\n }\n if (!data[deps] || typeof data[deps] !== 'object') {\n this.warn('nonObjectDependencies', deps)\n delete data[deps]\n return\n }\n Object.keys(data[deps]).forEach(function (d) {\n var r = data[deps][d]\n if (typeof r !== 'string') {\n this.warn('nonStringDependency', d, JSON.stringify(r))\n delete data[deps][d]\n }\n var hosted = hostedGitInfo.fromUrl(data[deps][d])\n if (hosted) {\n data[deps][d] = hosted.toString()\n }\n }, this)\n }, this)\n },\n\n fixModulesField: function (data) {\n if (data.modules) {\n this.warn('deprecatedModules')\n delete data.modules\n }\n },\n\n fixKeywordsField: function (data) {\n if (typeof data.keywords === 'string') {\n data.keywords = data.keywords.split(/,\\s+/)\n }\n if (data.keywords && !Array.isArray(data.keywords)) {\n delete data.keywords\n this.warn('nonArrayKeywords')\n } else if (data.keywords) {\n data.keywords = data.keywords.filter(function (kw) {\n if (typeof kw !== 'string' || !kw) {\n this.warn('nonStringKeyword')\n return false\n } else {\n return true\n }\n }, this)\n }\n },\n\n fixVersionField: function (data, strict) {\n // allow \"loose\" semver 1.0 versions in non-strict mode\n // enforce strict semver 2.0 compliance in strict mode\n var loose = !strict\n if (!data.version) {\n data.version = ''\n return true\n }\n if (!isValidSemver(data.version, loose)) {\n throw new Error('Invalid version: \"' + data.version + '\"')\n }\n data.version = cleanSemver(data.version, loose)\n return true\n },\n\n fixPeople: function (data) {\n modifyPeople(data, unParsePerson)\n modifyPeople(data, parsePerson)\n },\n\n fixNameField: function (data, options) {\n if (typeof options === 'boolean') {\n options = { strict: options }\n } else if (typeof options === 'undefined') {\n options = {}\n }\n var strict = options.strict\n if (!data.name && !strict) {\n data.name = ''\n return\n }\n if (typeof data.name !== 'string') {\n throw new Error('name field must be a string.')\n }\n if (!strict) {\n data.name = data.name.trim()\n }\n ensureValidName(data.name, strict, options.allowLegacyCase)\n if (isBuiltin(data.name)) {\n this.warn('conflictingName', data.name)\n }\n },\n\n fixDescriptionField: function (data) {\n if (data.description && typeof data.description !== 'string') {\n this.warn('nonStringDescription')\n delete data.description\n }\n if (data.readme && !data.description) {\n data.description = extractDescription(data.readme)\n }\n if (data.description === undefined) {\n delete data.description\n }\n if (!data.description) {\n this.warn('missingDescription')\n }\n },\n\n fixReadmeField: function (data) {\n if (!data.readme) {\n this.warn('missingReadme')\n data.readme = 'ERROR: No README data found!'\n }\n },\n\n fixBugsField: function (data) {\n if (!data.bugs && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.bugs()) {\n data.bugs = { url: hosted.bugs() }\n }\n } else if (data.bugs) {\n if (typeof data.bugs === 'string') {\n if (isEmail(data.bugs)) {\n data.bugs = { email: data.bugs }\n } else if (URL.canParse(data.bugs)) {\n data.bugs = { url: data.bugs }\n } else {\n this.warn('nonEmailUrlBugsString')\n }\n } else {\n bugsTypos(data.bugs, this.warn)\n var oldBugs = data.bugs\n data.bugs = {}\n if (oldBugs.url) {\n if (URL.canParse(oldBugs.url)) {\n data.bugs.url = oldBugs.url\n } else {\n this.warn('nonUrlBugsUrlField')\n }\n }\n if (oldBugs.email) {\n if (typeof (oldBugs.email) === 'string' && isEmail(oldBugs.email)) {\n data.bugs.email = oldBugs.email\n } else {\n this.warn('nonEmailBugsEmailField')\n }\n }\n }\n if (!data.bugs.email && !data.bugs.url) {\n delete data.bugs\n this.warn('emptyNormalizedBugs')\n }\n }\n },\n\n fixHomepageField: function (data) {\n if (!data.homepage && data.repository && data.repository.url) {\n var hosted = hostedGitInfo.fromUrl(data.repository.url)\n if (hosted && hosted.docs()) {\n data.homepage = hosted.docs()\n }\n }\n if (!data.homepage) {\n return\n }\n\n if (typeof data.homepage !== 'string') {\n this.warn('nonUrlHomepage')\n return delete data.homepage\n }\n if (!URL.canParse(data.homepage)) {\n data.homepage = 'http://' + data.homepage\n }\n },\n\n fixLicenseField: function (data) {\n const license = data.license || data.licence\n if (!license) {\n return this.warn('missingLicense')\n }\n if (\n typeof (license) !== 'string' ||\n license.length < 1 ||\n license.trim() === ''\n ) {\n return this.warn('invalidLicense')\n }\n if (!validateLicense(license).validForNewPackages) {\n return this.warn('invalidLicense')\n }\n },\n}\n\nfunction isValidScopedPackageName (spec) {\n if (spec.charAt(0) !== '@') {\n return false\n }\n\n var rest = spec.slice(1).split('/')\n if (rest.length !== 2) {\n return false\n }\n\n return rest[0] && rest[1] &&\n rest[0] === encodeURIComponent(rest[0]) &&\n rest[1] === encodeURIComponent(rest[1])\n}\n\nfunction isCorrectlyEncodedName (spec) {\n return !spec.match(/[/@\\s+%:]/) &&\n spec === encodeURIComponent(spec)\n}\n\nfunction ensureValidName (name, strict, allowLegacyCase) {\n if (name.charAt(0) === '.' ||\n !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) ||\n (strict && (!allowLegacyCase) && name !== name.toLowerCase()) ||\n name.toLowerCase() === 'node_modules' ||\n name.toLowerCase() === 'favicon.ico') {\n throw new Error('Invalid name: ' + JSON.stringify(name))\n }\n}\n\nfunction modifyPeople (data, fn) {\n if (data.author) {\n data.author = fn(data.author)\n }['maintainers', 'contributors'].forEach(function (set) {\n if (!Array.isArray(data[set])) {\n return\n }\n data[set] = data[set].map(fn)\n })\n return data\n}\n\nfunction unParsePerson (person) {\n if (typeof person === 'string') {\n return person\n }\n var name = person.name || ''\n var u = person.url || person.web\n var wrappedUrl = u ? (' (' + u + ')') : ''\n var e = person.email || person.mail\n var wrappedEmail = e ? (' <' + e + '>') : ''\n return name + wrappedEmail + wrappedUrl\n}\n\nfunction parsePerson (person) {\n if (typeof person !== 'string') {\n return person\n }\n var matchedName = person.match(/^([^(<]+)/)\n var matchedUrl = person.match(/\\(([^()]+)\\)/)\n var matchedEmail = person.match(/<([^<>]+)>/)\n var obj = {}\n if (matchedName && matchedName[0].trim()) {\n obj.name = matchedName[0].trim()\n }\n if (matchedEmail) {\n obj.email = matchedEmail[1]\n }\n if (matchedUrl) {\n obj.url = matchedUrl[1]\n }\n return obj\n}\n\nfunction addOptionalDepsToDeps (data) {\n var o = data.optionalDependencies\n if (!o) {\n return\n }\n var d = data.dependencies || {}\n Object.keys(o).forEach(function (k) {\n d[k] = o[k]\n })\n data.dependencies = d\n}\n\nfunction depObjectify (deps, type, warn) {\n if (!deps) {\n return {}\n }\n if (typeof deps === 'string') {\n deps = deps.trim().split(/[\\n\\r\\s\\t ,]+/)\n }\n if (!Array.isArray(deps)) {\n return deps\n }\n warn('deprecatedArrayDependencies', type)\n var o = {}\n deps.filter(function (d) {\n return typeof d === 'string'\n }).forEach(function (d) {\n d = d.trim().split(/(:?[@\\s><=])/)\n var dn = d.shift()\n var dv = d.join('')\n dv = dv.trim()\n dv = dv.replace(/^@/, '')\n o[dn] = dv\n })\n return o\n}\n\nfunction objectifyDeps (data, warn) {\n depTypes.forEach(function (type) {\n if (!data[type]) {\n return\n }\n data[type] = depObjectify(data[type], type, warn)\n })\n}\n\nfunction bugsTypos (bugs, warn) {\n if (!bugs) {\n return\n }\n Object.keys(bugs).forEach(function (k) {\n if (typos.bugs[k]) {\n warn('typo', k, typos.bugs[k], 'bugs')\n bugs[typos.bugs[k]] = bugs[k]\n delete bugs[k]\n }\n })\n}\n","","var util = require('util')\nvar messages = require('./warning_messages.json')\n\nmodule.exports = function () {\n var args = Array.prototype.slice.call(arguments, 0)\n var warningName = args.shift()\n if (warningName === 'typo') {\n return makeTypoWarning.apply(null, args)\n } else {\n var msgTemplate = messages[warningName] ? messages[warningName] : warningName + \": '%s'\"\n args.unshift(msgTemplate)\n return util.format.apply(null, args)\n }\n}\n\nfunction makeTypoWarning (providedName, probableName, field) {\n if (field) {\n providedName = field + \"['\" + providedName + \"']\"\n probableName = field + \"['\" + probableName + \"']\"\n }\n return util.format(messages.typo, providedName, probableName)\n}\n","module.exports = normalize\n\nvar fixer = require('./fixer')\nnormalize.fixer = fixer\n\nvar makeWarning = require('./make_warning')\n\nvar fieldsToFix = ['name', 'version', 'description', 'repository', 'modules', 'scripts',\n 'files', 'bin', 'man', 'bugs', 'keywords', 'readme', 'homepage', 'license']\nvar otherThingsToFix = ['dependencies', 'people', 'typos']\n\nvar thingsToFix = fieldsToFix.map(function (fieldName) {\n return ucFirst(fieldName) + 'Field'\n})\n// two ways to do this in CoffeeScript on only one line, sub-70 chars:\n// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + \"Field\"\n// thingsToFix = (ucFirst(name) + \"Field\" for name in fieldsToFix)\nthingsToFix = thingsToFix.concat(otherThingsToFix)\n\nfunction normalize (data, warn, strict) {\n if (warn === true) {\n warn = null\n strict = true\n }\n if (!strict) {\n strict = false\n }\n if (!warn || data.private) {\n warn = function () { /* noop */ }\n }\n\n if (data.scripts &&\n data.scripts.install === 'node-gyp rebuild' &&\n !data.scripts.preinstall) {\n data.gypfile = true\n }\n fixer.warn = function () {\n warn(makeWarning.apply(null, arguments))\n }\n thingsToFix.forEach(function (thingName) {\n fixer['fix' + ucFirst(thingName)](data, strict)\n })\n data._id = data.name + '@' + data.version\n}\n\nfunction ucFirst (string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n}\n","import {promisify} from 'node:util';\nimport {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nconst execFileOriginal = promisify(execFileCallback);\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport function rootDirectory(pathInput) {\n\treturn path.parse(toPath(pathInput)).root;\n}\n\nexport function traversePathUp(startPath) {\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\tlet currentPath = path.resolve(toPath(startPath));\n\t\t\tlet previousPath;\n\n\t\t\twhile (previousPath !== currentPath) {\n\t\t\t\tyield currentPath;\n\t\t\t\tpreviousPath = currentPath;\n\t\t\t\tcurrentPath = path.resolve(currentPath, '..');\n\t\t\t}\n\t\t},\n\t};\n}\n\nconst TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;\n\nexport async function execFile(file, arguments_, options = {}) {\n\treturn execFileOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\t...options,\n\t});\n}\n\nexport function execFileSync(file, arguments_ = [], options = {}) {\n\treturn execFileSyncOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\tencoding: 'utf8',\n\t\tstdio: 'pipe',\n\t\t...options,\n\t});\n}\n\nexport * from './default.js';\n","import fs from 'node:fs';\nimport fsPromises from 'node:fs/promises';\nimport path from 'node:path';\nimport parseJson from 'parse-json';\nimport normalizePackageData from 'normalize-package-data';\nimport {toPath} from 'unicorn-magic/node';\n\nconst getPackagePath = cwd => path.resolve(toPath(cwd) ?? '.', 'package.json');\n\nconst _readPackage = (file, normalize) => {\n\tconst json = typeof file === 'string'\n\t\t? parseJson(file)\n\t\t: file;\n\n\tif (normalize) {\n\t\tnormalizePackageData(json);\n\t}\n\n\treturn json;\n};\n\nexport async function readPackage({cwd, normalize = true} = {}) {\n\tconst packageFile = await fsPromises.readFile(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function readPackageSync({cwd, normalize = true} = {}) {\n\tconst packageFile = fs.readFileSync(getPackagePath(cwd), 'utf8');\n\treturn _readPackage(packageFile, normalize);\n}\n\nexport function parsePackage(packageFile, {normalize = true} = {}) {\n\tconst isObject = packageFile !== null && typeof packageFile === 'object' && !Array.isArray(packageFile);\n\tconst isString = typeof packageFile === 'string';\n\n\tif (!isObject && !isString) {\n\t\tthrow new TypeError('`packageFile` should be either an `object` or a `string`.');\n\t}\n\n\tconst clonedPackageFile = isObject ? structuredClone(packageFile) : packageFile;\n\n\treturn _readPackage(clonedPackageFile, normalize);\n}\n","import spawn from \"cross-spawn\";\n\nexport function spawnAsync(\n command: string,\n args: string[],\n options: {\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n } = {},\n): Promise<string> {\n return new Promise((resolve, reject) => {\n // cross-spawn rather than node:child_process.spawn. On Windows npm, pnpm\n // and yarn are all `.cmd` shims, and since the fix for CVE-2024-27980\n // (Node 18.20.2 / 20.12.2 / 21.7.3 and later) `spawn` refuses to execute\n // `.bat`/`.cmd` unless `shell: true` -- it throws `spawn EINVAL`, and\n // synchronously, so an `error` listener never sees it. Passing\n // `shell: true` instead would hand the arguments to cmd.exe, which strips\n // quotes and splits on shell metacharacters. cross-spawn resolves the shim\n // and escapes the arguments itself, so the call keeps shell-less argument\n // semantics on every platform.\n const child = spawn(command, args, {\n cwd: options.cwd,\n env: options.env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n child.stdout?.on(\"data\", (d: Buffer) => {\n stdout += d.toString();\n });\n\n child.stderr?.on(\"data\", (d: Buffer) => {\n stderr += d.toString();\n });\n\n child.on(\"error\", reject);\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve(stdout.trim());\n } else {\n reject(\n new Error(stderr.trim() || `${command} exited with code ${code}`),\n );\n }\n });\n });\n}\n","import chalk from \"chalk\";\nimport type { Agent } from \"package-manager-detector\";\nimport { readPackage } from \"read-pkg\";\nimport { clean, valid } from \"semver\";\nimport { spawnAsync } from \"./spawn-async.js\";\n\nexport async function fetchNpmVersionFromRegistryForTag(\n packageName: string,\n tag: string,\n) {\n // npm will assume tag is `\"latest\"` unless otherwise specified\n const packageAtTag = `${packageName}@${tag}`;\n\n const version = await fetchPackageVersionFromNpmRegistry(packageAtTag);\n const cleanedVersion = clean(version);\n\n if (!cleanedVersion) {\n throw new Error(\n `Failed to fetch version for package \"${packageName}\" at tag \"${tag}\".`,\n );\n }\n return cleanedVersion;\n}\n\nexport async function fetchPackageVersionFromNpmRegistry(\n packageSpecifier: string,\n registryUrl?: string,\n) {\n const failedFetchErrorMessage = `Failed to fetch version from npm registry for ${packageSpecifier}.`;\n try {\n const args = [\"view\", packageSpecifier, \"version\"];\n if (registryUrl) {\n args.push(\"--registry\", registryUrl);\n }\n const version = await spawnAsync(\"npm\", args);\n return version;\n } catch (e) {\n console.error(failedFetchErrorMessage);\n const error = e instanceof Error ? e : new Error(\"Unknown error\");\n throw error;\n }\n}\n\nexport async function parsePackageVersion(args: {\n name: string;\n version?: string;\n tag?: string;\n}) {\n if (args.version) {\n if (!valid(clean(args.version))) {\n throw new Error(`Invalid version specified: ${args.version}`);\n }\n return args.version;\n }\n\n const versionForTag = await fetchNpmVersionFromRegistryForTag(\n args.name,\n args.tag ?? \"latest\",\n );\n return versionForTag;\n}\n\nexport async function makeVersionedDependencies(args: {\n names: string[];\n version?: string;\n tag?: string;\n}) {\n return await Promise.all(\n args.names.map((name) =>\n makeVersionedDependency({\n name,\n ...args,\n }),\n ),\n );\n}\n\nexport async function makeVersionedDependenciesMap(args: {\n names: readonly string[];\n version?: string;\n tag?: string;\n}): Promise<Record<string, string>> {\n const entries = await Promise.all(\n args.names.map(async (name) => {\n const version = await parsePackageVersion({ name, ...args });\n return [name, version] as const;\n }),\n );\n return Object.fromEntries(entries);\n}\n\nasync function makeVersionedDependency(args: {\n name: string;\n version?: string;\n tag?: string;\n}) {\n const version = await parsePackageVersion(args);\n return `\"${args.name}\": \"${version}\"`;\n}\n\nexport function parseTag(args: {\n tag?: string;\n dev?: boolean;\n staging?: boolean;\n rc?: boolean;\n}) {\n const { tag, dev, staging, rc } = args;\n if (tag) return tag;\n if (dev) return \"dev\";\n if (staging) return \"staging\";\n if (rc) return \"rc\";\n return \"latest\";\n}\n\nexport function parsePackageManager(args?: {\n packageManager?: Agent;\n npm?: boolean;\n pnpm?: boolean;\n yarn?: boolean;\n bun?: boolean;\n}): Agent | undefined {\n const { npm, pnpm, yarn, bun, packageManager } = args ?? {};\n if (npm) return \"npm\";\n if (pnpm) return \"pnpm\";\n if (yarn) return \"yarn\";\n if (bun) return \"bun\";\n if (packageManager) return packageManager;\n return undefined;\n}\n\nexport function handleMutuallyExclusiveOptions(\n options: Record<string, string | boolean | number | undefined>,\n optionsName: string,\n) {\n const mutuallyExclusiveOptions = Object.entries(options)\n .map(([k, v]) => {\n if (v !== undefined) return k;\n return undefined;\n })\n .filter((v) => v !== undefined);\n\n if (mutuallyExclusiveOptions.length > 1) {\n throw new Error(\n `Cannot specify multiple ${optionsName} options. You provided: ${mutuallyExclusiveOptions.join(\", \")}`,\n );\n }\n}\n\nexport function getTagFromVersion(version: string) {\n if (version.includes(\"dev\")) return \"dev\";\n if (version.includes(\"staging\")) return \"staging\";\n if (version.includes(\"rc\")) return \"rc\";\n return \"latest\";\n}\n\nexport function logVersionUpdate(args: {\n name: string;\n version: string;\n newVersion: string;\n}) {\n const { name, version, newVersion } = args;\n console.log(\n `⚙️ Updating ${chalk.bold(name)}: ${chalk.blue(version)} -> ${chalk.green(newVersion)}`,\n );\n}\n\nexport async function getPackageVersionFromPackageJson(\n packageJsonPath: string,\n) {\n const packageJson = await readPackage({ cwd: packageJsonPath });\n const version = packageJson.version;\n return version;\n}\n","import type { Dirent } from \"node:fs\";\nimport { statSync } from \"node:fs\";\nimport { stat } from \"node:fs/promises\";\nimport { isTruthy } from \"remeda\";\nexport async function directoryExists(path: string | null | undefined) {\n if (!path) return false;\n try {\n const stats = await stat(path);\n if (stats.isDirectory()) return true;\n } catch (e) {\n return false;\n }\n return false;\n}\n\nexport function directoryExistsSync(\n path: string | null | undefined,\n): path is string {\n if (!isTruthy(path)) return false;\n return statSync(path, { throwIfNoEntry: false })?.isDirectory() === true;\n}\n\nexport function isDirectory(\n dirent: Dirent | undefined | null,\n): dirent is Dirent {\n return dirent?.isDirectory() === true;\n}\n","import type { Dirent } from \"node:fs\";\nimport { statSync } from \"node:fs\";\nimport { stat } from \"node:fs/promises\";\nimport { isTruthy } from \"remeda\";\nexport async function fileExists(path: string | null | undefined) {\n if (!path) return false;\n try {\n const stats = await stat(path);\n if (stats.isFile()) return true;\n } catch (e) {\n return false;\n }\n return false;\n}\n\nexport function fileExistsSync(\n path: string | null | undefined,\n): path is string {\n if (!isTruthy(path)) return false;\n return statSync(path, { throwIfNoEntry: false })?.isFile() === true;\n}\n\nexport function isFile(dirent: Dirent | undefined | null): dirent is Dirent {\n return dirent?.isFile() === true;\n}\n","import { readPackage } from \"read-pkg\";\n\nexport async function getPackageNameFromPackageJson() {\n const packageJson = await readPackage();\n return packageJson.name;\n}\n","import path from \"node:path\";\nimport npa from \"npm-package-arg\";\nimport { packageDirectory } from \"package-directory\";\nimport type { Agent } from \"package-manager-detector\";\nimport { POWERHOUSE_CONFIG_FILE, POWERHOUSE_GLOBAL_DIR } from \"../constants.js\";\nimport type { PackageManagerArgs } from \"../types.js\";\nimport {\n fetchPackageVersionFromNpmRegistry,\n parsePackageManager,\n} from \"./dependencies.js\";\nimport { directoryExists } from \"./directory-exists.js\";\nimport { fileExists } from \"./file-exists.js\";\n\nexport async function isPowerhouseProject(dir: string) {\n const powerhouseConfigPath = path.join(dir, POWERHOUSE_CONFIG_FILE);\n\n return await fileExists(powerhouseConfigPath);\n}\n\nexport async function getLocalPowerhouseProjectDirPath() {\n const projectDirPath = await packageDirectory();\n if (!projectDirPath) return undefined;\n\n const dirIsPowerhouseProject = await isPowerhouseProject(projectDirPath);\n if (!dirIsPowerhouseProject) return undefined;\n\n return projectDirPath;\n}\n\nexport async function getGlobalPowerhouseProjectDirPath() {\n const hasPowerhouseGlobalDir = await directoryExists(POWERHOUSE_GLOBAL_DIR);\n if (!hasPowerhouseGlobalDir) return undefined;\n\n const globalDirIsPowerhouseProject = await isPowerhouseProject(\n POWERHOUSE_GLOBAL_DIR,\n );\n if (!globalDirIsPowerhouseProject) return undefined;\n\n return POWERHOUSE_GLOBAL_DIR;\n}\n\nexport async function getPackageManagerAtPowerhouseProjectDirPath(\n projectDirPath: string | undefined,\n) {\n const { detect } = await import(\"package-manager-detector\");\n const detectResult = await detect({\n cwd: projectDirPath,\n });\n return detectResult?.agent;\n}\n\nexport async function getPowerhouseProjectInstallCommand(\n packageManagerAgent: Agent,\n args: string[] = [],\n) {\n const { resolveCommand } = await import(\"package-manager-detector\");\n const resolvedCommand = resolveCommand(packageManagerAgent, \"install\", args);\n if (!resolvedCommand) {\n console.warn(\n `Failed to get install command in project directory, calling back to 'npm install'`,\n );\n return \"npm install\";\n }\n const { command: packageManager, args: installArgs } = resolvedCommand;\n return `${packageManager} ${installArgs.join(\" \")}`;\n}\n\nexport async function getPowerhouseProjectUninstallCommand(\n projectDirPath: string | undefined,\n args: string[] = [],\n) {\n const agent =\n await getPackageManagerAtPowerhouseProjectDirPath(projectDirPath);\n if (!agent) {\n console.warn(\n `Failed to detect package manager in project directory, falling back to 'npm' as package manager.`,\n );\n }\n const { resolveCommand } = await import(\"package-manager-detector\");\n const resolvedCommand = resolveCommand(agent ?? \"npm\", \"uninstall\", args);\n if (!resolvedCommand) {\n console.warn(\n `Failed to get uninstall command in project directory, calling back to 'npm uninstall'`,\n );\n return \"npm uninstall\";\n }\n const { command: packageManager, args: uninstallArgs } = resolvedCommand;\n return `${packageManager} ${uninstallArgs.join(\" \")}`;\n}\n\nexport async function makeDependenciesWithVersions(\n dependencies: string[],\n registryUrl?: string,\n) {\n const dependenciesWithVersions = await Promise.all(\n dependencies.map(async (dependency) => {\n const parsed = npa(dependency);\n const { name } = parsed;\n if (!name) {\n throw new Error(`Package name for ${dependency} is invalid.`);\n }\n // Dist-tag specs (e.g. `name@dev`, `name@staging`) are preserved\n // verbatim in powerhouse.config.json so Connect re-resolves them\n // against the registry at load time — which matches the user's\n // intent when they typed a tag (\"follow this stream\") rather than a\n // version (\"pin this build\"). Semver versions/ranges and bare names\n // still resolve to a concrete value via `npm view` so builds stay\n // reproducible.\n if (parsed.type === \"tag\") {\n const tag = parsed.fetchSpec ?? parsed.rawSpec;\n if (tag) {\n return { name, version: tag };\n }\n }\n const version = await fetchPackageVersionFromNpmRegistry(\n dependency,\n registryUrl,\n );\n return { name, version };\n }),\n );\n return dependenciesWithVersions;\n}\n\nexport async function getPowerhouseProjectInfo(\n args?: Partial<PackageManagerArgs>,\n options?: { silent?: boolean },\n) {\n const localProjectPath = await getLocalPowerhouseProjectDirPath();\n const globalProjectPath = await getGlobalPowerhouseProjectDirPath();\n const projectPath = localProjectPath ?? globalProjectPath;\n const isGlobal = !localProjectPath && !!globalProjectPath;\n const packageManagerFromArgs = parsePackageManager(args);\n const packageManagerFromProject =\n await getPackageManagerAtPowerhouseProjectDirPath(projectPath);\n\n if (\n packageManagerFromArgs &&\n packageManagerFromProject &&\n packageManagerFromArgs !== packageManagerFromProject\n ) {\n throw new Error(\n `You specified package manager ${packageManagerFromArgs} but your project already has dependencies installed with ${packageManagerFromProject}. Please first remove your lockfile and node_modules before running install with ${packageManagerFromArgs}.`,\n );\n }\n\n if (\n !packageManagerFromArgs &&\n !packageManagerFromProject &&\n !options?.silent\n ) {\n console.warn(\n \"No package manager specified or detected, falling back to `npm`...\",\n );\n }\n\n const packageManager =\n packageManagerFromArgs ?? packageManagerFromProject ?? \"npm\";\n\n return {\n projectPath,\n localProjectPath,\n globalProjectPath,\n packageManager,\n isGlobal,\n };\n}\n","import { execSync } from \"child_process\";\n\nexport function runCmd(command: string, options: { cwd?: string } = {}) {\n try {\n execSync(command, { stdio: \"inherit\", cwd: options.cwd });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n throw error;\n }\n}\n","import path from \"node:path\";\nimport { readPackage } from \"read-pkg\";\nimport { fileExists } from \"./file-exists.js\";\nimport { getPowerhouseProjectInfo } from \"./projects.js\";\n\nexport async function getPhCmdVersionInfo(phCmdVersion: string) {\n const phCliVersionInfo = await getPhCliVersionInfo();\n\n return `\n-------------------------------------\nPH CMD version: ${phCmdVersion}\n${phCliVersionInfo}\n-------------------------------------\n`.trim();\n}\n\nexport async function getPhCliVersionInfo() {\n const noProjectWarningMessage = `\n No Powerhouse project directory found.\n To create a local project, run \\`ph init\\`.\n To create a global project, run \\`ph setup-globals\\`.\n`.trim();\n const { projectPath, packageManager, isGlobal } =\n await getPowerhouseProjectInfo(undefined, { silent: true });\n if (!projectPath) {\n return noProjectWarningMessage;\n }\n const projectPackageJsonPath = path.join(projectPath, \"package.json\");\n const projectPackageJsonExists = await fileExists(projectPackageJsonPath);\n if (!projectPackageJsonExists) {\n return noProjectWarningMessage;\n }\n const projectPackageJson = await readPackage({\n cwd: projectPath,\n normalize: false,\n });\n const phCliVersion =\n projectPackageJson.dependencies?.[\"@powerhousedao/ph-cli\"] ??\n projectPackageJson.devDependencies?.[\"@powerhousedao/ph-cli\"];\n if (!phCliVersion) {\n return `\n \\`ph-cli\\` is not installed.\n For a local project, run \\`${packageManager} install @powerhousedao/ph-cli\\`. \n For a global project, run \\`ph setup-globals\\`.\n `.trim();\n }\n return `\nPH CLI version: ${phCliVersion}\nPH CLI path: ${projectPath}\nPH CLI is global project: ${isGlobal}\nPH CLI package manager: ${packageManager}\n `.trim();\n}\n","import { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"path\";\n\nexport async function writeFileEnsuringDir(\n filePath: string,\n contents: string | Buffer,\n) {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, contents, { encoding: \"utf-8\" });\n}\n","/**\n * CLI telemetry (error reporting via Sentry).\n *\n * Design:\n * - Opt-out by default, asked once on first interactive run.\n * - Stores consent in ~/.ph/telemetry.json so we never ask twice.\n * - Respects PH_NO_TELEMETRY=1 and DO_NOT_TRACK=1 as immediate kill switches.\n * - Non-interactive (TTY missing, CI, piped) defaults to DISABLED — we don't\n * want to hang a CI pipeline on an unanswered prompt, and we don't want to\n * capture errors without informed consent.\n * - DSN is published in the CLI binary; Sentry DSNs accept events but grant\n * no read access, so this is safe. Hardcoded so users can't accidentally\n * misroute events.\n *\n * PII scrubbing in beforeSend hook:\n * - Home-directory paths collapsed to ~\n * - Flag/arg values that look like secrets (tokens, keys) stripped\n * - No source-context from user files\n */\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\n// Sentry project \"ph-cli\" on the powerhouse-hosted Sentry instance.\n// Public DSNs are safe to ship — they grant write-only ingest access.\nconst SENTRY_DSN =\n \"https://0e7793802288589b4923896118374462@sentry.monitoring.vetra.io/3\";\n\nconst TELEMETRY_FILE = join(homedir(), \".ph\", \"telemetry.json\");\n\ntype TelemetryConfig = {\n enabled: boolean;\n askedAt: string;\n};\n\nexport type CliInvocationInfo = {\n command?: string;\n subcommand?: string;\n pm?: string;\n argv: string[];\n cwd?: string;\n};\n\nexport type TelemetryClient = {\n /**\n * Attaches per-invocation context (command, sanitized argv, package\n * manager) as Sentry tags + a `invocation` context block, plus a single\n * \"cli invoked\" breadcrumb. Safe to call once per process.\n */\n attachInvocationContext: (info: CliInvocationInfo) => void;\n /**\n * Captures an error (if telemetry is initialized) and flushes before the\n * caller calls process.exit(). Safe no-op when telemetry is disabled.\n */\n captureCliError: (\n err: unknown,\n opts?: { kind?: \"crash\" | \"user\" },\n ) => Promise<void>;\n};\n\nfunction isExplicitlyDisabled(): boolean {\n // Standard opt-out signals respected by most OSS CLIs.\n return (\n process.env.PH_NO_TELEMETRY === \"1\" ||\n process.env.PH_NO_TELEMETRY === \"true\" ||\n process.env.DO_NOT_TRACK === \"1\" ||\n process.env.DO_NOT_TRACK === \"true\"\n );\n}\n\nfunction isExplicitlyEnabled(): boolean {\n return (\n process.env.PH_TELEMETRY === \"1\" || process.env.PH_TELEMETRY === \"true\"\n );\n}\n\nfunction isInteractive(): boolean {\n // Only ask if stdin is a TTY and CI env isn't set.\n return Boolean(process.stdin.isTTY) && !process.env.CI;\n}\n\nfunction readConfig(): TelemetryConfig | null {\n try {\n if (!existsSync(TELEMETRY_FILE)) return null;\n return JSON.parse(readFileSync(TELEMETRY_FILE, \"utf8\")) as TelemetryConfig;\n } catch {\n return null;\n }\n}\n\nfunction writeConfig(cfg: TelemetryConfig): void {\n try {\n mkdirSync(join(homedir(), \".ph\"), { recursive: true });\n writeFileSync(TELEMETRY_FILE, JSON.stringify(cfg, null, 2));\n } catch {\n // non-fatal; we'll just ask again next time\n }\n}\n\n/**\n * Prompts the user once, caches the answer. Must be called before init.\n * Returns `true` if telemetry should be enabled, `false` otherwise.\n */\nexport async function resolveTelemetryConsent(): Promise<boolean> {\n if (isExplicitlyDisabled()) return false;\n if (isExplicitlyEnabled()) return true;\n\n const cached = readConfig();\n if (cached) return cached.enabled;\n\n if (!isInteractive()) {\n // Non-interactive first run: stay silent, don't ask, don't send. User can\n // opt in later with `ph telemetry on` or PH_TELEMETRY=1.\n return false;\n }\n\n const enquirer = await import(\"enquirer\");\n try {\n const { enabled } = await enquirer.default.prompt<{ enabled: boolean }>({\n type: \"confirm\",\n name: \"enabled\",\n message:\n \"Help improve Powerhouse by sending anonymous error reports? \" +\n \"(stack traces only, paths and secrets are scrubbed)\",\n initial: true,\n });\n writeConfig({ enabled, askedAt: new Date().toISOString() });\n return enabled;\n } catch {\n // user hit Ctrl-C during prompt — treat as no, but don't persist so we\n // ask again next time\n return false;\n }\n}\n\nfunction scrubString(input: string): string {\n if (!input) return input;\n const home = homedir();\n let out = input;\n // Collapse home dir to ~\n if (home && out.includes(home)) {\n out = out.split(home).join(\"~\");\n }\n // Strip common secret-shaped flag values: --token=XYZ, --api-key XYZ, etc.\n out = out.replace(\n /(--?(?:token|api[-_]?key|password|secret|auth)[=\\s])([^\\s]+)/gi,\n \"$1<redacted>\",\n );\n return out;\n}\n\ntype ScrubbableFrame = {\n filename?: string;\n abs_path?: string;\n pre_context?: unknown;\n context_line?: unknown;\n post_context?: unknown;\n vars?: unknown;\n};\n\ntype ScrubbableException = {\n value?: string;\n stacktrace?: { frames?: ScrubbableFrame[] };\n};\n\ntype ScrubbableEvent = {\n message?: string;\n logentry?: { message?: string };\n exception?: { values?: ScrubbableException[] };\n server_name?: string;\n extra?: Record<string, unknown>;\n};\n\nfunction scrubEvent<T>(event: T): T {\n const e = event as ScrubbableEvent;\n try {\n if (e.message) e.message = scrubString(e.message);\n if (e.logentry?.message) {\n e.logentry.message = scrubString(e.logentry.message);\n }\n const values = e.exception?.values;\n if (Array.isArray(values)) {\n for (const ex of values) {\n if (ex.value) ex.value = scrubString(ex.value);\n const frames = ex.stacktrace?.frames;\n if (Array.isArray(frames)) {\n for (const f of frames) {\n if (f.filename) f.filename = scrubString(f.filename);\n if (f.abs_path) f.abs_path = scrubString(f.abs_path);\n // Drop captured source context from user machines — privacy.\n delete f.pre_context;\n delete f.context_line;\n delete f.post_context;\n delete f.vars;\n }\n }\n }\n }\n // Server name can leak the user's machine hostname; drop it.\n delete e.server_name;\n // Strip raw argv from extra context.\n if (e.extra) {\n delete e.extra.argv;\n delete e.extra.env;\n }\n } catch {\n // Never let scrubbing throw — worst case we drop the event below.\n }\n return event;\n}\n\n/**\n * Initializes Sentry for CLI error reporting if telemetry is enabled.\n * Safe to call multiple times; only the first call takes effect.\n */\nexport async function initCliTelemetry(opts: {\n cliName: \"ph-cli\" | \"ph-cmd\";\n release?: string;\n}): Promise<TelemetryClient | undefined> {\n const enabled = await resolveTelemetryConsent();\n if (!enabled) return;\n\n const Sentry = await import(\"@sentry/node-core/light\");\n const os = await import(\"node:os\");\n const sentryClient = Sentry.init({\n dsn: SENTRY_DSN,\n release: opts.release,\n environment: process.env.NODE_ENV || \"production\",\n sendDefaultPii: false,\n defaultIntegrations: false,\n integrations: [\n // Only the bare minimum — no automatic HTTP/FS instrumentation.\n ],\n beforeSend(event) {\n return scrubEvent(event);\n },\n beforeBreadcrumb(breadcrumb) {\n if (breadcrumb.message) {\n breadcrumb.message = scrubString(breadcrumb.message);\n }\n return breadcrumb;\n },\n });\n Sentry.setTag(\"cli_name\", opts.cliName);\n if (opts.release) Sentry.setTag(\"cli_version\", opts.release);\n // Environment tags — `defaultIntegrations: false` strips Sentry's auto\n // node-context, so attach the bits we care about manually (and keep\n // hostname out of it).\n Sentry.setTag(\"os\", process.platform);\n Sentry.setTag(\"arch\", process.arch);\n Sentry.setTag(\"node_version\", process.version);\n Sentry.setTag(\"ci\", String(Boolean(process.env.CI)));\n Sentry.setTag(\"tty\", String(Boolean(process.stdin.isTTY)));\n Sentry.setContext(\"runtime\", {\n name: \"node\",\n version: process.version,\n });\n Sentry.setContext(\"os\", {\n name: process.platform,\n version: os.release(),\n });\n Sentry.setContext(\"device\", {\n arch: process.arch,\n });\n if (!sentryClient) {\n return;\n }\n return {\n attachInvocationContext(info: CliInvocationInfo) {\n const argv = info.argv.map(scrubString);\n const flagNames = info.argv\n .filter((a) => a.startsWith(\"-\"))\n .map((a) => a.split(\"=\")[0]);\n if (info.command) Sentry.setTag(\"command\", info.command);\n if (info.subcommand) Sentry.setTag(\"subcommand\", info.subcommand);\n if (info.pm) Sentry.setTag(\"pm\", info.pm);\n Sentry.setContext(\"invocation\", {\n command: info.command,\n subcommand: info.subcommand,\n argv,\n flag_names: flagNames,\n argv_count: argv.length,\n cwd: info.cwd ? scrubString(info.cwd) : undefined,\n });\n Sentry.addBreadcrumb({\n category: \"cli\",\n level: \"info\",\n message: \"cli invoked\",\n data: {\n command: info.command,\n pm: info.pm,\n tty: Boolean(process.stdin.isTTY),\n ci: Boolean(process.env.CI),\n },\n });\n },\n captureCliError: async (\n err: unknown,\n captureOpts?: { kind?: \"crash\" | \"user\" },\n ) => {\n try {\n Sentry.setTag(\"error_kind\", captureOpts?.kind ?? \"crash\");\n sentryClient.captureException(err);\n await sentryClient.flush(2000);\n } catch {\n // Reporting must never mask the real error.\n }\n },\n };\n}\n\n/**\n * Explicitly set telemetry consent (used by `ph telemetry on|off`).\n */\nexport function setTelemetryConsent(enabled: boolean): void {\n writeConfig({ enabled, askedAt: new Date().toISOString() });\n}\n\n/**\n * Returns the current telemetry state — useful for `ph telemetry status`.\n */\nexport function getTelemetryStatus():\n | { source: \"env\"; enabled: boolean }\n | { source: \"config\"; enabled: boolean; askedAt: string }\n | { source: \"default\"; enabled: false } {\n if (isExplicitlyDisabled()) return { source: \"env\", enabled: false };\n if (isExplicitlyEnabled()) return { source: \"env\", enabled: true };\n const cached = readConfig();\n if (cached)\n return {\n source: \"config\",\n enabled: cached.enabled,\n askedAt: cached.askedAt,\n };\n return { source: \"default\", enabled: false };\n}\n","export const PACKAGES_DEPENDENCIES = [\n \"@powerhousedao/builder-tools\",\n \"@powerhousedao/codegen\",\n \"@powerhousedao/common\",\n \"@powerhousedao/config\",\n \"@powerhousedao/design-system\",\n \"document-drive\",\n \"document-model\",\n \"@powerhousedao/reactor\",\n \"@powerhousedao/reactor-api\",\n \"@powerhousedao/reactor-browser\",\n \"@powerhousedao/reactor-mcp\",\n \"@powerhousedao/switchboard-gui\",\n \"@powerhousedao/vetra\",\n \"@powerhousedao/analytics-engine-core\",\n \"@powerhousedao/analytics-engine-knex\",\n \"@powerhousedao/analytics-engine-pg\",\n \"@powerhousedao/analytics-engine-browser\",\n \"@powerhousedao/analytics-engine-graphql\",\n \"@powerhousedao/shared\",\n \"@powerhousedao/powerhouse-vetra-packages\",\n \"@powerhousedao/analytics-engine-core\",\n \"@powerhousedao/analytics-engine-graphql\",\n \"@powerhousedao/analytics-engine-knex\",\n \"@powerhousedao/analytics-engine-pg\",\n \"@powerhousedao/analytics-engine-browser\",\n \"@renown/sdk\",\n] as const;\n\nexport const CLIS_DEPENDENCIES = [\"ph-cmd\", \"@powerhousedao/ph-cli\"];\nexport const APPS_DEPENDENCIES = [\n \"@powerhousedao/connect\",\n \"@powerhousedao/switchboard\",\n];\n\nexport const ALL_POWERHOUSE_DEPENDENCIES = [\n ...PACKAGES_DEPENDENCIES,\n ...CLIS_DEPENDENCIES,\n ...APPS_DEPENDENCIES,\n];\n","import chalk from \"chalk\";\nimport path from \"node:path\";\nimport { readPackage } from \"read-pkg\";\nimport { writePackage } from \"write-package\";\nimport {\n ALL_POWERHOUSE_DEPENDENCIES,\n APPS_DEPENDENCIES,\n CLIS_DEPENDENCIES,\n} from \"../../constants.js\";\nimport { directoryExists, logVersionUpdate, runCmd } from \"../index.mjs\";\nexport async function runUseLocal(monorepoPath: string, skipInstall?: boolean) {\n const monorepoDirExists = await directoryExists(monorepoPath);\n\n if (!monorepoDirExists) {\n throw new Error(\n \"❌ No directory found at the powerhouse monorepo path you specified.\",\n );\n }\n\n console.log(\n `\\n▶️ Linking powerhouse dependencies to \"${chalk.bold(monorepoPath)}...\\n`,\n );\n\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, version] of Object.entries(packageJson.dependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, version] of Object.entries(packageJson.devDependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = buildPnpmLink(name, monorepoPath);\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n packageJson.peerDependencies[name] = \"*\";\n logVersionUpdate({\n name,\n version,\n newVersion: \"*\",\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(chalk.green(`\\n✅ Project linked successfully\\n`));\n\n if (!skipInstall) {\n console.log(`Installing linked dependencies with \\`pnpm\\`\\n`);\n runCmd(`pnpm install`);\n }\n}\n\nfunction buildPnpmLink(packageName: string, monorepoPath: string) {\n const isCli = CLIS_DEPENDENCIES.includes(packageName);\n const isApp = APPS_DEPENDENCIES.includes(packageName);\n const packageDir = isCli ? \"clis\" : isApp ? \"apps\" : \"packages\";\n const packageNameWithoutNamespace = packageName.replace(\n \"@powerhousedao/\",\n \"\",\n );\n const packagePath = path\n .join(monorepoPath, packageDir, packageNameWithoutNamespace)\n .replace(\"analytics-engine-\", \"analytics-engine/\");\n const pnpmLink = `link:${packagePath}`;\n\n return pnpmLink;\n}\n","// Single source of truth for JSON Schema shapes shared between the source\n// PowerhouseConfig schema (packages/shared/clis/source-config-schema.ts) and\n// the runtime RuntimePowerhouseConfig schema\n// (packages/builder-tools/connect-utils/runtime-config-schema.ts).\n//\n// When a shared shape changes, edit it here — both schemas pick it up.\n\nexport const powerhousePackageSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"packageName\"],\n properties: {\n packageName: {\n type: \"string\",\n description: \"Fully qualified npm package name (e.g. @scope/name).\",\n },\n version: {\n type: \"string\",\n description: \"Exact version (registry providers) or omit to take latest.\",\n },\n provider: {\n type: \"string\",\n enum: [\"npm\", \"github\", \"local\", \"registry\"],\n description: \"Where Connect should resolve the package from at runtime.\",\n },\n url: {\n type: \"string\",\n description:\n \"Override URL for non-registry providers (e.g. github tarball).\",\n },\n },\n} as const;\n\n// Reusable shape for `connect.drives.sections.{remote,local}` — three\n// affirmative-named toggles per section. The legacy public+cloud sections\n// have been collapsed into a single `remote`.\nconst driveSectionSchema = {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Visibility and add/delete affordances for a drive section in the sidebar.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description: \"When false, the section is hidden in the sidebar.\",\n default: true,\n },\n allowAdd: {\n type: \"boolean\",\n description:\n \"When false, the section's 'add drive' affordance is hidden.\",\n default: true,\n },\n allowDelete: {\n type: \"boolean\",\n description:\n \"When false, drives in this section cannot be deleted from the UI.\",\n default: true,\n },\n },\n} as const;\n\n// Reusable shape for a runtime-caching / denylist URL match. A string is\n// handed to Workbox verbatim; `{ source, flags }` is rebuilt into a RegExp at\n// build time. Function patterns aren't serialisable and can't be expressed\n// from config — only Connect's built-in rules use them (see the runtime-caching\n// rules in builder-tools' connect-utils/service-worker/service-worker.ts).\nconst pwaUrlPatternSchema = {\n description:\n \"URL match. A string is matched verbatim by Workbox; { source, flags } is rebuilt into a RegExp at build time.\",\n oneOf: [\n { type: \"string\" },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"source\"],\n properties: {\n source: { type: \"string\", description: \"RegExp source.\" },\n flags: { type: \"string\", description: \"RegExp flags (e.g. 'i').\" },\n },\n },\n ],\n} as const;\n\n// Reusable web-app-manifest icon shape (manifest.icons and file-handler icons).\nconst pwaIconSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"src\"],\n properties: {\n src: { type: \"string\" },\n sizes: { type: \"string\" },\n type: { type: \"string\" },\n purpose: { type: \"string\" },\n },\n} as const;\n\nexport const phConnectRuntimeConfigSchema = {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Connect-specific UI customisations. All fields optional; omit the section entirely for default behaviour.\",\n properties: {\n branding: {\n type: \"object\",\n additionalProperties: false,\n description: \"App identity and visual branding.\",\n properties: {\n appName: {\n type: \"string\",\n description:\n \"Browser tab title and any in-app brand text. Defaults to 'Powerhouse Connect'.\",\n },\n homeBackground: {\n type: [\"string\", \"null\"],\n description:\n \"Hero image on the empty home screen. URL or path to override; null or omitted uses the bundled default image.\",\n },\n },\n },\n app: {\n type: \"object\",\n additionalProperties: false,\n description: \"Top-level Connect application behaviour.\",\n properties: {\n logLevel: {\n type: \"string\",\n enum: [\"debug\", \"info\", \"warn\", \"error\"],\n description:\n \"Log level applied by Connect's logger at boot. Affects browser-side output only.\",\n default: \"info\",\n },\n basePath: {\n type: \"string\",\n description:\n \"Base path Connect is mounted under (e.g. '/connect' for subpath deploys). Normalised at runtime to start and end with '/'. Defaults to the build-time BASE_URL.\",\n default: \"/\",\n },\n offline: {\n type: \"boolean\",\n description:\n \"When true (default), the build emits a precaching service worker so Connect's app shell works offline, and the SPA registers it at boot. Set false to opt this deployment out: no service worker is built, the SPA skips registration, and any previously-installed worker is unregistered.\",\n default: true,\n },\n studioMode: {\n type: \"boolean\",\n description:\n \"Studio mode. Enables builder-only capabilities: Connect loads the vetra package and exposes DocumentModel (and vetra spec types) as creatable documents. Forced on by `ph vetra` / `ph connect studio`; false by default.\",\n default: false,\n },\n workflowsEnabled: {\n type: \"boolean\",\n description:\n \"Powerhouse workflows in Connect. When true the tab loads the @powerhousedao/workflow package (workflow + connection documents, their editors and Workflow Studio) and the reactor worker registers its document models. Connect's counterpart to the reactor-side `workflows.enabled` / PH_WORKFLOWS_ENABLED; independent of studioMode. False by default.\",\n default: false,\n },\n },\n },\n ai: {\n type: \"object\",\n additionalProperties: false,\n description: \"AI assistant (chat) behaviour.\",\n properties: {\n assistantEnabled: {\n type: \"boolean\",\n description:\n \"When true, Connect mounts the in-browser AI assistant (bottom-right chat FAB that talks to a user-configured OpenAI-compatible endpoint and acts on the reactor). Disabled by default.\",\n default: false,\n },\n },\n },\n packages: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Runtime behaviour for the Connect package manager (separate from top-level `packages[]`, which lists which packages to load).\",\n properties: {\n externalEnabled: {\n type: \"boolean\",\n description:\n \"When false, Connect refuses to load any package that wasn't bundled at build time. Affirmative replacement for the legacy PH_CONNECT_EXTERNAL_PACKAGES_DISABLED env var.\",\n default: true,\n },\n liveReload: {\n type: \"boolean\",\n description:\n \"When true, Connect subscribes to the static-mode `/__packages` SSE channel so live publishes flow into the running tab without a page reload. Only works under hosting that serves this channel (e.g. ph-clint static mode).\",\n default: false,\n },\n },\n },\n drives: {\n type: \"object\",\n additionalProperties: false,\n description: \"Default-drive and add-drive UI behaviour.\",\n properties: {\n allowAddDrive: {\n type: \"boolean\",\n description:\n \"When false, the SPA hides the 'add drive' affordance entirely (top-level). Per-section overrides live in `sections.{remote,local}.allowAdd`.\",\n default: true,\n },\n defaultDrives: {\n type: \"array\",\n description:\n \"Drives the SPA auto-connects to on first load. Each entry is either a remote drive (a URL, with optional name/icon overrides) or a local drive (created locally on first boot, with a stable id and optional name/icon/app).\",\n default: [],\n items: {\n oneOf: [\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"url\"],\n properties: {\n url: { type: \"string\" },\n name: { type: [\"string\", \"null\"] },\n icon: { type: [\"string\", \"null\"] },\n },\n },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"local\", \"id\"],\n properties: {\n local: {\n const: true,\n description:\n \"Discriminator: this entry is a local drive created on first boot.\",\n },\n id: {\n type: \"string\",\n description:\n \"Stable drive id. The drive is created with this id on first boot and is not re-created on later boots.\",\n },\n name: { type: [\"string\", \"null\"] },\n icon: { type: [\"string\", \"null\"] },\n app: {\n type: \"string\",\n description:\n \"Drive app (preferred editor) to open on the drive.\",\n },\n },\n },\n ],\n },\n },\n preserveStrategy: {\n type: \"string\",\n enum: [\"preserve-all\", \"preserve-by-url-and-detach\"],\n description:\n \"Strategy applied when defaultDrives change between deploys. 'preserve-all' keeps user-added drives untouched; 'preserve-by-url-and-detach' detaches removed default drives. No schema default — opt-in only.\",\n },\n sections: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-section visibility and affordance toggles. `remote` covers what was historically split into 'public' + 'cloud'; `local` is browser-local drives.\",\n properties: {\n remote: driveSectionSchema,\n local: driveSectionSchema,\n },\n },\n },\n },\n renown: {\n type: \"object\",\n additionalProperties: false,\n description: \"Renown identity / authentication coordinates.\",\n properties: {\n url: {\n type: \"string\",\n description: \"Renown auth service URL.\",\n default: \"https://www.renown.id\",\n },\n networkId: {\n type: \"string\",\n description: \"CAIP-2 network namespace (e.g. 'eip155').\",\n default: \"eip155\",\n },\n chainId: {\n type: \"number\",\n description: \"CAIP-2 chain reference within the network namespace.\",\n default: 1,\n },\n namespace: {\n type: \"string\",\n description:\n \"Renown localStorage namespace; share it across Connects to share login.\",\n },\n switchboardUrl: {\n type: \"string\",\n description:\n \"Switchboard GraphQL URL. When set, Connect enables in-page (no-redirect) Renown sign-in; otherwise it falls back to the redirect flow via `url`.\",\n },\n adapters: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-adapter wallet config for in-page auth. Presence of an adapter key enables it; omit or leave empty for redirect-only behaviour.\",\n properties: {\n rainbow: {\n type: \"object\",\n additionalProperties: false,\n description: \"wagmi + RainbowKit external-wallet adapter config.\",\n properties: {\n walletConnectProjectId: {\n type: \"string\",\n description:\n \"WalletConnect project id; required for this adapter to function.\",\n },\n infuraProjectId: {\n type: \"string\",\n description:\n \"Optional Infura project id used to build RPC transports.\",\n },\n },\n },\n privy: {\n type: \"object\",\n additionalProperties: false,\n description: \"Privy embedded/social adapter config.\",\n properties: {\n appId: {\n type: \"string\",\n description:\n \"Privy application id; required for this adapter to function.\",\n },\n clientId: {\n type: \"string\",\n description: \"Optional Privy client id.\",\n },\n methods: {\n type: \"array\",\n description:\n \"Login methods this adapter offers; default per adapter when omitted.\",\n items: { type: \"string\" },\n },\n },\n },\n },\n },\n },\n },\n sentry: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Sentry error-tracking coordinates. Set `dsn` to enable Sentry; leave `dsn` null to disable. The Sentry release tag stays build-time (stamped via Vite's `define` from WORKSPACE_VERSION) so it always matches the sourcemaps uploaded by CI.\",\n properties: {\n dsn: {\n type: [\"string\", \"null\"],\n description:\n \"Sentry DSN URL. `null` disables Sentry entirely; the SPA never loads the Sentry SDK chunk.\",\n default: null,\n },\n env: {\n type: \"string\",\n description:\n \"Sentry environment label, surfaced as the `environment` tag on every event.\",\n default: \"dev\",\n },\n tracing: {\n type: \"boolean\",\n description: \"Enable Sentry performance tracing.\",\n default: false,\n },\n },\n },\n instance: {\n type: \"object\",\n additionalProperties: false,\n required: [\"namespace\", \"reactorWorker\"],\n description:\n \"Per-instance identity. Lets one origin host multiple isolated Connect instances, each with its own storage + SharedWorker namespace.\",\n properties: {\n namespace: {\n type: [\"string\", \"null\"],\n description:\n \"Explicit storage/SharedWorker namespace for this instance. `null` derives it from the base path (and, later, the configured endpoint), so root deployments stay byte-identical.\",\n default: null,\n },\n reactorWorker: {\n type: \"boolean\",\n description:\n \"Host the reactor in a shared worker instead of on the main thread. Off by default; the main-thread reactor stays the proven path until cutover is verified.\",\n default: false,\n },\n },\n },\n reactor: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Settings for the reactor Connect runs in the browser, on the main thread or in the shared worker alike.\",\n properties: {\n featureFlags: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Enforcement flags. Each implies its predecessors, and the reactor refuses to boot on a set that names a later flag without an earlier one. These are consensus settings: a Connect syncing with a fleet must carry the same flags the fleet does, or the two reach different replay outcomes for the same history and diverge.\",\n properties: {\n documentDecisions: {\n type: \"boolean\",\n description:\n \"Decide writes from the document stream rather than the document meta cache, so a backdated deletion denies the operations that sort after it.\",\n default: false,\n },\n authEnforcement: {\n type: \"boolean\",\n description:\n \"Enforce the auth scope's policy at admission, replay, and read. Requires documentDecisions.\",\n default: false,\n },\n authGroups: {\n type: \"boolean\",\n description:\n \"Let `{ group }` principals match against the rosters of the group documents a policy names. Requires authEnforcement.\",\n default: false,\n },\n authConditions: {\n type: \"boolean\",\n description:\n \"Evaluate `where` and `match` conditions on grants. Requires authGroups. Do not enable on a fleet `preflight:auth` reports as crossing a reducer version.\",\n default: false,\n },\n },\n },\n },\n },\n pwa: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Progressive-web-app / service-worker overrides, layered on Connect's built-in PWA defaults at build time. Scalar fields deep-merge (this layer wins); the array members (icons, file_handlers, globs, runtimeCaching and denylist patterns) are additive; maximumFileSizeToCacheInBytes takes the max across contributors. (categories is not set here — it is derived from the manifest's category field.) Only applied when connect.app.offline is true.\",\n properties: {\n manifest: {\n type: \"object\",\n additionalProperties: false,\n description: \"Web-app-manifest field overrides.\",\n properties: {\n name: { type: \"string\" },\n short_name: { type: \"string\" },\n description: { type: \"string\" },\n theme_color: { type: \"string\" },\n background_color: { type: \"string\" },\n display: {\n type: \"string\",\n enum: [\"fullscreen\", \"standalone\", \"minimal-ui\", \"browser\"],\n },\n start_url: { type: \"string\" },\n scope: { type: \"string\" },\n icons: {\n type: \"array\",\n description:\n \"Icons appended to the built-in set and de-duplicated by (src, sizes, purpose).\",\n items: pwaIconSchema,\n },\n file_handlers: {\n type: \"array\",\n description:\n \"File associations appended after Connect's built-in .phd/.phdm handler and de-duplicated on the whole entry. Entries only declare accepted types; there is no action field, because opening the files requires Connect's own runtime handling, so every handler opens at the app root.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"accept\"],\n properties: {\n accept: {\n type: \"object\",\n description:\n \"MIME type → file extensions. Each extension must start with '.'; browsers ignore entries without it.\",\n additionalProperties: {\n type: \"array\",\n items: { type: \"string\", pattern: \"^\\\\.\" },\n },\n },\n icons: {\n type: \"array\",\n description: \"OS-level file-type icons.\",\n items: pwaIconSchema,\n },\n launch_type: {\n type: \"string\",\n enum: [\"single-client\", \"multiple-clients\"],\n },\n },\n },\n },\n launch_handler: {\n type: \"object\",\n additionalProperties: false,\n required: [\"client_mode\"],\n description:\n \"How the OS launches the app for handled files/links. Connect defaults to focus-existing.\",\n properties: {\n client_mode: {\n type: \"string\",\n enum: [\n \"auto\",\n \"focus-existing\",\n \"navigate-existing\",\n \"navigate-new\",\n ],\n },\n },\n },\n },\n },\n globPatterns: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Extra Workbox precache globs, unioned with the built-ins.\",\n },\n globIgnores: {\n type: \"array\",\n items: { type: \"string\" },\n description:\n \"Extra precache ignore globs, unioned with the built-ins.\",\n },\n maximumFileSizeToCacheInBytes: {\n type: \"number\",\n description:\n \"Raise the precache file-size ceiling. The max across all contributors wins, so no contributor can shrink another's limit.\",\n },\n runtimeCaching: {\n type: \"array\",\n description:\n \"Runtime-caching rules appended after the built-in rules. Workbox is first-match-wins, so these cannot override a built-in rule matching the same URL.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"urlPattern\", \"handler\"],\n properties: {\n urlPattern: pwaUrlPatternSchema,\n handler: {\n type: \"string\",\n enum: [\n \"CacheFirst\",\n \"CacheOnly\",\n \"NetworkFirst\",\n \"NetworkOnly\",\n \"StaleWhileRevalidate\",\n ],\n },\n method: {\n type: \"string\",\n enum: [\"GET\", \"POST\", \"PUT\", \"DELETE\", \"HEAD\", \"PATCH\"],\n },\n options: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n cacheName: { type: \"string\" },\n networkTimeoutSeconds: {\n type: \"number\",\n description:\n \"Seconds a NetworkFirst rule waits for the network before falling back to the cache.\",\n },\n expiration: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n maxEntries: { type: \"number\" },\n maxAgeSeconds: { type: \"number\" },\n },\n },\n cacheableResponse: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n statuses: { type: \"array\", items: { type: \"number\" } },\n headers: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n },\n },\n },\n },\n },\n },\n },\n },\n navigateFallbackDenylist: {\n type: \"array\",\n description:\n \"Extra SPA navigate-fallback denylist patterns, unioned with the built-ins.\",\n items: pwaUrlPatternSchema,\n },\n },\n },\n },\n} as const;\n","// JSON Schema (draft-07) for the source `powerhouse.config.json` (the file at\n// the project root, hand-edited by developers, consumed by the `ph` CLI).\n//\n// Mirrors the `PowerhouseConfig` TypeScript type in ./types.ts. Drift between\n// the TS type and this schema is guarded by ./source-config-schema.test.ts.\n//\n// Shared field shapes (PowerhousePackage, PHConnectRuntimeConfig) are imported\n// from `@powerhousedao/shared/connect` so the source schema and the runtime\n// schema (in builder-tools/connect-utils) stay in sync by construction.\n\nimport {\n phConnectRuntimeConfigSchema,\n powerhousePackageSchema,\n} from \"../connect/schema-fragments.js\";\nimport { LOG_LEVELS } from \"./constants.js\";\n\nexport const SOURCE_CONFIG_SCHEMA_ID =\n \"https://powerhouse.inc/schemas/powerhouse.source.json\";\n\nexport const sourceConfigSchema = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n $id: SOURCE_CONFIG_SCHEMA_ID,\n title: \"Powerhouse source configuration\",\n description:\n \"Project-root powerhouse.config.json: the developer-edited build manifest read by the `ph` CLI and Vite plugins.\",\n type: \"object\",\n additionalProperties: false,\n // No fields are strictly required at the file level: the `ph` CLI merges\n // DEFAULT_CONFIG (constants.ts) into whatever the file contains, so an\n // empty `{}` is a valid source config. The schema describes what fields\n // are *recognised* and their shapes, not what must be present.\n properties: {\n $schema: {\n type: \"string\",\n description:\n \"Optional JSON Schema reference for editor autocomplete. Set to the GitHub-hosted schema URL.\",\n },\n logLevel: {\n type: \"string\",\n enum: [...LOG_LEVELS],\n description: \"Log level for CLI commands and the reactor.\",\n },\n documentModelsDir: {\n type: \"string\",\n description: \"Path to the project's document model definitions.\",\n },\n editorsDir: {\n type: \"string\",\n description: \"Path to the project's editors.\",\n },\n processorsDir: {\n type: \"string\",\n description: \"Path to the project's processors.\",\n },\n subgraphsDir: {\n type: \"string\",\n description: \"Path to the project's subgraphs.\",\n },\n importScriptsDir: {\n type: \"string\",\n description: \"Path to the project's import scripts.\",\n },\n skipFormat: {\n type: \"boolean\",\n description:\n \"When true, codegen skips Prettier formatting on generated files.\",\n },\n interactive: {\n type: \"boolean\",\n description: \"Run CLI commands in interactive mode where applicable.\",\n },\n watch: {\n type: \"boolean\",\n description: \"Watch source files and rerun on changes.\",\n },\n reactor: {\n type: \"object\",\n additionalProperties: false,\n description: \"Reactor server configuration.\",\n properties: {\n port: {\n type: \"number\",\n description: \"Port the reactor HTTP server listens on.\",\n },\n https: {\n oneOf: [\n { type: \"boolean\" },\n {\n type: \"object\",\n additionalProperties: false,\n required: [\"keyPath\", \"certPath\"],\n properties: {\n keyPath: {\n type: \"string\",\n description: \"Path to TLS private key.\",\n },\n certPath: {\n type: \"string\",\n description: \"Path to TLS certificate.\",\n },\n },\n },\n ],\n description:\n \"Enable HTTPS. `true` for self-signed; object with key/cert paths for custom TLS.\",\n },\n storage: {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\"],\n description: \"Reactor persistent storage backend.\",\n properties: {\n type: {\n type: \"string\",\n enum: [\"filesystem\", \"memory\", \"postgres\", \"browser\"],\n },\n filesystemPath: {\n type: \"string\",\n description: \"Required when `type: filesystem`.\",\n },\n postgresUrl: {\n type: \"string\",\n description: \"Required when `type: postgres`.\",\n },\n },\n },\n },\n },\n auth: {\n type: \"object\",\n additionalProperties: false,\n required: [\"admins\"],\n description: \"Authentication and authorisation settings.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description: \"Master toggle for the auth subsystem.\",\n },\n admins: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"DIDs granted admin role.\",\n },\n renown: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Which Renown instance this reactor authenticates against, server-side.\",\n properties: {\n source: {\n type: \"string\",\n enum: [\"remote\", \"self\"],\n description:\n 'Source of truth for credential checks. \"self\" reads this reactor\\'s own renown read model; \"remote\" (default) queries a Renown or Switchboard instance. Overridden by RENOWN_SOURCE.',\n },\n url: {\n type: \"string\",\n description:\n \"Renown base URL, also used by this reactor's own identity. Defaults to https://www.renown.id. Overridden by RENOWN_URL.\",\n },\n switchboardUrl: {\n type: \"string\",\n description:\n \"Switchboard GraphQL endpoint to read credentials from directly, skipping Renown discovery. Overridden by SWITCHBOARD_URL.\",\n },\n },\n },\n },\n },\n switchboard: {\n type: \"object\",\n additionalProperties: false,\n description: \"Switchboard server configuration.\",\n properties: {\n database: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n url: {\n type: \"string\",\n description: \"Database connection URL.\",\n },\n },\n },\n port: {\n type: \"number\",\n description: \"Port the switchboard HTTP server listens on.\",\n },\n },\n },\n studio: {\n type: \"object\",\n additionalProperties: false,\n required: [\"https\"],\n description: \"Connect Studio dev-server configuration.\",\n properties: {\n port: {\n type: \"number\",\n description: \"Port the studio dev server listens on.\",\n },\n host: {\n type: \"string\",\n description: \"Host interface to bind.\",\n },\n https: {\n type: \"boolean\",\n description: \"Serve studio over HTTPS.\",\n },\n openBrowser: {\n type: \"boolean\",\n description: \"Open a browser tab on studio start.\",\n },\n },\n },\n packages: {\n type: \"array\",\n description:\n \"Powerhouse packages this project depends on. Shape is shared with the runtime config.\",\n items: powerhousePackageSchema,\n },\n vetra: {\n type: \"object\",\n additionalProperties: false,\n description: \"Vetra integration coordinates.\",\n properties: {\n driveId: { type: \"string\" },\n driveUrl: { type: \"string\" },\n connectPort: {\n type: \"integer\",\n description:\n \"Port `ph vetra`'s Connect dev server listens on. Assigned per project by `ph init`. Overridden by PH_VETRA_CONNECT_PORT or --connect-port.\",\n },\n },\n },\n workflows: {\n type: \"object\",\n additionalProperties: false,\n description: \"Powerhouse workflows on this reactor.\",\n properties: {\n enabled: {\n type: \"boolean\",\n description:\n \"Register the workflow document models and run workflows. Overridden by PH_WORKFLOWS_ENABLED.\",\n },\n },\n },\n packageRegistryUrl: {\n type: \"string\",\n description:\n \"Project-wide package registry endpoint. Used by `ph install` / `ph publish` / `ph registry-login` and Switchboard, and copied verbatim into the runtime config so the Connect SPA's Package Manager UI reads the same registry.\",\n },\n connect: {\n ...phConnectRuntimeConfigSchema,\n description:\n \"Connect-specific UI customisations. Copied verbatim into the runtime config at build time.\",\n },\n },\n} as const;\n","// Sub-path: this module loads on the cold path of every CLI invocation.\nimport lt from \"semver/functions/lt.js\";\nimport {\n BOILERPLATE_ALLOWED_BUILDS,\n MINIMUM_NODE_VERSION,\n} from \"./constants.js\";\n\n/**\n * Mutates a resolved `pnpm dlx ...` command to add one `--allow-build=<pkg>`\n * flag per package in {@link BOILERPLATE_ALLOWED_BUILDS}, so pnpm 11's\n * `strict-dep-builds=true` default doesn't prompt for approval during the\n * outer dlx download. No-op for other package managers or non-dlx commands.\n */\nexport function injectPnpmAllowBuilds(\n pm: string,\n resolved: { command: string; args: string[] },\n): void {\n if (pm !== \"pnpm\" || resolved.args[0] !== \"dlx\") return;\n const flags = BOILERPLATE_ALLOWED_BUILDS.map((pkg) => `--allow-build=${pkg}`);\n resolved.args = [resolved.args[0], ...flags, ...resolved.args.slice(1)];\n}\n\nexport class NodeVersionError extends Error {\n constructor(currentVersion: string, minimumVersion: string) {\n super(\n `Node version ${minimumVersion} or higher is required. Current version: ${currentVersion}`,\n );\n this.name = \"NodeVersionError\";\n }\n\n static isError(error: unknown): error is NodeVersionError {\n return error instanceof Error && error.name === \"NodeVersionError\";\n }\n}\n\nexport function assertNodeVersion(nodeVersion = process.versions.node) {\n if (!nodeVersion) return;\n\n if (lt(nodeVersion, MINIMUM_NODE_VERSION)) {\n throw new NodeVersionError(nodeVersion, MINIMUM_NODE_VERSION);\n }\n}\n"],"x_google_ignoreList":[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAa,kBAAkB;CAC7B;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,iBAAiB,OAAU;AACxC,MAAa,sBAAsB;AACnC,MAAa,yBAAA,IAA+C;AAE5D,MAAa,6BAA6B,CACxC,gBACA,6BACD;AAED,MAAa,aAAa;CACxB;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,6BAA6B;AAE1C,MAAa,+BAA+B;AAE5C,MAAa,yBAAyB;AAEtC,MAAa,qBAAqB;AAElC,MAAa,uBAAuB;AAEpC,MAAa,2BAA2B;AAqBxC,MAAa,yBAAyB;AACtC,MAAa,gCAAgC;AAC7C,MAAa,2BAA2B;AACxC,MAAa,kCAAkC;AAE/C,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;AACpC,MAAa,SAAS;AACtB,MAAa,yBAAyB;AACtC,MAAa,qBAAqB;AAElC,MAAa,yBAAA;AAEb,MAAa,WAAW,SAAS;AAEjC,MAAa,wBAAwB,KAAK,UAAA,MAA6B;AAGvE,MAAa,8BAA8B,CACzC,kBACA,iCACD;AAID,MAAa,sBAAsB;AACnC,MAAa,gCACX;AACF,MAAa,kBAAkB;AAC/B,MAAa,sBAAsB;AACnC,MAAa,2BAA2B;AAQxC,MAAa,6BAA6B;EACvC,kBAAkB;EAAE,MAAM;EAAO,KAAK;EAAW;EACjD,sBAAsB;EAAE,MAAM;EAAM,KAAK;EAAU;CACpD,OAAO;EAAE,MAAM;EAAO,KAAK;EAAU;CACrC,aAAa;EAAE,MAAM;EAAO,KAAK;EAAU;CAC3C,KAAK;EAAE,MAAM;EAAM,KAAK;EAAS;CAClC;AAID,MAAa,uBAAuB;CAClC,oBAAoB;EAClB,eAAe,CAAC,8BAA8B;EAC9C,cAAc,EAAE;EAChB,cAAc,EAAE;EACjB;CAGD,OAAO;EACL,eAAe,EAAE;EACjB,cAAc,EAAE;EAChB,cAAc,CAAC,yBAAyB;EACzC;CACF;AASD,MAAa,yBAAyB,CACpC,GAAG,6BACH,GAAG,qBAAqB,mBAAmB,cAC5C;AAOD,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAOD,MAAa,mCAAmC;CAC9C,YAAY;CACZ,MAAM;CACN,UAAU;CACX;AAED,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,qBAAqB;CAChC,KAAK;EACH,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,aAAa;EACX,OAAO;EACP,SAAS;EACV;CACD,qBAAqB;EACnB,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,uBAAuB;EACrB,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,aAAa;EACX,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,eAAe;EACb,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,eAAe;EACb,OAAO;EACP,SAAS;EACT,MAAM;EACP;CACD,gBAAgB;EACd,OAAO;EACP,SAAS;EACT,MAAM;EACP;CAID,YAAY;EACV,OAAO;EACP,MAAM;EACP;CACD,cAAc;EACZ,OAAO;EACP,MAAM;EACP;CACD,cAAc;CACd,eAAe;CAChB;AAED,MAAa,iBAAiB;CAC5B,cAAc;CACd,MAAM;CACN,YAAY;CACZ,QAAQ;CACR,gBAAgB;CAChB,KAAK;CACL,aAAa;CACb,UAAU;CACV,SAAS;CACT,OAAO;CACP,SAAS;CACT,SAAS;CACT,OAAO;CACP,mBACE;CACF,qBACE;CACH;AAED,MAAa,uBAAuB,EAAE;AAItC,MAAa,kCAAkC;CAC7C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAID,MAAa,2BAA2B;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,0BAA0B;CACrC,wBAAwB;CACxB,8BAA8B;CAC9B,uCAAuC;CACvC,oBAAoB;CACpB,qBAAqB;CACrB,eAAe;CACf,gBAAgB;CAChB,oBAAoB;CACpB,wBAAwB;CACxB,uBAAuB;CACvB,OAAO;CACP,QAAQ;CACR,mBAAmB;CACnB,aAAa;CACb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;EAAI;EAAI;EAAK;EAAI;EAAI;EAAK;EAAI;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAK;EAAI;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAK;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAK;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAK;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAI;EAAI;EAAK;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAK;EAAG;EAAI;EAAK;EAAK;EAAK;EAAI;EAAK;EAAM;EAAI;EAAI;EAAM;EAAI;EAAG;EAAI;EAAM;EAAG;EAAK;EAAM;EAAI;EAAM;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAG;EAAI;EAAK;EAAI;EAAK;EAAI;EAAI;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAM;EAAI;EAAI;EAAI;EAAK;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAK;EAAM;EAAK;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAM;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAM;EAAI;EAAG;EAAG;EAAK;EAAI;EAAK;EAAI;EAAI;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAI;EAAK;EAAI;EAAK;EAAI;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAI;EAAI;EAAG;EAAG;EAAM;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAM;EAAO;EAAI;EAAM;EAAG;EAAM;EAAG;EAAM;EAAI;EAAK;EAAM;EAAK;EAAM;EAAM;EAAG;EAAK;CAC1tE,MAAM,wBAAwB;EAAC;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAK;EAAG;EAAM;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAK;EAAG;EAAK;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAK;EAAG;EAAI;EAAG;EAAI;EAAI;EAAI;EAAG;EAAK;EAAG;EAAI;EAAI;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAI;EAAI;EAAG;EAAG;EAAG;EAAI;EAAI;EAAI;EAAG;EAAG;EAAG;EAAG;EAAK;EAAI;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAI;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;EAAG;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M,EAAE,MAAM,UAAU;EACxB,SAAS,EAAE,MAAM,UAAU;EAC5B;CACF;AAED,MAAa,+BAA+B;CAC1C,MAAM;CACN,sBAAsB;CACtB,aACE;CACF,YAAY;EACV,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,SAAS;KACP,MAAM;KACN,aACE;KACH;IACD,gBAAgB;KACd,MAAM,CAAC,UAAU,OAAO;KACxB,aACE;KACH;IACF;GACF;EACD,KAAK;GACH,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,UAAU;KACR,MAAM;KACN,MAAM;MAAC;MAAS;MAAQ;MAAQ;MAAQ;KACxC,aACE;KACF,SAAS;KACV;IACD,UAAU;KACR,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,SAAS;KACP,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,YAAY;KACV,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,kBAAkB;KAChB,MAAM;KACN,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,IAAI;GACF,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY,EACV,kBAAkB;IAChB,MAAM;IACN,aACE;IACF,SAAS;IACV,EACF;GACF;EACD,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,iBAAiB;KACf,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,YAAY;KACV,MAAM;KACN,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS,EAAE;KACX,OAAO,EACL,OAAO,CACL;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,MAAM;MACjB,YAAY;OACV,KAAK,EAAE,MAAM,UAAU;OACvB,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OACnC;MACF,EACD;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,SAAS,KAAK;MACzB,YAAY;OACV,OAAO;QACL,OAAO;QACP,aACE;QACH;OACD,IAAI;QACF,MAAM;QACN,aACE;QACH;OACD,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,MAAM,EAAE,MAAM,CAAC,UAAU,OAAO,EAAE;OAClC,KAAK;QACH,MAAM;QACN,aACE;QACH;OACF;MACF,CACF,EACF;KACF;IACD,kBAAkB;KAChB,MAAM;KACN,MAAM,CAAC,gBAAgB,6BAA6B;KACpD,aACE;KACH;IACD,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,QAAQ;MACR,OAAO;MACR;KACF;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,KAAK;KACH,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,WAAW;KACT,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,SAAS;KACP,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACD,WAAW;KACT,MAAM;KACN,aACE;KACH;IACD,gBAAgB;KACd,MAAM;KACN,aACE;KACH;IACD,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,SAAS;OACP,MAAM;OACN,sBAAsB;OACtB,aAAa;OACb,YAAY;QACV,wBAAwB;SACtB,MAAM;SACN,aACE;SACH;QACD,iBAAiB;SACf,MAAM;SACN,aACE;SACH;QACF;OACF;MACD,OAAO;OACL,MAAM;OACN,sBAAsB;OACtB,aAAa;OACb,YAAY;QACV,OAAO;SACL,MAAM;SACN,aACE;SACH;QACD,UAAU;SACR,MAAM;SACN,aAAa;SACd;QACD,SAAS;SACP,MAAM;SACN,aACE;SACF,OAAO,EAAE,MAAM,UAAU;SAC1B;QACF;OACF;MACF;KACF;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,KAAK;KACH,MAAM,CAAC,UAAU,OAAO;KACxB,aACE;KACF,SAAS;KACV;IACD,KAAK;KACH,MAAM;KACN,aACE;KACF,SAAS;KACV;IACD,SAAS;KACP,MAAM;KACN,aAAa;KACb,SAAS;KACV;IACF;GACF;EACD,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,aAAa,gBAAgB;GACxC,aACE;GACF,YAAY;IACV,WAAW;KACT,MAAM,CAAC,UAAU,OAAO;KACxB,aACE;KACF,SAAS;KACV;IACD,eAAe;KACb,MAAM;KACN,aACE;KACF,SAAS;KACV;IACF;GACF;EACD,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY,EACV,cAAc;IACZ,MAAM;IACN,sBAAsB;IACtB,aACE;IACF,YAAY;KACV,mBAAmB;MACjB,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,iBAAiB;MACf,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,YAAY;MACV,MAAM;MACN,aACE;MACF,SAAS;MACV;KACD,gBAAgB;MACd,MAAM;MACN,aACE;MACF,SAAS;MACV;KACF;IACF,EACF;GACF;EACD,KAAK;GACH,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aAAa;KACb,YAAY;MACV,MAAM,EAAE,MAAM,UAAU;MACxB,YAAY,EAAE,MAAM,UAAU;MAC9B,aAAa,EAAE,MAAM,UAAU;MAC/B,aAAa,EAAE,MAAM,UAAU;MAC/B,kBAAkB,EAAE,MAAM,UAAU;MACpC,SAAS;OACP,MAAM;OACN,MAAM;QAAC;QAAc;QAAc;QAAc;QAAU;OAC5D;MACD,WAAW,EAAE,MAAM,UAAU;MAC7B,OAAO,EAAE,MAAM,UAAU;MACzB,OAAO;OACL,MAAM;OACN,aACE;OACF,OAAO;OACR;MACD,eAAe;OACb,MAAM;OACN,aACE;OACF,OAAO;QACL,MAAM;QACN,sBAAsB;QACtB,UAAU,CAAC,SAAS;QACpB,YAAY;SACV,QAAQ;UACN,MAAM;UACN,aACE;UACF,sBAAsB;WACpB,MAAM;WACN,OAAO;YAAE,MAAM;YAAU,SAAS;YAAQ;WAC3C;UACF;SACD,OAAO;UACL,MAAM;UACN,aAAa;UACb,OAAO;UACR;SACD,aAAa;UACX,MAAM;UACN,MAAM,CAAC,iBAAiB,mBAAmB;UAC5C;SACF;QACF;OACF;MACD,gBAAgB;OACd,MAAM;OACN,sBAAsB;OACtB,UAAU,CAAC,cAAc;OACzB,aACE;OACF,YAAY,EACV,aAAa;QACX,MAAM;QACN,MAAM;SACJ;SACA;SACA;SACA;SACD;QACF,EACF;OACF;MACF;KACF;IACD,cAAc;KACZ,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aACE;KACH;IACD,aAAa;KACX,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aACE;KACH;IACD,+BAA+B;KAC7B,MAAM;KACN,aACE;KACH;IACD,gBAAgB;KACd,MAAM;KACN,aACE;KACF,OAAO;MACL,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,cAAc,UAAU;MACnC,YAAY;OACV,YAAY;OACZ,SAAS;QACP,MAAM;QACN,MAAM;SACJ;SACA;SACA;SACA;SACA;SACD;QACF;OACD,QAAQ;QACN,MAAM;QACN,MAAM;SAAC;SAAO;SAAQ;SAAO;SAAU;SAAQ;SAAQ;QACxD;OACD,SAAS;QACP,MAAM;QACN,sBAAsB;QACtB,YAAY;SACV,WAAW,EAAE,MAAM,UAAU;SAC7B,uBAAuB;UACrB,MAAM;UACN,aACE;UACH;SACD,YAAY;UACV,MAAM;UACN,sBAAsB;UACtB,YAAY;WACV,YAAY,EAAE,MAAM,UAAU;WAC9B,eAAe,EAAE,MAAM,UAAU;WAClC;UACF;SACD,mBAAmB;UACjB,MAAM;UACN,sBAAsB;UACtB,YAAY;WACV,UAAU;YAAE,MAAM;YAAS,OAAO,EAAE,MAAM,UAAU;YAAE;WACtD,SAAS;YACP,MAAM;YACN,sBAAsB,EAAE,MAAM,UAAU;YACzC;WACF;UACF;SACF;QACF;OACF;MACF;KACF;IACD,0BAA0B;KACxB,MAAM;KACN,aACE;KACF,OAAO;KACR;IACF;GACF;EACF;CACF;;;AC/jBD,MAAa,0BACX;AAEF,MAAa,qBAAqB;CAChC,SAAS;CACT,KAAK;CACL,OAAO;CACP,aACE;CACF,MAAM;CACN,sBAAsB;CAKtB,YAAY;EACV,SAAS;GACP,MAAM;GACN,aACE;GACH;EACD,UAAU;GACR,MAAM;GACN,MAAM,CAAC,GAAG,WAAW;GACrB,aAAa;GACd;EACD,mBAAmB;GACjB,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,cAAc;GACZ,MAAM;GACN,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aACE;GACH;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACD,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,OAAO;KACL,OAAO,CACL,EAAE,MAAM,WAAW,EACnB;MACE,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,WAAW,WAAW;MACjC,YAAY;OACV,SAAS;QACP,MAAM;QACN,aAAa;QACd;OACD,UAAU;QACR,MAAM;QACN,aAAa;QACd;OACF;MACF,CACF;KACD,aACE;KACH;IACD,SAAS;KACP,MAAM;KACN,sBAAsB;KACtB,UAAU,CAAC,OAAO;KAClB,aAAa;KACb,YAAY;MACV,MAAM;OACJ,MAAM;OACN,MAAM;QAAC;QAAc;QAAU;QAAY;QAAU;OACtD;MACD,gBAAgB;OACd,MAAM;OACN,aAAa;OACd;MACD,aAAa;OACX,MAAM;OACN,aAAa;OACd;MACF;KACF;IACF;GACF;EACD,MAAM;GACJ,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,SAAS;GACpB,aAAa;GACb,YAAY;IACV,SAAS;KACP,MAAM;KACN,aAAa;KACd;IACD,QAAQ;KACN,MAAM;KACN,OAAO,EAAE,MAAM,UAAU;KACzB,aAAa;KACd;IACD,QAAQ;KACN,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,QAAQ;OACN,MAAM;OACN,MAAM,CAAC,UAAU,OAAO;OACxB,aACE;OACH;MACD,KAAK;OACH,MAAM;OACN,aACE;OACH;MACD,gBAAgB;OACd,MAAM;OACN,aACE;OACH;MACF;KACF;IACF;GACF;EACD,aAAa;GACX,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,YAAY,EACV,KAAK;MACH,MAAM;MACN,aAAa;MACd,EACF;KACF;IACD,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,QAAQ;GACnB,aAAa;GACb,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,MAAM;KACJ,MAAM;KACN,aAAa;KACd;IACD,OAAO;KACL,MAAM;KACN,aAAa;KACd;IACD,aAAa;KACX,MAAM;KACN,aAAa;KACd;IACF;GACF;EACD,UAAU;GACR,MAAM;GACN,aACE;GACF,OAAO;GACR;EACD,OAAO;GACL,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY;IACV,SAAS,EAAE,MAAM,UAAU;IAC3B,UAAU,EAAE,MAAM,UAAU;IAC5B,aAAa;KACX,MAAM;KACN,aACE;KACH;IACF;GACF;EACD,WAAW;GACT,MAAM;GACN,sBAAsB;GACtB,aAAa;GACb,YAAY,EACV,SAAS;IACP,MAAM;IACN,aACE;IACH,EACF;GACF;EACD,oBAAoB;GAClB,MAAM;GACN,aACE;GACH;EACD,SAAS;GACP,GAAG;GACH,aACE;GACH;EACF;CACF;;;;;;;;;ACpPD,SAAgB,sBACd,IACA,UACM;AACN,KAAI,OAAO,UAAU,SAAS,KAAK,OAAO,MAAO;CACjD,MAAM,QAAQ,2BAA2B,KAAK,QAAQ,iBAAiB,MAAM;AAC7E,UAAS,OAAO;EAAC,SAAS,KAAK;EAAI,GAAG;EAAO,GAAG,SAAS,KAAK,MAAM,EAAE;EAAC;;AAGzE,IAAa,mBAAb,cAAsC,MAAM;CAC1C,YAAY,gBAAwB,gBAAwB;AAC1D,QACE,gBAAgB,eAAe,2CAA2C,iBAC3E;AACD,OAAK,OAAO;;CAGd,OAAO,QAAQ,OAA2C;AACxD,SAAO,iBAAiB,SAAS,MAAM,SAAS;;;AAIpD,SAAgB,kBAAkB,cAAc,QAAQ,SAAS,MAAM;AACrE,KAAI,CAAC,YAAa;AAElB,KAAI,GAAG,aAAA,SAAkC,CACvC,OAAM,IAAI,iBAAiB,aAAa,qBAAqB"}