@wp-typia/project-tools 0.22.5 → 0.22.7

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.
Files changed (69) hide show
  1. package/dist/runtime/ai-feature-capability.js +20 -0
  2. package/dist/runtime/cli-add-block-json.d.ts +2 -2
  3. package/dist/runtime/cli-add-block-json.js +5 -4
  4. package/dist/runtime/cli-add-block.js +16 -11
  5. package/dist/runtime/cli-add-collision.js +213 -136
  6. package/dist/runtime/cli-add-help.js +1 -1
  7. package/dist/runtime/cli-add-kind-ids.d.ts +11 -0
  8. package/dist/runtime/cli-add-kind-ids.js +20 -0
  9. package/dist/runtime/cli-add-types.d.ts +2 -8
  10. package/dist/runtime/cli-add-types.js +1 -17
  11. package/dist/runtime/cli-add-workspace-ability-scaffold.d.ts +3 -1
  12. package/dist/runtime/cli-add-workspace-ability-scaffold.js +22 -5
  13. package/dist/runtime/cli-add-workspace-ability.d.ts +4 -0
  14. package/dist/runtime/cli-add-workspace-ability.js +5 -1
  15. package/dist/runtime/cli-add-workspace-admin-view-source.d.ts +7 -0
  16. package/dist/runtime/cli-add-workspace-admin-view-source.js +9 -10
  17. package/dist/runtime/cli-add-workspace-admin-view-types.d.ts +0 -2
  18. package/dist/runtime/cli-add-workspace-admin-view-types.js +0 -3
  19. package/dist/runtime/cli-add-workspace-ai-scaffold.js +14 -6
  20. package/dist/runtime/cli-add-workspace.js +8 -11
  21. package/dist/runtime/cli-doctor-workspace-bindings.js +2 -3
  22. package/dist/runtime/cli-doctor-workspace-blocks.js +2 -3
  23. package/dist/runtime/cli-doctor-workspace-features.js +6 -11
  24. package/dist/runtime/cli-doctor-workspace-shared.d.ts +8 -0
  25. package/dist/runtime/cli-doctor-workspace-shared.js +10 -0
  26. package/dist/runtime/cli-help.js +1 -1
  27. package/dist/runtime/cli-init-apply.d.ts +15 -0
  28. package/dist/runtime/cli-init-apply.js +99 -0
  29. package/dist/runtime/cli-init-package-json.d.ts +19 -0
  30. package/dist/runtime/cli-init-package-json.js +191 -0
  31. package/dist/runtime/cli-init-plan-presentation.d.ts +16 -0
  32. package/dist/runtime/cli-init-plan-presentation.js +74 -0
  33. package/dist/runtime/cli-init-plan.d.ts +39 -0
  34. package/dist/runtime/cli-init-plan.js +303 -0
  35. package/dist/runtime/cli-init-templates.d.ts +27 -0
  36. package/dist/runtime/cli-init-templates.js +244 -0
  37. package/dist/runtime/cli-init-types.d.ts +84 -0
  38. package/dist/runtime/cli-init-types.js +3 -0
  39. package/dist/runtime/cli-init.d.ts +4 -100
  40. package/dist/runtime/cli-init.js +6 -878
  41. package/dist/runtime/fs-async.d.ts +28 -0
  42. package/dist/runtime/fs-async.js +53 -0
  43. package/dist/runtime/package-managers.js +1 -1
  44. package/dist/runtime/package-versions.d.ts +1 -1
  45. package/dist/runtime/package-versions.js +1 -1
  46. package/dist/runtime/php-utils.d.ts +16 -0
  47. package/dist/runtime/php-utils.js +258 -1
  48. package/dist/runtime/scaffold-apply-utils.js +10 -20
  49. package/dist/runtime/scaffold-bootstrap.js +6 -8
  50. package/dist/runtime/scaffold-compatibility.d.ts +15 -3
  51. package/dist/runtime/scaffold-compatibility.js +42 -11
  52. package/dist/runtime/scaffold-documents.js +12 -0
  53. package/dist/runtime/scaffold-package-manager-files.js +4 -3
  54. package/dist/runtime/string-case.d.ts +5 -0
  55. package/dist/runtime/string-case.js +54 -2
  56. package/dist/runtime/template-source-cache.d.ts +19 -0
  57. package/dist/runtime/template-source-cache.js +164 -28
  58. package/dist/runtime/template-source-external.d.ts +7 -0
  59. package/dist/runtime/template-source-external.js +22 -5
  60. package/dist/runtime/template-source-normalization.d.ts +1 -1
  61. package/dist/runtime/template-source-normalization.js +12 -12
  62. package/dist/runtime/template-source-remote.d.ts +14 -0
  63. package/dist/runtime/template-source-remote.js +91 -15
  64. package/dist/runtime/template-source.js +35 -25
  65. package/dist/runtime/typia-llm.js +7 -0
  66. package/dist/runtime/version-floor.js +8 -2
  67. package/dist/runtime/workspace-inventory.d.ts +16 -14
  68. package/dist/runtime/workspace-inventory.js +58 -14
  69. package/package.json +6 -1
