@pipeline-builder/api-core 4.1.7 → 4.1.8

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 (62) hide show
  1. package/README.md +8 -0
  2. package/lib/helpers/org-hierarchy.d.ts +19 -0
  3. package/lib/helpers/org-hierarchy.js +29 -1
  4. package/lib/index.d.ts +26 -0
  5. package/lib/index.js +27 -1
  6. package/lib/services/api-key-exchange.js +3 -2
  7. package/lib/services/audit-spool.js +3 -2
  8. package/lib/services/cache-service.js +5 -4
  9. package/lib/services/compliance-event-subscriber.js +3 -2
  10. package/lib/services/durable-event-bus.js +3 -2
  11. package/lib/services/entity-events.js +3 -2
  12. package/lib/services/env-redis.js +3 -2
  13. package/lib/services/http-client.js +8 -7
  14. package/lib/services/index.d.ts +6 -2
  15. package/lib/services/index.js +11 -3
  16. package/lib/services/jwks-cache.d.ts +0 -12
  17. package/lib/services/jwks-cache.js +7 -6
  18. package/lib/services/leader-lock.js +3 -2
  19. package/lib/services/notification-channels.d.ts +112 -0
  20. package/lib/services/notification-channels.js +123 -0
  21. package/lib/services/quota.js +4 -4
  22. package/lib/services/remote-audit-client.d.ts +1 -1
  23. package/lib/services/remote-audit-client.js +4 -4
  24. package/lib/services/retry-forever.d.ts +37 -0
  25. package/lib/services/retry-forever.js +58 -0
  26. package/lib/services/retry-strategy.d.ts +7 -3
  27. package/lib/services/retry-strategy.js +2 -2
  28. package/lib/services/scheduler.js +2 -2
  29. package/lib/services/service-boot.d.ts +20 -4
  30. package/lib/services/service-boot.js +10 -6
  31. package/lib/services/service-keys.js +6 -5
  32. package/lib/services/sse-ticket-store.js +3 -2
  33. package/lib/services/token-revocation.js +6 -5
  34. package/lib/testing/mock-api-core.d.ts +150 -0
  35. package/lib/testing/mock-api-core.js +246 -0
  36. package/lib/testing/mock-drizzle.d.ts +6 -0
  37. package/lib/testing/mock-drizzle.js +57 -0
  38. package/lib/types/http.d.ts +4 -0
  39. package/lib/types/http.js +1 -1
  40. package/lib/types/index.d.ts +1 -0
  41. package/lib/types/index.js +2 -1
  42. package/lib/types/metadata-keys.d.ts +543 -0
  43. package/lib/types/metadata-keys.js +117 -0
  44. package/lib/types/permissions.d.ts +19 -0
  45. package/lib/types/permissions.js +33 -1
  46. package/lib/types/quota-tiers.js +21 -31
  47. package/lib/utils/api-key.d.ts +0 -9
  48. package/lib/utils/api-key.js +2 -13
  49. package/lib/utils/audit.js +3 -2
  50. package/lib/utils/env.d.ts +6 -2
  51. package/lib/utils/env.js +9 -4
  52. package/lib/utils/identity.d.ts +37 -1
  53. package/lib/utils/identity.js +62 -10
  54. package/lib/utils/index.d.ts +2 -1
  55. package/lib/utils/index.js +7 -2
  56. package/lib/utils/params.d.ts +35 -0
  57. package/lib/utils/params.js +24 -1
  58. package/lib/utils/secret-encryption.d.ts +4 -4
  59. package/lib/utils/secret-encryption.js +5 -5
  60. package/lib/utils/ssrf.d.ts +73 -14
  61. package/lib/utils/ssrf.js +138 -21
  62. package/package.json +26 -1
