@speedkit/cli 4.20.5 → 4.22.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +83 -2
  3. package/dist/commands/extension/add.d.ts +9 -0
  4. package/dist/commands/extension/add.js +41 -0
  5. package/dist/commands/extension/list.d.ts +6 -0
  6. package/dist/commands/extension/list.js +27 -0
  7. package/dist/commands/extension/remove.d.ts +9 -0
  8. package/dist/commands/extension/remove.js +38 -0
  9. package/dist/commands/extension/update.d.ts +6 -0
  10. package/dist/commands/extension/update.js +20 -0
  11. package/dist/commands/generate-customer-config.d.ts +2 -0
  12. package/dist/commands/generate-customer-config.js +10 -2
  13. package/dist/helpers/cli-config.d.ts +11 -0
  14. package/dist/helpers/cli-config.js +4 -0
  15. package/dist/helpers/cli-config.spec.js +13 -0
  16. package/dist/hooks/init/first-run.js +1 -0
  17. package/dist/services/customer-config/customer-config-service-context.d.ts +9 -1
  18. package/dist/services/customer-config/customer-config-service-context.js +11 -1
  19. package/dist/services/customer-config/customer-config-service-model.d.ts +6 -0
  20. package/dist/services/customer-config/customer-config-service-model.js +36 -0
  21. package/dist/services/customer-config/customer-config-service.d.ts +8 -3
  22. package/dist/services/customer-config/customer-config-service.js +71 -25
  23. package/dist/services/customer-config/template-source.d.ts +33 -0
  24. package/dist/services/customer-config/template-source.js +49 -0
  25. package/dist/services/integration-api/integration-api-model.js +3 -1
  26. package/dist/services/setup/extension/crx.d.ts +13 -0
  27. package/dist/services/setup/extension/crx.js +48 -0
  28. package/dist/services/setup/extension/crx.spec.d.ts +1 -0
  29. package/dist/services/setup/extension/crx.spec.js +38 -0
  30. package/dist/services/setup/extension/extension-installer.d.ts +31 -0
  31. package/dist/services/setup/extension/extension-installer.js +87 -0
  32. package/dist/services/setup/extension/extension-setup-service.d.ts +40 -0
  33. package/dist/services/setup/extension/extension-setup-service.js +152 -0
  34. package/dist/services/setup/extension/webstore.d.ts +33 -0
  35. package/dist/services/setup/extension/webstore.js +74 -0
  36. package/dist/services/setup/extension/webstore.spec.d.ts +1 -0
  37. package/dist/services/setup/extension/webstore.spec.js +51 -0
  38. package/dist/services/setup/index.d.ts +4 -0
  39. package/dist/services/setup/index.js +4 -0
  40. package/dist/services/setup/setup-service-factory.js +5 -1
  41. package/dist/services/setup/setup-service.d.ts +11 -2
  42. package/dist/services/setup/setup-service.js +18 -3
  43. package/oclif.manifest.json +131 -1
  44. package/package.json +8 -1
  45. package/dist/services/customer-config/templates/config_SpeedKit.js.hbs +0 -548
  46. package/dist/services/customer-config/templates/config_customer.json.hbs +0 -38
  47. package/dist/services/customer-config/templates/config_documentHandler.js.hbs +0 -362
  48. package/dist/services/customer-config/templates/config_dynamicBlocks.es6.hbs +0 -163
  49. package/dist/services/customer-config/templates/config_dynamicStyles.css.hbs +0 -137
  50. package/dist/services/customer-config/templates/config_loadHandler.js.hbs +0 -391
  51. package/dist/services/customer-config/templates/downtimeDetection.js.hbs +0 -209
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # [4.22.0](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v4.21.0...v4.22.0) (2026-08-20)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **customer-config:** contract-check against the CLI's variable inventory ([7ebd2d2](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/7ebd2d28331a59dc3754fa1f6cd859f978febf6c))
7
+
8
+
9
+ ### Features
10
+
11
+ * **customer-config:** --mode flag picks the template set ([b471e8b](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/b471e8b8c6de32babfd26f69688409cae04288ae))
12
+ * **customer-config:** graduate an existing pre-PoC config ([28af5e2](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/28af5e2d06c8c9571da3d72563ae229b12f27d56))
13
+ * **customer-config:** pre-poc mode asks only what the baseline needs ([35cbcbd](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/35cbcbd698144ac82dd275dcf63a0e62b03dba24))
14
+ * **customer-config:** render wizard templates from sk-onboarding ([266cbe3](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/266cbe3c68f5e4aafa431e2fa4a5f9311c3e28c9))
15
+
16
+ # [4.21.0](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v4.20.5...v4.21.0) (2026-08-14)
17
+
18
+
19
+ ### Features
20
+
21
+ * implement extensionManagement ([17e65b7](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/17e65b72c8e7791ba1174dd7c948daffe4a9b9cc))
22
+
1
23
  ## [4.20.5](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v4.20.4...v4.20.5) (2026-08-10)
