@red-hat-developer-hub/e2e-test-utils 2.1.15 → 2.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/deployment/rhdh/config/common/dynamic-plugins.yaml +5 -0
  2. package/dist/deployment/rhdh/constants.d.ts +0 -5
  3. package/dist/deployment/rhdh/constants.d.ts.map +1 -1
  4. package/dist/deployment/rhdh/constants.js +0 -5
  5. package/dist/deployment/rhdh/deployment.d.ts +2 -2
  6. package/dist/deployment/rhdh/deployment.d.ts.map +1 -1
  7. package/dist/deployment/rhdh/deployment.js +9 -25
  8. package/dist/deployment/rhdh/deployment.test.js +9 -9
  9. package/dist/deployment/rhdh/types.d.ts +0 -4
  10. package/dist/deployment/rhdh/types.d.ts.map +1 -1
  11. package/dist/playwright/helpers/github-session.test.js +1 -1
  12. package/dist/secrets/bitwarden.d.ts +43 -0
  13. package/dist/secrets/bitwarden.d.ts.map +1 -1
  14. package/dist/secrets/bitwarden.js +465 -53
  15. package/dist/secrets/cli.d.ts +48 -1
  16. package/dist/secrets/cli.d.ts.map +1 -1
  17. package/dist/secrets/cli.js +455 -28
  18. package/dist/secrets/command.d.ts +7 -0
  19. package/dist/secrets/command.d.ts.map +1 -1
  20. package/dist/secrets/command.js +103 -26
  21. package/dist/secrets/config.d.ts +11 -1
  22. package/dist/secrets/config.d.ts.map +1 -1
  23. package/dist/secrets/config.js +32 -1
  24. package/dist/secrets/environment-name.d.ts +2 -0
  25. package/dist/secrets/environment-name.d.ts.map +1 -0
  26. package/dist/secrets/environment-name.js +4 -0
  27. package/dist/secrets/environment.d.ts +10 -0
  28. package/dist/secrets/environment.d.ts.map +1 -1
  29. package/dist/secrets/environment.js +35 -4
  30. package/dist/secrets/exec.d.ts +9 -1
  31. package/dist/secrets/exec.d.ts.map +1 -1
  32. package/dist/secrets/exec.js +318 -38
  33. package/dist/secrets/gsm-wrapper.d.ts +42 -0
  34. package/dist/secrets/gsm-wrapper.d.ts.map +1 -0
  35. package/dist/secrets/gsm-wrapper.js +238 -0
  36. package/dist/secrets/gsm.d.ts +33 -0
  37. package/dist/secrets/gsm.d.ts.map +1 -0
  38. package/dist/secrets/gsm.js +172 -0
  39. package/dist/secrets/index.d.ts +9 -4
  40. package/dist/secrets/index.d.ts.map +1 -1
  41. package/dist/secrets/index.js +7 -2
  42. package/dist/secrets/lock.d.ts +3 -0
  43. package/dist/secrets/lock.d.ts.map +1 -0
  44. package/dist/secrets/lock.js +28 -0
  45. package/dist/secrets/mutation.d.ts +71 -0
  46. package/dist/secrets/mutation.d.ts.map +1 -0
  47. package/dist/secrets/mutation.js +210 -0
  48. package/dist/secrets/secret-input.d.ts +17 -0
  49. package/dist/secrets/secret-input.d.ts.map +1 -0
  50. package/dist/secrets/secret-input.js +40 -0
  51. package/dist/secrets/stream.d.ts +9 -0
  52. package/dist/secrets/stream.d.ts.map +1 -0
  53. package/dist/secrets/stream.js +211 -0
  54. package/dist/secrets/temporary-secret.d.ts +13 -0
  55. package/dist/secrets/temporary-secret.d.ts.map +1 -0
  56. package/dist/secrets/temporary-secret.js +87 -0
  57. package/dist/secrets/tests/bitwarden.test.js +640 -0
  58. package/dist/secrets/tests/cli.integration.test.js +131 -3
  59. package/dist/secrets/tests/cli.test.js +281 -6
  60. package/dist/secrets/tests/command.test.d.ts +2 -0
  61. package/dist/secrets/tests/command.test.d.ts.map +1 -0
  62. package/dist/secrets/tests/command.test.js +39 -0
  63. package/dist/secrets/tests/config.test.js +20 -1
  64. package/dist/secrets/tests/environment.test.js +145 -3
  65. package/dist/secrets/tests/exec.test.js +469 -2
  66. package/dist/secrets/tests/gsm-wrapper.test.d.ts +2 -0
  67. package/dist/secrets/tests/gsm-wrapper.test.d.ts.map +1 -0
  68. package/dist/secrets/tests/gsm-wrapper.test.js +166 -0
  69. package/dist/secrets/tests/gsm.test.d.ts +2 -0
  70. package/dist/secrets/tests/gsm.test.d.ts.map +1 -0
  71. package/dist/secrets/tests/gsm.test.js +181 -0
  72. package/dist/secrets/tests/mutation.test.d.ts +2 -0
  73. package/dist/secrets/tests/mutation.test.d.ts.map +1 -0
  74. package/dist/secrets/tests/mutation.test.js +390 -0
  75. package/dist/secrets/tests/secret-input.test.d.ts +2 -0
  76. package/dist/secrets/tests/secret-input.test.d.ts.map +1 -0
  77. package/dist/secrets/tests/secret-input.test.js +71 -0
  78. package/dist/secrets/tests/stream.test.d.ts +2 -0
  79. package/dist/secrets/tests/stream.test.d.ts.map +1 -0
  80. package/dist/secrets/tests/stream.test.js +88 -0
  81. package/dist/secrets/tests/temporary-secret.test.d.ts +2 -0
  82. package/dist/secrets/tests/temporary-secret.test.d.ts.map +1 -0
  83. package/dist/secrets/tests/temporary-secret.test.js +76 -0
  84. package/dist/utils/plugin-metadata.d.ts +5 -0
  85. package/dist/utils/plugin-metadata.d.ts.map +1 -1
  86. package/dist/utils/plugin-metadata.js +19 -0
  87. package/dist/utils/tests/plugin-metadata.test.js +17 -1
  88. package/dist/utils/workspace-paths.d.ts +0 -2
  89. package/dist/utils/workspace-paths.d.ts.map +1 -1
  90. package/dist/utils/workspace-paths.js +0 -4
  91. package/package.json +1 -1
  92. package/dist/deployment/rhdh/config/new-frontend-system/dynamic-plugins.yaml +0 -5
  93. package/dist/deployment/rhdh/config/new-frontend-system/value_file.yaml +0 -2