@@ -0,0 +1,57 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Shared `drizzle-orm` module mock for ESM suites.
5
+ *
6
+ * WHY: eighteen suites hand-wrote `jest.unstable_mockModule('drizzle-orm', () => ({ … }))`
7
+ * with whatever operator subset they happened to need. `unstable_mockModule`
8
+ * replaces the WHOLE namespace, so the moment production code reached for an
9
+ * operator a suite had not listed (`desc` was present in 6 of the 18, absent in
10
+ * 12) ESM linking failed with "does not provide an export named X" — a build
11
+ * break with no relationship to the change that triggered it.
12
+ *
13
+ * THE FIX: start from the REAL module and overlay only what a suite asserts on.
14
+ * A new drizzle export — or a new operator used by production code — is inherited
15
+ * automatically, so the drift class is gone rather than merely re-synchronised.
16
+ *
17
+ * WHY IT LIVES IN api-core: every service already deep-imports test fixtures from
18
+ * `@pipeline-builder/api-core/lib/testing/*` (see tier-mock.ts). The deep path is
19
+ * NOT intercepted by a suite's `@pipeline-builder/api-core` module mock, so the
20
+ * factory is safe to import from inside a suite that mocks the api-core barrel.
21
+ *
22
+ * USAGE:
23
+ * import { drizzleMock } from '@pipeline-builder/api-core/lib/testing/mock-drizzle.js';
24
+ * jest.unstable_mockModule('drizzle-orm', () => drizzleMock({
25
+ * eq: (col: unknown, val: unknown) => ({ _kind: 'eq', col, val }),
26
+ * }));
27
+ *
28
+ * The eslint `no-restricted-syntax` rule added in `.projenrc.ts` fails any suite
29
+ * that goes back to an inline object literal here.
30
+ */
31
+ import { jest } from '@jest/globals';
32
+ /**
33
+ * The REAL drizzle-orm namespace, resolved LAZILY (and memoised) — evaluating it
34
+ * at module load races the ESM loader when a suite's static import graph already
35
+ * has drizzle in flight. `requireActual` bypasses the module mock, so this is
36
+ * safe to call from inside the very factory that replaces it.
37
+ */
38
+ let actualDrizzleCache;
39
+ try {
40
+ actualDrizzleCache = jest.requireActual('drizzle-orm');
41
+ }
42
+ catch {
43
+ actualDrizzleCache = undefined;
44
+ }
45
+ function actualDrizzle() {
46
+ actualDrizzleCache ??= jest.requireActual('drizzle-orm');
47
+ return actualDrizzleCache;
48
+ }
49
+ /**
50
+ * Build a `drizzle-orm` mock namespace: every real export, with `overrides`
51
+ * spread last so a suite can swap an operator for an inspectable stub (or a
52
+ * `jest.fn()` it asserts on) without having to enumerate the rest.
53
+ */
54
+ export function drizzleMock(overrides = {}) {
55
+ return { ...actualDrizzle(), ...overrides };
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1kcml6emxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvbW9jay1kcml6emxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUVILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckM7Ozs7O0dBS0c7QUFDSCxJQUFJLGtCQUF1RCxDQUFDO0FBQzVELElBQUksQ0FBQztJQUNILGtCQUFrQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUE0QixDQUFDO0FBQ3BGLENBQUM7QUFBQyxNQUFNLENBQUM7SUFDUCxrQkFBa0IsR0FBRyxTQUFTLENBQUM7QUFDakMsQ0FBQztBQUNELFNBQVMsYUFBYTtJQUNwQixrQkFBa0IsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBNEIsQ0FBQztJQUNwRixPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUFTLEdBQTRCLEVBQUU7SUFDakUsT0FBTyxFQUFFLEdBQUcsYUFBYSxFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2hhcmVkIGBkcml6emxlLW9ybWAgbW9kdWxlIG1vY2sgZm9yIEVTTSBzdWl0ZXMuXG4gKlxuICogV0hZOiBlaWdodGVlbiBzdWl0ZXMgaGFuZC13cm90ZSBgamVzdC51bnN0YWJsZV9tb2NrTW9kdWxlKCdkcml6emxlLW9ybScsICgpID0+ICh7IOKApiB9KSlgXG4gKiB3aXRoIHdoYXRldmVyIG9wZXJhdG9yIHN1YnNldCB0aGV5IGhhcHBlbmVkIHRvIG5lZWQuIGB1bnN0YWJsZV9tb2NrTW9kdWxlYFxuICogcmVwbGFjZXMgdGhlIFdIT0xFIG5hbWVzcGFjZSwgc28gdGhlIG1vbWVudCBwcm9kdWN0aW9uIGNvZGUgcmVhY2hlZCBmb3IgYW5cbiAqIG9wZXJhdG9yIGEgc3VpdGUgaGFkIG5vdCBsaXN0ZWQgKGBkZXNjYCB3YXMgcHJlc2VudCBpbiA2IG9mIHRoZSAxOCwgYWJzZW50IGluXG4gKiAxMikgRVNNIGxpbmtpbmcgZmFpbGVkIHdpdGggXCJkb2VzIG5vdCBwcm92aWRlIGFuIGV4cG9ydCBuYW1lZCBYXCIg4oCUIGEgYnVpbGRcbiAqIGJyZWFrIHdpdGggbm8gcmVsYXRpb25zaGlwIHRvIHRoZSBjaGFuZ2UgdGhhdCB0cmlnZ2VyZWQgaXQuXG4gKlxuICogVEhFIEZJWDogc3RhcnQgZnJvbSB0aGUgUkVBTCBtb2R1bGUgYW5kIG92ZXJsYXkgb25seSB3aGF0IGEgc3VpdGUgYXNzZXJ0cyBvbi5cbiAqIEEgbmV3IGRyaXp6bGUgZXhwb3J0IOKAlCBvciBhIG5ldyBvcGVyYXRvciB1c2VkIGJ5IHByb2R1Y3Rpb24gY29kZSDigJQgaXMgaW5oZXJpdGVkXG4gKiBhdXRvbWF0aWNhbGx5LCBzbyB0aGUgZHJpZnQgY2xhc3MgaXMgZ29uZSByYXRoZXIgdGhhbiBtZXJlbHkgcmUtc3luY2hyb25pc2VkLlxuICpcbiAqIFdIWSBJVCBMSVZFUyBJTiBhcGktY29yZTogZXZlcnkgc2VydmljZSBhbHJlYWR5IGRlZXAtaW1wb3J0cyB0ZXN0IGZpeHR1cmVzIGZyb21cbiAqIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS9saWIvdGVzdGluZy8qYCAoc2VlIHRpZXItbW9jay50cykuIFRoZSBkZWVwIHBhdGggaXNcbiAqIE5PVCBpbnRlcmNlcHRlZCBieSBhIHN1aXRlJ3MgYEBwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlYCBtb2R1bGUgbW9jaywgc28gdGhlXG4gKiBmYWN0b3J5IGlzIHNhZmUgdG8gaW1wb3J0IGZyb20gaW5zaWRlIGEgc3VpdGUgdGhhdCBtb2NrcyB0aGUgYXBpLWNvcmUgYmFycmVsLlxuICpcbiAqIFVTQUdFOlxuICogICBpbXBvcnQgeyBkcml6emxlTW9jayB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlL2xpYi90ZXN0aW5nL21vY2stZHJpenpsZS5qcyc7XG4gKiAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZSgnZHJpenpsZS1vcm0nLCAoKSA9PiBkcml6emxlTW9jayh7XG4gKiAgICAgZXE6IChjb2w6IHVua25vd24sIHZhbDogdW5rbm93bikgPT4gKHsgX2tpbmQ6ICdlcScsIGNvbCwgdmFsIH0pLFxuICogICB9KSk7XG4gKlxuICogVGhlIGVzbGludCBgbm8tcmVzdHJpY3RlZC1zeW50YXhgIHJ1bGUgYWRkZWQgaW4gYC5wcm9qZW5yYy50c2AgZmFpbHMgYW55IHN1aXRlXG4gKiB0aGF0IGdvZXMgYmFjayB0byBhbiBpbmxpbmUgb2JqZWN0IGxpdGVyYWwgaGVyZS5cbiAqL1xuXG5pbXBvcnQgeyBqZXN0IH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5cbi8qKlxuICogVGhlIFJFQUwgZHJpenpsZS1vcm0gbmFtZXNwYWNlLCByZXNvbHZlZCBMQVpJTFkgKGFuZCBtZW1vaXNlZCkg4oCUIGV2YWx1YXRpbmcgaXRcbiAqIGF0IG1vZHVsZSBsb2FkIHJhY2VzIHRoZSBFU00gbG9hZGVyIHdoZW4gYSBzdWl0ZSdzIHN0YXRpYyBpbXBvcnQgZ3JhcGggYWxyZWFkeVxuICogaGFzIGRyaXp6bGUgaW4gZmxpZ2h0LiBgcmVxdWlyZUFjdHVhbGAgYnlwYXNzZXMgdGhlIG1vZHVsZSBtb2NrLCBzbyB0aGlzIGlzXG4gKiBzYWZlIHRvIGNhbGwgZnJvbSBpbnNpZGUgdGhlIHZlcnkgZmFjdG9yeSB0aGF0IHJlcGxhY2VzIGl0LlxuICovXG5sZXQgYWN0dWFsRHJpenpsZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbnRyeSB7XG4gIGFjdHVhbERyaXp6bGVDYWNoZSA9IGplc3QucmVxdWlyZUFjdHVhbCgnZHJpenpsZS1vcm0nKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn0gY2F0Y2gge1xuICBhY3R1YWxEcml6emxlQ2FjaGUgPSB1bmRlZmluZWQ7XG59XG5mdW5jdGlvbiBhY3R1YWxEcml6emxlKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgYWN0dWFsRHJpenpsZUNhY2hlID8/PSBqZXN0LnJlcXVpcmVBY3R1YWwoJ2RyaXp6bGUtb3JtJykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJldHVybiBhY3R1YWxEcml6emxlQ2FjaGU7XG59XG5cbi8qKlxuICogQnVpbGQgYSBgZHJpenpsZS1vcm1gIG1vY2sgbmFtZXNwYWNlOiBldmVyeSByZWFsIGV4cG9ydCwgd2l0aCBgb3ZlcnJpZGVzYFxuICogc3ByZWFkIGxhc3Qgc28gYSBzdWl0ZSBjYW4gc3dhcCBhbiBvcGVyYXRvciBmb3IgYW4gaW5zcGVjdGFibGUgc3R1YiAob3IgYVxuICogYGplc3QuZm4oKWAgaXQgYXNzZXJ0cyBvbikgd2l0aG91dCBoYXZpbmcgdG8gZW51bWVyYXRlIHRoZSByZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZHJpenpsZU1vY2sob3ZlcnJpZGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4geyAuLi5hY3R1YWxEcml6emxlKCksIC4uLm92ZXJyaWRlcyB9O1xufVxuIl19
@@ -22,6 +22,10 @@ export interface HttpRequest {
22
22
  sub?: string;
23
23
  organizationId?: string;
24
24
  role?: string;
25
+ /** `user` | `service_account` | `service` — decides whether the
26
+ * client-settable `x-org-id` header may name the tenant (see
27
+ * `utils/identity.ts`). */
28
+ principalType?: string;
25
29
  [key: string]: unknown;
26
30
  };
27
31
  }
