@wp-playground/blueprints 3.1.43 → 3.1.45

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 (40) hide show
  1. package/blueprint-schema-validator.d.ts +4 -1
  2. package/blueprint-schema-validator.js +2814 -1768
  3. package/blueprint-schema.json +3110 -1
  4. package/blueprint-v2-schema-validator.d.ts +5 -0
  5. package/blueprint-v2-schema-validator.js +37821 -0
  6. package/index.cjs +1044 -150
  7. package/index.cjs.map +1 -1
  8. package/index.d.ts +9 -4
  9. package/index.js +7853 -4819
  10. package/index.js.map +1 -1
  11. package/lib/compile.d.ts +32 -0
  12. package/lib/invalid-blueprint-error.d.ts +5 -0
  13. package/lib/is-git-repo-url.d.ts +8 -0
  14. package/lib/reflection.d.ts +1 -1
  15. package/lib/resolve-runtime-configuration.d.ts +13 -1
  16. package/lib/steps/import-wxr.d.ts +44 -0
  17. package/lib/steps/install-plugin.d.ts +12 -0
  18. package/lib/steps/install-theme.d.ts +9 -0
  19. package/lib/steps/reset-data.d.ts +9 -2
  20. package/lib/v1/compile.d.ts +3 -5
  21. package/lib/v2/blueprint-v2-declaration.d.ts +0 -10
  22. package/lib/v2/compile.d.ts +138 -0
  23. package/lib/v2/resolve-runtime-configuration.d.ts +20 -0
  24. package/lib/v2/validate-blueprint-v2.d.ts +17 -0
  25. package/lib/v2/wep-1-blueprint-v2-schema/appendix-A-blueprint-v2-schema.d.ts +202 -103
  26. package/lib/v2/wep-1-blueprint-v2-schema/appendix-B-data-sources.d.ts +77 -18
  27. package/lib/validate-blueprint-declaration.d.ts +6 -0
  28. package/package.json +11 -11
  29. package/schema-readme.md +6 -5
  30. package/tests/v2/schema-conformance-fixtures.d.ts +2033 -0
  31. package/validate-blueprint-v2-C3rgpKFU.js +17393 -0
  32. package/validate-blueprint-v2-C3rgpKFU.js.map +1 -0
  33. package/validate-blueprint-v2-CJ8Xbxyz.cjs +201 -0
  34. package/validate-blueprint-v2-CJ8Xbxyz.cjs.map +1 -0
  35. package/blueprints-Gs5fAvvo.cjs +0 -2
  36. package/blueprints-Gs5fAvvo.cjs.map +0 -1
  37. package/blueprints-pMn3V9MZ.js +0 -5
  38. package/blueprints-pMn3V9MZ.js.map +0 -1
  39. package/lib/v2/get-v2-runner.d.ts +0 -1
  40. package/lib/v2/run-blueprint-v2.d.ts +0 -36
@@ -30,9 +30,9 @@ export declare namespace V2Schema {
30
30
  * for declaring options or opinions for different application contexts.
31
31
  *
32
32
  * To keep Blueprints portable and focused on site creation, this specification
33
- * only allows two Playground-specific options. Other environments cannot declare
34
- * additional options. Future versions of this specification may allow additional
35
- * options – they will be discussed on a case-by-case basis.
33
+ * only allows a small set of Playground-specific options. Other environments
34
+ * cannot declare additional options. Future versions of this specification may
35
+ * allow additional options – they will be discussed on a case-by-case basis.
36
36
  */
37
37
  applicationOptions?: {
38
38
  /**
@@ -62,8 +62,53 @@ export declare namespace V2Schema {
62
62
  * @default false
63
63
  */
64
64
  networkAccess?: boolean;
65
+ /**
66
+ * Optional PHP extensions to load in the Playground runtime before executing
67
+ * the Blueprint. Extensions omitted from this list are not disabled.
68
+ */
69
+ loadPhpExtensions?: Array<'intl'>;
65
70
  };
66
71
  };