2
24
 
3
25
 
package/README.md CHANGED
@@ -21,7 +21,7 @@ $ npm install -g @speedkit/cli
21
21
  $ sk COMMAND
22
22
  running command...
23
23
  $ sk (--version)
24
- @speedkit/cli/4.20.5 linux-x64 node-v22.23.2
24
+ @speedkit/cli/4.22.0 linux-x64 node-v22.23.2
25
25
  $ sk --help [COMMAND]
26
26
  USAGE
27
27
  $ sk COMMAND
@@ -78,6 +78,10 @@ By either...
78
78
  * [`sk deploy CUSTOMERPATH`](#sk-deploy-customerpath)
79
79
  * [`sk diff-url-parameters PAGEURL`](#sk-diff-url-parameters-pageurl)
80
80
  * [`sk document-handler CUSTOMERPATH`](#sk-document-handler-customerpath)
81
+ * [`sk extension add [REF]`](#sk-extension-add-ref)
82
+ * [`sk extension list`](#sk-extension-list)
83
+ * [`sk extension remove [REF]`](#sk-extension-remove-ref)
84
+ * [`sk extension update`](#sk-extension-update)
81
85
  * [`sk find-pops APP`](#sk-find-pops-app)
82
86
  * [`sk generate-customer-config`](#sk-generate-customer-config)
83
87
  * [`sk generate-pop-config APP`](#sk-generate-pop-config-app)
@@ -381,6 +385,78 @@ EXAMPLES
381
385
  $ sk deploy customers/decathlon.de -c production
382
386
  ```
383
387
 
388
+ ## `sk extension add [REF]`
389
+
390
+ Install a Chrome extension into the onboarding browser by Web Store link or id
391
+
392
+ ```
393
+ USAGE
394
+ $ sk extension add [REF]
395
+
396
+ ARGUMENTS
397
+ [REF] Chrome Web Store link or extension id
398
+
399
+ DESCRIPTION
400
+ Install a Chrome extension into the onboarding browser by Web Store link or id
401
+
402
+ EXAMPLES
403
+ $ sk extension add fmkadmapgofadopljbjfkapdkoienihi
404
+
405
+ $ sk extension add https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi
406
+
407
+ $ sk extension add
408
+ ```
409
+
410
+ ## `sk extension list`
411
+
412
+ List Chrome extensions managed by the setup wizard
413
+
414
+ ```
415
+ USAGE
416
+ $ sk extension list
417
+
418
+ DESCRIPTION
419
+ List Chrome extensions managed by the setup wizard
420
+
421
+ EXAMPLES
422
+ $ sk extension list
423
+ ```
424
+
425
+ ## `sk extension remove [REF]`
426
+
427
+ Remove a managed Chrome extension
428
+
429
+ ```
430
+ USAGE
431
+ $ sk extension remove [REF]
432
+
433
+ ARGUMENTS
434
+ [REF] Chrome Web Store link or extension id
435
+
436
+ DESCRIPTION
437
+ Remove a managed Chrome extension
438
+
439
+ EXAMPLES
440
+ $ sk extension remove
441
+
442
+ $ sk extension remove <id>
443
+ ```
444
+
445
+ ## `sk extension update`
446
+
447
+ Check managed Chrome extensions for updates and install them
448
+
449
+ ```
450
+ USAGE
451
+ $ sk extension update
452
+
453
+ DESCRIPTION
454
+ Check managed Chrome extensions for updates and install them
455
+
456
+ EXAMPLES
457
+ $ sk extension update
458
+ ```
459
+
384
460
  ## `sk find-pops APP`
385
461
 
386
462
  Get IPs for all fastly PoPs
@@ -410,13 +486,18 @@ Generates a customer config guided by a wizard 🧙‍
410
486
 
411
487
  ```
412
488
  USAGE
413
- $ sk generate-customer-config [-a <value>] [-d <value>]
489
+ $ sk generate-customer-config [-a <value>] [-d <value>] [--templates <value>] [--mode customer-config|pre-poc]
414
490
 
415
491
  FLAGS
416
492
  -a, --app=<value> The SK app name which is also being used the config output directory name
417
493
  (kebab-case)
418
494
  -d, --customersDirectory=<value> Name of the sk-onboarding directory where all customer configs are being stored
419
495
  (default: "customers")
496
+ --mode=<option> [default: customer-config] Which config to scaffold: the full acceleration config,
497
+ or the tracking-only pre-PoC config
498
+ <options: customer-config|pre-poc>
499
+ --templates=<value> Path to the templates/ root (default: the sk-onboarding checkout the CLI runs in, or
500
+ the sk-onboarding repo on GitLab when run standalone)
420
501
 
421
502
  DESCRIPTION
422
503
  Generates a customer config guided by a wizard 🧙‍
@@ -0,0 +1,9 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class ExtensionAdd extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ ref: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,41 @@
1
+ import { Args, Command } from "@oclif/core";
2
+ import { CliServiceFactory } from "../../services/cli/index.js";
3
+ import { SetupServiceFactory } from "../../services/setup/index.js";
4
+ export default class ExtensionAdd extends Command {
5
+ static description = "Install a Chrome extension into the onboarding browser by Web Store link or id";
6
+ static examples = [
7
+ "$ sk extension add fmkadmapgofadopljbjfkapdkoienihi",
8
+ "$ sk extension add https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi",
9
+ "$ sk extension add",
10
+ ];
11
+ static args = {
12
+ ref: Args.string({
13
+ name: "ref",
14
+ required: false,
15
+ description: "Chrome Web Store link or extension id",
16
+ }),
17
+ };
18
+ async run() {
19
+ const { args } = await this.parse(ExtensionAdd);
20
+ const cli = new CliServiceFactory().getService();
21
+ const { extensions } = new SetupServiceFactory(this.config).getService();
22
+ let ref = args.ref;
23
+ if (!ref) {
24
+ ref = await cli.prompt("Paste a Chrome Web Store link or extension id", {
25
+ defaultAnswer: "",
26
+ });
27
+ }
28
+ if (!ref?.trim()) {
29
+ cli.writeWarning("No extension provided.");
30
+ return;
31
+ }
32
+ cli.writeWarning("Only add extensions you trust — they are loaded into the onboarding browser.");
33
+ try {
34
+ const ext = await extensions.addFromInput(ref);
35
+ cli.writeSuccess(`Installed ${ext.name} ${ext.version}`);
36
+ }
37
+ catch (error) {
38
+ cli.writeError(`Could not install extension: ${error?.message ?? error}`);
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,6 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class ExtensionList extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
@@ -0,0 +1,27 @@
1
+ import { Command } from "@oclif/core";
2
+ import { CliServiceFactory } from "../../services/cli/index.js";
3
+ import { SetupServiceFactory } from "../../services/setup/index.js";
4
+ export default class ExtensionList extends Command {
5
+ static description = "List Chrome extensions managed by the setup wizard";
6
+ static examples = ["$ sk extension list"];
7
+ async run() {
8
+ const cli = new CliServiceFactory().getService();
9
+ const { extensions } = new SetupServiceFactory(this.config).getService();
10
+ const list = extensions.list();
11
+ if (list.length === 0) {
12
+ cli.writeWarning("No managed extensions installed.");
13
+ return;
14
+ }
15
+ cli.table(list.map((ext) => ({
16
+ name: ext.name,
17
+ version: ext.version,
18
+ id: ext.id,
19
+ path: ext.path,
20
+ })), {
21
+ name: { header: "Name" },
22
+ version: { header: "Version" },
23
+ id: { header: "Id" },
24
+ path: { header: "Path" },
25
+ });
26
+ }
27
+ }
@@ -0,0 +1,9 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class ExtensionRemove extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ ref: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
@@ -0,0 +1,38 @@
1
+ import { Args, Command } from "@oclif/core";
2
+ import { CliServiceFactory } from "../../services/cli/index.js";
3
+ import { parseExtensionId, SetupServiceFactory, } from "../../services/setup/index.js";
4
+ export default class ExtensionRemove extends Command {
5
+ static description = "Remove a managed Chrome extension";
6
+ static examples = ["$ sk extension remove", "$ sk extension remove <id>"];
7
+ static args = {
8
+ ref: Args.string({
9
+ name: "ref",
10
+ required: false,
11
+ description: "Chrome Web Store link or extension id",
12
+ }),
13
+ };
14
+ async run() {
15
+ const { args } = await this.parse(ExtensionRemove);
16
+ const cli = new CliServiceFactory().getService();
17
+ const { extensions } = new SetupServiceFactory(this.config).getService();
18
+ const list = extensions.list();
19
+ if (list.length === 0) {
20
+ cli.writeWarning("No managed extensions to remove.");
21
+ return;
22
+ }
23
+ let id = args.ref ? parseExtensionId(args.ref) : null;
24
+ if (!id) {
25
+ id = await cli.select("Which extension should be removed?", list.map((ext) => ({
26
+ name: `${ext.name} (${ext.version})`,
27
+ value: ext.id,
28
+ })));
29
+ }
30
+ const removed = await extensions.remove(id);
31
+ if (removed) {
32
+ cli.writeSuccess(`Removed extension ${id}`);
33
+ }
34
+ else {
35
+ cli.writeWarning(`Extension not found: ${id}`);
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,6 @@
1
+ import { Command } from "@oclif/core";
2
+ export default class ExtensionUpdate extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
@@ -0,0 +1,20 @@
1
+ import { Command } from "@oclif/core";
2
+ import { CliServiceFactory } from "../../services/cli/index.js";
3
+ import { SetupServiceFactory } from "../../services/setup/index.js";
4
+ export default class ExtensionUpdate extends Command {
5
+ static description = "Check managed Chrome extensions for updates and install them";
6
+ static examples = ["$ sk extension update"];
7
+ async run() {
8
+ const cli = new CliServiceFactory().getService();
9
+ const { extensions } = new SetupServiceFactory(this.config).getService();
10
+ const list = extensions.list();
11
+ if (list.length === 0) {
12
+ cli.writeWarning("No managed extensions to update.");
13
+ return;
14
+ }
15
+ cli.startAction("EXT:CHECK", "Checking extensions for updates…");
16
+ cli.endAction("EXT:CHECK");
17
+ await extensions.updateAll();
18
+ cli.writeSuccess("Extension update check complete.");
19
+ }
20
+ }
@@ -5,6 +5,8 @@ export default class GenerateCustomerConfig extends Command {
5
5
  static flags: {
6
6
  app: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
7
  customersDirectory: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ templates: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ mode: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
10
  };
9
11
  run(): Promise<void>;
10
12
  }
@@ -16,10 +16,18 @@ export default class GenerateCustomerConfig extends Command {
16
16
  char: CLIParametersChar.CustomersDirectory,
17
17
  description: `Name of the sk-onboarding directory where all customer configs are being stored (default: "${CLIParametersExample.CustomersDirectory}")`,
18
18
  }),
19
+ templates: Flags.string({
20
+ description: "Path to the templates/ root (default: the sk-onboarding checkout the CLI runs in, or the sk-onboarding repo on GitLab when run standalone)",
21
+ }),
22
+ mode: Flags.string({
23
+ options: ["customer-config", "pre-poc"],
24
+ default: "customer-config",
25
+ description: "Which config to scaffold: the full acceleration config, or the tracking-only pre-PoC config",
26
+ }),
19
27
  };
20
28
  async run() {
21
- const { flags: { app, customersDirectory }, } = await this.parse(GenerateCustomerConfig);
22
- const context = new CustomerConfigServiceContext(app, customersDirectory);
29
+ const { flags: { app, customersDirectory, templates, mode }, } = await this.parse(GenerateCustomerConfig);
30
+ const context = new CustomerConfigServiceContext(app, customersDirectory, templates, mode);
23
31
  const customerConfigService = await new CustomerConfigServiceFactory(context).buildService();
24
32
  await customerConfigService.generateConfig();
25
33
  }
@@ -1,4 +1,13 @@
1
1
  import { Config } from "@oclif/core";
2
+ /** A Chrome extension installed via the setup wizard and tracked for updates. */
3
+ export interface ManagedExtension {
4
+ /** Chrome Web Store extension id */
5
+ id: string;
6
+ name: string;
7
+ version: string;
8
+ /** absolute path to the unpacked extension directory */
9
+ path: string;
10
+ }
2
11
  export interface UserCliConfig {
3
12
  chromeExtensionPaths: string;
4
13
  chromePath: string;
@@ -14,6 +23,8 @@ export interface UserCliConfig {
14
23
  browserAutoUpdate: boolean;
15
24
  updateReminderDays: number;
16
25
  lastBrowserUpdateCheck: string;
26
+ managedChromeExtensions: ManagedExtension[];
27
+ lastExtensionUpdateCheck: string;
17
28
  firstRunCompleted: boolean;
18
29
  tempFolder: string;
19
30
  runtimeConfig: Config;
@@ -36,6 +36,8 @@ export class CliConfig {
36
36
  browserAutoUpdate: false,
37
37
  updateReminderDays: 3,
38
38
  lastBrowserUpdateCheck: "",
39
+ managedChromeExtensions: [],
40
+ lastExtensionUpdateCheck: "",
39
41
  firstRunCompleted: false,
40
42
  tempFolder: "/tmp",
41
43
  runtimeConfig: {},
@@ -74,6 +76,8 @@ export class CliConfig {
74
76
  browserAutoUpdate: false,
75
77
  updateReminderDays: 3,
76
78
  lastBrowserUpdateCheck: "",
79
+ managedChromeExtensions: [],
80
+ lastExtensionUpdateCheck: "",
77
81
  firstRunCompleted: false,
78
82
  };
79
83
  }
@@ -67,4 +67,17 @@ describe("CliConfig save/load", () => {
67
67
  const reloaded = new CliConfig(fakeOclifConfig(dir)).load();
68
68
  expect(reloaded.browserAutoUpdate).to.equal(false);
69
69
  });
70
+ it("round-trips the managedChromeExtensions array", () => {
71
+ const cfg = new CliConfig(fakeOclifConfig(dir));
72
+ cfg.load();
73
+ cfg.save({
74
+ managedChromeExtensions: [
75
+ { id: "abc", name: "Ext", version: "1.0.0", path: "/tmp/ext/abc" },
76
+ ],
77
+ });
78
+ const reloaded = new CliConfig(fakeOclifConfig(dir)).load();
79
+ expect(reloaded.managedChromeExtensions).to.have.length(1);
80
+ expect(reloaded.managedChromeExtensions[0].id).to.equal("abc");
81
+ expect(reloaded.managedChromeExtensions[0].version).to.equal("1.0.0");
82
+ });
70
83
  });
@@ -28,6 +28,7 @@ const hook = async function (opts) {
28
28
  }
29
29
  const service = new SetupServiceFactory(config).getService();
30
30
  await service.remindBrowserUpdate();
31
+ await service.remindExtensionUpdates();
31
32
  }
32
33
  catch {
33
34
  // never block a command because of setup housekeeping
@@ -1,5 +1,13 @@
1
1
  export declare class CustomerConfigServiceContext {
2
2
  appName: string;
3
3
  customersDirectory: string;
4
- constructor(appName?: string, customersDirectory?: string);
4
+ /** Explicit templates/ root; overrides checkout detection and the remote fetch. */
5
+ templatesPath?: string;
6
+ /** Template set = wizard mode: "customer-config" (default) or "pre-poc". */
7
+ mode: string;
8
+ constructor(appName?: string, customersDirectory?: string,
9
+ /** Explicit templates/ root; overrides checkout detection and the remote fetch. */
10
+ templatesPath?: string,
11
+ /** Template set = wizard mode: "customer-config" (default) or "pre-poc". */
12
+ mode?: string);
5
13
  }
@@ -2,10 +2,20 @@ import { CLIParametersExample } from "../../models/cli-parameters.js";
2
2
  export class CustomerConfigServiceContext {
3
3
  appName;
4
4
  customersDirectory;
5
- constructor(appName = "", customersDirectory = CLIParametersExample.CustomersDirectory) {
5
+ templatesPath;
6
+ mode;
7
+ constructor(appName = "", customersDirectory = CLIParametersExample.CustomersDirectory,
8
+ /** Explicit templates/ root; overrides checkout detection and the remote fetch. */
9
+ templatesPath,
10
+ /** Template set = wizard mode: "customer-config" (default) or "pre-poc". */
11
+ mode = "customer-config") {
6
12
  this.appName = appName;
7
13
  this.customersDirectory = customersDirectory;
14
+ this.templatesPath = templatesPath;
15
+ this.mode = mode;
8
16
  this.appName = appName;
9
17
  this.customersDirectory = customersDirectory;
18
+ this.templatesPath = templatesPath;
19
+ this.mode = mode;
10
20
  }
11
21
  }
@@ -59,3 +59,9 @@ export interface CustomerConfigSettings {
59
59
  isPlentymarkets?: boolean;
60
60
  addDowntimeDetection?: boolean;
61
61
  }
62
+ /**
63
+ * Every variable this CLI can hand to the wizard templates — the template
64
+ * manifest in sk-onboarding must be a subset. Extend this together with
65
+ * `CustomerConfigSettings` when the wizard gains a question.
66
+ */
67
+ export declare const TEMPLATE_VARIABLES: readonly string[];
@@ -32,3 +32,39 @@ export var EnvironmentType;
32
32
  EnvironmentType["STAGING"] = "staging";
33
33
  EnvironmentType["TEST"] = "test";
34
34
  })(EnvironmentType || (EnvironmentType = {}));
35
+ /**
36
+ * Every variable this CLI can hand to the wizard templates — the template
37
+ * manifest in sk-onboarding must be a subset. Extend this together with
38
+ * `CustomerConfigSettings` when the wizard gains a question.
39
+ */
40
+ export const TEMPLATE_VARIABLES = [
41
+ "appName",
42
+ "production.host",
43
+ "production.forceInstall",
44
+ "staging.host",
45
+ "staging.forceInstall",
46
+ "activateScopedDeployments",
47
+ "subRouteScope",
48
+ "includeServiceWorker",
49
+ "activateImageOptimisation",
50
+ "removeLazyLoading",
51
+ "addSSR",
52
+ "addSSRInnerShadowDomSupport",
53
+ "addDeviceDetection",
54
+ "useGATracking",
55
+ "useScrapingBee",
56
+ "withGoogleOptimize",
57
+ "activateCfRocketLoaderPlugin",
58
+ "hasSoftNavigations",
59
+ "convertSoftToHardNavigations",
60
+ "handleUsercentrics",
61
+ "isPOV",
62
+ "useDisabledSitesApproach",
63
+ "shopSystemName",
64
+ "isShopify",
65
+ "isShopware",
66
+ "isSalesforce",
67
+ "isOxid",
68
+ "isPlentymarkets",
69
+ "addDowntimeDetection",
70
+ ];
@@ -10,15 +10,20 @@ export declare class CustomerConfigService {
10
10
  private set appName(value);
11
11
  private set outputDirPath(value);
12
12
  private get outputDirPath();
13
- private templates;
13
+ /** Set from the "Downtime Detection" feature answer in the wizard. */
14
+ private includeDowntimeDetection;
14
15
  constructor(context: CustomerConfigServiceContext, cli: CliService);
15
16
  private getOutputDirPath;
16
- private getHandlebarsOutputFileName;
17
+ private getOutputFileName;
17
18
  private getPathWithChangedDir;
18
19
  private isDirNotEmpty;
19
20
  private chooseNewOutputDirectoryName;
21
+ /** A pre-PoC config marks itself via splitTestId "pre_poc" in config_SpeedKit.js. */
22
+ private isPrePocConfig;
23
+ /** Parks every config_* file as *_pre-poc (suffix before the extension). */
24
+ private renamePrePocFiles;
20
25
  private selectOutputDirectory;
21
- private compileHandlebarsFiles;
26
+ private compileTemplateFiles;
22
27
  private getEnvironmentConfig;
23
28
  private shouldFileBeOverwritten;
24
29
  private getConfigSettings;