package/lib/types/http.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBHZW5lcmljIEhUVFAgaGVhZGVycyByZXByZXNlbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGVhZGVycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgSFRUUCByZXF1ZXN0IGludGVyZmFjZS5cbiAqIFJlcHJlc2VudHMgdGhlIG1pbmltYWwgcmVxdWVzdCBzaGFwZSBuZWVkZWQgYnkgYXBpLWNvcmUgdXRpbGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBSZXF1ZXN0IHtcbiAgLyoqIFJlcXVlc3QgaGVhZGVycyAqL1xuICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgLyoqIFJvdXRlIHBhcmFtZXRlcnMgKi9cbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG4gIC8qKiBRdWVyeSBwYXJhbWV0ZXJzICovXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIEF1dGhlbnRpY2F0ZWQgdXNlciAoaWYgcHJlc2VudCkuIGBzdWJgIGlzIHRoZSBPSURDLXN0YW5kYXJkIHN1YmplY3RcbiAgICogICg9IHVzZXIgaWQpOyBoaWdoZXItbGV2ZWwgbGF5ZXJzIG1heSBhdHRhY2ggYWRkaXRpb25hbCBmaWVsZHMsIGhlbmNlXG4gICAqICB0aGUgaW5kZXggc2lnbmF0dXJlLiAqL1xuICB1c2VyPzoge1xuICAgIHN1Yj86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25JZD86IHN0cmluZztcbiAgICByb2xlPzogc3RyaW5nO1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIH07XG59XG5cbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBHZW5lcmljIEhUVFAgaGVhZGVycyByZXByZXNlbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwSGVhZGVycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgSFRUUCByZXF1ZXN0IGludGVyZmFjZS5cbiAqIFJlcHJlc2VudHMgdGhlIG1pbmltYWwgcmVxdWVzdCBzaGFwZSBuZWVkZWQgYnkgYXBpLWNvcmUgdXRpbGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBSZXF1ZXN0IHtcbiAgLyoqIFJlcXVlc3QgaGVhZGVycyAqL1xuICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgLyoqIFJvdXRlIHBhcmFtZXRlcnMgKi9cbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG4gIC8qKiBRdWVyeSBwYXJhbWV0ZXJzICovXG4gIHF1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIEF1dGhlbnRpY2F0ZWQgdXNlciAoaWYgcHJlc2VudCkuIGBzdWJgIGlzIHRoZSBPSURDLXN0YW5kYXJkIHN1YmplY3RcbiAgICogICg9IHVzZXIgaWQpOyBoaWdoZXItbGV2ZWwgbGF5ZXJzIG1heSBhdHRhY2ggYWRkaXRpb25hbCBmaWVsZHMsIGhlbmNlXG4gICAqICB0aGUgaW5kZXggc2lnbmF0dXJlLiAqL1xuICB1c2VyPzoge1xuICAgIHN1Yj86IHN0cmluZztcbiAgICBvcmdhbml6YXRpb25JZD86IHN0cmluZztcbiAgICByb2xlPzogc3RyaW5nO1xuICAgIC8qKiBgdXNlcmAgfCBgc2VydmljZV9hY2NvdW50YCB8IGBzZXJ2aWNlYCDigJQgZGVjaWRlcyB3aGV0aGVyIHRoZVxuICAgICAqICBjbGllbnQtc2V0dGFibGUgYHgtb3JnLWlkYCBoZWFkZXIgbWF5IG5hbWUgdGhlIHRlbmFudCAoc2VlXG4gICAgICogIGB1dGlscy9pZGVudGl0eS50c2ApLiAqL1xuICAgIHByaW5jaXBhbFR5cGU/OiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgfTtcbn1cblxuIl19
@@ -8,4 +8,5 @@ export * from './http.js';
8
8
  export * from './quota-tiers.js';