72
+ /**
73
+ * The content from a vanilla WordPress installation to retain before
74
+ * applying the rest of the Blueprint. `keep-all` leaves the installation
75
+ * unchanged, `empty` removes its posts, pages, and comments, a content type
76
+ * retains only that type, and a list retains the selected content types.
77
+ *
78
+ * This policy runs only when the current invocation creates vanilla
79
+ * WordPress. It is skipped when applying the Blueprint to an existing site,
80
+ * so it cannot erase content from that site. It is not valid when
81
+ * `wordpressVersion` is "none". Metadata and relationships follow their
82
+ * parent content. Empty content tables have their sequences reset so
83
+ * subsequent imports receive the identifiers they would on a site created
84
+ * without default content.
85
+ *
86
+ * Comments can only be retained together with both posts and pages because
87
+ * the schema cannot know which type contains their parent records.
88
+ *
89
+ * @default "keep-all"
90
+ */
91
+ contentBaseline?: 'keep-all' | 'empty' | Exclude<ContentType, 'comments'> | [ContentType, ...ContentType[]];
92
+ /**
93
+ * The users from a vanilla WordPress installation to retain before applying
94
+ * the rest of the Blueprint. `keep-all` retains the administrator created by
95
+ * WordPress, while `empty` removes it before creating the users declared by
96
+ * this Blueprint.
97
+ *
98
+ * Empty user tables have their sequences reset before those users are
99
+ * created.
100
+ *
101
+ * An empty user baseline requires an empty content baseline so removing the
102
+ * installation administrator cannot silently delete or orphan authored
103
+ * content. It also requires at least one declared administrator, ensuring
104
+ * the resulting WordPress site remains manageable.
105
+ *
106
+ * Like `contentBaseline`, this policy is skipped when applying the Blueprint
107
+ * to an existing site and is not valid when `wordpressVersion` is "none".
108
+ *
109
+ * @default "keep-all"
110
+ */
111
+ usersBaseline?: 'keep-all' | 'empty';
67
112
  /**
68
113
  * SITE OPTIONS {{{
69
114
  *
@@ -146,25 +191,29 @@ export declare namespace V2Schema {
146
191
  */
147
192
  constants?: WordPressConstants;
148
193
  /**
149
- * WordPress version to install.
194
+ * WordPress version to install or require.
150
195
  *
151
- * When we're setting up the entire site, this will be used to resolve the
152
- * installed WordPress version. The latest version matching the constraint
153
- * will be chosen.
196
+ * A string selects the version for a newly created site. A branch such as
197
+ * `6.8` selects the newest available release in that branch. Strings are
198
+ * selection hints and do not reject an existing site. `"none"` boots the
199
+ * PHP runtime without downloading WordPress or initializing its database.
154
200
  *
155
- * When we're applying this Blueprint to an existing site, this will be used
156
- * as an integrity check to verify that the currently installed version of
157
- * WordPress installed on the target site matches the constraint.
201
+ * An object declares compatibility bounds. The runner chooses the newest
202
+ * available release within those bounds for a new site and verifies an
203
+ * existing site's installed version against them. `preferred` influences
204
+ * new-site selection without narrowing compatibility.
158
205
  *
159
- * @default "latest".
206
+ * A data reference supplies the WordPress files for a newly created site.
207
+ *
208
+ * @default "latest"
160
209
  */
161
210
  wordpressVersion?: DataSources.WordPressVersion | DataSources.DataReference | {
162
- min: DataSources.WordPressVersion;
163
- max?: DataSources.WordPressVersion;
211
+ min: DataSources.WordPressVersionConstraintVersion;
212
+ max?: DataSources.WordPressVersionConstraintVersion;
164
213
  /**
165
214
  * @default "latest"
166
215
  */
167
- preferred?: DataSources.WordPressVersion;
216
+ preferred?: DataSources.WordPressVersionPreferredVersion;
168
217
  };
169
218
  /**
170
219
  * The PHP version required for this Blueprint to work.
@@ -180,9 +229,9 @@ export declare namespace V2Schema {
180
229
  * @see https://github.com/WordPress/blueprints-library/issues/47
181
230
  */
182
231
  phpVersion?: DataSources.PHPVersion | {
183
- min?: DataSources.PHPVersion;
184
- recommended?: DataSources.PHPVersion;
185
- max?: DataSources.PHPVersion;
232
+ min?: DataSources.PHPVersionConstraintVersion;
233
+ recommended?: DataSources.PHPVersionConstraintVersion;
234
+ max?: DataSources.PHPVersionConstraintVersion;
186
235
  };
