wp-typia 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist-bunli/.bunli/commands.gen.js +1843 -1216
- package/dist-bunli/.bunli/commands.gen.js.map +36 -33
- package/dist-bunli/cli-03j0axbt.js +163 -0
- package/dist-bunli/cli-03j0axbt.js.map +11 -0
- package/dist-bunli/{cli-7svz19s1.js → cli-2ybmc22r.js} +370 -86
- package/dist-bunli/{cli-7svz19s1.js.map → cli-2ybmc22r.js.map} +15 -14
- package/dist-bunli/cli-7yg38ht2.js +427 -0
- package/dist-bunli/cli-7yg38ht2.js.map +12 -0
- package/dist-bunli/{cli-yw0mq0wq.js → cli-93wd227r.js} +108 -3
- package/dist-bunli/cli-93wd227r.js.map +10 -0
- package/dist-bunli/{cli-kan7a6db.js → cli-a6dwqnhq.js} +24 -2
- package/dist-bunli/cli-a6dwqnhq.js.map +11 -0
- package/dist-bunli/{cli-add-j2c81sh1.js → cli-add-pq6wm87p.js} +16 -9
- package/dist-bunli/{cli-add-j2c81sh1.js.map → cli-add-pq6wm87p.js.map} +3 -3
- package/dist-bunli/{cli-diagnostics-c65hhyhx.js → cli-diagnostics-e5gxeprp.js} +8 -4
- package/dist-bunli/{cli-diagnostics-c65hhyhx.js.map → cli-diagnostics-e5gxeprp.js.map} +1 -1
- package/dist-bunli/{cli-doctor-hft0wr0e.js → cli-doctor-qk6fwpds.js} +14 -13
- package/dist-bunli/{cli-doctor-hft0wr0e.js.map → cli-doctor-qk6fwpds.js.map} +3 -3
- package/dist-bunli/{cli-572d6g4m.js → cli-hv2yedw2.js} +2 -157
- package/dist-bunli/{cli-572d6g4m.js.map → cli-hv2yedw2.js.map} +4 -6
- package/dist-bunli/{cli-scaffold-vcg6wem5.js → cli-scaffold-s3nhwe7x.js} +9 -7
- package/dist-bunli/cli-scaffold-s3nhwe7x.js.map +10 -0
- package/dist-bunli/cli-t73q5aqz.js +103 -0
- package/dist-bunli/cli-t73q5aqz.js.map +10 -0
- package/dist-bunli/{cli-templates-4qxszbmc.js → cli-templates-j65r4k9v.js} +1 -1
- package/dist-bunli/{cli-wtrvnce5.js → cli-w4r0rr8a.js} +8 -8
- package/dist-bunli/cli-w4r0rr8a.js.map +10 -0
- package/dist-bunli/cli.js +127 -2863
- package/dist-bunli/cli.js.map +5 -56
- package/dist-bunli/command-list-37n1za5q.js +2485 -0
- package/dist-bunli/command-list-37n1za5q.js.map +58 -0
- package/dist-bunli/node-cli.js +432 -323
- package/dist-bunli/node-cli.js.map +11 -10
- package/dist-bunli/{sync-x91y9jtv.js → sync-k2k8svyc.js} +3 -2
- package/dist-bunli/{sync-x91y9jtv.js.map → sync-k2k8svyc.js.map} +1 -1
- package/package.json +6 -3
- package/dist-bunli/cli-kan7a6db.js.map +0 -11
- package/dist-bunli/cli-scaffold-vcg6wem5.js.map +0 -10
- package/dist-bunli/cli-wtrvnce5.js.map +0 -10
- package/dist-bunli/cli-yw0mq0wq.js.map +0 -10
- /package/dist-bunli/{cli-templates-4qxszbmc.js.map → cli-templates-j65r4k9v.js.map} +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
syncSkills
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-03j0axbt.js";
|
|
5
|
+
import"./cli-hv2yedw2.js";
|
|
5
6
|
import"./cli-ac2ebaf8.js";
|
|
6
7
|
import"./cli-6v0pcxw6.js";
|
|
7
8
|
import"./cli-xnn9xjcy.js";
|
|
@@ -9,4 +10,4 @@ export {
|
|
|
9
10
|
syncSkills
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
//# debugId=
|
|
13
|
+
//# debugId=2CF28D7F936EE81064756E2164756E21
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wp-typia",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Canonical CLI package for wp-typia scaffolding and project workflows",
|
|
5
5
|
"packageManager": "bun@1.3.11",
|
|
6
6
|
"type": "module",
|
|
@@ -16,14 +16,17 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"generate": "bun scripts/generate-bunli-metadata.ts",
|
|
18
18
|
"build": "bun run generate && bun scripts/build-bunli-runtime.ts",
|
|
19
|
+
"build:standalone": "bun scripts/build-standalone-runtime.ts --targets native --outdir ./dist-standalone",
|
|
20
|
+
"build:standalone:release": "bun scripts/build-standalone-runtime.ts --targets darwin-arm64,darwin-x64,linux-arm64,linux-x64,windows-x64 --outdir ./.cache/standalone/raw",
|
|
19
21
|
"bunli:generate": "bun run generate",
|
|
20
22
|
"bunli:build": "bun run build",
|
|
21
23
|
"bunli:dev": "bun src/cli.ts",
|
|
22
24
|
"bunli:test": "bun test tests/*.test.ts",
|
|
23
25
|
"dev": "bun run build && node bin/wp-typia.js",
|
|
26
|
+
"standalone:prepare-release-assets": "bun scripts/prepare-standalone-release-assets.ts --input-dir ./.cache/standalone/raw --outdir ./.cache/standalone/release-assets",
|
|
24
27
|
"test": "cd ../wp-typia-project-tools && bun run build && cd ../wp-typia && bun run build && bun test tests/*.test.ts",
|
|
25
28
|
"test:coverage": "cd ../wp-typia-project-tools && bun run build && cd ../wp-typia && bun run build && bun test tests/*.test.ts --coverage --coverage-reporter=lcov --coverage-dir=coverage",
|
|
26
|
-
"clean": "rm -rf .bunli dist-bunli",
|
|
29
|
+
"clean": "rm -rf .bunli .cache/standalone dist-bunli dist-standalone",
|
|
27
30
|
"prepack": "bun run build"
|
|
28
31
|
},
|
|
29
32
|
"keywords": [
|
|
@@ -64,7 +67,7 @@
|
|
|
64
67
|
"@bunli/tui": "0.6.0",
|
|
65
68
|
"@bunli/utils": "0.6.0",
|
|
66
69
|
"@wp-typia/api-client": "^0.4.5",
|
|
67
|
-
"@wp-typia/project-tools": "0.19.
|
|
70
|
+
"@wp-typia/project-tools": "0.19.1",
|
|
68
71
|
"better-result": "^2.7.0",
|
|
69
72
|
"react": "^19.2.5",
|
|
70
73
|
"react-dom": "^19.2.5",
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../wp-typia-project-tools/src/runtime/template-registry.ts", "../../wp-typia-project-tools/src/runtime/template-defaults.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { getBuiltInTemplateMetadataDefaults } from \"./template-defaults.js\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport function resolvePackageRoot(startDir: string): string {\n\tlet currentDir = startDir;\n\n\twhile (true) {\n\t\tconst packageJsonPath = path.join(currentDir, \"package.json\");\n\t\tif (fs.existsSync(packageJsonPath)) {\n\t\t\ttry {\n\t\t\t\tconst packageJson = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\")) as { name?: string };\n\t\t\t\tif (packageJson.name === \"@wp-typia/project-tools\") {\n\t\t\t\t\treturn currentDir;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Ignore malformed package.json while walking upward.\n\t\t\t}\n\t\t}\n\n\t\tconst parentDir = path.dirname(currentDir);\n\t\tif (parentDir === currentDir) {\n\t\t\tthrow new Error(\"Unable to resolve the @wp-typia/project-tools package root.\");\n\t\t}\n\t\tcurrentDir = parentDir;\n\t}\n}\n\nexport const PROJECT_TOOLS_PACKAGE_ROOT = resolvePackageRoot(__dirname);\nexport const TEMPLATE_ROOT = path.join(PROJECT_TOOLS_PACKAGE_ROOT, \"templates\");\nexport const SHARED_TEMPLATE_ROOT = path.join(TEMPLATE_ROOT, \"_shared\");\nexport const SHARED_BASE_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"base\");\nexport const SHARED_COMPOUND_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"compound\");\nexport const SHARED_PERSISTENCE_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"persistence\");\nexport const SHARED_PRESET_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"presets\");\nexport const SHARED_REST_HELPER_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"rest-helpers\");\nexport const SHARED_MIGRATION_UI_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"migration-ui\");\n/**\n * Shared workspace template overlay root used by workspace scaffolding flows.\n */\nexport const SHARED_WORKSPACE_TEMPLATE_ROOT = path.join(SHARED_TEMPLATE_ROOT, \"workspace\");\nexport const SHARED_TEST_PRESET_TEMPLATE_ROOT = path.join(SHARED_PRESET_TEMPLATE_ROOT, \"test-preset\");\nexport const SHARED_WP_ENV_PRESET_TEMPLATE_ROOT = path.join(SHARED_PRESET_TEMPLATE_ROOT, \"wp-env\");\nexport const BUILTIN_TEMPLATE_IDS = [\n\t\"basic\",\n\t\"interactivity\",\n\t\"persistence\",\n\t\"compound\",\n\t\"query-loop\",\n] as const;\nexport const OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE = \"@wp-typia/create-workspace-template\";\nexport type BuiltInTemplateId = (typeof BUILTIN_TEMPLATE_IDS)[number];\nexport type PersistencePolicy = \"authenticated\" | \"public\";\n\nexport interface TemplateDefinition {\n\tid: string;\n\tdescription: string;\n\tdefaultCategory: string;\n\tfeatures: string[];\n\ttemplateDir: string;\n}\n\nexport const TEMPLATE_REGISTRY = Object.freeze<TemplateDefinition[]>([\n\t{\n\t\tid: \"basic\",\n\t\tdescription: \"A lightweight WordPress block with Typia validation\",\n\t\tdefaultCategory: getBuiltInTemplateMetadataDefaults(\"basic\").category,\n\t\tfeatures: [\"Type-safe attributes\", \"Runtime validation\", \"Minimal setup\"],\n\t\ttemplateDir: path.join(TEMPLATE_ROOT, \"basic\"),\n\t},\n\t{\n\t\tid: \"interactivity\",\n\t\tdescription: \"An interactive WordPress block with Typia validation and Interactivity API\",\n\t\tdefaultCategory: getBuiltInTemplateMetadataDefaults(\"interactivity\").category,\n\t\tfeatures: [\"Interactivity API\", \"Client-side state\", \"Event handling\"],\n\t\ttemplateDir: path.join(TEMPLATE_ROOT, \"interactivity\"),\n\t},\n\t{\n\t\tid: \"persistence\",\n\t\tdescription: \"A persistence-aware WordPress block with Typia validation, typed REST contracts, and selectable public or authenticated write policies\",\n\t\tdefaultCategory: getBuiltInTemplateMetadataDefaults(\"persistence\").category,\n\t\tfeatures: [\"Interactivity API\", \"Typed REST client\", \"Schema sync\", \"Persistence policies\"],\n\t\ttemplateDir: path.join(TEMPLATE_ROOT, \"persistence\"),\n\t},\n\t{\n\t\tid: \"compound\",\n\t\tdescription: \"A parent-and-child WordPress block scaffold with InnerBlocks, optional persistence wiring, and hidden implementation child blocks\",\n\t\tdefaultCategory: getBuiltInTemplateMetadataDefaults(\"compound\").category,\n\t\tfeatures: [\"InnerBlocks\", \"Hidden child blocks\", \"Optional persistence layer\"],\n\t\ttemplateDir: path.join(TEMPLATE_ROOT, \"compound\"),\n\t},\n\t{\n\t\tid: \"query-loop\",\n\t\tdescription: \"A Query Loop block variation scaffold with stable namespace-based identity, inline starter layout, connected pattern presets, custom query seams, and runtime parity hooks\",\n\t\tdefaultCategory: getBuiltInTemplateMetadataDefaults(\"query-loop\").category,\n\t\tfeatures: [\"core/query variation\", \"Default innerBlocks\", \"Connected patterns\", \"Custom query hooks\", \"Runtime parity hooks\", \"Allowed controls\"],\n\t\ttemplateDir: path.join(TEMPLATE_ROOT, \"query-loop\"),\n\t},\n\t{\n\t\tid: OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE,\n\t\tdescription: \"The official empty workspace template that powers `wp-typia add ...` workflows\",\n\t\tdefaultCategory: \"workspace\",\n\t\tfeatures: [\"Workspace inventory\", \"Add block workflows\", \"Workspace doctor and migrate\"],\n\t\ttemplateDir: path.resolve(PROJECT_TOOLS_PACKAGE_ROOT, \"..\", \"create-workspace-template\"),\n\t},\n]);\n\nexport const TEMPLATE_IDS = [...BUILTIN_TEMPLATE_IDS] as BuiltInTemplateId[];\n\nexport function isBuiltInTemplateId(templateId: string): templateId is BuiltInTemplateId {\n\treturn (BUILTIN_TEMPLATE_IDS as readonly string[]).includes(templateId);\n}\n\nexport function listTemplates(): readonly TemplateDefinition[] {\n\treturn TEMPLATE_REGISTRY;\n}\n\nexport function getTemplateById(templateId: string): TemplateDefinition {\n\tconst template = TEMPLATE_REGISTRY.find((entry) => entry.id === templateId);\n\tif (!template) {\n\t\tthrow new Error(\n\t\t\t`Unknown template \"${templateId}\". Expected one of: ${[\n\t\t\t\t...TEMPLATE_IDS,\n\t\t\t\tOFFICIAL_WORKSPACE_TEMPLATE_PACKAGE,\n\t\t\t].join(\", \")}`,\n\t\t);\n\t}\n\treturn template;\n}\n\nexport function getTemplateSelectOptions(): Array<{\n\tlabel: string;\n\tvalue: TemplateDefinition[\"id\"];\n\thint: string;\n}> {\n\treturn TEMPLATE_REGISTRY.map((template) => ({\n\t\tlabel: template.id,\n\t\tvalue: template.id,\n\t\thint: template.features.join(\", \"),\n\t}));\n}\n",
|
|
6
|
-
"/**\n * Internal built-in template metadata defaults used by scaffold rendering.\n */\nexport const BUILTIN_BLOCK_METADATA_VERSION = \"0.1.0\";\n\n/**\n * Built-in parent block metadata defaults keyed by template id.\n */\nexport const BUILTIN_TEMPLATE_METADATA_DEFAULTS = Object.freeze({\n\tbasic: Object.freeze({\n\t\tcategory: \"text\",\n\t\ticon: \"smiley\",\n\t}),\n\tinteractivity: Object.freeze({\n\t\tcategory: \"widgets\",\n\t\ticon: \"smiley\",\n\t}),\n\tpersistence: Object.freeze({\n\t\tcategory: \"widgets\",\n\t\ticon: \"database\",\n\t}),\n\tcompound: Object.freeze({\n\t\tcategory: \"widgets\",\n\t\ticon: \"screenoptions\",\n\t}),\n\t\"query-loop\": Object.freeze({\n\t\tcategory: \"widgets\",\n\t\ticon: \"query-pagination\",\n\t}),\n});\n\n/**\n * Shared hidden child block metadata defaults for compound scaffolds.\n */\nexport const COMPOUND_CHILD_BLOCK_METADATA_DEFAULTS = Object.freeze({\n\tcategory: \"widgets\",\n\ticon: \"excerpt-view\",\n});\n\n/**\n * Legacy built-in template ids that were removed in favor of persistence modes.\n */\nexport const REMOVED_BUILTIN_TEMPLATE_IDS = [\"data\", \"persisted\"] as const;\n/**\n * Union of removed built-in template ids accepted by compatibility checks.\n */\nexport type RemovedBuiltInTemplateId = (typeof REMOVED_BUILTIN_TEMPLATE_IDS)[number];\n\n/**\n * Returns the metadata defaults for a built-in scaffold template id.\n *\n * @param templateId Built-in template id whose metadata defaults should be read.\n * @returns The stable category/icon defaults used by scaffold rendering.\n */\nexport function getBuiltInTemplateMetadataDefaults(\n\ttemplateId: keyof typeof BUILTIN_TEMPLATE_METADATA_DEFAULTS,\n) {\n\treturn BUILTIN_TEMPLATE_METADATA_DEFAULTS[templateId];\n}\n\n/**\n * Checks whether a template id points at a removed built-in scaffold.\n *\n * @param templateId Template id supplied to scaffold resolution.\n * @returns True when the template id is one of the removed legacy built-ins.\n */\nexport function isRemovedBuiltInTemplateId(\n\ttemplateId: string,\n): templateId is RemovedBuiltInTemplateId {\n\treturn (REMOVED_BUILTIN_TEMPLATE_IDS as readonly string[]).includes(templateId);\n}\n\n/**\n * Builds the stable recovery guidance shown for removed built-in template ids.\n *\n * @param templateId Removed template id, where `data` maps to the public policy and\n * `persisted` maps to the authenticated policy.\n * @returns A user-facing error string in the form\n * `Built-in template \"<id>\" was removed. Use --template persistence --persistence-policy <policy> instead.`\n */\nexport function getRemovedBuiltInTemplateMessage(templateId: RemovedBuiltInTemplateId): string {\n\treturn `Built-in template \"${templateId}\" was removed. Use --template persistence --persistence-policy ${\n\t\ttemplateId === \"data\" ? \"public\" : \"authenticated\"\n\t} instead.`;\n}\n"
|
|
7
|
-
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "047835176EC811BA64756E2164756E21",
|
|
10
|
-
"names": []
|
|
11
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../wp-typia-project-tools/src/runtime/cli-scaffold.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import fs from \"node:fs\";\nimport { promises as fsp } from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport {\n\tcollectScaffoldAnswers,\n\tDATA_STORAGE_MODES,\n\tPERSISTENCE_POLICIES,\n\tisDataStorageMode,\n\tisPersistencePolicy,\n\tresolvePackageManagerId,\n\tresolveTemplateId,\n\tscaffoldProject,\n} from \"./scaffold.js\";\nimport { parseAlternateRenderTargets } from \"./alternate-render-targets.js\";\nimport { parseCompoundInnerBlocksPreset } from \"./compound-inner-blocks.js\";\nimport {\n\tformatInstallCommand,\n\tformatRunScript,\n} from \"./package-managers.js\";\nimport type {\n\tDataStorageMode,\n\tPersistencePolicy,\n\tScaffoldProgressEvent,\n} from \"./scaffold.js\";\nimport type { PackageManagerId } from \"./package-managers.js\";\nimport { getPrimaryDevelopmentScript } from \"./local-dev-presets.js\";\nimport {\n\tgetOptionalOnboardingNote,\n\tgetOptionalOnboardingSteps,\n} from \"./scaffold-onboarding.js\";\nimport { formatNonEmptyTargetDirectoryError } from \"./scaffold-bootstrap.js\";\nimport {\n\tOFFICIAL_WORKSPACE_TEMPLATE_PACKAGE,\n\tisBuiltInTemplateId,\n} from \"./template-registry.js\";\nimport {\n\tresolveOptionalInteractiveExternalLayerId,\n\ttype ExternalLayerSelectionOption,\n} from \"./external-layer-selection.js\";\nimport type { TemplateDefinition } from \"./template-registry.js\";\nimport {\n\tassertBuiltInTemplateVariantAllowed,\n\tresolveLocalCliPathOption,\n\tnormalizeOptionalCliString,\n} from \"./cli-validation.js\";\n\ninterface GetNextStepsOptions {\n\tnoInstall: boolean;\n\tpackageManager: PackageManagerId;\n\tprojectDir: string;\n\tprojectInput: string;\n\ttemplateId: string;\n}\n\ninterface GetOptionalOnboardingOptions {\n\tavailableScripts?: string[];\n\tpackageManager: PackageManagerId;\n\ttemplateId: string;\n\tcompoundPersistenceEnabled?: boolean;\n}\n\ninterface OptionalOnboardingGuidance {\n\tnote: string;\n\tsteps: string[];\n}\n\nexport interface ScaffoldDryRunPlan {\n\tdependencyInstall: \"skipped-by-flag\" | \"would-install\";\n\tfiles: string[];\n}\n\ninterface RunScaffoldFlowOptions {\n\tallowExistingDir?: boolean;\n\talternateRenderTargets?: string;\n\tcwd?: string;\n\tdataStorageMode?: string;\n\tdryRun?: boolean;\n\texternalLayerId?: string;\n\texternalLayerSource?: string;\n\tinstallDependencies?: Parameters<typeof scaffoldProject>[0][\"installDependencies\"];\n\tinnerBlocksPreset?: string;\n\tisInteractive?: boolean;\n\tnamespace?: string;\n\tnoInstall?: boolean;\n\tonProgress?: ((event: ScaffoldProgressEvent) => void | Promise<void>) | undefined;\n\tpackageManager?: string;\n\tphpPrefix?: string;\n\tprojectInput: string;\n\tpromptText?: Parameters<typeof collectScaffoldAnswers>[0][\"promptText\"];\n\tqueryPostType?: string;\n\tselectDataStorage?: () => Promise<DataStorageMode>;\n\tselectExternalLayerId?: (\n\t\toptions: ExternalLayerSelectionOption[],\n\t) => Promise<string>;\n\tselectPackageManager?: () => Promise<PackageManagerId>;\n\tselectPersistencePolicy?: () => Promise<PersistencePolicy>;\n\tselectTemplate?: () => Promise<TemplateDefinition[\"id\"]>;\n\tselectWithMigrationUi?: () => Promise<boolean>;\n\tselectWithTestPreset?: () => Promise<boolean>;\n\tselectWithWpEnv?: () => Promise<boolean>;\n\ttemplateId?: string;\n\ttextDomain?: string;\n\tvariant?: string;\n\tpersistencePolicy?: string;\n\twithMigrationUi?: boolean;\n\twithTestPreset?: boolean;\n\twithWpEnv?: boolean;\n\tyes?: boolean;\n}\n\nasync function listRelativeProjectFiles(rootDir: string): Promise<string[]> {\n\tconst relativeFiles: string[] = [];\n\n\tasync function visit(currentDir: string): Promise<void> {\n\t\tconst entries = await fsp.readdir(currentDir, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst absolutePath = path.join(currentDir, entry.name);\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tawait visit(absolutePath);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trelativeFiles.push(\n\t\t\t\tpath\n\t\t\t\t\t.relative(rootDir, absolutePath)\n\t\t\t\t\t.replace(path.sep === \"\\\\\" ? /\\\\/gu : /\\//gu, \"/\"),\n\t\t\t);\n\t\t}\n\t}\n\n\tawait visit(rootDir);\n\treturn relativeFiles.sort((left, right) => left.localeCompare(right));\n}\n\nasync function assertDryRunTargetDirectoryReady(\n\tprojectDir: string,\n\tallowExistingDir: boolean,\n): Promise<void> {\n\tif (!fs.existsSync(projectDir) || allowExistingDir) {\n\t\treturn;\n\t}\n\n\tconst entries = await fsp.readdir(projectDir);\n\tif (entries.length > 0) {\n\t\tthrow new Error(formatNonEmptyTargetDirectoryError(projectDir));\n\t}\n}\n\nasync function buildScaffoldDryRunPlan({\n\tallowExistingDir,\n\talternateRenderTargets,\n\tanswers,\n\tcwd,\n\tdataStorageMode,\n\texternalLayerId,\n\texternalLayerSource,\n\texternalLayerSourceLabel,\n\tinstallDependencies,\n\tnoInstall,\n\tonProgress,\n\tpackageManager,\n\tpersistencePolicy,\n\tprojectDir,\n\ttemplateId,\n\tvariant,\n\twithMigrationUi,\n\twithTestPreset,\n\twithWpEnv,\n}: {\n\tallowExistingDir: boolean;\n\talternateRenderTargets?: Parameters<typeof scaffoldProject>[0][\"alternateRenderTargets\"];\n\tanswers: Parameters<typeof scaffoldProject>[0][\"answers\"];\n\tcwd: string;\n\tdataStorageMode?: Parameters<typeof scaffoldProject>[0][\"dataStorageMode\"];\n\texternalLayerId?: string;\n\texternalLayerSource?: string;\n\texternalLayerSourceLabel?: string;\n\tinstallDependencies?: Parameters<typeof scaffoldProject>[0][\"installDependencies\"];\n\tnoInstall: boolean;\n\tonProgress?: RunScaffoldFlowOptions[\"onProgress\"];\n\tpackageManager: PackageManagerId;\n\tpersistencePolicy?: Parameters<typeof scaffoldProject>[0][\"persistencePolicy\"];\n\tprojectDir: string;\n\ttemplateId: string;\n\tvariant?: string;\n\twithMigrationUi: boolean;\n\twithTestPreset: boolean;\n\twithWpEnv: boolean;\n}): Promise<{\n\tplan: ScaffoldDryRunPlan;\n\tresult: Awaited<ReturnType<typeof scaffoldProject>>;\n}> {\n\tawait assertDryRunTargetDirectoryReady(projectDir, allowExistingDir);\n\tconst tempRoot = await fsp.mkdtemp(path.join(os.tmpdir(), \"wp-typia-scaffold-plan-\"));\n\tconst previewProjectDir = path.join(tempRoot, \"preview-project\");\n\n\ttry {\n\t\tconst result = await scaffoldProject({\n\t\t\tallowExistingDir: false,\n\t\t\talternateRenderTargets,\n\t\t\tanswers,\n\t\t\tcwd,\n\t\t\tdataStorageMode,\n\t\t\texternalLayerId,\n\t\t\texternalLayerSource,\n\t\t\texternalLayerSourceLabel,\n\t\t\tinstallDependencies,\n\t\t\tnoInstall: true,\n\t\t\tonProgress,\n\t\t\tpackageManager,\n\t\t\tpersistencePolicy,\n\t\t\tprojectDir: previewProjectDir,\n\t\t\ttemplateId,\n\t\t\tvariant,\n\t\t\twithMigrationUi,\n\t\t\twithTestPreset,\n\t\t\twithWpEnv,\n\t\t});\n\t\tconst files = await listRelativeProjectFiles(previewProjectDir);\n\n\t\treturn {\n\t\t\tplan: {\n\t\t\t\tdependencyInstall: noInstall ? \"skipped-by-flag\" : \"would-install\",\n\t\t\t\tfiles,\n\t\t\t},\n\t\t\tresult,\n\t\t};\n\t} finally {\n\t\tawait fsp.rm(tempRoot, { force: true, recursive: true });\n\t}\n}\n\nfunction validateCreateProjectInput(projectInput: string) {\n\tconst normalizedProjectInput = projectInput.trim();\n\tif (normalizedProjectInput.length === 0) {\n\t\tthrow new Error(\n\t\t\t\"Project directory is required. Usage: wp-typia create <project-dir> (or wp-typia <project-dir> when <project-dir> is the only positional argument).\",\n\t\t);\n\t}\n\n\tconst normalizedProjectPath =\n\t\tpath.normalize(normalizedProjectInput).replace(/[\\\\/]+$/u, \"\") ||\n\t\tpath.normalize(normalizedProjectInput);\n\tif (normalizedProjectPath === \".\" || normalizedProjectPath === \"..\") {\n\t\tthrow new Error(\n\t\t\t\"`wp-typia create` requires a new project directory. Use an explicit child directory instead of `.` or `..`.\",\n\t\t);\n\t}\n}\n\nfunction collectProjectDirectoryWarnings(projectDir: string): string[] {\n\tconst warnings: string[] = [];\n\tconst projectName = path.basename(projectDir);\n\tif (/\\s/u.test(projectName)) {\n\t\twarnings.push(\n\t\t\t`Project directory \"${projectName}\" contains spaces. The generated next-step commands will be quoted, but a simple kebab-case directory name is usually easier to use with shells and downstream tooling.`,\n\t\t);\n\t}\n\n\tconst shellSensitiveCharacters = Array.from(\n\t\tnew Set(projectName.match(/[^A-Za-z0-9._ -]/gu) ?? []),\n\t);\n\tif (shellSensitiveCharacters.length > 0) {\n\t\twarnings.push(\n\t\t\t`Project directory \"${projectName}\" contains shell-sensitive characters (${shellSensitiveCharacters.join(\", \")}). Prefer letters, numbers, \".\", \"_\" and \"-\" when possible.`,\n\t\t);\n\t}\n\n\treturn warnings;\n}\n\nfunction templateUsesPersistenceSettings(\n\ttemplateId: string,\n\toptions: {\n\t\tdataStorageMode?: string;\n\t\tpersistencePolicy?: string;\n\t},\n): boolean {\n\tif (templateId === \"persistence\") {\n\t\treturn true;\n\t}\n\n\tif (templateId !== \"compound\") {\n\t\treturn false;\n\t}\n\n\treturn Boolean(options.dataStorageMode || options.persistencePolicy);\n}\n\nfunction templateSupportsPersistenceFlags(templateId: string): boolean {\n\treturn templateId === \"persistence\" || templateId === \"compound\";\n}\n\nfunction templateSupportsCompoundInnerBlocksPreset(templateId: string): boolean {\n\treturn templateId === \"compound\";\n}\n\nfunction createTemplateLabel(templateId: string): string {\n\treturn templateId === OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE\n\t\t? \"`--template workspace`\"\n\t\t: `\"${templateId}\"`;\n}\n\nfunction collectTemplateCapabilityWarnings(options: {\n\tqueryPostType?: string;\n\ttemplateId: string;\n\twithMigrationUi?: boolean;\n}): string[] {\n\tconst warnings: string[] = [];\n\tconst trimmedQueryPostType = options.queryPostType?.trim();\n\n\tif (\n\t\ttrimmedQueryPostType &&\n\t\toptions.templateId !== \"query-loop\" &&\n\t\t(isBuiltInTemplateId(options.templateId) ||\n\t\t\toptions.templateId === OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE)\n\t) {\n\t\twarnings.push(\n\t\t\t`\\`--query-post-type\\` only applies to \\`wp-typia create --template query-loop\\`, which scaffolds a create-time \\`core/query\\` variation instead of a standalone block. ${createTemplateLabel(options.templateId)} will ignore \"${trimmedQueryPostType}\".`,\n\t\t);\n\t}\n\n\tif (\n\t\toptions.withMigrationUi === true &&\n\t\t!isBuiltInTemplateId(options.templateId) &&\n\t\toptions.templateId !== OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE\n\t) {\n\t\twarnings.push(\n\t\t\t`\\`--with-migration-ui\\` was ignored for ${createTemplateLabel(options.templateId)}. Migration UI currently scaffolds built-in templates and the official \\`--template workspace\\` flow; external templates still need to opt into that surface explicitly.`,\n\t\t);\n\t}\n\n\treturn warnings;\n}\n\nfunction templateSupportsAlternateRenderTargets(options: {\n\talternateRenderTargets?: string;\n\tdataStorageMode?: string;\n\tpersistencePolicy?: string;\n\ttemplateId: string;\n}): boolean {\n\tif (!options.alternateRenderTargets) {\n\t\treturn false;\n\t}\n\n\tif (options.templateId === \"persistence\") {\n\t\treturn true;\n\t}\n\n\tif (options.templateId !== \"compound\") {\n\t\treturn false;\n\t}\n\n\treturn templateUsesPersistenceSettings(options.templateId, {\n\t\tdataStorageMode: options.dataStorageMode,\n\t\tpersistencePolicy: options.persistencePolicy,\n\t});\n}\n\nfunction validateCreateFlagContract(options: {\n\talternateRenderTargets?: string;\n\tdataStorageMode?: string;\n\tinnerBlocksPreset?: string;\n\tpersistencePolicy?: string;\n\ttemplateId: string;\n\tvariant?: string;\n}) {\n\tconst {\n\t\talternateRenderTargets,\n\t\tdataStorageMode,\n\t\tinnerBlocksPreset,\n\t\tpersistencePolicy,\n\t\ttemplateId,\n\t\tvariant,\n\t} = options;\n\tif (\n\t\t(dataStorageMode || persistencePolicy) &&\n\t\t!templateSupportsPersistenceFlags(templateId)\n\t) {\n\t\tthrow new Error(\n\t\t\t\"`--data-storage` and `--persistence-policy` are supported only for `wp-typia create --template persistence` or `--template compound`.\",\n\t\t);\n\t}\n\tif (\n\t\talternateRenderTargets &&\n\t\t!templateSupportsAlternateRenderTargets({\n\t\t\talternateRenderTargets,\n\t\t\tdataStorageMode,\n\t\t\tpersistencePolicy,\n\t\t\ttemplateId,\n\t\t})\n\t) {\n\t\tif (templateId === \"compound\") {\n\t\t\tthrow new Error(\n\t\t\t\t\"`--alternate-render-targets` on `wp-typia create --template compound` requires the persistence-enabled server render path. Add `--data-storage <post-meta|custom-table>` or `--persistence-policy <authenticated|public>` first.\",\n\t\t\t);\n\t\t}\n\t\tthrow new Error(\n\t\t\t\"`--alternate-render-targets` is supported only for `wp-typia create --template persistence` or persistence-enabled `--template compound` scaffolds.\",\n\t\t);\n\t}\n\tparseAlternateRenderTargets(alternateRenderTargets);\n\tif (\n\t\tinnerBlocksPreset &&\n\t\t!templateSupportsCompoundInnerBlocksPreset(templateId)\n\t) {\n\t\tthrow new Error(\n\t\t\t\"`--inner-blocks-preset` is supported only for `wp-typia create --template compound`.\",\n\t\t);\n\t}\n\tparseCompoundInnerBlocksPreset(innerBlocksPreset);\n\n\tif (isBuiltInTemplateId(templateId)) {\n\t\tassertBuiltInTemplateVariantAllowed({\n\t\t\ttemplateId,\n\t\t\tvariant,\n\t\t});\n\t}\n}\n\nfunction parseSelectableValue<T extends string>(\n\tlabel: string,\n\tvalue: string,\n\tisValue: (input: string) => input is T,\n\tallowedValues: readonly T[],\n): T {\n\tif (isValue(value)) {\n\t\treturn value;\n\t}\n\n\tthrow new Error(\n\t\t`Unsupported ${label} \"${value}\". Expected one of: ${allowedValues.join(\", \")}`,\n\t);\n}\n\nasync function resolveOptionalSelection<T extends string>({\n\tdefaultValue,\n\texplicitValue,\n\tisInteractive,\n\tisValue,\n\tlabel,\n\tallowedValues,\n\tselect,\n\tshouldResolve = true,\n\tyes,\n}: {\n\tdefaultValue: T;\n\texplicitValue?: string;\n\tisInteractive: boolean;\n\tisValue: (input: string) => input is T;\n\tlabel: string;\n\tallowedValues: readonly T[];\n\tselect?: () => Promise<T>;\n\tshouldResolve?: boolean;\n\tyes: boolean;\n}): Promise<T | undefined> {\n\tif (!shouldResolve) {\n\t\treturn undefined;\n\t}\n\n\tif (explicitValue) {\n\t\treturn parseSelectableValue(label, explicitValue, isValue, allowedValues);\n\t}\n\n\tif (yes) {\n\t\treturn defaultValue;\n\t}\n\n\tif (isInteractive && select) {\n\t\treturn select();\n\t}\n\n\treturn defaultValue;\n}\n\nasync function resolveOptionalBooleanFlag({\n\tdefaultValue = false,\n\tdisabled = false,\n\texplicitValue,\n\tisInteractive,\n\tselect,\n\tyes,\n}: {\n\tdefaultValue?: boolean;\n\tdisabled?: boolean;\n\texplicitValue?: boolean;\n\tisInteractive: boolean;\n\tselect?: () => Promise<boolean>;\n\tyes: boolean;\n}): Promise<boolean> {\n\tif (disabled) {\n\t\treturn defaultValue;\n\t}\n\n\tif (typeof explicitValue === \"boolean\") {\n\t\treturn explicitValue;\n\t}\n\n\tif (yes) {\n\t\treturn defaultValue;\n\t}\n\n\tif (isInteractive && select) {\n\t\treturn select();\n\t}\n\n\treturn defaultValue;\n}\n\nfunction quoteShellValue(value: string): string {\n\tif (\n\t\t!value.startsWith(\"-\") &&\n\t\t/^[A-Za-z0-9._/@:-]+(?:\\/[A-Za-z0-9._@:-]+)*$/.test(value)\n\t) {\n\t\treturn value;\n\t}\n\n\treturn `'${value.replace(/'/g, `'\\\"'\\\"'`)}'`;\n}\n\n/**\n * Build the printed next-step commands for a scaffolded project.\n *\n * @param options Project location and package-manager details used to format\n * next-step commands.\n * @returns Ordered shell commands shown after scaffolding succeeds.\n */\nexport function getNextSteps({\n\tprojectInput,\n\tprojectDir,\n\tpackageManager,\n\tnoInstall,\n\ttemplateId,\n}: GetNextStepsOptions): string[] {\n\tconst cdTarget = path.isAbsolute(projectInput) ? projectDir : projectInput;\n\tconst steps = [`cd ${quoteShellValue(cdTarget)}`];\n\n\tif (noInstall) {\n\t\tsteps.push(formatInstallCommand(packageManager));\n\t}\n\n\tsteps.push(formatRunScript(packageManager, getPrimaryDevelopmentScript(templateId)));\n\treturn steps;\n}\n\n/**\n * Compute optional onboarding guidance shown after scaffolding completes.\n *\n * @param options Package-manager and template context for optional guidance.\n * @returns Optional onboarding note and step list.\n */\nexport function getOptionalOnboarding({\n\tavailableScripts,\n\tpackageManager,\n\ttemplateId,\n\tcompoundPersistenceEnabled = false,\n}: GetOptionalOnboardingOptions): OptionalOnboardingGuidance {\n\treturn {\n\t\tnote: getOptionalOnboardingNote(packageManager, templateId, {\n\t\t\tavailableScripts,\n\t\t\tcompoundPersistenceEnabled,\n\t\t}),\n\t\tsteps: getOptionalOnboardingSteps(packageManager, templateId, {\n\t\t\tavailableScripts,\n\t\t\tcompoundPersistenceEnabled,\n\t\t}),\n\t};\n}\n\n/**\n * Resolve scaffold options, prompts, and follow-up steps for one CLI run.\n *\n * @param options CLI/runtime inputs used to collect answers and scaffold a\n * project.\n * @returns The scaffold result together with next-step guidance.\n */\nexport async function runScaffoldFlow({\n\tprojectInput,\n\tcwd = process.cwd(),\n\ttemplateId,\n\talternateRenderTargets,\n\tdataStorageMode,\n\tdryRun = false,\n\texternalLayerId,\n\texternalLayerSource,\n\tinnerBlocksPreset,\n\tpersistencePolicy,\n\tpackageManager,\n\tnamespace,\n\ttextDomain,\n\tphpPrefix,\n\tqueryPostType,\n\tyes = false,\n\tnoInstall = false,\n\tonProgress,\n\tisInteractive = false,\n\tallowExistingDir = false,\n\tselectTemplate,\n\tselectDataStorage,\n\tselectExternalLayerId,\n\tselectPersistencePolicy,\n\tselectPackageManager,\n\tpromptText,\n\tinstallDependencies = undefined,\n\tvariant,\n\tselectWithTestPreset,\n\tselectWithWpEnv,\n\tselectWithMigrationUi,\n\twithMigrationUi,\n\twithTestPreset,\n\twithWpEnv,\n}: RunScaffoldFlowOptions) {\n\tconst normalizedExternalLayerId =\n\t\tnormalizeOptionalCliString(externalLayerId);\n\tconst normalizedExternalLayerSource = resolveLocalCliPathOption({\n\t\tcwd,\n\t\tlabel: \"--external-layer-source\",\n\t\tvalue: externalLayerSource,\n\t});\n\n\tvalidateCreateProjectInput(projectInput);\n\n\tconst resolvedTemplateId = await resolveTemplateId({\n\t\ttemplateId,\n\t\tyes,\n\t\tisInteractive,\n\t\tselectTemplate,\n\t});\n\tvalidateCreateFlagContract({\n\t\talternateRenderTargets,\n\t\tdataStorageMode,\n\t\tinnerBlocksPreset,\n\t\tpersistencePolicy,\n\t\ttemplateId: resolvedTemplateId,\n\t\tvariant,\n\t});\n\tconst resolvedInnerBlocksPreset =\n\t\tparseCompoundInnerBlocksPreset(innerBlocksPreset);\n\tconst resolvedExternalLayerSelection =\n\t\tisBuiltInTemplateId(resolvedTemplateId) && isInteractive\n\t\t\t? await resolveOptionalInteractiveExternalLayerId({\n\t\t\t\t\tcallerCwd: cwd,\n\t\t\t\t\texternalLayerId: normalizedExternalLayerId,\n\t\t\t\t\texternalLayerSource: normalizedExternalLayerSource,\n\t\t\t\t\tselectExternalLayerId,\n\t\t\t\t})\n\t\t\t: {\n\t\t\t\t\texternalLayerId: normalizedExternalLayerId,\n\t\t\t\t\texternalLayerSource: normalizedExternalLayerSource,\n\t\t\t\t};\n\ttry {\n\t\tconst shouldResolvePersistence = templateUsesPersistenceSettings(resolvedTemplateId, {\n\t\t\tdataStorageMode,\n\t\t\tpersistencePolicy,\n\t\t});\n\t\tconst resolvedDataStorage = await resolveOptionalSelection({\n\t\t\tallowedValues: DATA_STORAGE_MODES,\n\t\t\tdefaultValue: \"custom-table\",\n\t\t\texplicitValue: dataStorageMode,\n\t\t\tisInteractive,\n\t\t\tisValue: isDataStorageMode,\n\t\t\tlabel: \"data storage mode\",\n\t\t\tselect: selectDataStorage,\n\t\t\tshouldResolve: shouldResolvePersistence,\n\t\t\tyes,\n\t\t});\n\t\tconst resolvedPersistencePolicy = await resolveOptionalSelection({\n\t\t\tallowedValues: PERSISTENCE_POLICIES,\n\t\t\tdefaultValue: \"authenticated\",\n\t\t\texplicitValue: persistencePolicy,\n\t\t\tisInteractive,\n\t\t\tisValue: isPersistencePolicy,\n\t\t\tlabel: \"persistence policy\",\n\t\t\tselect: selectPersistencePolicy,\n\t\t\tshouldResolve: shouldResolvePersistence,\n\t\t\tyes,\n\t\t});\n\t\tconst resolvedPackageManager = await resolvePackageManagerId({\n\t\t\tpackageManager,\n\t\t\tyes,\n\t\t\tisInteractive,\n\t\t\tselectPackageManager,\n\t\t});\n\t\tconst resolvedWithWpEnv = await resolveOptionalBooleanFlag({\n\t\t\texplicitValue: withWpEnv,\n\t\t\tisInteractive,\n\t\t\tselect: selectWithWpEnv,\n\t\t\tyes,\n\t\t});\n\t\tconst resolvedWithTestPreset = await resolveOptionalBooleanFlag({\n\t\t\texplicitValue: withTestPreset,\n\t\t\tisInteractive,\n\t\t\tselect: selectWithTestPreset,\n\t\t\tyes,\n\t\t});\n\t\tconst resolvedWithMigrationUi = await resolveOptionalBooleanFlag({\n\t\t\tdisabled:\n\t\t\t\t!isBuiltInTemplateId(resolvedTemplateId) &&\n\t\t\t\tresolvedTemplateId !== OFFICIAL_WORKSPACE_TEMPLATE_PACKAGE,\n\t\t\texplicitValue: withMigrationUi,\n\t\t\tisInteractive,\n\t\t\tselect: selectWithMigrationUi,\n\t\t\tyes,\n\t\t});\n\t\tconst projectDir = path.resolve(cwd, projectInput);\n\t\tconst projectName = path.basename(projectDir);\n\t\tconst answers = await collectScaffoldAnswers({\n\t\t\tdataStorageMode: resolvedDataStorage,\n\t\t\tnamespace,\n\t\t\tpersistencePolicy: resolvedPersistencePolicy,\n\t\t\tphpPrefix,\n\t\t\tprojectName,\n\t\t\tqueryPostType,\n\t\t\ttemplateId: resolvedTemplateId,\n\t\t\ttextDomain,\n\t\t\tyes,\n\t\t\tpromptText,\n\t\t});\n\t\tif (resolvedTemplateId === \"compound\" && resolvedInnerBlocksPreset) {\n\t\t\tanswers.compoundInnerBlocksPreset = resolvedInnerBlocksPreset;\n\t\t}\n\n\t\tconst resolvedResult = dryRun\n\t\t\t? await buildScaffoldDryRunPlan({\n\t\t\t\t\tallowExistingDir,\n\t\t\t\t\talternateRenderTargets,\n\t\t\t\t\tanswers,\n\t\t\t\t\tcwd,\n\t\t\t\t\tdataStorageMode: resolvedDataStorage,\n\t\t\t\t\texternalLayerId: resolvedExternalLayerSelection.externalLayerId,\n\t\t\t\t\texternalLayerSource:\n\t\t\t\t\t\tresolvedExternalLayerSelection.externalLayerSource,\n\t\t\t\t\texternalLayerSourceLabel: normalizedExternalLayerSource,\n\t\t\t\t\tinstallDependencies,\n\t\t\t\t\tnoInstall,\n\t\t\t\t\tonProgress,\n\t\t\t\t\tpackageManager: resolvedPackageManager,\n\t\t\t\t\tpersistencePolicy: resolvedPersistencePolicy,\n\t\t\t\t\tprojectDir,\n\t\t\t\t\ttemplateId: resolvedTemplateId,\n\t\t\t\t\tvariant,\n\t\t\t\t\twithMigrationUi: resolvedWithMigrationUi,\n\t\t\t\t\twithTestPreset: resolvedWithTestPreset,\n\t\t\t\t\twithWpEnv: resolvedWithWpEnv,\n\t\t\t\t})\n\t\t\t: {\n\t\t\t\t\tplan: undefined,\n\t\t\t\t\tresult: await scaffoldProject({\n\t\t\t\t\t\talternateRenderTargets,\n\t\t\t\t\t\tanswers,\n\t\t\t\t\t\tallowExistingDir,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tdataStorageMode: resolvedDataStorage,\n\t\t\t\t\t\texternalLayerId: resolvedExternalLayerSelection.externalLayerId,\n\t\t\t\t\t\texternalLayerSource:\n\t\t\t\t\t\t\tresolvedExternalLayerSelection.externalLayerSource,\n\t\t\t\t\t\texternalLayerSourceLabel: normalizedExternalLayerSource,\n\t\t\t\t\t\tinstallDependencies,\n\t\t\t\t\t\tnoInstall,\n\t\t\t\t\t\tonProgress,\n\t\t\t\t\t\tpackageManager: resolvedPackageManager,\n\t\t\t\t\t\tpersistencePolicy: resolvedPersistencePolicy,\n\t\t\t\t\t\tprojectDir,\n\t\t\t\t\t\ttemplateId: resolvedTemplateId,\n\t\t\t\t\t\tvariant,\n\t\t\t\t\t\twithMigrationUi: resolvedWithMigrationUi,\n\t\t\t\t\t\twithTestPreset: resolvedWithTestPreset,\n\t\t\t\t\t\twithWpEnv: resolvedWithWpEnv,\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\tlet availableScripts: string[] | undefined;\n\t\tif (!dryRun) {\n\t\t\ttry {\n\t\t\t\tconst parsedPackageJson = JSON.parse(\n\t\t\t\t\tfs.readFileSync(path.join(projectDir, \"package.json\"), \"utf8\"),\n\t\t\t\t) as {\n\t\t\t\t\tscripts?: unknown;\n\t\t\t\t};\n\t\t\t\tconst scripts =\n\t\t\t\t\tparsedPackageJson.scripts &&\n\t\t\t\t\ttypeof parsedPackageJson.scripts === \"object\" &&\n\t\t\t\t\t!Array.isArray(parsedPackageJson.scripts)\n\t\t\t\t\t\t? parsedPackageJson.scripts\n\t\t\t\t\t\t: {};\n\t\t\t\tavailableScripts = Object.entries(scripts)\n\t\t\t\t\t.filter(([, value]) => typeof value === \"string\")\n\t\t\t\t\t.map(([scriptName]) => scriptName);\n\t\t\t} catch {\n\t\t\t\tavailableScripts = undefined;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tdryRun,\n\t\t\toptionalOnboarding: getOptionalOnboarding({\n\t\t\t\tavailableScripts,\n\t\t\t\tpackageManager: resolvedPackageManager,\n\t\t\t\ttemplateId: resolvedTemplateId,\n\t\t\t\tcompoundPersistenceEnabled:\n\t\t\t\t\tresolvedResult.result.variables.compoundPersistenceEnabled === \"true\",\n\t\t\t}),\n\t\t\tplan: resolvedResult.plan,\n\t\t\tprojectDir,\n\t\t\tprojectInput,\n\t\t\tpackageManager: resolvedPackageManager,\n\t\t\tnextSteps: getNextSteps({\n\t\t\t\tprojectInput,\n\t\t\t\tprojectDir,\n\t\t\t\tpackageManager: resolvedPackageManager,\n\t\t\t\tnoInstall,\n\t\t\t\ttemplateId: resolvedTemplateId,\n\t\t\t}),\n\t\t\tresult: {\n\t\t\t\t...resolvedResult.result,\n\t\t\t\twarnings: [\n\t\t\t\t\t...resolvedResult.result.warnings,\n\t\t\t\t\t...collectTemplateCapabilityWarnings({\n\t\t\t\t\t\tqueryPostType,\n\t\t\t\t\t\ttemplateId: resolvedTemplateId,\n\t\t\t\t\t\twithMigrationUi,\n\t\t\t\t\t}),\n\t\t\t\t\t...collectProjectDirectoryWarnings(projectDir),\n\t\t\t\t],\n\t\t\t},\n\t\t};\n\t} finally {\n\t\tawait resolvedExternalLayerSelection.cleanup?.();\n\t}\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "B3C0A5165543AD8064756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../wp-typia-project-tools/src/runtime/template-builtins.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promises as fsp } from \"node:fs\";\n\nimport {\n\tgetTemplateById,\n\tSHARED_BASE_TEMPLATE_ROOT,\n\tSHARED_COMPOUND_TEMPLATE_ROOT,\n\tSHARED_MIGRATION_UI_TEMPLATE_ROOT,\n\tSHARED_PERSISTENCE_TEMPLATE_ROOT,\n\tSHARED_PRESET_TEMPLATE_ROOT,\n\tSHARED_REST_HELPER_TEMPLATE_ROOT,\n\tSHARED_WORKSPACE_TEMPLATE_ROOT,\n\ttype BuiltInTemplateId,\n} from \"./template-registry.js\";\n\n/**\n * Controls which persistence layer is applied when materializing the built-in\n * `persistence` template.\n */\nexport type BuiltInPersistencePolicy = \"authenticated\" | \"public\";\n\nexport interface BuiltInTemplateVariantOptions {\n\tpersistenceEnabled?: boolean;\n\tpersistencePolicy?: BuiltInPersistencePolicy;\n}\n\nexport interface MaterializedBuiltInTemplateSource {\n\tid: BuiltInTemplateId;\n\tdefaultCategory: string;\n\tdescription: string;\n\tfeatures: string[];\n\tformat: \"wp-typia\";\n\ttemplateDir: string;\n\tcleanup?: () => Promise<void>;\n\tselectedVariant?: string | null;\n\twarnings?: string[];\n}\n\nexport interface BuiltInSharedTemplateLayer {\n\tdir: string;\n\tid: string;\n}\n\nconst BUILT_IN_SHARED_TEMPLATE_LAYERS = Object.freeze<BuiltInSharedTemplateLayer[]>([\n\t{\n\t\tdir: SHARED_BASE_TEMPLATE_ROOT,\n\t\tid: \"builtin:shared/base\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_REST_HELPER_TEMPLATE_ROOT, \"shared\"),\n\t\tid: \"builtin:shared/rest-helpers/shared\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_REST_HELPER_TEMPLATE_ROOT, \"public\"),\n\t\tid: \"builtin:shared/rest-helpers/public\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_REST_HELPER_TEMPLATE_ROOT, \"auth\"),\n\t\tid: \"builtin:shared/rest-helpers/auth\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_PERSISTENCE_TEMPLATE_ROOT, \"core\"),\n\t\tid: \"builtin:shared/persistence/core\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_PERSISTENCE_TEMPLATE_ROOT, \"public\"),\n\t\tid: \"builtin:shared/persistence/public\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_PERSISTENCE_TEMPLATE_ROOT, \"auth\"),\n\t\tid: \"builtin:shared/persistence/auth\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"core\"),\n\t\tid: \"builtin:shared/compound/core\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"persistence\"),\n\t\tid: \"builtin:shared/compound/persistence\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"persistence-public\"),\n\t\tid: \"builtin:shared/compound/persistence-public\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"persistence-auth\"),\n\t\tid: \"builtin:shared/compound/persistence-auth\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_MIGRATION_UI_TEMPLATE_ROOT, \"common\"),\n\t\tid: \"builtin:shared/migration-ui/common\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_PRESET_TEMPLATE_ROOT, \"wp-env\"),\n\t\tid: \"builtin:shared/presets/wp-env\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_PRESET_TEMPLATE_ROOT, \"test-preset\"),\n\t\tid: \"builtin:shared/presets/test-preset\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_WORKSPACE_TEMPLATE_ROOT, \"persistence-public\"),\n\t\tid: \"builtin:shared/workspace/persistence-public\",\n\t},\n\t{\n\t\tdir: path.join(SHARED_WORKSPACE_TEMPLATE_ROOT, \"persistence-auth\"),\n\t\tid: \"builtin:shared/workspace/persistence-auth\",\n\t},\n]);\n\nconst BUILT_IN_SHARED_TEMPLATE_LAYER_DIRS = new Map(\n\tBUILT_IN_SHARED_TEMPLATE_LAYERS.map((layer) => [layer.id, layer.dir] as const),\n);\n\nconst OMITTABLE_BUILT_IN_OVERLAY_TEMPLATE_IDS = new Set<BuiltInTemplateId>([\n\t\"basic\",\n\t\"persistence\",\n\t\"compound\",\n]);\n\nexport function listBuiltInSharedTemplateLayers(): readonly BuiltInSharedTemplateLayer[] {\n\treturn BUILT_IN_SHARED_TEMPLATE_LAYERS;\n}\n\nexport function isBuiltInSharedTemplateLayerId(layerId: string): boolean {\n\treturn BUILT_IN_SHARED_TEMPLATE_LAYER_DIRS.has(layerId);\n}\n\nexport function getBuiltInSharedTemplateLayerDir(layerId: string): string {\n\tconst layerDir = BUILT_IN_SHARED_TEMPLATE_LAYER_DIRS.get(layerId);\n\tif (!layerDir) {\n\t\tthrow new Error(`Unknown built-in shared template layer id: ${layerId}`);\n\t}\n\treturn layerDir;\n}\n\nexport function getBuiltInTemplateOverlayDir(templateId: BuiltInTemplateId): string {\n\treturn getTemplateById(templateId).templateDir;\n}\n\nexport function getBuiltInTemplateSharedLayerDirs(\n\ttemplateId: BuiltInTemplateId,\n\t{\n\t\tpersistenceEnabled = false,\n\t\tpersistencePolicy = \"authenticated\",\n\t}: BuiltInTemplateVariantOptions = {},\n): string[] {\n\tif (templateId === \"persistence\") {\n\t\treturn [\n\t\t\tSHARED_BASE_TEMPLATE_ROOT,\n\t\t\tpath.join(SHARED_REST_HELPER_TEMPLATE_ROOT, \"shared\"),\n\t\t\tpath.join(SHARED_PERSISTENCE_TEMPLATE_ROOT, \"core\"),\n\t\t\tpath.join(\n\t\t\t\tSHARED_REST_HELPER_TEMPLATE_ROOT,\n\t\t\t\tpersistencePolicy === \"public\" ? \"public\" : \"auth\",\n\t\t\t),\n\t\t\tpath.join(\n\t\t\t\tSHARED_PERSISTENCE_TEMPLATE_ROOT,\n\t\t\t\tpersistencePolicy === \"public\" ? \"public\" : \"auth\",\n\t\t\t),\n\t\t];\n\t}\n\n\tif (templateId === \"compound\") {\n\t\tconst layers = [\n\t\t\tSHARED_BASE_TEMPLATE_ROOT,\n\t\t\tpath.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"core\"),\n\t\t];\n\n\t\tif (persistenceEnabled) {\n\t\t\tlayers.push(\n\t\t\t\tpath.join(SHARED_REST_HELPER_TEMPLATE_ROOT, \"shared\"),\n\t\t\t\tpath.join(SHARED_COMPOUND_TEMPLATE_ROOT, \"persistence\"),\n\t\t\t\tpath.join(\n\t\t\t\t\tSHARED_REST_HELPER_TEMPLATE_ROOT,\n\t\t\t\t\tpersistencePolicy === \"public\" ? \"public\" : \"auth\",\n\t\t\t\t),\n\t\t\t\tpath.join(\n\t\t\t\t\tSHARED_COMPOUND_TEMPLATE_ROOT,\n\t\t\t\t\tpersistencePolicy === \"public\" ? \"persistence-public\" : \"persistence-auth\",\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn layers;\n\t}\n\n\treturn [SHARED_BASE_TEMPLATE_ROOT];\n}\n\n/**\n * Returns the ordered overlay directories for a built-in template.\n *\n * Persistence templates include the shared base, the persistence core layer,\n * the selected policy layer, and the thin template overlay. All other built-ins\n * resolve to the shared base plus their own template directory.\n */\nexport function getBuiltInTemplateLayerDirs(\n\ttemplateId: BuiltInTemplateId,\n\toptions: BuiltInTemplateVariantOptions = {},\n): string[] {\n\treturn [\n\t\t...getBuiltInTemplateSharedLayerDirs(templateId, options),\n\t\tgetBuiltInTemplateOverlayDir(templateId),\n\t];\n}\n\n/**\n * Returns whether a missing built-in overlay directory is expected because the\n * template family no longer ships any Mustache assets in that layer.\n *\n * @param templateId Built-in template family being resolved.\n * @param layerDir Candidate overlay directory for that family.\n * @returns True when the missing layer can be skipped safely.\n */\nexport function isOmittableBuiltInTemplateLayerDir(\n\ttemplateId: BuiltInTemplateId,\n\tlayerDir: string,\n): boolean {\n\treturn (\n\t\tOMITTABLE_BUILT_IN_OVERLAY_TEMPLATE_IDS.has(templateId) &&\n\t\tlayerDir === getTemplateById(templateId).templateDir\n\t);\n}\n\nfunction resolveMaterializedTemplateLayerDirs(\n\ttemplateId: BuiltInTemplateId,\n\tlayerDirs: readonly string[],\n): string[] {\n\treturn layerDirs.flatMap((layerDir) => {\n\t\tif (fs.existsSync(layerDir)) {\n\t\t\treturn [layerDir];\n\t\t}\n\n\t\tif (isOmittableBuiltInTemplateLayerDir(templateId, layerDir)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tthrow new Error(`Built-in template layer is missing: ${layerDir}`);\n\t});\n}\n\nasync function materializeBuiltInTemplateSource(\n\ttemplateId: BuiltInTemplateId,\n\tlayerDirs: readonly string[],\n): Promise<MaterializedBuiltInTemplateSource> {\n\tconst template = getTemplateById(templateId);\n\tconst materializedLayerDirs = resolveMaterializedTemplateLayerDirs(\n\t\ttemplateId,\n\t\tlayerDirs,\n\t);\n\tconst tempRoot = await fsp.mkdtemp(path.join(os.tmpdir(), \"wp-typia-template-\"));\n\tconst templateDir = path.join(tempRoot, templateId);\n\n\ttry {\n\t\tawait fsp.mkdir(templateDir, { recursive: true });\n\n\t\tfor (const layerDir of materializedLayerDirs) {\n\t\t\tawait fsp.cp(layerDir, templateDir, {\n\t\t\t\trecursive: true,\n\t\t\t\tforce: true,\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tawait fsp.rm(tempRoot, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tid: templateId,\n\t\tdefaultCategory: template.defaultCategory,\n\t\tdescription: template.description,\n\t\tfeatures: template.features,\n\t\tformat: \"wp-typia\",\n\t\ttemplateDir,\n\t\tcleanup: async () => {\n\t\t\tawait fsp.rm(tempRoot, { force: true, recursive: true });\n\t\t},\n\t};\n}\n\nexport async function resolveBuiltInTemplateSourceFromLayerDirs(\n\ttemplateId: BuiltInTemplateId,\n\tlayerDirs: readonly string[],\n): Promise<MaterializedBuiltInTemplateSource> {\n\treturn materializeBuiltInTemplateSource(templateId, layerDirs);\n}\n\n/**\n * Materializes a built-in template into a temporary directory by copying each\n * resolved layer in order.\n *\n * Callers should invoke the returned `cleanup` function when they no longer\n * need the materialized directory. If copying fails, the temporary directory is\n * removed before the error is rethrown.\n */\nexport async function resolveBuiltInTemplateSource(\n\ttemplateId: BuiltInTemplateId,\n\toptions: BuiltInTemplateVariantOptions = {},\n): Promise<MaterializedBuiltInTemplateSource> {\n\treturn materializeBuiltInTemplateSource(\n\t\ttemplateId,\n\t\tgetBuiltInTemplateLayerDirs(templateId, options),\n\t);\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "D91CC684007ADD2464756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../wp-typia-project-tools/src/runtime/cli-diagnostics.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"/**\n * Shared human-readable diagnostics for non-interactive `wp-typia` CLI flows.\n */\nexport interface CliDiagnosticMessage {\n\tcommand: string;\n\tdetailLines: string[];\n\tsummary: string;\n}\n\ntype DoctorCheckLike = {\n\tdetail: string;\n\tlabel: string;\n\tstatus: \"pass\" | \"fail\";\n};\n\nconst DEFAULT_CLI_FAILURE_SUMMARIES: Record<string, string> = {\n\tadd: \"Unable to complete the requested add workflow.\",\n\tcreate: \"Unable to complete the requested create workflow.\",\n\tdoctor: \"One or more doctor checks failed.\",\n\tmigrate: \"Unable to complete the requested migration command.\",\n};\n\nconst MIN_CLI_WRAP_COLUMNS = 32;\n\nfunction parseCliColumns(value: string | undefined): number | null {\n\tif (typeof value !== \"string\" || value.trim().length === 0) {\n\t\treturn null;\n\t}\n\n\tconst parsed = Number.parseInt(value, 10);\n\treturn Number.isFinite(parsed) && parsed >= MIN_CLI_WRAP_COLUMNS ? parsed : null;\n}\n\nfunction resolveCliWrapColumns(streamColumns: number | undefined): number | null {\n\treturn parseCliColumns(process.env.COLUMNS) ??\n\t\t(typeof streamColumns === \"number\" && streamColumns >= MIN_CLI_WRAP_COLUMNS\n\t\t\t? streamColumns\n\t\t\t: null);\n}\n\nfunction wrapCliText(text: string, maxWidth: number): string[] {\n\tconst words = text.trim().split(/\\s+/u).filter((word) => word.length > 0);\n\n\tif (words.length === 0) {\n\t\treturn [\"\"];\n\t}\n\n\tconst lines: string[] = [];\n\tlet currentLine = words[0] ?? \"\";\n\n\tfor (const word of words.slice(1)) {\n\t\tconst nextLine = `${currentLine} ${word}`;\n\t\tif (nextLine.length <= maxWidth) {\n\t\t\tcurrentLine = nextLine;\n\t\t\tcontinue;\n\t\t}\n\n\t\tlines.push(currentLine);\n\t\tcurrentLine = word;\n\t}\n\n\tlines.push(currentLine);\n\treturn lines;\n}\n\nfunction formatWrappedPrefixedLine(\n\tprefix: string,\n\ttext: string,\n\tcolumns: number | null,\n\tcontinuationIndent = \" \",\n): string[] {\n\tconst singleLine = `${prefix}${text}`;\n\tif (columns === null || singleLine.length <= columns) {\n\t\treturn [singleLine];\n\t}\n\n\tconst words = text.trim().split(/\\s+/u).filter((word) => word.length > 0);\n\tif (words.length === 0) {\n\t\treturn [prefix.trimEnd()];\n\t}\n\n\tconst continuationWidth = Math.max(1, columns - continuationIndent.length);\n\tconst firstLineWidth = columns - prefix.length;\n\tif (firstLineWidth <= 0 || (words[0]?.length ?? 0) > firstLineWidth) {\n\t\treturn [\n\t\t\tprefix.trimEnd(),\n\t\t\t...wrapCliText(text, continuationWidth).map((line) => `${continuationIndent}${line}`),\n\t\t];\n\t}\n\n\tconst lines: string[] = [];\n\tlet currentPrefix = prefix;\n\tlet currentWidth = Math.max(1, columns - currentPrefix.length);\n\tlet currentLine = words[0] ?? \"\";\n\n\tfor (const word of words.slice(1)) {\n\t\tconst nextLine = `${currentLine} ${word}`;\n\t\tif (nextLine.length <= currentWidth) {\n\t\t\tcurrentLine = nextLine;\n\t\t\tcontinue;\n\t\t}\n\n\t\tlines.push(`${currentPrefix}${currentLine}`);\n\t\tcurrentPrefix = continuationIndent;\n\t\tcurrentWidth = continuationWidth;\n\t\tcurrentLine = word;\n\t}\n\n\tlines.push(`${currentPrefix}${currentLine}`);\n\treturn lines;\n}\n\nfunction formatCliDiagnosticBlock(message: CliDiagnosticMessage): string {\n\tconst columns = resolveCliWrapColumns(process.stderr.columns);\n\tconst lines = [\n\t\t`wp-typia ${message.command} failed`,\n\t\t...formatWrappedPrefixedLine(\"Summary: \", message.summary, columns),\n\t];\n\n\tif (message.detailLines.length > 0) {\n\t\tlines.push(\"Details:\");\n\t\tfor (const detailLine of message.detailLines) {\n\t\t\tlines.push(...formatWrappedPrefixedLine(\"- \", detailLine, columns));\n\t\t}\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction getErrorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\treturn error.message;\n\t}\n\n\treturn String(error);\n}\n\nfunction normalizeDetailLines(detailLines: Array<string | null | undefined>): string[] {\n\treturn detailLines\n\t\t.flatMap((detailLine) =>\n\t\t\ttypeof detailLine === \"string\" ? detailLine.split(\"\\n\") : [],\n\t\t)\n\t\t.map((detailLine) => detailLine.trim())\n\t\t.filter((detailLine) => detailLine.length > 0);\n}\n\n/**\n * Structured CLI failure carrying a stable summary/detail layout.\n */\nexport class CliDiagnosticError extends Error {\n\treadonly command: string;\n\treadonly detailLines: string[];\n\treadonly summary: string;\n\n\tconstructor(message: CliDiagnosticMessage, options?: ErrorOptions) {\n\t\tsuper(formatCliDiagnosticBlock(message), options);\n\t\tthis.command = message.command;\n\t\tthis.detailLines = [...message.detailLines];\n\t\tthis.name = \"CliDiagnosticError\";\n\t\tthis.summary = message.summary;\n\t}\n}\n\n/**\n * Narrow an unknown error to the shared CLI diagnostic error shape.\n */\nexport function isCliDiagnosticError(error: unknown): error is CliDiagnosticError {\n\treturn error instanceof CliDiagnosticError;\n}\n\n/**\n * Build a shared diagnostic error for one CLI command failure.\n */\nexport function createCliCommandError(options: {\n\tcommand: string;\n\tdetailLines?: string[];\n\terror?: unknown;\n\tsummary?: string;\n}): CliDiagnosticError {\n\tif (isCliDiagnosticError(options.error)) {\n\t\treturn options.error;\n\t}\n\n\tconst summary =\n\t\toptions.summary ?? DEFAULT_CLI_FAILURE_SUMMARIES[options.command] ?? \"Command failed.\";\n\tconst detailLines = normalizeDetailLines(\n\t\toptions.detailLines ?? [options.error === undefined ? undefined : getErrorMessage(options.error)],\n\t);\n\n\treturn new CliDiagnosticError(\n\t\t{\n\t\t\tcommand: options.command,\n\t\t\tdetailLines,\n\t\t\tsummary,\n\t\t},\n\t\toptions.error instanceof Error ? { cause: options.error } : undefined,\n\t);\n}\n\n/**\n * Render a CLI diagnostic block. Non-diagnostic errors fall back to their\n * plain message so existing non-command failures keep working.\n */\nexport function formatCliDiagnosticError(error: unknown): string {\n\tif (!isCliDiagnosticError(error)) {\n\t\treturn getErrorMessage(error);\n\t}\n\n\treturn formatCliDiagnosticBlock({\n\t\tcommand: error.command,\n\t\tdetailLines: error.detailLines,\n\t\tsummary: error.summary,\n\t});\n}\n\n/**\n * Format one human-readable doctor check row.\n */\nexport function formatDoctorCheckLine(check: DoctorCheckLike): string {\n\treturn formatWrappedPrefixedLine(\n\t\t`${check.status === \"pass\" ? \"PASS\" : \"FAIL\"} ${check.label}: `,\n\t\tcheck.detail,\n\t\tresolveCliWrapColumns(process.stdout.columns),\n\t).join(\"\\n\");\n}\n\n/**\n * Return the failing doctor checks from one doctor run.\n */\nexport function getFailingDoctorChecks<TCheck extends DoctorCheckLike>(\n\tchecks: readonly TCheck[],\n): TCheck[] {\n\treturn checks.filter((check) => check.status === \"fail\");\n}\n\n/**\n * Format the final doctor summary row.\n */\nexport function formatDoctorSummaryLine(checks: readonly DoctorCheckLike[]): string {\n\tconst failedChecks = getFailingDoctorChecks(checks);\n\treturn formatWrappedPrefixedLine(\n\t\t`${failedChecks.length === 0 ? \"PASS\" : \"FAIL\"} wp-typia doctor summary: `,\n\t\t`${checks.length - failedChecks.length}/${checks.length} checks passed`,\n\t\tresolveCliWrapColumns(process.stdout.columns),\n\t).join(\"\\n\");\n}\n\n/**\n * Build detail lines for doctor failures so the non-interactive formatter can\n * restate the failed checks after the streaming rows.\n */\nexport function getDoctorFailureDetailLines(checks: readonly DoctorCheckLike[]): string[] {\n\treturn getFailingDoctorChecks(checks).map((check) => `${check.label}: ${check.detail}`);\n}\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "859D9B42A7C024F764756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
|
File without changes
|