9
9
  export * from './feature-flags.js';
10
10
  export * from './permissions.js';
11
+ export * from './metadata-keys.js';
11
12
  export * from './audit-events.js';
@@ -10,5 +10,6 @@ export * from './http.js';
10
10
  export * from './quota-tiers.js';
11
11
  export * from './feature-flags.js';
12
12
  export * from './permissions.js';
13
+ export * from './metadata-keys.js';
13
14
  export * from './audit-events.js';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1jb2Rlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lLXRlbXBsYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlzaWJpbGl0eS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZlYXR1cmUtZmxhZ3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9ucy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0LWV2ZW50cy5qcyc7XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWNvZGVzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jYXRhbG9nLW1ldGFkYXRhLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUtdGVtcGxhdGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi92aXNpYmlsaXR5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1mbGFncy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Blcm1pc3Npb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0YWRhdGEta2V5cy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2F1ZGl0LWV2ZW50cy5qcyc7XG4iXX0=
@@ -0,0 +1,543 @@
1
+ /**
2
+ * The pipeline METADATA KEY catalog — the single source of truth for both
3
+ * sides of the product.
4
+ *
5
+ * Key format: `aws:cdk:{namespace}:{property}` (all lowercase). These match the
6
+ * keys produced by `getCustomKey(namespace, property)` and looked up by
7
+ * `buildConfigFromMetadata` in pipeline-core.
8
+ *
9
+ * One table drives everything: `MetadataKeys` (the synth-time constants
10
+ * re-exported by `@pipeline-builder/pipeline-core`) and `METADATA_KEY_GROUPS`
11
+ * (the grouped picker the pipeline form builder renders) are BOTH derived from
12
+ * `METADATA_KEY_CATALOG`, so a key can never exist on one side only.
13
+ *
14
+ * This module is dependency-free so the browser can import it through the
15
+ * `@pipeline-builder/api-core/metadata-keys` subpath.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const metadata = {
20
+ * [MetadataKeys.SELF_MUTATION]: true,
21
+ * [MetadataKeys.PUBLISH_ASSETS_IN_PARALLEL]: true
22
+ * };
23
+ * ```
24
+ */
25
+ /** The value shape a metadata key accepts in the form builder. */
26
+ export type MetadataKeyType = 'boolean' | 'string';
27
+ /** One catalog entry: the wire key plus everything the picker needs to render it. */
28
+ export interface MetadataKeyEntry {
29
+ /** The `aws:cdk:…` key written into a pipeline's metadata. */
30
+ readonly key: string;
31
+ /** Picker group heading. */
32
+ readonly category: string;
33
+ /** Human label shown in the picker. */
34
+ readonly label: string;
35
+ /** Value editor to render. */
36
+ readonly type: MetadataKeyType;
37
+ }
38
+ /**
39
+ * Every supported metadata key, keyed by its `MetadataKeys` constant name and
40
+ * listed in picker order.
41
+ */
42
+ export declare const METADATA_KEY_CATALOG: {
43
+ readonly SELF_MUTATION: {
44
+ readonly key: 'aws:cdk:pipelines:codepipeline:selfmutation';
45
+ readonly category: 'CodePipeline';
46
+ readonly label: 'Self Mutation';
47
+ readonly type: 'boolean';
48
+ };
49
+ readonly CROSS_ACCOUNT_KEYS: {
50
+ readonly key: 'aws:cdk:pipelines:codepipeline:crossaccountkeys';
51
+ readonly category: 'CodePipeline';
52
+ readonly label: 'Cross Account Keys';
53
+ readonly type: 'boolean';
54
+ };
55
+ readonly DOCKER_ENABLED_FOR_SELF_MUTATION: {
56
+ readonly key: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation';
57
+ readonly category: 'CodePipeline';
58
+ readonly label: 'Docker Enabled for Self Mutation';
59
+ readonly type: 'boolean';
60
+ };
61
+ readonly DOCKER_ENABLED_FOR_SYNTH: {
62
+ readonly key: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth';
63
+ readonly category: 'CodePipeline';
64
+ readonly label: 'Docker Enabled for Synth';
65
+ readonly type: 'boolean';
66
+ };
67
+ readonly ENABLE_KEY_ROTATION: {
68
+ readonly key: 'aws:cdk:pipelines:codepipeline:enablekeyrotation';
69
+ readonly category: 'CodePipeline';
70
+ readonly label: 'Enable Key Rotation';
71
+ readonly type: 'boolean';
72
+ };
73
+ readonly PUBLISH_ASSETS_IN_PARALLEL: {
74
+ readonly key: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel';
75
+ readonly category: 'CodePipeline';
76
+ readonly label: 'Publish Assets in Parallel';
77
+ readonly type: 'boolean';
78
+ };
79
+ readonly REUSE_CROSS_REGION_SUPPORT_STACKS: {
80
+ readonly key: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks';
81
+ readonly category: 'CodePipeline';
82
+ readonly label: 'Reuse Cross Region Support Stacks';
83
+ readonly type: 'boolean';
84
+ };
85
+ readonly USE_CHANGE_SETS: {
86
+ readonly key: 'aws:cdk:pipelines:codepipeline:usechangesets';
87
+ readonly category: 'CodePipeline';
88
+ readonly label: 'Use Change Sets';
89
+ readonly type: 'boolean';
90
+ };
91
+ readonly USE_PIPELINE_ROLE_FOR_ACTIONS: {
92
+ readonly key: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions';
93
+ readonly category: 'CodePipeline';
94
+ readonly label: 'Use Pipeline Role for Actions';
95
+ readonly type: 'boolean';
96
+ };
97
+ readonly ARTIFACT_BUCKET: {
98
+ readonly key: 'aws:cdk:pipelines:codepipeline:artifactbucket';
99
+ readonly category: 'CodePipeline';
100
+ readonly label: 'Artifact Bucket';
101
+ readonly type: 'string';
102
+ };
103
+ readonly ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: {
104
+ readonly key: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults';
105
+ readonly category: 'CodePipeline';
106
+ readonly label: 'Asset Publishing CodeBuild Defaults';
107
+ readonly type: 'string';
108
+ };
109
+ readonly CDK_ASSETS_CLI_VERSION: {
110
+ readonly key: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion';
111
+ readonly category: 'CodePipeline';
112
+ readonly label: 'CDK Assets CLI Version';
113
+ readonly type: 'string';
114
+ };
115
+ readonly CLI_VERSION: {
116
+ readonly key: 'aws:cdk:pipelines:codepipeline:cliversion';
117
+ readonly category: 'CodePipeline';
118
+ readonly label: 'CLI Version';
119
+ readonly type: 'string';
120
+ };
121
+ readonly CODE_BUILD_DEFAULTS: {
122
+ readonly key: 'aws:cdk:pipelines:codepipeline:codebuilddefaults';
123
+ readonly category: 'CodePipeline';
124
+ readonly label: 'CodeBuild Defaults';
125
+ readonly type: 'string';
126
+ };
127
+ readonly CODE_PIPELINE: {
128
+ readonly key: 'aws:cdk:pipelines:codepipeline:codepipeline';
129
+ readonly category: 'CodePipeline';
130
+ readonly label: 'CodePipeline';
131
+ readonly type: 'string';
132
+ };
133
+ readonly CROSS_REGION_REPLICATION_BUCKETS: {
134
+ readonly key: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets';
135
+ readonly category: 'CodePipeline';
136
+ readonly label: 'Cross Region Replication Buckets';
137
+ readonly type: 'string';
138
+ };
139
+ readonly DOCKER_CREDENTIALS: {
140
+ readonly key: 'aws:cdk:pipelines:codepipeline:dockercredentials';
141
+ readonly category: 'CodePipeline';
142
+ readonly label: 'Docker Credentials';
143
+ readonly type: 'string';
144
+ };
145
+ readonly PIPELINE_NAME: {
146
+ readonly key: 'aws:cdk:pipelines:codepipeline:pipelinename';
147
+ readonly category: 'CodePipeline';
148
+ readonly label: 'Pipeline Name';
149
+ readonly type: 'string';
150
+ };
151
+ readonly PIPELINE_TYPE: {
152
+ readonly key: 'aws:cdk:pipelines:codepipeline:pipelinetype';
153
+ readonly category: 'CodePipeline';
154
+ readonly label: 'Pipeline Type';
155
+ readonly type: 'string';
156
+ };
157
+ readonly PIPELINE_ROLE: {
158
+ readonly key: 'aws:cdk:pipelines:codepipeline:role';
159
+ readonly category: 'CodePipeline';
160
+ readonly label: 'Pipeline Role';
161
+ readonly type: 'string';
162
+ };
163
+ readonly SELF_MUTATION_CODE_BUILD_DEFAULTS: {
164
+ readonly key: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults';
165
+ readonly category: 'CodePipeline';
166
+ readonly label: 'Self Mutation CodeBuild Defaults';
167
+ readonly type: 'string';
168
+ };
169
+ readonly SYNTH: {
170
+ readonly key: 'aws:cdk:pipelines:codepipeline:synth';
171
+ readonly category: 'CodePipeline';
172
+ readonly label: 'Synth';
173
+ readonly type: 'string';
174
+ };
175
+ readonly SYNTH_CODE_BUILD_DEFAULTS: {
176
+ readonly key: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults';
177
+ readonly category: 'CodePipeline';
178
+ readonly label: 'Synth CodeBuild Defaults';
179
+ readonly type: 'string';
180
+ };
181
+ readonly ACTION_ROLE: {
182
+ readonly key: 'aws:cdk:pipelines:codebuildstep:actionrole';
183
+ readonly category: 'CodeBuildStep';
184
+ readonly label: 'Action Role';
185
+ readonly type: 'string';
186
+ };
187
+ readonly ADDITIONAL_INPUTS: {
188
+ readonly key: 'aws:cdk:pipelines:codebuildstep:additionalinputs';
189
+ readonly category: 'CodeBuildStep';
190
+ readonly label: 'Additional Inputs';
191
+ readonly type: 'string';
192
+ };
193
+ readonly BUILD_ENVIRONMENT: {
194
+ readonly key: 'aws:cdk:pipelines:codebuildstep:buildenvironment';
195
+ readonly category: 'CodeBuildStep';
196
+ readonly label: 'Build Environment';
197
+ readonly type: 'string';
198
+ };
199
+ readonly CACHE: {
200
+ readonly key: 'aws:cdk:pipelines:codebuildstep:cache';
201
+ readonly category: 'CodeBuildStep';
202
+ readonly label: 'Cache';
203
+ readonly type: 'string';
204
+ };
205
+ readonly COMMANDS: {
206
+ readonly key: 'aws:cdk:pipelines:codebuildstep:commands';
207
+ readonly category: 'CodeBuildStep';
208
+ readonly label: 'Commands';
209
+ readonly type: 'string';
210
+ };
211
+ readonly CODE_BUILD_ENV: {
212
+ readonly key: 'aws:cdk:pipelines:codebuildstep:env';
213
+ readonly category: 'CodeBuildStep';
214
+ readonly label: 'Environment';
215
+ readonly type: 'string';
216
+ };
217
+ readonly ENV_FROM_CFN_OUTPUTS: {
218
+ readonly key: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs';
219
+ readonly category: 'CodeBuildStep';
220
+ readonly label: 'Env from CFN Outputs';
221
+ readonly type: 'string';
222
+ };
223
+ readonly FILE_SYSTEM_LOCATIONS: {
224
+ readonly key: 'aws:cdk:pipelines:codebuildstep:filesystemlocations';
225
+ readonly category: 'CodeBuildStep';
226
+ readonly label: 'File System Locations';
227
+ readonly type: 'string';
228
+ };
229
+ readonly INPUT: {
230
+ readonly key: 'aws:cdk:pipelines:codebuildstep:input';
231
+ readonly category: 'CodeBuildStep';
232
+ readonly label: 'Input';
233
+ readonly type: 'string';
234
+ };
235
+ readonly INSTALL_COMMANDS: {
236
+ readonly key: 'aws:cdk:pipelines:codebuildstep:installcommands';
237
+ readonly category: 'CodeBuildStep';
238
+ readonly label: 'Install Commands';
239
+ readonly type: 'string';
240
+ };
241
+ readonly LOGGING: {
242
+ readonly key: 'aws:cdk:pipelines:codebuildstep:logging';
243
+ readonly category: 'CodeBuildStep';
244
+ readonly label: 'Logging';
245
+ readonly type: 'string';
246
+ };
247
+ readonly PARTIAL_BUILD_SPEC: {
248
+ readonly key: 'aws:cdk:pipelines:codebuildstep:partialbuildspec';
249
+ readonly category: 'CodeBuildStep';
250
+ readonly label: 'Partial Build Spec';
251
+ readonly type: 'string';
252
+ };
253
+ readonly PRIMARY_OUTPUT_DIRECTORY: {
254
+ readonly key: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory';
255
+ readonly category: 'CodeBuildStep';
256
+ readonly label: 'Primary Output Directory';
257
+ readonly type: 'string';
258
+ };
259
+ readonly PROJECT_NAME: {
260
+ readonly key: 'aws:cdk:pipelines:codebuildstep:projectname';
261
+ readonly category: 'CodeBuildStep';
262
+ readonly label: 'Project Name';
263
+ readonly type: 'string';
264
+ };
265
+ readonly STEP_ROLE: {
266
+ readonly key: 'aws:cdk:pipelines:codebuildstep:role';
267
+ readonly category: 'CodeBuildStep';
268
+ readonly label: 'Step Role';
269
+ readonly type: 'string';
270
+ };
271
+ readonly ROLE_POLICY_STATEMENTS: {
272
+ readonly key: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements';
273
+ readonly category: 'CodeBuildStep';
274
+ readonly label: 'Role Policy Statements';
275
+ readonly type: 'string';
276
+ };
277
+ readonly TIMEOUT: {
278
+ readonly key: 'aws:cdk:pipelines:codebuildstep:timeout';
279
+ readonly category: 'CodeBuildStep';
280
+ readonly label: 'Timeout';
281
+ readonly type: 'string';
282
+ };
283
+ readonly SHELL_ADDITIONAL_INPUTS: {
284
+ readonly key: 'aws:cdk:pipelines:shellstep:additionalinputs';
285
+ readonly category: 'ShellStep';
286
+ readonly label: 'Additional Inputs';
287
+ readonly type: 'string';
288
+ };
289
+ readonly SHELL_COMMANDS: {
290
+ readonly key: 'aws:cdk:pipelines:shellstep:commands';
291
+ readonly category: 'ShellStep';
292
+ readonly label: 'Commands';
293
+ readonly type: 'string';
294
+ };
295
+ readonly SHELL_ENV: {
296
+ readonly key: 'aws:cdk:pipelines:shellstep:env';
297
+ readonly category: 'ShellStep';
298
+ readonly label: 'Environment';
299
+ readonly type: 'string';
300
+ };
301
+ readonly SHELL_ENV_FROM_CFN_OUTPUTS: {
302
+ readonly key: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs';
303
+ readonly category: 'ShellStep';
304
+ readonly label: 'Env from CFN Outputs';
305
+ readonly type: 'string';
306
+ };
307
+ readonly SHELL_INPUT: {
308
+ readonly key: 'aws:cdk:pipelines:shellstep:input';
309
+ readonly category: 'ShellStep';
310
+ readonly label: 'Input';
311
+ readonly type: 'string';
312
+ };
313
+ readonly SHELL_INSTALL_COMMANDS: {
314
+ readonly key: 'aws:cdk:pipelines:shellstep:installcommands';
315
+ readonly category: 'ShellStep';
316
+ readonly label: 'Install Commands';
317
+ readonly type: 'string';
318
+ };
319
+ readonly SHELL_PRIMARY_OUTPUT_DIRECTORY: {
320
+ readonly key: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory';
321
+ readonly category: 'ShellStep';
322
+ readonly label: 'Primary Output Directory';
323
+ readonly type: 'string';
324
+ };
325
+ readonly PRIVILEGED: {
326
+ readonly key: 'aws:cdk:codebuild:buildenvironment:privileged';
327
+ readonly category: 'Build Environment';
328
+ readonly label: 'Privileged';
329
+ readonly type: 'boolean';
330
+ };
331
+ readonly BUILD_IMAGE: {
332
+ readonly key: 'aws:cdk:codebuild:buildenvironment:buildimage';
333
+ readonly category: 'Build Environment';
334
+ readonly label: 'Build Image';
335
+ readonly type: 'string';
336
+ };
337
+ readonly CERTIFICATE: {
338
+ readonly key: 'aws:cdk:codebuild:buildenvironment:certificate';
339
+ readonly category: 'Build Environment';
340
+ readonly label: 'Certificate';
341
+ readonly type: 'string';
342
+ };
343
+ readonly COMPUTE_TYPE: {
344
+ readonly key: 'aws:cdk:codebuild:buildenvironment:computetype';
345
+ readonly category: 'Build Environment';
346
+ readonly label: 'Compute Type';
347
+ readonly type: 'string';
348
+ };
349
+ readonly DOCKER_SERVER: {
350
+ readonly key: 'aws:cdk:codebuild:buildenvironment:dockerserver';
351
+ readonly category: 'Build Environment';
352
+ readonly label: 'Docker Server';
353
+ readonly type: 'string';
354
+ };
355
+ readonly ENVIRONMENT_VARIABLES: {
356
+ readonly key: 'aws:cdk:codebuild:buildenvironment:environmentvariables';
357
+ readonly category: 'Build Environment';
358
+ readonly label: 'Environment Variables';
359
+ readonly type: 'string';
360
+ };
361
+ readonly FLEET: {
362
+ readonly key: 'aws:cdk:codebuild:buildenvironment:fleet';
363
+ readonly category: 'Build Environment';
364
+ readonly label: 'Fleet';
365
+ readonly type: 'string';
366
+ };
367
+ readonly NETWORK_TYPE: {
368
+ readonly key: 'aws:cdk:ec2:network:type';
369
+ readonly category: 'Network';
370
+ readonly label: 'Network Type';
371
+ readonly type: 'string';
372
+ };
373
+ readonly NETWORK_VPC_ID: {
374
+ readonly key: 'aws:cdk:ec2:network:vpcid';
375
+ readonly category: 'Network';
376
+ readonly label: 'VPC ID';
377
+ readonly type: 'string';
378
+ };
379
+ readonly NETWORK_SUBNET_IDS: {
380
+ readonly key: 'aws:cdk:ec2:network:subnetids';
381
+ readonly category: 'Network';
382
+ readonly label: 'Subnet IDs';
383
+ readonly type: 'string';
384
+ };
385
+ readonly NETWORK_SUBNET_TYPE: {
386
+ readonly key: 'aws:cdk:ec2:network:subnettype';
387
+ readonly category: 'Network';
388
+ readonly label: 'Subnet Type';
389
+ readonly type: 'string';
390
+ };
391
+ readonly NETWORK_AVAILABILITY_ZONES: {
392
+ readonly key: 'aws:cdk:ec2:network:availabilityzones';
393
+ readonly category: 'Network';
394
+ readonly label: 'Availability Zones';
395
+ readonly type: 'string';
396
+ };
397
+ readonly NETWORK_SUBNET_GROUP_NAME: {
398
+ readonly key: 'aws:cdk:ec2:network:subnetgroupname';
399
+ readonly category: 'Network';
400
+ readonly label: 'Subnet Group Name';
401
+ readonly type: 'string';
402
+ };
403
+ readonly NETWORK_SECURITY_GROUP_IDS: {
404
+ readonly key: 'aws:cdk:ec2:network:securitygroupids';
405
+ readonly category: 'Network';
406
+ readonly label: 'Security Group IDs';
407
+ readonly type: 'string';
408
+ };
409
+ readonly NETWORK_TAGS: {
410
+ readonly key: 'aws:cdk:ec2:network:tags';
411
+ readonly category: 'Network';
412
+ readonly label: 'VPC Lookup Tags';
413
+ readonly type: 'string';
414
+ };
415
+ readonly NETWORK_VPC_NAME: {
416
+ readonly key: 'aws:cdk:ec2:network:vpcname';
417
+ readonly category: 'Network';
418
+ readonly label: 'VPC Name';
419
+ readonly type: 'string';
420
+ };
421
+ readonly NETWORK_REGION: {
422
+ readonly key: 'aws:cdk:ec2:network:region';
423
+ readonly category: 'Network';
424
+ readonly label: 'Region';
425
+ readonly type: 'string';
426
+ };
427
+ readonly ROLE_TYPE: {
428
+ readonly key: 'aws:cdk:iam:role:type';
429
+ readonly category: 'IAM Role';
430
+ readonly label: 'Role Type';
431
+ readonly type: 'string';
432
+ };
433
+ readonly ROLE_ARN: {
434
+ readonly key: 'aws:cdk:iam:role:rolearn';
435
+ readonly category: 'IAM Role';
436
+ readonly label: 'Role ARN';
437
+ readonly type: 'string';
438
+ };
439
+ readonly ROLE_NAME: {
440
+ readonly key: 'aws:cdk:iam:role:rolename';
441
+ readonly category: 'IAM Role';
442
+ readonly label: 'Role Name';
443
+ readonly type: 'string';
444
+ };
445
+ readonly ROLE_MUTABLE: {
446
+ readonly key: 'aws:cdk:iam:role:mutable';
447
+ readonly category: 'IAM Role';
448
+ readonly label: 'Mutable';
449
+ readonly type: 'boolean';
450
+ };
451
+ readonly SECURITY_GROUP_TYPE: {
452
+ readonly key: 'aws:cdk:ec2:securitygroup:type';
453
+ readonly category: 'Security Group';
454
+ readonly label: 'Security Group Type';
455
+ readonly type: 'string';
456
+ };
457
+ readonly SECURITY_GROUP_IDS: {
458
+ readonly key: 'aws:cdk:ec2:securitygroup:securitygroupids';
459
+ readonly category: 'Security Group';
460
+ readonly label: 'Security Group IDs';
461
+ readonly type: 'string';
462
+ };
463
+ readonly SECURITY_GROUP_MUTABLE: {
464
+ readonly key: 'aws:cdk:ec2:securitygroup:mutable';
465
+ readonly category: 'Security Group';
466
+ readonly label: 'Mutable';
467
+ readonly type: 'boolean';
468
+ };
469
+ readonly SECURITY_GROUP_NAME: {
470
+ readonly key: 'aws:cdk:ec2:securitygroup:securitygroupname';
471
+ readonly category: 'Security Group';
472
+ readonly label: 'Security Group Name';
473
+ readonly type: 'string';
474
+ };
475
+ readonly SECURITY_GROUP_VPC_ID: {
476
+ readonly key: 'aws:cdk:ec2:securitygroup:vpcid';
477
+ readonly category: 'Security Group';
478
+ readonly label: 'VPC ID';
479
+ readonly type: 'string';
480
+ };
481
+ readonly NOTIFICATION_TOPIC_ARN: {
482
+ readonly key: 'aws:cdk:notifications:topic:arn';
483
+ readonly category: 'Notifications';
484
+ readonly label: 'SNS Topic ARN';
485
+ readonly type: 'string';
486
+ };
487
+ readonly NOTIFICATION_EVENTS: {
488
+ readonly key: 'aws:cdk:notifications:events';
489
+ readonly category: 'Notifications';
490
+ readonly label: 'Notification Events';
491
+ readonly type: 'string';
492
+ };
493
+ readonly ENABLE_EXECUTION_EVENTS: {
494
+ readonly key: 'aws:cdk:operations:executionevents';
495
+ readonly category: 'Operations';
496
+ readonly label: 'Enable execution event tracking';
497
+ readonly type: 'boolean';
498
+ };
499
+ readonly ENABLE_METRICS: {
500
+ readonly key: 'aws:cdk:operations:metrics';
501
+ readonly category: 'Operations';
502
+ readonly label: 'Enable CloudWatch failure alarms';
503
+ readonly type: 'boolean';
504
+ };
505
+ readonly ARTIFACT_RETENTION_DAYS: {
506
+ readonly key: 'aws:cdk:operations:artifactretentiondays';
507
+ readonly category: 'Operations';
508
+ readonly label: 'Artifact retention in days';
509
+ readonly type: 'string';
510
+ };
511
+ readonly PIPELINE_VARIABLES: {
512
+ readonly key: 'aws:cdk:operations:variables';
513
+ readonly category: 'Operations';
514
+ readonly label: 'Pipeline runtime variables (JSON)';
515
+ readonly type: 'string';
516
+ };
517
+ readonly KMS_KEY_ARN: {
518
+ readonly key: 'aws:cdk:encryption:kmskeyarn';
519
+ readonly category: 'Encryption';
520
+ readonly label: 'Custom KMS key ARN for artifacts';
521
+ readonly type: 'string';
522
+ };
523
+ };
524
+ /** Constant name → `aws:cdk:…` key, for typo-free synth-time authoring. */
525
+ export declare const MetadataKeys: { readonly [K in keyof typeof METADATA_KEY_CATALOG]: (typeof METADATA_KEY_CATALOG)[K]['key']; };
526
+ /** Any supported metadata key. */
527
+ export type MetadataKey = (typeof MetadataKeys)[keyof typeof MetadataKeys];
528
+ /** One picker option. */
529
+ export interface MetadataKeyOption {
530
+ key: string;
531
+ label: string;
532
+ type: MetadataKeyType;
533
+ }
534
+ /** One picker group. */
535
+ export interface MetadataKeyGroup {
536
+ category: string;
537
+ keys: MetadataKeyOption[];
538
+ }
539
+ /**
540
+ * The catalog grouped by category, in declaration order — what the pipeline
541
+ * form builder's metadata picker renders.
542
+ */
543
+ export declare const METADATA_KEY_GROUPS: readonly MetadataKeyGroup[];