187
236
  /**
188
237
  * The theme to install and also activate.
@@ -196,9 +245,13 @@ export declare namespace V2Schema {
196
245
  * @example `"activeTheme": "adventurer@4.6.0"`
197
246
  * @example
198
247
  * ```json
199
- * "activeTheme": {
200
- * "source": "https://github.com/richtabor/kanso/archive/refs/heads/main.zip",
201
- * "id": "kanso"
248
+ * {
249
+ * "version": 2,
250
+ * "activeTheme": {
251
+ * "source": "https://github.com/richtabor/kanso/archive/refs/heads/main.zip",
252
+ * "targetDirectoryName": "kanso",
253
+ * "importStarterContent": true
254
+ * }
202
255
  * }
203
256
  * ```
204
257
  */
@@ -209,14 +262,17 @@ export declare namespace V2Schema {
209
262
  * Example:
210
263
  *
211
264
  * ```json
212
- * themes: [
213
- * "stylish-press-theme",
214
- * "adventurer@4.6.0",
215
- * {
216
- * "source": "https://github.com/richtabor/kanso/archive/refs/heads/main.zip",
217
- * "id": "kanso"
218
- * }
219
- * ]
265
+ * {
266
+ * "version": 2,
267
+ * "themes": [
268
+ * "stylish-press-theme",
269
+ * "adventurer@4.6.0",
270
+ * {
271
+ * "source": "https://github.com/richtabor/kanso/archive/refs/heads/main.zip",
272
+ * "targetDirectoryName": "kanso"
273
+ * }
274
+ * ]
275
+ * }
220
276
  * ```
221
277
  */
222
278
  themes?: ThemeDefinition[];
@@ -226,16 +282,20 @@ export declare namespace V2Schema {
226
282
  * Example:
227
283
  *
228
284
  * ```json
229
- * plugins: [
230
- * "jetpack",
231
- * "akismet@6.4.3",
232
- * "./query-monitor.php",
233
- * "./code-block.zip",
234
- * {
235
- * "source": "https://github.com/woocommerce/woocommerce/archive/refs/heads/6.4.3.zip",
236
- * "active": false
237
- * }
238
- * ]
285
+ * {
286
+ * "version": 2,
287
+ * "plugins": [
288
+ * "jetpack",
289
+ * "akismet@6.4.3",
290
+ * "./query-monitor.php",
291
+ * "./code-block.zip",
292
+ * {
293
+ * "source": "https://github.com/woocommerce/woocommerce/archive/refs/heads/6.4.3.zip",
294
+ * "active": false
295
+ * }
296
+ * ]
297
+ * }
298
+ * ```
239
299
  */
240
300
  plugins?: PluginDefinition[];
241
301
  /**
@@ -244,14 +304,15 @@ export declare namespace V2Schema {
244
304
  * Example:
245
305
  *
246
306
  * ```json
247
- * muPlugins: [
248
- * {
249
- * "file": {
307
+ * {
308
+ * "version": 2,
309
+ * "muPlugins": [
310
+ * {
250
311
  * "filename": "addFilter-0.php",
251
312
  * "content": "<?php add_action( 'requests-requests.before_request', function( &$url ) {\n$url = 'https://playground.wordpress.net/cors-proxy.php?' . $url;\n} );"
252
313
  * }
253
- * }
254
- * ]
314
+ * ]
315
+ * }
255
316
  * ```
256
317
  */
257
318
  muPlugins?: Array<DataSources.DataReference>;
@@ -263,6 +324,8 @@ export declare namespace V2Schema {
263
324
  * throw an error.
264
325
  *
265
326
  * See https://github.com/WordPress/blueprints-library/issues/32 for more context.
327
+ *
328
+ * @propertyNames { "pattern": "^[a-z0-9_-]{1,20}$" }
266
329
  */
267
330
  postTypes?: Record<PostTypeKey, PostType | DataSources.ExecutionContextPath>;
268
331
  /**
@@ -305,7 +368,7 @@ export declare namespace V2Schema {
305
368
  * }
306
369
  * ```
307
370
  */
308
- fonts?: Record<string, DataSources.DataReference | FontCollection>;
371
+ fonts?: Record<string, DataSources.FileDataReference | FontCollection>;
309
372
  /**
310
373
  * A list of media files to upload to the WordPress Media Library – in formats
311
374
  * supported by the WordPress Media Library.
@@ -345,6 +408,11 @@ export declare namespace V2Schema {
345
408
  }>;
346
409
  additionalStepsAfterExecution?: Array<Step>;
347
410
  };
411
+ /**
412
+ * Content types created by a vanilla WordPress installation and controlled
413
+ * by `contentBaseline`.
414
+ */
415
+ type ContentType = 'posts' | 'pages' | 'comments';
348
416
  type LicenseKeyword = 'AFL-3.0' | 'Apache-2.0' | 'Artistic-2.0' | 'BSL-1.0' | 'BSD-2-Clause' | 'BSD-3-Clause' | 'BSD-3-Clause-Clear' | 'BSD-4-Clause' | '0BSD' | 'CC' | 'CC0-1.0' | 'CC-BY-4.0' | 'CC-BY-SA-4.0' | 'WTFPL' | 'ECL-2.0' | 'EPL-1.0' | 'EPL-2.0' | 'EUPL-1.1' | 'AGPL-3.0' | 'GPL' | 'GPL-2.0' | 'GPL-3.0' | 'LGPL' | 'LGPL-2.1' | 'LGPL-3.0' | 'ISC' | 'LPPL-1.3c' | 'MS-PL' | 'MIT' | 'MPL-2.0' | 'OSL-3.0' | 'PostgreSQL' | 'OFL-1.1' | 'NCSA' | 'Unlicense' | 'Zlib';
349
417
  type URLMappingConfig = {
350
418
  /**
@@ -361,15 +429,17 @@ export declare namespace V2Schema {
361
429
  urlsMode?: 'rewrite' | 'preserve';
362
430
  /**
363
431
  * A mapping of base URLs to rewrite.
432
+ *
433
+ * @propertyNames { "$ref": "#/definitions/DataSources.URLReference" }
364
434
  */
365
435
  urlsMap?: Record<DataSources.URLReference, DataSources.URLReference>;
366
436
  };
367
- type ContentDefinition = ({
437
+ type ContentDefinition = {
368
438
  type: 'mysql-dump';
369
- source: DataSources.DataReference | DataSources.DataReference[];
370
- } & URLMappingConfig) | ({
439
+ source: DataSources.FileDataReference | DataSources.FileDataReference[];
440
+ } | ({
371
441
  type: 'posts';
372
- source: DataSources.DataReference | DataSources.DataReference[] | WordPressPost | WordPressPost[];
442
+ source: DataSources.FileDataReference | WordPressPost | (DataSources.FileDataReference | WordPressPost)[];
373
443
  } & URLMappingConfig)
374
444
  /**
375
445
  * WXR files to import.
@@ -377,36 +447,33 @@ export declare namespace V2Schema {
377
447
  * Example:
378
448
  *
379
449
  * ```json
380
- * content: [
381
- * {
382
- * "type": "wxr",
383
- * "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/stylish-press/woo-products.wxr"
384
- * },
385
- * {
386
- * "type": "wxr",
387
- * "url": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/stylish-press/site-content.wxr",
388
- * "rewriteUrls": true,
389
- * "fetchStaticAssets": false,
390
- * "users": false,
391
- * "comments": false,
392
- * }
393
- * ]
450
+ * {
451
+ * "version": 2,
452
+ * "content": [
453
+ * {
454
+ * "type": "wxr",
455
+ * "source": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/stylish-press/woo-products.wxr"
456
+ * },
457
+ * {
458
+ * "type": "wxr",
459
+ * "source": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/stylish-press/site-content.wxr",
460
+ * "urlsMode": "rewrite",
461
+ * "staticAssets": "hotlink",
462
+ * "importUsers": false,
463
+ * "importComments": false
464
+ * }
465
+ * ]
466
+ * }
394
467
  * ```
395
468
  */
396
- | ({
397
- type: 'wxr';
398
- source: DataSources.DataReference;
469
+ | WXRContentDefinition;
470
+ type WXRContentDefinition = WXRContentBase & ({
399
471
  /**
400
- * Static assets handling.
401
- *
402
- * Possible values:
403
- *
404
- * * "fetch" – Fetch the static assets and save them to the local filesystem.
405
- * * "hotlink" – Hotlink the static assets from the remote site.
406
- *
407
- * @default "fetch".
472
+ * Map remote authors to existing local authors.
408
473
  */
409
- staticAssets?: 'fetch' | 'hotlink';
474
+ authorsMode: 'map';
475
+ authorsMap: Record<RemoteUsername, LocalUsername>;
476
+ } | {
410
477
  /**
411
478
  * How to handle authors that don't exist on the current site.
412
479
  *
@@ -414,28 +481,32 @@ export declare namespace V2Schema {
414
481
  *
415
482
  * * "create" – Create a new author.
416
483
  * * "default-author" – Use the default author.
417
- * * "map" – Map the author to an existing author on the current site.
418
484
  *
419
485
  * @default "create".
420
486
  */
421
- authorsMode?: 'create' | 'default-author' | 'map';
487
+ authorsMode?: 'create' | 'default-author';
488
+ authorsMap?: Record<RemoteUsername, LocalUsername>;
489
+ });
490
+ type WXRContentBase = {
491
+ type: 'wxr';
492
+ source: DataSources.FileDataReference | DataSources.FileDataReference[];
422
493
  /**
423
- * The default author to use when `mode` is "default-author".
494
+ * Static assets handling.
424
495
  *
425
- * @default "admin".
426
- */
427
- defaultAuthorUsername?: string;
428
- /**
429
- * Map post authors from the remote site to the current site.
496
+ * Possible values:
430
497
  *
431
- * When not provided, the importer will attempt to match the authors by
432
- * username, email, or name.
498
+ * * "fetch" Fetch the static assets and save them to the local filesystem.
499
+ * * "hotlink" Hotlink the static assets from the remote site.
433
500
  *
434
- * Required when `authorsMode` is "map".
501
+ * @default "fetch".
502
+ */
503
+ staticAssets?: 'fetch' | 'hotlink';
504
+ /**
505
+ * The default author to use when `mode` is "default-author".
435
506
  *
436
- * @default undefined.
507
+ * @default "admin".
437
508
  */
438
- authorsMap?: Record<RemoteUsername, LocalUsername>;
509
+ defaultAuthorUsername?: string;
439
510
  /**
440
511
  * Whether to import users from the remote site.
441
512
  *
@@ -448,15 +519,9 @@ export declare namespace V2Schema {
448
519
  * @default false.
449
520
  */
450
521
  importComments?: boolean;
451
- /**
452
- * Whether to import site settings from the remote site.
453
- *
454
- * @default false.
455
- */
456
- importSiteOptions?: boolean;
457
- } & URLMappingConfig);
458
- type MediaDefinition = DataSources.DataReference | {
459
- source: DataSources.DataReference;
522
+ } & URLMappingConfig;
523
+ type MediaDefinition = DataSources.FileDataReference | {
524
+ source: DataSources.FileDataReference;
460
525
  title?: string;
461
526
  description?: string;
462
527
  alt?: string;
@@ -525,6 +590,8 @@ export declare namespace V2Schema {
525
590
  /**
526
591
  * An explicit directory name within wp-content/plugins to install the plugin at.
527
592
  * If not provided, it will be inferred from the plugin source.
593
+ *
594
+ * @pattern ^(?!(?:\.|\.\.)$)[^/]+$
528
595
  */
529
596
  targetDirectoryName?: string;
530
597
  /**
@@ -540,6 +607,12 @@ export declare namespace V2Schema {
540
607
  * @default "throw"
541
608
  */
542
609
  onError?: 'skip-plugin' | 'throw';
610
+ /**
611
+ * How to handle a plugin that is already installed.
612
+ *
613
+ * @default "overwrite"
614
+ */
615
+ ifAlreadyInstalled?: 'overwrite' | 'skip' | 'error';
543
616
  /**
544
617
  * Human-readable name of the plugin for the progress bar.
545
618
  *
@@ -571,8 +644,22 @@ export declare namespace V2Schema {
571
644
  /**
572
645
  * An explicit directory name within wp-content/themes to install the theme at.
573
646
  * If not provided, it will be inferred from the theme source.
647
+ *
648
+ * @pattern ^(?!(?:\.|\.\.)$)[^/]+$
574
649
  */
575
650
  targetDirectoryName?: string;
651
+ /**
652
+ * Sometimes it's fine when a theme fails to install.
653
+ *
654
+ * @default "throw"
655
+ */
656
+ onError?: 'skip-theme' | 'throw';
657
+ /**
658
+ * How to handle a theme that is already installed.
659
+ *
660
+ * @default "overwrite"
661
+ */
662
+ ifAlreadyInstalled?: 'overwrite' | 'skip' | 'error';
576
663
  /**
577
664
  * Human-readable name of the theme for the progress bar.
578
665
  *
@@ -594,8 +681,8 @@ export declare namespace V2Schema {
594
681
  */
595
682
  humanReadableName?: string;
596
683
  };
597
- type RemoteUsername = 'string';
598
- type LocalUsername = 'string';
684
+ type RemoteUsername = string;
685
+ type LocalUsername = string;
599
686
  /**
600
687
  * WordPress register_post_type() arguments representation. {{{
601
688
  *
@@ -1038,7 +1125,7 @@ export declare namespace V2Schema {
1038
1125
  /** CSS font-display value. */
1039
1126
  fontDisplay?: 'auto' | 'block' | 'fallback' | 'swap' | 'optional';
1040
1127
  /** Paths or URLs to the font files. */
1041
- src: DataSources.DataReference | DataSources.DataReference[];
1128
+ src: DataSources.FileDataReference | DataSources.FileDataReference[];
1042
1129
  /** CSS font-stretch value. */
1043
1130
  fontStretch?: string;
1044
1131
  /** CSS ascent-override value. */
@@ -1290,6 +1377,10 @@ export declare namespace V2Schema {
1290
1377
  step: 'defineConstants';
1291
1378
  constants: WordPressConstants;
1292
1379
  };
1380
+ type EnableMultisiteStep = {
1381
+ /** Converts the target WordPress installation into a multisite network. */
1382
+ step: 'enableMultisite';
1383
+ };
1293
1384
  type ImportContentStep = {
1294
1385
  step: 'importContent';
1295
1386
  content: ContentDefinition[];
@@ -1322,12 +1413,20 @@ export declare namespace V2Schema {
1322
1413
  step: 'rmdir';
1323
1414
  path: string;
1324
1415
  };
1416
+ type ResetDataStep = {
1417
+ step: 'resetData';
1418
+ /**
1419
+ * Content types to remove. When omitted, all posts, pages, custom post
1420
+ * types, and comments are removed.
1421
+ */
1422
+ contentTypes?: Array<ContentType>;
1423
+ };
1325
1424
  type RunPHPStep = {
1326
1425
  step: 'runPHP';
1327
1426
  /**
1328
1427
  * The PHP file to execute.
1329
1428
  */
1330
- code: DataSources.DataReference;
1429
+ code: DataSources.FileDataReference;
1331
1430
  /**
1332
1431
  * Environment variables to set for this run.
1333
1432
  */
@@ -1335,7 +1434,7 @@ export declare namespace V2Schema {
1335
1434
  };
1336
1435
  type RunSQLStep = {
1337
1436
  step: 'runSQL';
1338
- source: DataSources.DataReference;
1437
+ source: DataSources.FileDataReference;
1339
1438
  };
1340
1439
  /**
1341
1440
  * Sets the site language and download translations for WordPress core
@@ -1364,7 +1463,7 @@ export declare namespace V2Schema {
1364
1463
  /**
1365
1464
  * The zip file resource to extract.
1366
1465
  */
1367
- zipFile: DataSources.DataReference;
1466
+ zipFile: DataSources.FileDataReference;
1368
1467
  /**
1369
1468
  * The path to extract the zip file to inside the virtual filesystem.
1370
1469
  */
@@ -1392,7 +1491,7 @@ export declare namespace V2Schema {
1392
1491
  */
1393
1492
  active?: boolean;
1394
1493
  } & ThemeObjectDefinition;
1395
- type Step = ActivatePluginStep | ActivateThemeStep | CpStep | DefineConstantsStep | ImportContentStep | ImportMediaStep | ImportThemeStarterContentStep | PluginStep | ThemeStep | MkdirStep | MvStep | RmStep | RmdirStep | RunPHPStep | RunSQLStep | SetSiteLanguageStep | SetSiteOptionsStep | UnzipStep | WpCliStep | WriteFilesStep;
1494
+ type Step = ActivatePluginStep | ActivateThemeStep | CpStep | DefineConstantsStep | EnableMultisiteStep | ImportContentStep | ImportMediaStep | ImportThemeStarterContentStep | PluginStep | ThemeStep | MkdirStep | MvStep | RmStep | RmdirStep | ResetDataStep | RunPHPStep | RunSQLStep | SetSiteLanguageStep | SetSiteOptionsStep | UnzipStep | WpCliStep | WriteFilesStep;
1396
1495
  type JsonValue = string | boolean | number | JsonValue[] | {
1397
1496
  [key: string]: JsonValue;
1398
1497
  };