@@ -1,5 +1,10 @@
1
1
  includes:
2
2
  - dynamic-plugins.default.yaml
3
+ # TODO: switch these plugins to their quay.io {{inherit}} references once published.
3
4
  plugins:
5
+ - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-auth:bs_1.54.6__1.1.0
6
+ disabled: false
7
+ - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-integrations:bs_1.54.6__1.1.0
8
+ disabled: false
4
9
  - package: oci://quay.io/rhdh/red-hat-developer-hub-backstage-plugin-quickstart:{{inherit}}
5
10
  disabled: true
@@ -4,11 +4,6 @@ export declare const DEFAULT_CONFIG_PATHS: {
4
4
  appConfig: string;
5
5
  secrets: string;
6
6
  dynamicPlugins: string;
7
- /** New frontend system (app-next): paths merged when the deployment uses NFS layers (explicit flag, `-app-next` namespace, or `USE_NEW_FRONTEND_SYSTEM`). */
8
- newFrontendSystem: {
9
- dynamicPlugins: string;
10
- valueFile: string;
11
- };
12
7
  helm: {
13
8
  valueFile: string;
14
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK1D,eAAO,MAAM,oBAAoB;;;;IAa/B,6JAA6J;;;;;;;;;;;CAuB9J,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,YAAY,EACZ;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B,CA0CF,CAAC;AAEF,eAAO,MAAM,SAAS,6BAA6B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAK1D,eAAO,MAAM,oBAAoB;;;;;;;;;;CAyBhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,YAAY,EACZ;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B,CA0CF,CAAC;AAEF,eAAO,MAAM,SAAS,6BAA6B,CAAC"}
@@ -5,11 +5,6 @@ export const DEFAULT_CONFIG_PATHS = {
5
5
  appConfig: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/common/app-config-rhdh.yaml"),
6
6
  secrets: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/common/rhdh-secrets.yaml"),
7
7
  dynamicPlugins: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/common/dynamic-plugins.yaml"),
8
- /** New frontend system (app-next): paths merged when the deployment uses NFS layers (explicit flag, `-app-next` namespace, or `USE_NEW_FRONTEND_SYSTEM`). */
9
- newFrontendSystem: {
10
- dynamicPlugins: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/new-frontend-system/dynamic-plugins.yaml"),
11
- valueFile: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/new-frontend-system/value_file.yaml"),
12
- },
13
8
  helm: {
14
9
  valueFile: path.join(PACKAGE_ROOT, "dist/deployment/rhdh/config/helm/value_file.yaml"),
15
10
  },
@@ -13,8 +13,8 @@ export declare class RHDHDeployment {
13
13
  /** Shared merge strategy for dynamic plugin arrays. */
14
14
  private static readonly pluginMergeOpts;
15
15
  /**
16
- * Merges package defaults + auth + optional new-frontend-system defaults +
17
- * optional user config into a single dynamic plugins configuration.
16
+ * Merges package defaults, auth, and optional user config into a single
17
+ * dynamic plugins configuration.
18
18
  */
19
19
  private _mergeBaseConfigs;
20
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAwB1E,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAClB,SAAS,yBAAgC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;gBAE9B,SAAS,EAAE,MAAM;IAKvB,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA0CpD,eAAe;YAmBf,aAAa;IAwB3B,uDAAuD;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAE5B;IAEX;;;OAGG;YACW,iBAAiB;IAe/B;;OAEG;YACW,uBAAuB;IAgBrC;;;;;;;;OAQG;YACW,0BAA0B;YAsC1B,oBAAoB;YAWpB,eAAe;YAuEf,mBAAmB;IAmCjC,OAAO,KAAK,cAAc,GAIzB;IAEK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,cAAc,CAAC,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,iBAAiB;YASjB,oBAAoB;IAsClC;;;OAGG;YACW,0BAA0B;IAwCxC,OAAO,CAAC,sBAAsB;IA2CxB,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrE,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAyB1E,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IAClB,SAAS,yBAAgC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;gBAE9B,SAAS,EAAE,MAAM;IAKvB,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA0CpD,eAAe;YAmBf,aAAa;IAwB3B,uDAAuD;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEX;;;OAGG;YACW,iBAAiB;IAY/B;;OAEG;YACW,uBAAuB;IAgBrC;;;;;;;;OAQG;YACW,0BAA0B;YAoC1B,oBAAoB;YAWpB,eAAe;YA6Df,mBAAmB;IAmCjC,OAAO,KAAK,cAAc,GAIzB;IAEK,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,cAAc,CAAC,OAAO,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIjB,iBAAiB;YASjB,oBAAoB;IAsClC;;;OAGG;YACW,0BAA0B;IAwCxC,OAAO,CAAC,sBAAsB;IAsCxB,SAAS,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrE,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,SAAS;CAMlB"}
@@ -6,7 +6,7 @@ import os from "os";
6
6
  import path from "path";
7
7
  import { test, request, expect } from "@playwright/test";
8
8
  import { mergeYamlFilesIfExists, deepMerge } from "../../utils/merge-yamls.js";
9
- import { generatePluginsFromMetadata, processPluginsForDeployment, getNormalizedPluginMergeKey, disablePlugins, } from "../../utils/plugin-metadata.js";
9
+ import { generatePluginsFromMetadata, processPluginsForDeployment, getNormalizedPluginMergeKey, disablePlugins, applyDisabledPlugins, } from "../../utils/plugin-metadata.js";
10
10
  import { envsubst } from "../../utils/common.js";
11
11
  import { runOnce } from "../../playwright/run-once.js";
12
12
  import cloneDeepWith from "lodash.clonedeepwith";
@@ -79,20 +79,20 @@ export class RHDHDeployment {
79
79
  }
80
80
  /** Shared merge strategy for dynamic plugin arrays. */
81
81
  static pluginMergeOpts = {
82
- arrayMergeStrategy: { byKey: "package" },
82
+ arrayMergeStrategy: {
83
+ byKey: "package",
84
+ normalizeKey: (item) => getNormalizedPluginMergeKey(item),
85
+ },
83
86
  };
84
87
  /**
85
- * Merges package defaults + auth + optional new-frontend-system defaults +
86
- * optional user config into a single dynamic plugins configuration.
88
+ * Merges package defaults, auth, and optional user config into a single
89
+ * dynamic plugins configuration.
87
90
  */
88
91
  async _mergeBaseConfigs(userConfigPath) {
89
92
  const authConfig = AUTH_CONFIG_PATHS[this.deploymentConfig.auth];
90
93
  const paths = [
91
94
  DEFAULT_CONFIG_PATHS.dynamicPlugins,
92
95
  authConfig.dynamicPlugins,
93
- ...(this.deploymentConfig.useNewFrontendSystem
94
- ? [DEFAULT_CONFIG_PATHS.newFrontendSystem.dynamicPlugins]
95
- : []),
96
96
  ...(userConfigPath ? [userConfigPath] : []),
97
97
  ];
98
98
  return await mergeYamlFilesIfExists(paths, RHDHDeployment.pluginMergeOpts);
@@ -139,9 +139,7 @@ export class RHDHDeployment {
139
139
  let result = await processPluginsForDeployment(config, WorkspacePaths.metadataDir);
140
140
  // Disable default plugins (PR builds only) — covers wrapper + OCI DPDY forms
141
141
  if (process.env.GIT_PR_NUMBER) {
142
- result = deepMerge(result, disabledPlugins, {
143
- arrayMergeStrategy: "concat",
144
- });
142
+ result = applyDisabledPlugins(result, disabledPlugins);
145
143
  }
146
144
  return result;
147
145
  }
@@ -153,17 +151,7 @@ export class RHDHDeployment {
153
151
  async _deployWithHelm(valueFile) {
154
152
  const chartVersion = await this._resolveChartVersion(this.deploymentConfig.version);
155
153
  this._log(`Helm chart version resolved to: ${chartVersion}`);
156
- const helmValuePaths = [
157
- DEFAULT_CONFIG_PATHS.helm.valueFile,
158
- ...(this.deploymentConfig.useNewFrontendSystem
159
- ? [DEFAULT_CONFIG_PATHS.newFrontendSystem.valueFile]
160
- : []),
161
- valueFile,
162
- ...(this.deploymentConfig.useNewFrontendSystem &&
163
- fs.existsSync(WorkspacePaths.valueFileAppNext)
164
- ? [WorkspacePaths.valueFileAppNext]
165
- : []),
166
- ];
154
+ const helmValuePaths = [DEFAULT_CONFIG_PATHS.helm.valueFile, valueFile];
167
155
  const valueFileObject = (await mergeYamlFilesIfExists(helmValuePaths));
168
156
  this._logBoxen("Value File", valueFileObject);
169
157
  // Merge dynamic plugins into the values file (including auth-specific plugins)
@@ -348,9 +336,6 @@ export class RHDHDeployment {
348
336
  process.env.INSTALLATION_METHOD ??
349
337
  "helm";
350
338
  const namespace = input.namespace ?? this.deploymentConfig.namespace;
351
- const useNewFrontendSystem = input.useNewFrontendSystem ??
352
- (namespace.endsWith("-app-next") ||
353
- process.env.USE_NEW_FRONTEND_SYSTEM === "true");
354
339
  const base = {
355
340
  version,
356
341
  namespace,
@@ -359,7 +344,6 @@ export class RHDHDeployment {
359
344
  secrets: input.secrets ?? WorkspacePaths.secrets,
360
345
  dynamicPlugins: input.dynamicPlugins ?? WorkspacePaths.dynamicPlugins,
361
346
  disablePlugins: input.disablePlugins ?? [],
362
- useNewFrontendSystem,
363
347
  };
364
348
  if (method === "helm") {
365
349
  return {
@@ -38,11 +38,11 @@ describe("dynamic-plugins merge (no user config path)", () => {
38
38
  assert.strictEqual(plugins.length, 1, "merged config must have exactly one keycloak plugin");
39
39
  assert.ok(plugins[0].package?.startsWith("oci://"), "metadata (OCI) must win over auth local path");
40
40
  });
41
- it("keeps user app-auth OCI ref over NFS defaults for same logical plugin", () => {
42
- const nfsDefaults = {
41
+ it("keeps user app-auth OCI ref over package defaults for the same logical plugin", () => {
42
+ const packageDefaults = {
43
43
  plugins: [
44
44
  {
45
- package: "oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-auth:bs_1.49.4__0.0.1",
45
+ package: "oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-auth:bs_1.54.6__1.1.0",
46
46
  disabled: false,
47
47
  },
48
48
  ],
@@ -55,7 +55,7 @@ describe("dynamic-plugins merge (no user config path)", () => {
55
55
  },
56
56
  ],
57
57
  };
58
- const merged = deepMerge(nfsDefaults, userPlugins, {
58
+ const merged = deepMerge(packageDefaults, userPlugins, {
59
59
  arrayMergeStrategy: {
60
60
  byKey: "package",
61
61
  normalizeKey: (item) => getNormalizedPluginMergeKey(item),
@@ -63,22 +63,22 @@ describe("dynamic-plugins merge (no user config path)", () => {
63
63
  });
64
64
  const plugins = merged.plugins;
65
65
  assert.strictEqual(plugins.length, 1);
66
- assert.ok(plugins[0].package?.includes("older__0.0.1"), "user layer must win over NFS defaults for the same logical plugin");
66
+ assert.ok(plugins[0].package?.includes("older__0.0.1"), "user layer must win over package defaults for the same logical plugin");
67
67
  });
68
- it("does not duplicate includes when NFS layer omits includes", () => {
68
+ it("does not duplicate includes when a package layer omits includes", () => {
69
69
  const common = {
70
70
  includes: ["dynamic-plugins.default.yaml"],
71
71
  plugins: [],
72
72
  };
73
- const nfsLayer = {
73
+ const packageLayer = {
74
74
  plugins: [
75
75
  {
76
- package: "oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-auth:bs_1.49.4__0.0.1",
76
+ package: "oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/red-hat-developer-hub-backstage-plugin-app-auth:bs_1.54.6__1.1.0",
77
77
  disabled: false,
78
78
  },
79
79
  ],
80
80
  };
81
- const merged = deepMerge(common, nfsLayer, {
81
+ const merged = deepMerge(common, packageLayer, {
82
82
  arrayMergeStrategy: {
83
83
  byKey: "package",
84
84
  normalizeKey: (item) => getNormalizedPluginMergeKey(item),
@@ -15,8 +15,6 @@ export type DeploymentOptions = {
15
15
  * `{{inherit}}`). Accepts display names, local paths, or OCI refs.
16
16
  */
17
17
  disablePlugins?: string[];
18
- /** When true, merge new-frontend-system (app-next) layers. When omitted, auto-detect: namespace ends with `-app-next` or `USE_NEW_FRONTEND_SYSTEM=true`. Pass false to disable. */
19
- useNewFrontendSystem?: boolean;
20
18
  };
21
19
  export type HelmDeploymentConfig = {
22
20
  method: "helm";
@@ -34,8 +32,6 @@ export type DeploymentConfigBase = {
34
32
  secrets: string;
35
33
  dynamicPlugins: string;
36
34
  disablePlugins: string[];
37
- /** New frontend system (Backstage app-next / NFS shell). */
38
- useNewFrontendSystem: boolean;
39
35
  };
40
36
  export type DeploymentConfig = DeploymentConfigBase & (HelmDeploymentConfig | OperatorDeploymentConfig);
41
37
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,mLAAmL;IACnL,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4DAA4D;IAC5D,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deployment/rhdh/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,CAAC"}
@@ -16,7 +16,7 @@ describe("github session file naming", () => {
16
16
  // same 30-second window submit the identical code and GitHub rejects the second.
17
17
  // Sharing the session is the point; withGithubSessionLock is what makes it safe.
18
18
  const file = githubSessionFile("rhdh-qe");
19
- assert.doesNotMatch(path.basename(file), /app-next|project/);
19
+ assert.doesNotMatch(path.basename(file), /project/);
20
20
  });
21
21
  it("is absolute, so it does not follow a later chdir", () => {
22
22
  assert.ok(path.isAbsolute(githubSessionFile("rhdh-qe")));
@@ -16,19 +16,62 @@ export interface BitwardenAttachment {
16
16
  id: string;
17
17
  fileName: string;
18
18
  }
19
+ export type BitwardenSecretStorage = "note" | "attachment";
20
+ export interface BitwardenSecretItem {
21
+ id: string;
22
+ name: string;
23
+ value: string;
24
+ storage: BitwardenSecretStorage;
25
+ revisionDate: string;
26
+ raw: Record<string, unknown>;
27
+ attachments: readonly BitwardenAttachment[];
28
+ attachment?: BitwardenAttachment;
29
+ }
19
30
  export interface BitwardenClientOptions {
20
31
  command?: string;
21
32
  env?: NodeJS.ProcessEnv;
22
33
  runner?: BitwardenCommandRunner;
34
+ removeTemporaryDirectory?: (directory: string) => Promise<void>;
23
35
  }
24
36
  export declare class BitwardenClient {
25
37
  private readonly command;
26
38
  private readonly env;
27
39
  private readonly runner;
40
+ private readonly removeTemporaryDirectory;
41
+ private sessionCheck?;
42
+ private readonly collections;
43
+ private readonly itemCollections;
28
44
  constructor(options?: BitwardenClientOptions);
29
45
  read(collectionId: ReadableCollectionId, selectors: readonly ExpandedSecretSelector[]): Promise<BitwardenSecret[]>;
46
+ readItem(collectionId: ReadableCollectionId, name: string): Promise<BitwardenSecretItem>;
47
+ findItem(collectionId: ReadableCollectionId, name: string): Promise<BitwardenSecretItem | undefined>;
48
+ createItem(collectionId: ReadableCollectionId, name: string, value: string, storage: BitwardenSecretStorage): Promise<BitwardenSecretItem>;
49
+ deleteItem(item: BitwardenSecretItem): Promise<void>;
50
+ updateItem(item: BitwardenSecretItem, value: string, storage?: BitwardenSecretStorage): Promise<BitwardenSecretItem>;
30
51
  private resolveCollection;
52
+ private loadCollection;
31
53
  private readSelector;
54
+ private ensureSession;
55
+ private checkSession;
56
+ private readItemById;
57
+ private parseItem;
58
+ private refreshItem;
59
+ private refreshItemById;
60
+ private findItemInCollection;
61
+ private collectionForItem;
62
+ private deleteItemById;
63
+ private itemPayload;
64
+ private updatedItemPayload;
65
+ private encodeItem;
66
+ private updateAttachment;
67
+ private convertNoteToAttachment;
68
+ private removeUploadedAttachment;
69
+ private convertAttachmentToNote;
70
+ private restoreNote;
71
+ private restoreAttachment;
72
+ private readAttachmentMetadata;
73
+ private editItem;
74
+ private createAttachment;
32
75
  private runOrThrow;
33
76
  }
34
77
  //# sourceMappingURL=bitwarden.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bitwarden.d.ts","sourceRoot":"","sources":["../../src/secrets/bitwarden.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,sBAAsB;IACrC,CACE,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAEpC,OAAO,GAAE,sBAA2B;IAM1C,IAAI,CACR,YAAY,EAAE,oBAAoB,EAClC,SAAS,EAAE,SAAS,sBAAsB,EAAE,GAC3C,OAAO,CAAC,eAAe,EAAE,CAAC;YA4Cf,iBAAiB;YA0CjB,YAAY;YA0HZ,UAAU;CAazB"}
1
+ {"version":3,"file":"bitwarden.d.ts","sourceRoot":"","sources":["../../src/secrets/bitwarden.ts"],"names":[],"mappings":"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"}