@@ -0,0 +1,244 @@
1
+ import path from "node:path";
2
+ import { quoteTsString } from "./cli-add-shared.js";
3
+ import { updateWorkspaceInventorySource } from "./workspace-inventory.js";
4
+ function buildRetrofitBlockConfigEntry(target) {
5
+ return [
6
+ "\t{",
7
+ `\t\tslug: ${quoteTsString(target.slug)},`,
8
+ `\t\tattributeTypeName: ${quoteTsString(target.attributeTypeName)},`,
9
+ `\t\tblockJsonFile: ${quoteTsString(target.blockJsonFile)},`,
10
+ `\t\tmanifestFile: ${quoteTsString(target.manifestFile)},`,
11
+ `\t\ttypesFile: ${quoteTsString(target.typesFile)},`,
12
+ "\t},",
13
+ ].join("\n");
14
+ }
15
+ /**
16
+ * Generate the `scripts/block-config.ts` source for retrofit block targets.
17
+ *
18
+ * @param targets Existing block targets detected by the init plan.
19
+ * @returns Complete TypeScript source for the generated block config helper.
20
+ */
21
+ export function buildRetrofitBlockConfigSource(targets) {
22
+ const blockEntries = targets.map(buildRetrofitBlockConfigEntry).join("\n");
23
+ const baseSource = `export interface WorkspaceBlockConfig {
24
+ \tattributeTypeName: string;
25
+ \tapiTypesFile?: string;
26
+ \tblockJsonFile?: string;
27
+ \tmanifestFile?: string;
28
+ \topenApiFile?: string;
29
+ \trestManifest?: ReturnType<
30
+ \t\ttypeof import( '@wp-typia/block-runtime/metadata-core' ).defineEndpointManifest
31
+ \t>;
32
+ \tslug: string;
33
+ \ttypesFile: string;
34
+ }
35
+
36
+ export const BLOCKS: WorkspaceBlockConfig[] = [
37
+ ${blockEntries}
38
+ ];
39
+ `;
40
+ return `${updateWorkspaceInventorySource(baseSource)}\n`;
41
+ }
42
+ /**
43
+ * Generate the `scripts/sync-types-to-block-json.ts` helper source.
44
+ *
45
+ * @returns Complete TypeScript source for the metadata sync helper.
46
+ */
47
+ export function buildRetrofitSyncTypesScriptSource() {
48
+ return `/* eslint-disable no-console */
49
+ import path from 'node:path';
50
+
51
+ import { syncBlockMetadata } from '@wp-typia/block-runtime/metadata-core';
52
+
53
+ import { BLOCKS } from './block-config';
54
+
55
+ function parseCliOptions( argv: string[] ) {
56
+ \tconst options = {
57
+ \t\tcheck: false,
58
+ \t};
59
+
60
+ \tfor ( const argument of argv ) {
61
+ \t\tif ( argument === '--check' ) {
62
+ \t\t\toptions.check = true;
63
+ \t\t\tcontinue;
64
+ \t\t}
65
+
66
+ \t\tthrow new Error( \`Unknown sync-types flag: \${ argument }\` );
67
+ \t}
68
+
69
+ \treturn options;
70
+ }
71
+
72
+ async function main() {
73
+ \tconst options = parseCliOptions( process.argv.slice( 2 ) );
74
+
75
+ \tif ( BLOCKS.length === 0 ) {
76
+ \t\tconsole.log(
77
+ \t\t\toptions.check
78
+ \t\t\t\t? 'ℹ️ No retrofit blocks are registered yet. \`sync-types --check\` is already clean.'
79
+ \t\t\t\t: 'ℹ️ No retrofit blocks are registered yet. Add one block target to scripts/block-config.ts before rerunning sync-types.'
80
+ \t\t);
81
+ \t\treturn;
82
+ \t}
83
+
84
+ \tfor ( const block of BLOCKS ) {
85
+ \t\tconst blockDir = path.dirname( block.typesFile );
86
+ \t\tconst blockJsonFile =
87
+ \t\t\tblock.blockJsonFile ?? path.join( blockDir, 'block.json' );
88
+ \t\tconst manifestFile =
89
+ \t\t\tblock.manifestFile ?? path.join( blockDir, 'typia.manifest.json' );
90
+ \t\tconst manifestDir = path.dirname( manifestFile );
91
+ \t\tconst result = await syncBlockMetadata(
92
+ \t\t\t{
93
+ \t\t\t\tblockJsonFile,
94
+ \t\t\t\tjsonSchemaFile: path.join( manifestDir, 'typia.schema.json' ),
95
+ \t\t\t\tmanifestFile,
96
+ \t\t\t\topenApiFile: path.join( manifestDir, 'typia.openapi.json' ),
97
+ \t\t\t\tsourceTypeName: block.attributeTypeName,
98
+ \t\t\t\ttypesFile: block.typesFile,
99
+ \t\t\t},
100
+ \t\t\t{
101
+ \t\t\t\tcheck: options.check,
102
+ \t\t\t}
103
+ \t\t);
104
+ \t\tfor ( const warning of result.lossyProjectionWarnings ) {
105
+ \t\t\tconsole.warn( \`⚠️ \${ block.slug }: \${ warning }\` );
106
+ \t\t}
107
+ \t\tfor ( const warning of result.phpGenerationWarnings ) {
108
+ \t\t\tconsole.warn( \`⚠️ \${ block.slug }: \${ warning }\` );
109
+ \t\t}
110
+
111
+ \t\tconsole.log(
112
+ \t\t\toptions.check
113
+ \t\t\t\t? \`✅ \${ block.slug }: block.json, typia.manifest.json, typia-validator.php, typia.schema.json, and typia.openapi.json are already up to date with the TypeScript types!\`
114
+ \t\t\t\t: \`✅ \${ block.slug }: block.json, typia.manifest.json, typia-validator.php, typia.schema.json, and typia.openapi.json were generated from TypeScript types!\`
115
+ \t\t);
116
+ \t\tconsole.log( '📝 Generated attributes:', result.attributeNames );
117
+ \t}
118
+ }
119
+
120
+ main().catch( ( error ) => {
121
+ \tconsole.error( '❌ Type sync failed:', error );
122
+ \tprocess.exit( 1 );
123
+ } );
124
+ `;
125
+ }
126
+ /**
127
+ * Generate the `scripts/sync-project.ts` orchestration helper source.
128
+ *
129
+ * @returns Complete TypeScript source for the project sync entrypoint.
130
+ */
131
+ export function buildRetrofitSyncProjectScriptSource() {
132
+ return `/* eslint-disable no-console */
133
+ import { spawnSync } from 'node:child_process';
134
+ import fs from 'node:fs';
135
+ import path from 'node:path';
136
+
137
+ interface SyncCliOptions {
138
+ \tcheck: boolean;
139
+ }
140
+
141
+ function parseCliOptions( argv: string[] ): SyncCliOptions {
142
+ \tconst options: SyncCliOptions = {
143
+ \t\tcheck: false,
144
+ \t};
145
+
146
+ \tfor ( const argument of argv ) {
147
+ \t\tif ( argument === '--check' ) {
148
+ \t\t\toptions.check = true;
149
+ \t\t\tcontinue;
150
+ \t\t}
151
+
152
+ \t\tthrow new Error( \`Unknown sync flag: \${ argument }\` );
153
+ \t}
154
+
155
+ \treturn options;
156
+ }
157
+
158
+ function getSyncScriptEnv() {
159
+ \tconst binaryDirectory = path.join( process.cwd(), 'node_modules', '.bin' );
160
+ \tconst inheritedPath =
161
+ \t\tprocess.env.PATH ??
162
+ \t\tprocess.env.Path ??
163
+ \t\tObject.entries( process.env ).find(
164
+ \t\t\t( [ key ] ) => key.toLowerCase() === 'path'
165
+ \t\t)?.[ 1 ] ??
166
+ \t\t'';
167
+ \tconst nextPath = fs.existsSync( binaryDirectory )
168
+ \t\t? \`\${ binaryDirectory }\${ path.delimiter }\${ inheritedPath }\`
169
+ \t\t: inheritedPath;
170
+ \tconst env: NodeJS.ProcessEnv = {
171
+ \t\t...process.env,
172
+ \t};
173
+
174
+ \tfor ( const key of Object.keys( env ) ) {
175
+ \t\tif ( key.toLowerCase() === 'path' ) {
176
+ \t\t\tdelete env[ key ];
177
+ \t\t}
178
+ \t}
179
+
180
+ \tenv.PATH = nextPath;
181
+
182
+ \treturn env;
183
+ }
184
+
185
+ function runSyncScript( scriptPath: string, options: SyncCliOptions ) {
186
+ \tconst args = [ scriptPath ];
187
+ \tif ( options.check ) {
188
+ \t\targs.push( '--check' );
189
+ \t}
190
+
191
+ \tconst result = spawnSync( 'tsx', args, {
192
+ \t\tcwd: process.cwd(),
193
+ \t\tenv: getSyncScriptEnv(),
194
+ \t\tshell: process.platform === 'win32',
195
+ \t\tstdio: 'inherit',
196
+ \t} );
197
+
198
+ \tif ( result.error ) {
199
+ \t\tif ( ( result.error as NodeJS.ErrnoException ).code === 'ENOENT' ) {
200
+ \t\t\tthrow new Error(
201
+ \t\t\t\t'Unable to resolve \`tsx\` for project sync. Install project dependencies or rerun the command through your package manager.'
202
+ \t\t\t);
203
+ \t\t}
204
+
205
+ \t\tthrow result.error;
206
+ \t}
207
+
208
+ \tif ( result.status !== 0 ) {
209
+ \t\tthrow new Error( \`Sync script failed: \${ scriptPath }\` );
210
+ \t}
211
+ }
212
+
213
+ async function main() {
214
+ \tconst options = parseCliOptions( process.argv.slice( 2 ) );
215
+ \tconst syncTypesScriptPath = path.join( 'scripts', 'sync-types-to-block-json.ts' );
216
+
217
+ \trunSyncScript( syncTypesScriptPath, options );
218
+
219
+ \tconsole.log(
220
+ \t\toptions.check
221
+ \t\t\t? '✅ Generated project metadata is already synchronized.'
222
+ \t\t\t: '✅ Generated project metadata was synchronized.'
223
+ \t);
224
+ }
225
+
226
+ main().catch( ( error ) => {
227
+ \tconsole.error( '❌ Project sync failed:', error );
228
+ \tprocess.exit( 1 );
229
+ } );
230
+ `;
231
+ }
232
+ /**
233
+ * Build the helper file source map written by `wp-typia init --apply`.
234
+ *
235
+ * @param blockTargets Existing block targets detected by the init plan.
236
+ * @returns Relative helper file paths mapped to their generated source.
237
+ */
238
+ export function buildRetrofitHelperFiles(blockTargets) {
239
+ return {
240
+ [path.join("scripts", "block-config.ts")]: buildRetrofitBlockConfigSource(blockTargets),
241
+ [path.join("scripts", "sync-project.ts")]: buildRetrofitSyncProjectScriptSource(),
242
+ [path.join("scripts", "sync-types-to-block-json.ts")]: buildRetrofitSyncTypesScriptSource(),
243
+ };
244
+ }
@@ -0,0 +1,84 @@
1
+ import type { PackageManagerId } from "./package-managers.js";
2
+ import type { WorkspacePackageJson } from "./workspace-project.js";
3
+ export type InitCommandMode = "apply" | "preview-only";
4
+ export type InitPlanAction = "add" | "update";
5
+ export type InitPlanStatus = "already-initialized" | "applied" | "preview";
6
+ export type InitPlanLayoutKind = "generated-project" | "multi-block" | "official-workspace" | "single-block" | "unsupported";
7
+ export interface InitDependencyChange {
8
+ action: InitPlanAction;
9
+ currentValue?: string;
10
+ name: string;
11
+ requiredValue: string;
12
+ }
13
+ export interface InitScriptChange {
14
+ action: InitPlanAction;
15
+ currentValue?: string;
16
+ name: string;
17
+ requiredValue: string;
18
+ }
19
+ export interface InitPackageManagerFieldChange {
20
+ action: InitPlanAction;
21
+ currentValue?: string;
22
+ requiredValue: string;
23
+ }
24
+ export interface InitFilePlan {
25
+ action: InitPlanAction;
26
+ path: string;
27
+ purpose: string;
28
+ }
29
+ /**
30
+ * One existing block target that `wp-typia init` can retrofit into the shared
31
+ * sync surface.
32
+ *
33
+ * Each path stays relative to the project root so generated helper scripts can
34
+ * resolve the current block metadata and TypeScript source of truth without
35
+ * guessing layout-specific locations.
36
+ */
37
+ export interface RetrofitInitBlockTarget {
38
+ attributeTypeName: string;
39
+ blockJsonFile: string;
40
+ blockName: string;
41
+ manifestFile: string;
42
+ saveFile: string;
43
+ slug: string;
44
+ typesFile: string;
45
+ }
46
+ /**
47
+ * Preview or apply result returned by `wp-typia init`.
48
+ *
49
+ * The plan describes the detected retrofit layout, package-level mutations,
50
+ * helper files, next steps, and any warnings gathered while preparing or
51
+ * applying the minimum sync surface for an existing project.
52
+ */
53
+ export interface RetrofitInitPlan {
54
+ blockTargets: RetrofitInitBlockTarget[];
55
+ commandMode: InitCommandMode;
56
+ detectedLayout: {
57
+ blockNames: string[];
58
+ description: string;
59
+ kind: InitPlanLayoutKind;
60
+ };
61
+ generatedArtifacts: string[];
62
+ nextSteps: string[];
63
+ notes: string[];
64
+ packageChanges: {
65
+ addDevDependencies: InitDependencyChange[];
66
+ packageManagerField?: InitPackageManagerFieldChange;
67
+ scripts: InitScriptChange[];
68
+ };
69
+ plannedFiles: InitFilePlan[];
70
+ packageManager: PackageManagerId;
71
+ projectDir: string;
72
+ projectName: string;
73
+ status: InitPlanStatus;
74
+ summary: string;
75
+ }
76
+ export type ProjectPackageJson = WorkspacePackageJson & {
77
+ dependencies?: Record<string, string>;
78
+ devDependencies?: Record<string, string>;
79
+ private?: boolean;
80
+ version?: string;
81
+ };
82
+ export declare const SUPPORTED_RETROFIT_LAYOUT_NOTE = "Supported retrofit layouts currently mirror the migration bootstrap detector: `src/block.json` + `src/types.ts` + `src/save.tsx`, legacy root `block.json` + `src/types.ts` + `src/save.tsx`, or multi-block `src/blocks/*/block.json` workspaces.";
83
+ export declare const RETROFIT_APPLY_PREVIEW_NOTE = "If you rerun with `wp-typia init --apply`, package.json and generated helper files are snapshotted and rolled back automatically if a write fails.";
84
+ export declare const RETROFIT_ROLLBACK_NOTE = "Apply mode writes package.json and generated helper files with rollback-on-failure protection.";
@@ -0,0 +1,3 @@
1
+ export const SUPPORTED_RETROFIT_LAYOUT_NOTE = "Supported retrofit layouts currently mirror the migration bootstrap detector: `src/block.json` + `src/types.ts` + `src/save.tsx`, legacy root `block.json` + `src/types.ts` + `src/save.tsx`, or multi-block `src/blocks/*/block.json` workspaces.";
2
+ export const RETROFIT_APPLY_PREVIEW_NOTE = "If you rerun with `wp-typia init --apply`, package.json and generated helper files are snapshotted and rolled back automatically if a write fails.";
3
+ export const RETROFIT_ROLLBACK_NOTE = "Apply mode writes package.json and generated helper files with rollback-on-failure protection.";
@@ -1,102 +1,7 @@
1
- import { type PackageManagerId } from "./package-managers.js";
2
- type InitCommandMode = "apply" | "preview-only";
3
- type InitPlanAction = "add" | "update";
4
- type InitPlanStatus = "already-initialized" | "applied" | "preview";
5
- type InitPlanLayoutKind = "generated-project" | "multi-block" | "official-workspace" | "single-block" | "unsupported";
6
- interface InitDependencyChange {
7
- action: InitPlanAction;
8
- currentValue?: string;
9
- name: string;
10
- requiredValue: string;
11
- }
12
- interface InitScriptChange {
13
- action: InitPlanAction;
14
- currentValue?: string;
15
- name: string;
16
- requiredValue: string;
17
- }
18
- interface InitPackageManagerFieldChange {
19
- action: InitPlanAction;
20
- currentValue?: string;
21
- requiredValue: string;
22
- }
23
- interface InitFilePlan {
24
- action: InitPlanAction;
25
- path: string;
26
- purpose: string;
27
- }
28
- /**
29
- * One existing block target that `wp-typia init` can retrofit into the shared
30
- * sync surface.
31
- *
32
- * Each path stays relative to the project root so generated helper scripts can
33
- * resolve the current block metadata and TypeScript source of truth without
34
- * guessing layout-specific locations.
35
- */
36
- export interface RetrofitInitBlockTarget {
37
- attributeTypeName: string;
38
- blockJsonFile: string;
39
- blockName: string;
40
- manifestFile: string;
41
- saveFile: string;
42
- slug: string;
43
- typesFile: string;
44
- }
45
- /**
46
- * Preview or apply result returned by `wp-typia init`.
47
- *
48
- * The plan describes the detected retrofit layout, package-level mutations,
49
- * helper files, next steps, and any warnings gathered while preparing or
50
- * applying the minimum sync surface for an existing project.
51
- */
52
- export interface RetrofitInitPlan {
53
- blockTargets: RetrofitInitBlockTarget[];
54
- commandMode: InitCommandMode;
55
- detectedLayout: {
56
- blockNames: string[];
57
- description: string;
58
- kind: InitPlanLayoutKind;
59
- };
60
- generatedArtifacts: string[];
61
- nextSteps: string[];
62
- notes: string[];
63
- packageChanges: {
64
- addDevDependencies: InitDependencyChange[];
65
- packageManagerField?: InitPackageManagerFieldChange;
66
- scripts: InitScriptChange[];
67
- };
68
- plannedFiles: InitFilePlan[];
69
- packageManager: PackageManagerId;
70
- projectDir: string;
71
- projectName: string;
72
- status: InitPlanStatus;
73
- summary: string;
74
- }
75
- /**
76
- * Inspect one project directory and return the current retrofit init plan.
77
- *
78
- * @param projectDir Project root or nested path that should be analyzed.
79
- * @param options Optional package-manager override used for emitted scripts and
80
- * follow-up guidance.
81
- * @returns The preview-only retrofit init plan for the resolved project.
82
- */
83
- export declare function getInitPlan(projectDir: string, options?: {
84
- packageManager?: string;
85
- }): RetrofitInitPlan;
86
- /**
87
- * Apply the previewed retrofit init plan to disk.
88
- *
89
- * The command snapshots package.json and generated helper targets before
90
- * writing, then rolls those files back automatically if any write fails.
91
- *
92
- * @param projectDir Project root that should receive the retrofit surface.
93
- * @param options Optional package-manager override used for emitted scripts and
94
- * follow-up guidance.
95
- * @returns The applied retrofit init plan describing the persisted changes.
96
- */
97
- export declare function applyInitPlan(projectDir: string, options?: {
98
- packageManager?: string;
99
- }): Promise<RetrofitInitPlan>;
1
+ import type { RetrofitInitPlan } from "./cli-init-types.js";
2
+ export { applyInitPlan } from "./cli-init-apply.js";
3
+ export { getInitPlan } from "./cli-init-plan.js";
4
+ export type { InitCommandMode, InitDependencyChange, InitFilePlan, InitPackageManagerFieldChange, InitPlanAction, InitPlanLayoutKind, InitPlanStatus, InitScriptChange, RetrofitInitBlockTarget, RetrofitInitPlan, } from "./cli-init-types.js";
100
5
  /**
101
6
  * Execute `wp-typia init` in preview or apply mode.
102
7
  *
@@ -110,4 +15,3 @@ export declare function runInitCommand(options: {
110
15
  packageManager?: string;
111
16
  projectDir: string;
112
17
  }): Promise<RetrofitInitPlan>;
113
- export {};