@pipeline-builder/api-core 4.1.13 → 4.1.14
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.
- package/README.md +3 -2
- package/lib/constants/index.d.ts +0 -1
- package/lib/constants/index.js +1 -2
- package/lib/errors/app-errors.d.ts +8 -3
- package/lib/errors/app-errors.js +10 -5
- package/lib/helpers/access-helpers.d.ts +4 -6
- package/lib/helpers/access-helpers.js +6 -8
- package/lib/helpers/index.d.ts +3 -3
- package/lib/helpers/index.js +4 -4
- package/lib/helpers/org-hierarchy-http.d.ts +11 -10
- package/lib/helpers/org-hierarchy-http.js +24 -35
- package/lib/helpers/org-hierarchy.d.ts +37 -3
- package/lib/helpers/org-hierarchy.js +45 -4
- package/lib/helpers/restore-helpers.d.ts +44 -24
- package/lib/helpers/restore-helpers.js +41 -52
- package/lib/helpers/sse-helpers.d.ts +29 -7
- package/lib/helpers/sse-helpers.js +36 -9
- package/lib/index.d.ts +16 -14
- package/lib/index.js +17 -15
- package/lib/middleware/assurance.d.ts +116 -0
- package/lib/middleware/assurance.js +176 -0
- package/lib/middleware/auth.d.ts +5 -427
- package/lib/middleware/auth.js +36 -789
- package/lib/middleware/ecosystem-guard.d.ts +47 -0
- package/lib/middleware/ecosystem-guard.js +60 -0
- package/lib/middleware/index.d.ts +11 -4
- package/lib/middleware/index.js +12 -5
- package/lib/middleware/jwt-verify.d.ts +52 -0
- package/lib/middleware/jwt-verify.js +105 -0
- package/lib/middleware/permission-gates.d.ts +133 -0
- package/lib/middleware/permission-gates.js +260 -0
- package/lib/middleware/revocation.d.ts +96 -0
- package/lib/middleware/revocation.js +162 -0
- package/lib/middleware/route-table.d.ts +11 -0
- package/lib/middleware/route-table.js +4 -1
- package/lib/middleware/service-tokens.d.ts +83 -0
- package/lib/middleware/service-tokens.js +158 -0
- package/lib/middleware/step-up.d.ts +2 -2
- package/lib/middleware/step-up.js +8 -7
- package/lib/middleware/system-org.d.ts +20 -0
- package/lib/middleware/system-org.js +25 -0
- package/lib/openapi/routes/plugin-routes.js +133 -10
- package/lib/openapi/schema-registry.js +2 -5
- package/lib/routes/index.d.ts +1 -1
- package/lib/routes/index.js +2 -2
- package/lib/services/api-key-exchange.js +7 -5
- package/lib/services/audit-spool.d.ts +34 -10
- package/lib/services/audit-spool.js +75 -34
- package/lib/services/cache-service.d.ts +7 -0
- package/lib/services/cache-service.js +1 -1
- package/lib/services/circuit-breaker.d.ts +14 -1
- package/lib/services/circuit-breaker.js +36 -10
- package/lib/services/compliance-client.d.ts +10 -2
- package/lib/services/compliance-client.js +17 -10
- package/lib/services/compliance-event-subscriber.js +6 -6
- package/lib/services/durable-event-bus.js +8 -11
- package/lib/services/ecosystem-notify-client.d.ts +32 -0
- package/lib/services/ecosystem-notify-client.js +71 -0
- package/lib/services/env-redis.d.ts +4 -1
- package/lib/services/env-redis.js +32 -3
- package/lib/services/http-client.d.ts +19 -0
- package/lib/services/http-client.js +98 -19
- package/lib/services/index.d.ts +25 -24
- package/lib/services/index.js +25 -22
- package/lib/services/jwks-cache.js +5 -4
- package/lib/services/leader-lock.d.ts +22 -5
- package/lib/services/leader-lock.js +61 -6
- package/lib/services/quota.d.ts +9 -4
- package/lib/services/quota.js +34 -40
- package/lib/services/remote-audit-client.d.ts +28 -32
- package/lib/services/remote-audit-client.js +166 -49
- package/lib/services/retry-forever.js +5 -11
- package/lib/services/retry-strategy.d.ts +1 -1
- package/lib/services/retry-strategy.js +5 -4
- package/lib/services/scheduler.d.ts +8 -3
- package/lib/services/scheduler.js +17 -5
- package/lib/services/service-boot.d.ts +14 -13
- package/lib/services/service-boot.js +18 -15
- package/lib/services/service-keys.d.ts +1 -1
- package/lib/services/service-keys.js +12 -18
- package/lib/services/sse-ticket-store.d.ts +9 -1
- package/lib/services/sse-ticket-store.js +24 -9
- package/lib/services/system-notification.d.ts +27 -0
- package/lib/services/system-notification.js +50 -0
- package/lib/services/token-revocation.d.ts +50 -1
- package/lib/services/token-revocation.js +103 -3
- package/lib/types/audit-events.d.ts +6 -6
- package/lib/types/audit-events.js +1 -1
- package/lib/types/common.d.ts +32 -13
- package/lib/types/common.js +2 -1
- package/lib/types/ecosystem-notifications.d.ts +142 -0
- package/lib/types/ecosystem-notifications.js +210 -0
- package/lib/types/ecosystem.d.ts +77 -0
- package/lib/types/ecosystem.js +119 -0
- package/lib/types/error-codes.d.ts +81 -0
- package/lib/types/error-codes.js +108 -1
- package/lib/types/feature-flags.d.ts +21 -1
- package/lib/types/feature-flags.js +36 -2
- package/lib/types/index.d.ts +14 -9
- package/lib/types/index.js +15 -10
- package/lib/types/permissions.d.ts +46 -8
- package/lib/types/permissions.js +75 -12
- package/lib/types/plugin-catalog.d.ts +35 -0
- package/lib/types/plugin-catalog.js +39 -0
- package/lib/types/plugin-health.d.ts +102 -0
- package/lib/types/plugin-health.js +184 -0
- package/lib/types/quota-tiers.d.ts +15 -0
- package/lib/types/quota-tiers.js +23 -3
- package/lib/types/wire-vocabulary.d.ts +102 -0
- package/lib/types/wire-vocabulary.js +94 -0
- package/lib/utils/alias-resolver.js +2 -2
- package/lib/utils/audit.d.ts +5 -2
- package/lib/utils/audit.js +6 -3
- package/lib/utils/compliance-attributes.js +3 -4
- package/lib/utils/concurrency.d.ts +7 -0
- package/lib/utils/concurrency.js +13 -1
- package/lib/utils/env.d.ts +3 -4
- package/lib/utils/env.js +4 -5
- package/lib/utils/identity.d.ts +13 -4
- package/lib/utils/identity.js +18 -10
- package/lib/utils/index.d.ts +13 -10
- package/lib/utils/index.js +13 -10
- package/lib/utils/jwk.d.ts +4 -0
- package/lib/utils/jwk.js +13 -1
- package/lib/utils/logger.d.ts +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/object.d.ts +11 -0
- package/lib/utils/object.js +24 -1
- package/lib/utils/params.d.ts +8 -22
- package/lib/utils/params.js +15 -43
- package/lib/utils/plugin-compliance.d.ts +98 -0
- package/lib/utils/plugin-compliance.js +78 -0
- package/lib/utils/proof-of-work.d.ts +69 -0
- package/lib/utils/proof-of-work.js +139 -0
- package/lib/utils/response.d.ts +16 -6
- package/lib/utils/response.js +18 -15
- package/lib/utils/retention.d.ts +17 -0
- package/lib/utils/retention.js +30 -0
- package/lib/utils/secret-encryption.d.ts +7 -7
- package/lib/utils/secret-encryption.js +9 -10
- package/lib/utils/secret-rotation.js +2 -2
- package/lib/utils/sensitive-patterns.js +4 -5
- package/lib/utils/service-registry.d.ts +15 -0
- package/lib/utils/service-registry.js +24 -0
- package/lib/utils/ssrf.d.ts +11 -2
- package/lib/utils/ssrf.js +112 -33
- package/lib/validation/ai-schemas.js +3 -2
- package/lib/validation/common-schemas.d.ts +0 -9
- package/lib/validation/common-schemas.js +1 -7
- package/lib/validation/dockerfile-static.d.ts +26 -0
- package/lib/validation/dockerfile-static.js +210 -0
- package/lib/validation/index.d.ts +13 -4
- package/lib/validation/index.js +14 -5
- package/lib/validation/message-schemas.js +6 -4
- package/lib/validation/pipeline-schemas.d.ts +8 -2
- package/lib/validation/pipeline-schemas.js +30 -4
- package/lib/validation/plugin-base-images.d.ts +20 -0
- package/lib/validation/plugin-base-images.js +17 -0
- package/lib/validation/plugin-catalog-detect.d.ts +86 -0
- package/lib/validation/plugin-catalog-detect.js +237 -0
- package/lib/validation/plugin-catalog-metadata.d.ts +141 -0
- package/lib/validation/plugin-catalog-metadata.js +162 -0
- package/lib/validation/plugin-heuristics.d.ts +41 -0
- package/lib/validation/plugin-heuristics.js +211 -0
- package/lib/validation/plugin-lint.d.ts +18 -0
- package/lib/validation/plugin-lint.js +136 -0
- package/lib/validation/plugin-name-confusable.d.ts +15 -0
- package/lib/validation/plugin-name-confusable.js +81 -0
- package/lib/validation/plugin-schemas.d.ts +40 -26
- package/lib/validation/plugin-schemas.js +26 -23
- package/lib/validation/plugin-spec-schema.d.ts +112 -0
- package/lib/validation/plugin-spec-schema.js +163 -0
- package/lib/validation/plugin-template-contract.d.ts +64 -0
- package/lib/validation/plugin-template-contract.js +113 -0
- package/package.json +69 -4
- package/lib/testing/mock-api-core.d.ts +0 -150
- package/lib/testing/mock-api-core.js +0 -246
- package/lib/testing/mock-drizzle.d.ts +0 -6
- package/lib/testing/mock-drizzle.js +0 -57
- package/lib/testing/route-coverage.d.ts +0 -64
- package/lib/testing/route-coverage.js +0 -183
- package/lib/testing/service-tokens.d.ts +0 -66
- package/lib/testing/service-tokens.js +0 -137
- package/lib/testing/tier-mock.d.ts +0 -44
- package/lib/testing/tier-mock.js +0 -65
- package/lib/testing/user-tokens.d.ts +0 -75
- package/lib/testing/user-tokens.js +0 -115
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Copyright 2026 Pipeline Builder Contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Closed string vocabularies that cross the wire between the services and the
|
|
5
|
+
* browser. Each is an `as const` array (the runtime list a Zod enum, a Mongoose
|
|
6
|
+
* enum or a drizzle `$type` builds from) plus the union type derived from it.
|
|
7
|
+
*
|
|
8
|
+
* Dependency-free on purpose: the frontend imports these types, so a value added
|
|
9
|
+
* here reaches the UI's exhaustive label maps as a compile error instead of a
|
|
10
|
+
* silently unhandled string. The Postgres CHECK constraints in
|
|
11
|
+
* deploy/shared/postgres-init.sql mirror the ones stored in SQL.
|
|
12
|
+
*/
|
|
13
|
+
// -----------------------------------------------------------------------------
|
|
14
|
+
// Compliance rules
|
|
15
|
+
// -----------------------------------------------------------------------------
|
|
16
|
+
export const RULE_SEVERITIES = ['warning', 'error', 'critical'];
|
|
17
|
+
export const RULE_TARGETS = ['plugin', 'pipeline'];
|
|
18
|
+
/** Field-evaluation operators; the engine's implementations live in api/compliance. */
|
|
19
|
+
export const RULE_OPERATORS = [
|
|
20
|
+
'eq', 'neq',
|
|
21
|
+
'contains', 'notContains',
|
|
22
|
+
'regex',
|
|
23
|
+
'gt', 'gte', 'lt', 'lte',
|
|
24
|
+
'in', 'notIn',
|
|
25
|
+
'exists', 'notExists', 'notEmpty',
|
|
26
|
+
'countGt', 'countLt',
|
|
27
|
+
'lengthGt', 'lengthLt',
|
|
28
|
+
];
|
|
29
|
+
/** Operators that test presence only and take no comparison value. */
|
|
30
|
+
export const VALUELESS_RULE_OPERATORS = ['exists', 'notExists', 'notEmpty'];
|
|
31
|
+
/** How a multi-condition rule combines its conditions. */
|
|
32
|
+
export const RULE_CONDITION_MODES = ['all', 'any'];
|
|
33
|
+
/** `published` rules belong to the system org and apply by subscription. */
|
|
34
|
+
export const RULE_SCOPES = ['org', 'published'];
|
|
35
|
+
// -----------------------------------------------------------------------------
|
|
36
|
+
// Messages
|
|
37
|
+
// -----------------------------------------------------------------------------
|
|
38
|
+
export const MESSAGE_TYPES = ['announcement', 'conversation'];
|
|
39
|
+
export const MESSAGE_PRIORITIES = ['normal', 'high', 'urgent'];
|
|
40
|
+
// -----------------------------------------------------------------------------
|
|
41
|
+
// Billing
|
|
42
|
+
// -----------------------------------------------------------------------------
|
|
43
|
+
export const SUBSCRIPTION_STATUSES = ['active', 'canceled', 'past_due', 'trialing', 'incomplete'];
|
|
44
|
+
export const BILLING_INTERVALS = ['monthly', 'annual'];
|
|
45
|
+
// -----------------------------------------------------------------------------
|
|
46
|
+
// Identity
|
|
47
|
+
// -----------------------------------------------------------------------------
|
|
48
|
+
/** OIDC providers an org IdP config can name (GitHub is OAuth-only and refused by the OIDC engine). */
|
|
49
|
+
export const IDP_PROVIDERS = ['generic-oidc', 'cognito', 'google', 'github'];
|
|
50
|
+
/** The federation protocol an org signs in over — one per org. */
|
|
51
|
+
export const IDP_PROTOCOLS = ['oidc', 'saml'];
|
|
52
|
+
/** The coarse grant a permission role gives its members. */
|
|
53
|
+
export const ROLE_GRANTS = ['superadmin', 'admin', 'member'];
|
|
54
|
+
// -----------------------------------------------------------------------------
|
|
55
|
+
// Plugin ecosystem (each mirrored by a CHECK in postgres-init.sql)
|
|
56
|
+
// -----------------------------------------------------------------------------
|
|
57
|
+
/** Publisher trust tier. */
|
|
58
|
+
export const PUBLISHER_TIERS = ['official', 'verified', 'community', 'unverified'];
|
|
59
|
+
/** A directory listing's lifecycle state. */
|
|
60
|
+
export const LISTING_STATES = ['listed', 'unmaintained', 'suspended', 'transferred'];
|
|
61
|
+
/** What a publish request asks the system org to do. */
|
|
62
|
+
export const PUBLISH_REQUEST_KINDS = [
|
|
63
|
+
'new_listing', 'new_version', 'listing_update', 'yank', 'unpause',
|
|
64
|
+
'transfer', 'claim', 'profile_change', 'advisory', 'verify', 'moderation', 'submission',
|
|
65
|
+
];
|
|
66
|
+
export const PUBLISH_REQUEST_STATUSES = ['pending', 'pending_second_approval', 'approved', 'rejected', 'withdrawn'];
|
|
67
|
+
/** The statuses a request is still "open" in (drives the one-open-request index). */
|
|
68
|
+
export const OPEN_PUBLISH_REQUEST_STATUSES = ['pending', 'pending_second_approval'];
|
|
69
|
+
/** `security` requests jump the moderation queue. */
|
|
70
|
+
export const PUBLISH_REQUEST_LANES = ['standard', 'security'];
|
|
71
|
+
/** Install version policy: exact, `~`, `^`, or anything non-breaking. */
|
|
72
|
+
export const INSTALL_VERSION_POLICIES = ['pinned', 'patch', 'minor', 'latest'];
|
|
73
|
+
export const INSTALL_STATUSES = ['active', 'pending_approval', 'denied'];
|
|
74
|
+
/** The advisory severity at which a consumption policy blocks installs. */
|
|
75
|
+
export const BLOCK_ON_ADVISORY_LEVELS = ['critical', 'high', 'never'];
|
|
76
|
+
/** Whether official plugins need an explicit install before a pipeline can use them. */
|
|
77
|
+
export const OFFICIAL_INSTALLS_MODES = ['implicit', 'explicit'];
|
|
78
|
+
export const REVIEW_STATUSES = ['published', 'held', 'removed'];
|
|
79
|
+
/** Why a held review is held. */
|
|
80
|
+
export const REVIEW_HOLD_REASONS = ['reports', 'burst', 'filter', 'security', 'moderator'];
|
|
81
|
+
/** A review report's category; `security` routes privately to the advisory path. */
|
|
82
|
+
export const REVIEW_REPORT_CATEGORIES = ['spam', 'abuse', 'off_topic', 'security'];
|
|
83
|
+
export const ADVISORY_SEVERITIES = ['critical', 'high', 'medium', 'low'];
|
|
84
|
+
export const ADVISORY_STATES = ['draft', 'published', 'withdrawn'];
|
|
85
|
+
export const ADVISORY_SOURCES = ['publisher', 'moderator', 'cve_rescan', 'review'];
|
|
86
|
+
/**
|
|
87
|
+
* An anonymous submission's lifecycle. `publishing` is the short claim an
|
|
88
|
+
* approval takes before it copies the quarantined image out, so an expiry can
|
|
89
|
+
* never delete the artifacts of a submission that is being published.
|
|
90
|
+
*/
|
|
91
|
+
export const SUBMISSION_STATUSES = [
|
|
92
|
+
'pending_verification', 'pending_review', 'publishing', 'gate_failed', 'approved', 'rejected', 'expired', 'claimed',
|
|
93
|
+
];
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS12b2NhYnVsYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3dpcmUtdm9jYWJ1bGFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILGdGQUFnRjtBQUNoRixtQkFBbUI7QUFDbkIsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVELHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsSUFBSSxFQUFFLEtBQUs7SUFDWCxVQUFVLEVBQUUsYUFBYTtJQUN6QixPQUFPO0lBQ1AsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztJQUN4QixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNqQyxTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsVUFBVTtDQUNkLENBQUM7QUFHWCxzRUFBc0U7QUFDdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBNEMsQ0FBQztBQUV2SCwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHNUQsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQVUsQ0FBQztBQUd6RCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUVoRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFVLENBQUM7QUFHdkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBR3hFLGdGQUFnRjtBQUNoRixVQUFVO0FBQ1YsZ0ZBQWdGO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBVSxDQUFDO0FBRzNHLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBR2hFLGdGQUFnRjtBQUNoRixXQUFXO0FBQ1gsZ0ZBQWdGO0FBRWhGLHVHQUF1RztBQUN2RyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQVUsQ0FBQztBQUd0RixrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBVSxDQUFDO0FBZ0J2RCw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQztBQUd0RSxnRkFBZ0Y7QUFDaEYsbUVBQW1FO0FBQ25FLGdGQUFnRjtBQUVoRiw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFVLENBQUM7QUFHNUYsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBVSxDQUFDO0FBRzlGLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTO0lBQ2pFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWTtDQUMvRSxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUc3SCxxRkFBcUY7QUFDckYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQW9ELENBQUM7QUFFdkkscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBR3ZFLHlFQUF5RTtBQUN6RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBR3hGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBR2xGLDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFHL0Usd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBR3pFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFVLENBQUM7QUFHekUsaUNBQWlDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBVSxDQUFDO0FBR3BHLG9GQUFvRjtBQUNwRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRzVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFHbEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUc1RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBVSxDQUFDO0FBRzVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDM0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENsb3NlZCBzdHJpbmcgdm9jYWJ1bGFyaWVzIHRoYXQgY3Jvc3MgdGhlIHdpcmUgYmV0d2VlbiB0aGUgc2VydmljZXMgYW5kIHRoZVxuICogYnJvd3Nlci4gRWFjaCBpcyBhbiBgYXMgY29uc3RgIGFycmF5ICh0aGUgcnVudGltZSBsaXN0IGEgWm9kIGVudW0sIGEgTW9uZ29vc2VcbiAqIGVudW0gb3IgYSBkcml6emxlIGAkdHlwZWAgYnVpbGRzIGZyb20pIHBsdXMgdGhlIHVuaW9uIHR5cGUgZGVyaXZlZCBmcm9tIGl0LlxuICpcbiAqIERlcGVuZGVuY3ktZnJlZSBvbiBwdXJwb3NlOiB0aGUgZnJvbnRlbmQgaW1wb3J0cyB0aGVzZSB0eXBlcywgc28gYSB2YWx1ZSBhZGRlZFxuICogaGVyZSByZWFjaGVzIHRoZSBVSSdzIGV4aGF1c3RpdmUgbGFiZWwgbWFwcyBhcyBhIGNvbXBpbGUgZXJyb3IgaW5zdGVhZCBvZiBhXG4gKiBzaWxlbnRseSB1bmhhbmRsZWQgc3RyaW5nLiBUaGUgUG9zdGdyZXMgQ0hFQ0sgY29uc3RyYWludHMgaW5cbiAqIGRlcGxveS9zaGFyZWQvcG9zdGdyZXMtaW5pdC5zcWwgbWlycm9yIHRoZSBvbmVzIHN0b3JlZCBpbiBTUUwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbXBsaWFuY2UgcnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBSVUxFX1NFVkVSSVRJRVMgPSBbJ3dhcm5pbmcnLCAnZXJyb3InLCAnY3JpdGljYWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVTZXZlcml0eSA9ICh0eXBlb2YgUlVMRV9TRVZFUklUSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgUlVMRV9UQVJHRVRTID0gWydwbHVnaW4nLCAncGlwZWxpbmUnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFJ1bGVUYXJnZXQgPSAodHlwZW9mIFJVTEVfVEFSR0VUUylbbnVtYmVyXTtcblxuLyoqIEZpZWxkLWV2YWx1YXRpb24gb3BlcmF0b3JzOyB0aGUgZW5naW5lJ3MgaW1wbGVtZW50YXRpb25zIGxpdmUgaW4gYXBpL2NvbXBsaWFuY2UuICovXG5leHBvcnQgY29uc3QgUlVMRV9PUEVSQVRPUlMgPSBbXG4gICdlcScsICduZXEnLFxuICAnY29udGFpbnMnLCAnbm90Q29udGFpbnMnLFxuICAncmVnZXgnLFxuICAnZ3QnLCAnZ3RlJywgJ2x0JywgJ2x0ZScsXG4gICdpbicsICdub3RJbicsXG4gICdleGlzdHMnLCAnbm90RXhpc3RzJywgJ25vdEVtcHR5JyxcbiAgJ2NvdW50R3QnLCAnY291bnRMdCcsXG4gICdsZW5ndGhHdCcsICdsZW5ndGhMdCcsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZU9wZXJhdG9yID0gKHR5cGVvZiBSVUxFX09QRVJBVE9SUylbbnVtYmVyXTtcblxuLyoqIE9wZXJhdG9ycyB0aGF0IHRlc3QgcHJlc2VuY2Ugb25seSBhbmQgdGFrZSBubyBjb21wYXJpc29uIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IFZBTFVFTEVTU19SVUxFX09QRVJBVE9SUyA9IFsnZXhpc3RzJywgJ25vdEV4aXN0cycsICdub3RFbXB0eSddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBSdWxlT3BlcmF0b3JbXTtcblxuLyoqIEhvdyBhIG11bHRpLWNvbmRpdGlvbiBydWxlIGNvbWJpbmVzIGl0cyBjb25kaXRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IFJVTEVfQ09ORElUSU9OX01PREVTID0gWydhbGwnLCAnYW55J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBSdWxlQ29uZGl0aW9uTW9kZSA9ICh0eXBlb2YgUlVMRV9DT05ESVRJT05fTU9ERVMpW251bWJlcl07XG5cbi8qKiBgcHVibGlzaGVkYCBydWxlcyBiZWxvbmcgdG8gdGhlIHN5c3RlbSBvcmcgYW5kIGFwcGx5IGJ5IHN1YnNjcmlwdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBSVUxFX1NDT1BFUyA9IFsnb3JnJywgJ3B1Ymxpc2hlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUnVsZVNjb3BlID0gKHR5cGVvZiBSVUxFX1NDT1BFUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lc3NhZ2VzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9UWVBFUyA9IFsnYW5ub3VuY2VtZW50JywgJ2NvbnZlcnNhdGlvbiddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVR5cGUgPSAodHlwZW9mIE1FU1NBR0VfVFlQRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX1BSSU9SSVRJRVMgPSBbJ25vcm1hbCcsICdoaWdoJywgJ3VyZ2VudCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTWVzc2FnZVByaW9yaXR5ID0gKHR5cGVvZiBNRVNTQUdFX1BSSU9SSVRJRVMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCaWxsaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgU1VCU0NSSVBUSU9OX1NUQVRVU0VTID0gWydhY3RpdmUnLCAnY2FuY2VsZWQnLCAncGFzdF9kdWUnLCAndHJpYWxpbmcnLCAnaW5jb21wbGV0ZSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uU3RhdHVzID0gKHR5cGVvZiBTVUJTQ1JJUFRJT05fU1RBVFVTRVMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBCSUxMSU5HX0lOVEVSVkFMUyA9IFsnbW9udGhseScsICdhbm51YWwnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJpbGxpbmdJbnRlcnZhbCA9ICh0eXBlb2YgQklMTElOR19JTlRFUlZBTFMpW251bWJlcl07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBJZGVudGl0eVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE9JREMgcHJvdmlkZXJzIGFuIG9yZyBJZFAgY29uZmlnIGNhbiBuYW1lIChHaXRIdWIgaXMgT0F1dGgtb25seSBhbmQgcmVmdXNlZCBieSB0aGUgT0lEQyBlbmdpbmUpLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9WSURFUlMgPSBbJ2dlbmVyaWMtb2lkYycsICdjb2duaXRvJywgJ2dvb2dsZScsICdnaXRodWInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIElkcFByb3ZpZGVyID0gKHR5cGVvZiBJRFBfUFJPVklERVJTKVtudW1iZXJdO1xuXG4vKiogVGhlIGZlZGVyYXRpb24gcHJvdG9jb2wgYW4gb3JnIHNpZ25zIGluIG92ZXIg4oCUIG9uZSBwZXIgb3JnLiAqL1xuZXhwb3J0IGNvbnN0IElEUF9QUk9UT0NPTFMgPSBbJ29pZGMnLCAnc2FtbCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgSWRwUHJvdG9jb2wgPSAodHlwZW9mIElEUF9QUk9UT0NPTFMpW251bWJlcl07XG5cbi8qKlxuICogV2hpY2ggU0FNTCBhc3NlcnRpb24gYXR0cmlidXRlIGNhcnJpZXMgd2hpY2ggaWRlbnRpdHkgZmllbGQuIEFuIGVtcHR5IG5hbWVcbiAqIG1lYW5zIFwidXNlIHRoZSBjb21tb24gc3BlbGxpbmdzXCIgKHNob3J0IG5hbWVzIHBsdXMgdGhlIEVudHJhL1NoaWJib2xldGggVVJJcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FtbEF0dHJpYnV0ZU1hcHBpbmcge1xuICAvKiogQXR0cmlidXRlIGhvbGRpbmcgdGhlIHVzZXIncyBlbWFpbCBhZGRyZXNzLiAqL1xuICBlbWFpbD86IHN0cmluZztcbiAgLyoqIEF0dHJpYnV0ZSBob2xkaW5nIHRoZSBkaXNwbGF5IG5hbWUuICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBBdHRyaWJ1dGUgaG9sZGluZyBncm91cCBtZW1iZXJzaGlwcyAoZHJpdmVzIEpJVCByb2xlIG1hcHBpbmcpLiAqL1xuICBncm91cHM/OiBzdHJpbmc7XG59XG5cbi8qKiBUaGUgY29hcnNlIGdyYW50IGEgcGVybWlzc2lvbiByb2xlIGdpdmVzIGl0cyBtZW1iZXJzLiAqL1xuZXhwb3J0IGNvbnN0IFJPTEVfR1JBTlRTID0gWydzdXBlcmFkbWluJywgJ2FkbWluJywgJ21lbWJlciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUm9sZUdyYW50ID0gKHR5cGVvZiBST0xFX0dSQU5UUylbbnVtYmVyXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBsdWdpbiBlY29zeXN0ZW0gKGVhY2ggbWlycm9yZWQgYnkgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBQdWJsaXNoZXIgdHJ1c3QgdGllci4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfVElFUlMgPSBbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoZXJUaWVyID0gKHR5cGVvZiBQVUJMSVNIRVJfVElFUlMpW251bWJlcl07XG5cbi8qKiBBIGRpcmVjdG9yeSBsaXN0aW5nJ3MgbGlmZWN5Y2xlIHN0YXRlLiAqL1xuZXhwb3J0IGNvbnN0IExJU1RJTkdfU1RBVEVTID0gWydsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgTGlzdGluZ1N0YXRlID0gKHR5cGVvZiBMSVNUSU5HX1NUQVRFUylbbnVtYmVyXTtcblxuLyoqIFdoYXQgYSBwdWJsaXNoIHJlcXVlc3QgYXNrcyB0aGUgc3lzdGVtIG9yZyB0byBkby4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfS0lORFMgPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuICAndHJhbnNmZXInLCAnY2xhaW0nLCAncHJvZmlsZV9jaGFuZ2UnLCAnYWR2aXNvcnknLCAndmVyaWZ5JywgJ21vZGVyYXRpb24nLCAnc3VibWlzc2lvbicsXG5dIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kID0gKHR5cGVvZiBQVUJMSVNIX1JFUVVFU1RfS0lORFMpW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMgPSBbJ3BlbmRpbmcnLCAncGVuZGluZ19zZWNvbmRfYXBwcm92YWwnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnd2l0aGRyYXduJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQdWJsaXNoUmVxdWVzdFN0YXR1cyA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIHN0YXR1c2VzIGEgcmVxdWVzdCBpcyBzdGlsbCBcIm9wZW5cIiBpbiAoZHJpdmVzIHRoZSBvbmUtb3Blbi1yZXF1ZXN0IGluZGV4KS4gKi9cbmV4cG9ydCBjb25zdCBPUEVOX1BVQkxJU0hfUkVRVUVTVF9TVEFUVVNFUyA9IFsncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCddIGFzIGNvbnN0IHNhdGlzZmllcyByZWFkb25seSBQdWJsaXNoUmVxdWVzdFN0YXR1c1tdO1xuXG4vKiogYHNlY3VyaXR5YCByZXF1ZXN0cyBqdW1wIHRoZSBtb2RlcmF0aW9uIHF1ZXVlLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUkVRVUVTVF9MQU5FUyA9IFsnc3RhbmRhcmQnLCAnc2VjdXJpdHknXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFB1Ymxpc2hSZXF1ZXN0TGFuZSA9ICh0eXBlb2YgUFVCTElTSF9SRVFVRVNUX0xBTkVTKVtudW1iZXJdO1xuXG4vKiogSW5zdGFsbCB2ZXJzaW9uIHBvbGljeTogZXhhY3QsIGB+YCwgYF5gLCBvciBhbnl0aGluZyBub24tYnJlYWtpbmcuICovXG5leHBvcnQgY29uc3QgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTID0gWydwaW5uZWQnLCAncGF0Y2gnLCAnbWlub3InLCAnbGF0ZXN0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsVmVyc2lvblBvbGljeSA9ICh0eXBlb2YgSU5TVEFMTF9WRVJTSU9OX1BPTElDSUVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgSU5TVEFMTF9TVEFUVVNFUyA9IFsnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBJbnN0YWxsU3RhdHVzID0gKHR5cGVvZiBJTlNUQUxMX1NUQVRVU0VTKVtudW1iZXJdO1xuXG4vKiogVGhlIGFkdmlzb3J5IHNldmVyaXR5IGF0IHdoaWNoIGEgY29uc3VtcHRpb24gcG9saWN5IGJsb2NrcyBpbnN0YWxscy4gKi9cbmV4cG9ydCBjb25zdCBCTE9DS19PTl9BRFZJU09SWV9MRVZFTFMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbmV2ZXInXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIEJsb2NrT25BZHZpc29yeSA9ICh0eXBlb2YgQkxPQ0tfT05fQURWSVNPUllfTEVWRUxTKVtudW1iZXJdO1xuXG4vKiogV2hldGhlciBvZmZpY2lhbCBwbHVnaW5zIG5lZWQgYW4gZXhwbGljaXQgaW5zdGFsbCBiZWZvcmUgYSBwaXBlbGluZSBjYW4gdXNlIHRoZW0uICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfSU5TVEFMTFNfTU9ERVMgPSBbJ2ltcGxpY2l0JywgJ2V4cGxpY2l0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBPZmZpY2lhbEluc3RhbGxzID0gKHR5cGVvZiBPRkZJQ0lBTF9JTlNUQUxMU19NT0RFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IFJFVklFV19TVEFUVVNFUyA9IFsncHVibGlzaGVkJywgJ2hlbGQnLCAncmVtb3ZlZCddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3U3RhdHVzID0gKHR5cGVvZiBSRVZJRVdfU1RBVFVTRVMpW251bWJlcl07XG5cbi8qKiBXaHkgYSBoZWxkIHJldmlldyBpcyBoZWxkLiAqL1xuZXhwb3J0IGNvbnN0IFJFVklFV19IT0xEX1JFQVNPTlMgPSBbJ3JlcG9ydHMnLCAnYnVyc3QnLCAnZmlsdGVyJywgJ3NlY3VyaXR5JywgJ21vZGVyYXRvciddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3SG9sZFJlYXNvbiA9ICh0eXBlb2YgUkVWSUVXX0hPTERfUkVBU09OUylbbnVtYmVyXTtcblxuLyoqIEEgcmV2aWV3IHJlcG9ydCdzIGNhdGVnb3J5OyBgc2VjdXJpdHlgIHJvdXRlcyBwcml2YXRlbHkgdG8gdGhlIGFkdmlzb3J5IHBhdGguICovXG5leHBvcnQgY29uc3QgUkVWSUVXX1JFUE9SVF9DQVRFR09SSUVTID0gWydzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eSddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgUmV2aWV3UmVwb3J0Q2F0ZWdvcnkgPSAodHlwZW9mIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NFVkVSSVRJRVMgPSBbJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTZXZlcml0eSA9ICh0eXBlb2YgQURWSVNPUllfU0VWRVJJVElFUylbbnVtYmVyXTtcblxuZXhwb3J0IGNvbnN0IEFEVklTT1JZX1NUQVRFUyA9IFsnZHJhZnQnLCAncHVibGlzaGVkJywgJ3dpdGhkcmF3biddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTdGF0ZSA9ICh0eXBlb2YgQURWSVNPUllfU1RBVEVTKVtudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgQURWSVNPUllfU09VUkNFUyA9IFsncHVibGlzaGVyJywgJ21vZGVyYXRvcicsICdjdmVfcmVzY2FuJywgJ3JldmlldyddIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQWR2aXNvcnlTb3VyY2UgPSAodHlwZW9mIEFEVklTT1JZX1NPVVJDRVMpW251bWJlcl07XG5cbi8qKlxuICogQW4gYW5vbnltb3VzIHN1Ym1pc3Npb24ncyBsaWZlY3ljbGUuIGBwdWJsaXNoaW5nYCBpcyB0aGUgc2hvcnQgY2xhaW0gYW5cbiAqIGFwcHJvdmFsIHRha2VzIGJlZm9yZSBpdCBjb3BpZXMgdGhlIHF1YXJhbnRpbmVkIGltYWdlIG91dCwgc28gYW4gZXhwaXJ5IGNhblxuICogbmV2ZXIgZGVsZXRlIHRoZSBhcnRpZmFjdHMgb2YgYSBzdWJtaXNzaW9uIHRoYXQgaXMgYmVpbmcgcHVibGlzaGVkLlxuICovXG5leHBvcnQgY29uc3QgU1VCTUlTU0lPTl9TVEFUVVNFUyA9IFtcbiAgJ3BlbmRpbmdfdmVyaWZpY2F0aW9uJywgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJyxcbl0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTdWJtaXNzaW9uU3RhdHVzID0gKHR5cGVvZiBTVUJNSVNTSU9OX1NUQVRVU0VTKVtudW1iZXJdO1xuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { SYSTEM_ORG_ID } from '../middleware/
|
|
3
|
+
import { SYSTEM_ORG_ID } from '../middleware/system-org.js';
|
|
4
4
|
/** Lazily-cached set of support aliases, parsed from SUPPORT_ALIASES on first access. */
|
|
5
5
|
let _supportAliases;
|
|
6
6
|
function getSupportAliases() {
|
|
@@ -65,4 +65,4 @@ export function resolveRecipientAlias(recipientOrgId) {
|
|
|
65
65
|
originalValue: recipientOrgId,
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWxpYXMtcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQseUZBQXlGO0FBQ3pGLElBQUksZUFBd0MsQ0FBQztBQUU3QyxTQUFTLGlCQUFpQjtJQUN4QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1FBQzlDLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FDdkIsR0FBRzthQUNBLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDeEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsZUFBZSxHQUFHLFNBQVMsQ0FBQztBQUM5QixDQUFDO0FBRUQsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLDBCQUEwQixDQUFDO0FBRWhFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxLQUFLLE1BQU0sS0FBSyxJQUFJLGlCQUFpQixFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDdEQsT0FBTyxxQkFBcUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNyQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBWUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsY0FBc0I7SUFDMUQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFcEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTztZQUNMLGFBQWEsRUFBRSxhQUFhO1lBQzVCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLGNBQWM7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLFVBQVU7UUFDekIsUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsY0FBYztLQUM5QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBTWVNURU1fT1JHX0lEIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zeXN0ZW0tb3JnLmpzJztcblxuLyoqIExhemlseS1jYWNoZWQgc2V0IG9mIHN1cHBvcnQgYWxpYXNlcywgcGFyc2VkIGZyb20gU1VQUE9SVF9BTElBU0VTIG9uIGZpcnN0IGFjY2Vzcy4gKi9cbmxldCBfc3VwcG9ydEFsaWFzZXM6IFNldDxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBnZXRTdXBwb3J0QWxpYXNlcygpOiBTZXQ8c3RyaW5nPiB7XG4gIGlmICghX3N1cHBvcnRBbGlhc2VzKSB7XG4gICAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnYuU1VQUE9SVF9BTElBU0VTIHx8ICcnO1xuICAgIF9zdXBwb3J0QWxpYXNlcyA9IG5ldyBTZXQoXG4gICAgICByYXdcbiAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgLm1hcChhbGlhcyA9PiBhbGlhcy50cmltKCkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgLmZpbHRlcihhbGlhcyA9PiBhbGlhcy5sZW5ndGggPiAwKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBfc3VwcG9ydEFsaWFzZXM7XG59XG5cbi8qKlxuICogQ2xlYXIgdGhlIG1lbW9pemVkIGFsaWFzIHNldCBzbyB0aGUgbmV4dCBhY2Nlc3MgcmUtcmVhZHMgYFNVUFBPUlRfQUxJQVNFU2AuXG4gKiBUaGUgY2FjaGUgaXMgcHJvY2Vzcy1saWZldGltZSBieSBkZXNpZ24gKGVudiBpcyBmaXhlZCBwZXIgcHJvY2Vzcyk7IHRoaXMgaG9va1xuICogZXhpc3RzIHNvIHRlc3RzIGNhbiB2YXJ5IHRoZSBlbnYgYmV0d2VlbiBjYXNlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3VwcG9ydEFsaWFzZXNDYWNoZSgpOiB2b2lkIHtcbiAgX3N1cHBvcnRBbGlhc2VzID0gdW5kZWZpbmVkO1xufVxuXG4vKiogV2VsbC1rbm93biBmYWxsYmFjayBzdXBwb3J0IGFsaWFzIHVzZWQgd2hlbiBTVVBQT1JUX0FMSUFTRVMgaXMgdW5jb25maWd1cmVkLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1VQUE9SVF9BTElBUyA9ICdzdXBwb3J0QHBpcGVsaW5lLWJ1aWxkZXInO1xuXG4vKipcbiAqIFRoZSBQUklNQVJZIChmaXJzdC1jb25maWd1cmVkKSBzdXBwb3J0IGFsaWFzIOKAlCBmb3IgZGlzcGxheSAvIHByZWZpbGwgaW4gVUlzXG4gKiAoZS5nLiB0aGUgY29tcG9zZSBcIlRvXCIgZmllbGQpLCBzbyB0aGUgc2hvd24gdmFsdWUgaXMgZHJpdmVuIGJ5IFNVUFBPUlRfQUxJQVNFU1xuICogcmF0aGVyIHRoYW4gaGFyZGNvZGVkLiBGYWxscyBiYWNrIHRvIHtAbGluayBERUZBVUxUX1NVUFBPUlRfQUxJQVN9IHdoZW4gdGhlIGVudlxuICogaXMgdW5zZXQuIChBbGwgY29uZmlndXJlZCBhbGlhc2VzIHN0aWxsIHJlc29sdmUgdmlhIHtAbGluayByZXNvbHZlUmVjaXBpZW50QWxpYXN9LilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByaW1hcnlTdXBwb3J0QWxpYXMoKTogc3RyaW5nIHtcbiAgZm9yIChjb25zdCBhbGlhcyBvZiBnZXRTdXBwb3J0QWxpYXNlcygpKSByZXR1cm4gYWxpYXM7XG4gIHJldHVybiBERUZBVUxUX1NVUFBPUlRfQUxJQVM7XG59XG5cbi8qKlxuICogQUxMIGNvbmZpZ3VyZWQgc3VwcG9ydCBhbGlhc2VzIChvcmRlciBwcmVzZXJ2ZWQpLCBmb3IgVUlzIHRoYXQgc3VyZmFjZSBldmVyeVxuICogc3VwcG9ydCBpbmJveCBhcyBhIGRpc3RpbmN0IHJlY2lwaWVudCBzdWdnZXN0aW9uLiBGYWxscyBiYWNrIHRvIGEgc2luZ2xlXG4gKiB7QGxpbmsgREVGQVVMVF9TVVBQT1JUX0FMSUFTfSB3aGVuIFNVUFBPUlRfQUxJQVNFUyBpcyB1bnNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbFN1cHBvcnRBbGlhc2VzKCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgYWxsID0gWy4uLmdldFN1cHBvcnRBbGlhc2VzKCldO1xuICByZXR1cm4gYWxsLmxlbmd0aCA+IDAgPyBhbGwgOiBbREVGQVVMVF9TVVBQT1JUX0FMSUFTXTtcbn1cblxuLyoqIFJlc3VsdCBvZiBhbGlhcyByZXNvbHV0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc1Jlc29sdXRpb24ge1xuICAvKiogVGhlIHJlc29sdmVkIG9yZ2FuaXphdGlvbiBJRCAoZS5nLiwgJ3N5c3RlbScpLiAqL1xuICByZXNvbHZlZE9yZ0lkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBpbnB1dCB3YXMgYW4gYWxpYXMgdGhhdCBnb3QgcmVzb2x2ZWQuICovXG4gIHdhc0FsaWFzOiBib29sZWFuO1xuICAvKiogVGhlIG9yaWdpbmFsIGlucHV0IHZhbHVlLCB1c2VmdWwgZm9yIGF1ZGl0IGxvZ2dpbmcuICovXG4gIG9yaWdpbmFsVmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGVtYWlsLWxpa2UgYWxpYXMgdG8gYW4gYWN0dWFsIG9yZ2FuaXphdGlvbiBJRC5cbiAqXG4gKiBJZiB0aGUgaW5wdXQgbWF0Y2hlcyBhIGNvbmZpZ3VyZWQgc3VwcG9ydCBhbGlhcywgaXQgcmVzb2x2ZXMgdG8gdGhlIHN5c3RlbVxuICogb3JnIElELiBPdGhlcndpc2UgdGhlIGlucHV0IGlzIHJldHVybmVkIGFzLWlzIChsb3dlcmNhc2VkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWNpcGllbnRBbGlhcyhyZWNpcGllbnRPcmdJZDogc3RyaW5nKTogQWxpYXNSZXNvbHV0aW9uIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHJlY2lwaWVudE9yZ0lkLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBhbGlhc2VzID0gZ2V0U3VwcG9ydEFsaWFzZXMoKTtcblxuICBpZiAoYWxpYXNlcy5oYXMobm9ybWFsaXplZCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb2x2ZWRPcmdJZDogU1lTVEVNX09SR19JRCxcbiAgICAgIHdhc0FsaWFzOiB0cnVlLFxuICAgICAgb3JpZ2luYWxWYWx1ZTogcmVjaXBpZW50T3JnSWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZWRPcmdJZDogbm9ybWFsaXplZCxcbiAgICB3YXNBbGlhczogZmFsc2UsXG4gICAgb3JpZ2luYWxWYWx1ZTogcmVjaXBpZW50T3JnSWQsXG4gIH07XG59XG5cbiJdfQ==
|
package/lib/utils/audit.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type winston from 'winston';
|
|
2
2
|
import type { AuditEvent } from '../types/audit-events.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Log a cross-service audit event as a structured (winston → Loki) log line.
|
|
5
|
+
*
|
|
6
|
+
* This is the short-retention OPERATOR sink. The durable, hash-chained central
|
|
7
|
+
* audit trail is a different sink: `recordAudit(event)`.
|
|
5
8
|
*
|
|
6
9
|
* Best-effort: if the underlying logger transport fails, the caller's
|
|
7
10
|
* mutation still succeeds — we never let audit-write failure roll back
|
|
@@ -12,4 +15,4 @@ import type { AuditEvent } from '../types/audit-events.js';
|
|
|
12
15
|
* For platform's own audit events (user.login, org.create, …), use
|
|
13
16
|
* platform's `helpers/audit.ts` instead — those persist to MongoDB.
|
|
14
17
|
*/
|
|
15
|
-
export declare function
|
|
18
|
+
export declare function logAuditEvent(logger: winston.Logger, audit: AuditEvent): void;
|
package/lib/utils/audit.js
CHANGED
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
import { scrubAwsIdentifiers } from './aws-scrub.js';
|
|
4
4
|
import { errorMessage } from './response.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Log a cross-service audit event as a structured (winston → Loki) log line.
|
|
7
|
+
*
|
|
8
|
+
* This is the short-retention OPERATOR sink. The durable, hash-chained central
|
|
9
|
+
* audit trail is a different sink: `recordAudit(event)`.
|
|
7
10
|
*
|
|
8
11
|
* Best-effort: if the underlying logger transport fails, the caller's
|
|
9
12
|
* mutation still succeeds — we never let audit-write failure roll back
|
|
@@ -14,7 +17,7 @@ import { errorMessage } from './response.js';
|
|
|
14
17
|
* For platform's own audit events (user.login, org.create, …), use
|
|
15
18
|
* platform's `helpers/audit.ts` instead — those persist to MongoDB.
|
|
16
19
|
*/
|
|
17
|
-
export function
|
|
20
|
+
export function logAuditEvent(logger, audit) {
|
|
18
21
|
try {
|
|
19
22
|
// Scrub any AWS account-id-shaped values (e.g. an ARN in `details`) before the
|
|
20
23
|
// event lands in the durable log store — the logger's secret-key redaction
|
|
@@ -37,4 +40,4 @@ export function emitAudit(logger, audit) {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUd0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzdDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBc0IsRUFDdEIsS0FBaUI7SUFFakIsSUFBSSxDQUFDO1FBQ0gsK0VBQStFO1FBQy9FLDJFQUEyRTtRQUMzRSw4RUFBOEU7UUFDOUUsa0RBQWtEO1FBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7Z0JBQ3hDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLHFEQUFxRDtRQUN2RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgd2luc3RvbiBmcm9tICd3aW5zdG9uJztcbmltcG9ydCB7IHNjcnViQXdzSWRlbnRpZmllcnMgfSBmcm9tICcuL2F3cy1zY3J1Yi5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuL3Jlc3BvbnNlLmpzJztcbmltcG9ydCB0eXBlIHsgQXVkaXRFdmVudCB9IGZyb20gJy4uL3R5cGVzL2F1ZGl0LWV2ZW50cy5qcyc7XG5cbi8qKlxuICogTG9nIGEgY3Jvc3Mtc2VydmljZSBhdWRpdCBldmVudCBhcyBhIHN0cnVjdHVyZWQgKHdpbnN0b24g4oaSIExva2kpIGxvZyBsaW5lLlxuICpcbiAqIFRoaXMgaXMgdGhlIHNob3J0LXJldGVudGlvbiBPUEVSQVRPUiBzaW5rLiBUaGUgZHVyYWJsZSwgaGFzaC1jaGFpbmVkIGNlbnRyYWxcbiAqIGF1ZGl0IHRyYWlsIGlzIGEgZGlmZmVyZW50IHNpbms6IGByZWNvcmRBdWRpdChldmVudClgLlxuICpcbiAqIEJlc3QtZWZmb3J0OiBpZiB0aGUgdW5kZXJseWluZyBsb2dnZXIgdHJhbnNwb3J0IGZhaWxzLCB0aGUgY2FsbGVyJ3NcbiAqIG11dGF0aW9uIHN0aWxsIHN1Y2NlZWRzIOKAlCB3ZSBuZXZlciBsZXQgYXVkaXQtd3JpdGUgZmFpbHVyZSByb2xsIGJhY2tcbiAqIHRoZSB1c2VyLXZpc2libGUgb3BlcmF0aW9uLiBUaGUgbGluZSBpcyB0YWdnZWQgYGV2ZW50Q2F0ZWdvcnk6ICdhdWRpdCdgXG4gKiBzbyBkb3duc3RyZWFtIGxvZyBhZ2dyZWdhdG9ycyAoTG9raSwgQ2xvdWRXYXRjaCkgY2FuIHJvdXRlIGF1ZGl0XG4gKiBldmVudHMgaW50byBhIHNlcGFyYXRlIGluZGV4LlxuICpcbiAqIEZvciBwbGF0Zm9ybSdzIG93biBhdWRpdCBldmVudHMgKHVzZXIubG9naW4sIG9yZy5jcmVhdGUsIOKApiksIHVzZVxuICogcGxhdGZvcm0ncyBgaGVscGVycy9hdWRpdC50c2AgaW5zdGVhZCDigJQgdGhvc2UgcGVyc2lzdCB0byBNb25nb0RCLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nQXVkaXRFdmVudChcbiAgbG9nZ2VyOiB3aW5zdG9uLkxvZ2dlcixcbiAgYXVkaXQ6IEF1ZGl0RXZlbnQsXG4pOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICAvLyBTY3J1YiBhbnkgQVdTIGFjY291bnQtaWQtc2hhcGVkIHZhbHVlcyAoZS5nLiBhbiBBUk4gaW4gYGRldGFpbHNgKSBiZWZvcmUgdGhlXG4gICAgLy8gZXZlbnQgbGFuZHMgaW4gdGhlIGR1cmFibGUgbG9nIHN0b3JlIOKAlCB0aGUgbG9nZ2VyJ3Mgc2VjcmV0LWtleSByZWRhY3Rpb25cbiAgICAvLyBkb2Vzbid0IGNvdmVyIGFjY291bnQgaWRzLCBhbmQgdGhpcyBpcyBleGFjdGx5IHRoZSBwZXJzaXN0ZW5jZSBib3VuZGFyeSB0aGVcbiAgICAvLyBcIm5ldmVyIHBlcnNpc3QgYW4gQVdTIGFjY291bnQgaWRcIiBydWxlIHRhcmdldHMuXG4gICAgbG9nZ2VyLmluZm8oJ2F1ZGl0Jywgc2NydWJBd3NJZGVudGlmaWVycyh7IGV2ZW50Q2F0ZWdvcnk6ICdhdWRpdCcsIC4uLmF1ZGl0IH0pKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gVGhlIHdpbnN0b24gbG9nZ2VyIG5vcm1hbGx5IG5ldmVyIHRocm93cyBzeW5jaHJvbm91c2x5LCBidXQgaWYgYVxuICAgIC8vIHRyYW5zcG9ydCBleHBsb2RlcyBkdXJpbmcgYSByb3V0ZSBjYWxsLCB3ZSBkb24ndCB3YW50IHRoZSBtdXRhdGlvblxuICAgIC8vIHRvIGZhaWwgYmVjYXVzZSB0aGUgYXVkaXQgd3JpdGUgZGlkbid0IGxhbmQuXG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci53YXJuKCdGYWlsZWQgdG8gZW1pdCBhdWRpdCBldmVudCcsIHtcbiAgICAgICAgZXZlbnQ6IGF1ZGl0LmV2ZW50LFxuICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIExvZ2dlciBpdHNlbGYgaXMgdW5yZWNvdmVyYWJsZSDigJQgZ2l2ZSB1cCBzaWxlbnRseS5cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Secret-redaction for compliance-event `attributes`.
|
|
5
5
|
*
|
|
6
|
-
* Shared by the plugin AND pipeline services
|
|
7
|
-
*
|
|
8
|
-
* redact `credentials`" fix has to protect BOTH services). Both feed entity
|
|
6
|
+
* Shared by the plugin AND pipeline services — a security-critical function
|
|
7
|
+
* that must not drift: an "also redact `credentials`" fix has to protect BOTH. Both feed entity
|
|
9
8
|
* attributes to the compliance engine over Redis, and neither may leak plaintext
|
|
10
9
|
* secrets there.
|
|
11
10
|
*
|
|
@@ -66,4 +65,4 @@ export function toComplianceAttributes(value) {
|
|
|
66
65
|
}
|
|
67
66
|
return value; // primitives, Date, null — untouched
|
|
68
67
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1hdHRyaWJ1dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbXBsaWFuY2UtYXR0cmlidXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsMERBQTBEO0FBQzFELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQztBQUU5Qiw0RUFBNEU7QUFDNUUsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUV0RDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxHQUFXO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztXQUN2RSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7V0FDNUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCx1R0FBdUc7QUFDdkcsU0FBUyxhQUFhLENBQUMsQ0FBVTtJQUMvQixJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3RELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxDQUFDLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEtBQWM7SUFDbkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ25FLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxHQUFHLEdBQTRCLEVBQUUsQ0FBQztRQUN4QyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MseUVBQXlFO2dCQUN6RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7aUJBQU0sSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekQsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUNwQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxxQ0FBcUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNlY3JldC1yZWRhY3Rpb24gZm9yIGNvbXBsaWFuY2UtZXZlbnQgYGF0dHJpYnV0ZXNgLlxuICpcbiAqIFNoYXJlZCBieSB0aGUgcGx1Z2luIEFORCBwaXBlbGluZSBzZXJ2aWNlcyDigJQgYSBzZWN1cml0eS1jcml0aWNhbCBmdW5jdGlvblxuICogdGhhdCBtdXN0IG5vdCBkcmlmdDogYW4gXCJhbHNvIHJlZGFjdCBgY3JlZGVudGlhbHNgXCIgZml4IGhhcyB0byBwcm90ZWN0IEJPVEguIEJvdGggZmVlZCBlbnRpdHlcbiAqIGF0dHJpYnV0ZXMgdG8gdGhlIGNvbXBsaWFuY2UgZW5naW5lIG92ZXIgUmVkaXMsIGFuZCBuZWl0aGVyIG1heSBsZWFrIHBsYWludGV4dFxuICogc2VjcmV0cyB0aGVyZS5cbiAqXG4gKiBUaGUgY29tcGxpYW5jZSBydWxlIGVuZ2luZSByZWFkcyBzZWNyZXQgbWFwcyAoYGVudmAvYGJ1aWxkQXJnc2AsIGluY2wuIG5lc3RlZFxuICogYHByb3BzLnN5bnRoLmVudmAsIGBwcm9wcy5zdGFnZXNbXS5zdGVwc1tdLmVudmAsIOKApikgT05MWSBieSBLRVkg4oCUIGAka2V5cyhlbnYpYCxcbiAqIGAkY291bnQoZW52KWAsIGRvdC1wYXRoIGV4aXN0ZW5jZSwga2V5LWBjb250YWluc2Ag4oCUIG5ldmVyIGJ5IHZhbHVlIChzZWVcbiAqIGFwaS9jb21wbGlhbmNlL3NyYy9lbmdpbmUvcnVsZS1vcGVyYXRvcnMudHMgKyBpdHMgdGVzdHMpLiBTbyB3ZSBwcmVzZXJ2ZSBlYWNoXG4gKiBzZWNyZXQgbWFwJ3Mgc2hhcGUgKyBLRVlTIHdoaWxlIG92ZXJ3cml0aW5nIGV2ZXJ5IHZhbHVlIHdpdGggYSBtYXJrZXI7IHNjYWxhclxuICogc2VjcmV0IGZpZWxkcyAoc291cmNlIGB0b2tlbmAsIHBhc3N3b3Jkcywg4oCmKSBhcmUgcmVwbGFjZWQgb3V0cmlnaHQuIFN0cnVjdHVyZVxuICogYW5kIG5vbi1zZWNyZXQgbWV0YWRhdGEgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZCwgc28gcnVsZSBldmFsdWF0aW9uIGlzXG4gKiBpZGVudGljYWwgd2hpbGUgcGxhaW50ZXh0IHNlY3JldHMgbmV2ZXIgcmVhY2ggUmVkaXMgb3IgdGhlIGNvbXBsaWFuY2Ugc2VydmljZS5cbiAqL1xuXG4vKiogTWFya2VyIHdyaXR0ZW4gaW4gcGxhY2Ugb2YgYSByZWRhY3RlZCBzZWNyZXQgVkFMVUUuICovXG5jb25zdCBSRURBQ1RFRCA9ICdbUkVEQUNURURdJztcblxuLyoqIE1hcCBrZXlzIHdob3NlIChzdHJpbmfihpJzdHJpbmcpIFZBTFVFUyBhcmUgc2VjcmV0IGJ1aWxkLXRpbWUgbWF0ZXJpYWwuICovXG5jb25zdCBTRUNSRVRfTUFQX0tFWVMgPSBuZXcgU2V0KFsnZW52JywgJ2J1aWxkQXJncyddKTtcblxuLyoqXG4gKiBTY2FsYXIga2V5cyB0aGF0IHRoZW1zZWx2ZXMgY2FycnkgYSBzZWNyZXQgc3RyaW5nICh0b2tlbnMvcGFzc3dvcmRzL2V0Yy4pLlxuICogQXBwbGllZCBvbmx5IHRvIHN0cmluZyB2YWx1ZXMgc28gYm9vbGVhbiBmbGFncyBhbmQgZGVjbGFyYXRpb24gYXJyYXlzIChlLmcuXG4gKiBgc2VjcmV0czogUGx1Z2luU2VjcmV0W11gKSBhcmUgbGVmdCBpbnRhY3QuXG4gKi9cbmZ1bmN0aW9uIGlzU2VjcmV0U2NhbGFyS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGsgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGsuaW5jbHVkZXMoJ3Rva2VuJykgfHwgay5pbmNsdWRlcygnc2VjcmV0JykgfHwgay5pbmNsdWRlcygncGFzc3dvcmQnKVxuICAgIHx8IGsuaW5jbHVkZXMoJ3Bhc3NwaHJhc2UnKSB8fCBrLmluY2x1ZGVzKCdjcmVkZW50aWFsJykgfHwgay5pbmNsdWRlcygnYXBpa2V5JylcbiAgICB8fCBrLmluY2x1ZGVzKCdhY2Nlc3NrZXknKSB8fCBrLmluY2x1ZGVzKCdwcml2YXRla2V5Jyk7XG59XG5cbi8qKiBPbmx5IHBsYWluIChPYmplY3QtcHJvdG90eXBlKSBvYmplY3RzIGFyZSB0cmF2ZXJzZWQg4oCUIERhdGVzL2NsYXNzIGluc3RhbmNlcyBwYXNzIHRocm91Z2ggaW50YWN0LiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2OiB1bmtub3duKTogdiBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICh2ID09PSBudWxsIHx8IHR5cGVvZiB2ICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2KTtcbiAgcmV0dXJuIHByb3RvID09PSBPYmplY3QucHJvdG90eXBlIHx8IHByb3RvID09PSBudWxsO1xufVxuXG4vKipcbiAqIFByb2plY3QgYW4gZW50aXR5IGludG8gdGhlIGNvbXBsaWFuY2UtZXZlbnQgYGF0dHJpYnV0ZXNgLCByZWRhY3Rpbmcgc2VjcmV0XG4gKiBWQUxVRVMgd2hpbGUgcHJlc2VydmluZyBldmVyeXRoaW5nIHRoZSBjb21wbGlhbmNlIGVuZ2luZSBhY3R1YWxseSBldmFsdWF0ZXMuXG4gKiBSZWN1cnNlcyBzbyBuZXN0ZWQgc2VjcmV0cyAoZGVlcCBpbnNpZGUgYSBwaXBlbGluZSdzIGBwcm9wc2ApIGFyZSBjb3ZlcmVkIHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29tcGxpYW5jZUF0dHJpYnV0ZXModmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubWFwKHRvQ29tcGxpYW5jZUF0dHJpYnV0ZXMpO1xuICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICBpZiAoU0VDUkVUX01BUF9LRVlTLmhhcyhrKSAmJiBpc1BsYWluT2JqZWN0KHYpKSB7XG4gICAgICAgIC8vIFByZXNlcnZlIGtleXMgKGNvbXBsaWFuY2UgcmVhZHMgJGtleXMvJGNvdW50L3ByZXNlbmNlKSwgcmVkYWN0IHZhbHVlcy5cbiAgICAgICAgb3V0W2tdID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKHYpLm1hcCgobWspID0+IFttaywgUkVEQUNURURdKSk7XG4gICAgICB9IGVsc2UgaWYgKGlzU2VjcmV0U2NhbGFyS2V5KGspICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICBvdXRba10gPSBSRURBQ1RFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dFtrXSA9IHRvQ29tcGxpYW5jZUF0dHJpYnV0ZXModik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbiAgcmV0dXJuIHZhbHVlOyAvLyBwcmltaXRpdmVzLCBEYXRlLCBudWxsIOKAlCB1bnRvdWNoZWRcbn1cbiJdfQ==
|
|
@@ -7,3 +7,10 @@
|
|
|
7
7
|
* avoid adding a dep — keeps the bundle/footprint tiny.
|
|
8
8
|
*/
|
|
9
9
|
export declare function runConcurrent<T, R>(items: T[], limit: number, worker: (item: T, index: number) => Promise<R>): Promise<R[]>;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve after `ms`. With `unref`, the pending timer never keeps a draining
|
|
12
|
+
* process alive (a backoff wait must not block shutdown).
|
|
13
|
+
*/
|
|
14
|
+
export declare function sleep(ms: number, opts?: {
|
|
15
|
+
unref?: boolean;
|
|
16
|
+
}): Promise<void>;
|
package/lib/utils/concurrency.js
CHANGED
|
@@ -26,4 +26,16 @@ export async function runConcurrent(items, limit, worker) {
|
|
|
26
26
|
await Promise.all(runners);
|
|
27
27
|
return results;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Resolve after `ms`. With `unref`, the pending timer never keeps a draining
|
|
31
|
+
* process alive (a backoff wait must not block shutdown).
|
|
32
|
+
*/
|
|
33
|
+
export function sleep(ms, opts = {}) {
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
const timer = setTimeout(resolve, ms);
|
|
36
|
+
// `unref` is absent on the timer shim some test environments install.
|
|
37
|
+
if (opts.unref)
|
|
38
|
+
timer.unref?.();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY3VycmVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29uY3VycmVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLEtBQVUsRUFDVixLQUFhLEVBQ2IsTUFBOEM7SUFFOUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUNwRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRWxDLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxDQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFbEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMvRSxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUM5QixPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUFVLEVBQUUsSUFBSSxHQUF3QixFQUFFO0lBQzlELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLHNFQUFzRTtRQUN0RSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUnVuIGB3b3JrZXJgIG92ZXIgYGl0ZW1zYCB3aXRoIGF0IG1vc3QgYGxpbWl0YCBpbnZvY2F0aW9ucyBpbiBmbGlnaHQuXG4gKiBQcmVzZXJ2ZXMgb3JkZXIgaW4gdGhlIHJldHVybmVkIGFycmF5LiBSZWplY3RzIG9uIHRoZSBmaXJzdCBlcnJvci5cbiAqXG4gKiBVc2UgdGhpcyBhbnl3aGVyZSB3ZSBmYW4gb3V0IE4gSFRUUCBjYWxscyBhbmQgd2FudCB0byBjYXAgY29uY3VycmVuY3lcbiAqIChlLmcuIHJlZ2lzdHJ5IGJsb2IgbW91bnRzLCBwYXJhbGxlbCBtYW5pZmVzdCBmZXRjaGVzKS4gSGFuZC1yb2xsZWQgdG9cbiAqIGF2b2lkIGFkZGluZyBhIGRlcCDigJQga2VlcHMgdGhlIGJ1bmRsZS9mb290cHJpbnQgdGlueS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNvbmN1cnJlbnQ8VCwgUj4oXG4gIGl0ZW1zOiBUW10sXG4gIGxpbWl0OiBudW1iZXIsXG4gIHdvcmtlcjogKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IFByb21pc2U8Uj4sXG4pOiBQcm9taXNlPFJbXT4ge1xuICBpZiAobGltaXQgPCAxKSB0aHJvdyBuZXcgRXJyb3IoJ3J1bkNvbmN1cnJlbnQ6IGxpbWl0IG11c3QgYmUgPj0gMScpO1xuICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxSPihpdGVtcy5sZW5ndGgpO1xuICBsZXQgbmV4dEluZGV4ID0gMDtcblxuICBjb25zdCBydW5uZXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogTWF0aC5taW4obGltaXQsIGl0ZW1zLmxlbmd0aCkgfSwgYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCBpID0gbmV4dEluZGV4Kys7XG4gICAgICBpZiAoaSA+PSBpdGVtcy5sZW5ndGgpIHJldHVybjtcbiAgICAgIHJlc3VsdHNbaV0gPSBhd2FpdCB3b3JrZXIoaXRlbXNbaV0sIGkpO1xuICAgIH1cbiAgfSk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocnVubmVycyk7XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG4vKipcbiAqIFJlc29sdmUgYWZ0ZXIgYG1zYC4gV2l0aCBgdW5yZWZgLCB0aGUgcGVuZGluZyB0aW1lciBuZXZlciBrZWVwcyBhIGRyYWluaW5nXG4gKiBwcm9jZXNzIGFsaXZlIChhIGJhY2tvZmYgd2FpdCBtdXN0IG5vdCBibG9jayBzaHV0ZG93bikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyLCBvcHRzOiB7IHVucmVmPzogYm9vbGVhbiB9ID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTtcbiAgICAvLyBgdW5yZWZgIGlzIGFic2VudCBvbiB0aGUgdGltZXIgc2hpbSBzb21lIHRlc3QgZW52aXJvbm1lbnRzIGluc3RhbGwuXG4gICAgaWYgKG9wdHMudW5yZWYpIHRpbWVyLnVucmVmPy4oKTtcbiAgfSk7XG59XG4iXX0=
|
package/lib/utils/env.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Typed environment-variable readers with consistent parsing + defaults.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* the default on a typo'd name. These helpers centralize the parsing so a value
|
|
4
|
+
* Hand-rolled `parseInt(process.env.X || '…', 10)` / `process.env.X === 'true'`
|
|
5
|
+
* drifts (the same var parsed with different defaults in different packages)
|
|
6
|
+
* and silently returns the default on a typo'd name. These helpers centralize the parsing so a value
|
|
8
7
|
* is read the same way everywhere, and make shared constants importable rather
|
|
9
8
|
* than re-derived (see `MAX_PAGE_LIMIT` / `DEFAULT_PAGE_LIMIT` in
|
|
10
9
|
* `validation/common-schemas.ts`).
|
package/lib/utils/env.js
CHANGED
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Typed environment-variable readers with consistent parsing + defaults.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* the default on a typo'd name. These helpers centralize the parsing so a value
|
|
6
|
+
* Hand-rolled `parseInt(process.env.X || '…', 10)` / `process.env.X === 'true'`
|
|
7
|
+
* drifts (the same var parsed with different defaults in different packages)
|
|
8
|
+
* and silently returns the default on a typo'd name. These helpers centralize the parsing so a value
|
|
10
9
|
* is read the same way everywhere, and make shared constants importable rather
|
|
11
10
|
* than re-derived (see `MAX_PAGE_LIMIT` / `DEFAULT_PAGE_LIMIT` in
|
|
12
11
|
* `validation/common-schemas.ts`).
|
|
@@ -51,4 +50,4 @@ export function envStr(name, def) {
|
|
|
51
50
|
const raw = process.env[name];
|
|
52
51
|
return raw === undefined || raw.trim() === '' ? def : raw;
|
|
53
52
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVIOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsSUFBcUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxHQUFHLE9BQU8sS0FBSyxFQUFFLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLElBQUksSUFBSSxFQUFFLEdBQUcsS0FBSyxTQUFTO1FBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssU0FBUztRQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxJQUFZLEVBQUUsR0FBWTtJQUNoRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3ZELE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFELElBQUksQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDM0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsb0RBQW9EO0FBQ3BELE1BQU0sVUFBVSxNQUFNLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDOUMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixPQUFPLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFR5cGVkIGVudmlyb25tZW50LXZhcmlhYmxlIHJlYWRlcnMgd2l0aCBjb25zaXN0ZW50IHBhcnNpbmcgKyBkZWZhdWx0cy5cbiAqXG4gKiBIYW5kLXJvbGxlZCBgcGFyc2VJbnQocHJvY2Vzcy5lbnYuWCB8fCAn4oCmJywgMTApYCAvIGBwcm9jZXNzLmVudi5YID09PSAndHJ1ZSdgXG4gKiBkcmlmdHMgKHRoZSBzYW1lIHZhciBwYXJzZWQgd2l0aCBkaWZmZXJlbnQgZGVmYXVsdHMgaW4gZGlmZmVyZW50IHBhY2thZ2VzKVxuICogYW5kIHNpbGVudGx5IHJldHVybnMgdGhlIGRlZmF1bHQgb24gYSB0eXBvJ2QgbmFtZS4gVGhlc2UgaGVscGVycyBjZW50cmFsaXplIHRoZSBwYXJzaW5nIHNvIGEgdmFsdWVcbiAqIGlzIHJlYWQgdGhlIHNhbWUgd2F5IGV2ZXJ5d2hlcmUsIGFuZCBtYWtlIHNoYXJlZCBjb25zdGFudHMgaW1wb3J0YWJsZSByYXRoZXJcbiAqIHRoYW4gcmUtZGVyaXZlZCAoc2VlIGBNQVhfUEFHRV9MSU1JVGAgLyBgREVGQVVMVF9QQUdFX0xJTUlUYCBpblxuICogYHZhbGlkYXRpb24vY29tbW9uLXNjaGVtYXMudHNgKS5cbiAqL1xuXG4vKipcbiAqIFBhcnNlIGFuIGludGVnZXIgZW52IHZhci4gVW5zZXQgLyBibGFuayAvIG5vdCBhIGNsZWFuIGludGVnZXIgc3RyaW5nIOKGkiBgZGVmYC5cbiAqIE9wdGlvbmFsIGBtaW5gL2BtYXhgIGNsYW1wIHRoZSByZXN1bHQgKGFwcGxpZWQgYWZ0ZXIgdGhlIGRlZmF1bHQpLlxuICpcbiAqIFNUUklDVCBvbiBwdXJwb3NlOiBgcGFyc2VJbnRgIGFjY2VwdHMgYDUwLjVgICjihpIgNTApIGFuZCBgMTJhYmNgICjihpIgMTIpLCB3aGljaFxuICogaXMgaG93IGEgdHlwbydkIHF1b3RhIGxpbWl0IG9yIHRpbWVvdXQgc2lsZW50bHkgc2hpcHMgYSB2YWx1ZSBub2JvZHkgd3JvdGUuXG4gKiBBbnl0aGluZyB0aGF0IGlzbid0IGAtP1xcZCtgIGZhbGxzIGJhY2sgdG8gdGhlIGNvZGUgZGVmYXVsdCBpbnN0ZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52SW50KG5hbWU6IHN0cmluZywgZGVmOiBudW1iZXIsIG9wdHM/OiB7IG1pbj86IG51bWJlcjsgbWF4PzogbnVtYmVyIH0pOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgY29uc3QgdHJpbW1lZCA9IHJhdz8udHJpbSgpID8/ICcnO1xuICBsZXQgbiA9IHRyaW1tZWQgIT09ICcnICYmIC9eWystXT9cXGQrJC8udGVzdCh0cmltbWVkKSA/IE51bWJlci5wYXJzZUludCh0cmltbWVkLCAxMCkgOiBkZWY7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKG4pKSBuID0gZGVmO1xuICBpZiAob3B0cz8ubWluICE9PSB1bmRlZmluZWQpIG4gPSBNYXRoLm1heChvcHRzLm1pbiwgbik7XG4gIGlmIChvcHRzPy5tYXggIT09IHVuZGVmaW5lZCkgbiA9IE1hdGgubWluKG9wdHMubWF4LCBuKTtcbiAgcmV0dXJuIG47XG59XG5cbi8qKlxuICogUGFyc2UgYSBib29sZWFuIGVudiB2YXIuIGB0cnVlYC9gMWAvYHllc2Ag4oaSIHRydWUsIGBmYWxzZWAvYDBgL2Bub2Ag4oaSIGZhbHNlXG4gKiAoY2FzZS1pbnNlbnNpdGl2ZSk7IHVuc2V0IC8gYmxhbmsgLyB1bnJlY29nbml6ZWQg4oaSIGBkZWZgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52Qm9vbChuYW1lOiBzdHJpbmcsIGRlZjogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdy50cmltKCkgPT09ICcnKSByZXR1cm4gZGVmO1xuICBjb25zdCB2ID0gcmF3LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodiA9PT0gJ3RydWUnIHx8IHYgPT09ICcxJyB8fCB2ID09PSAneWVzJykgcmV0dXJuIHRydWU7XG4gIGlmICh2ID09PSAnZmFsc2UnIHx8IHYgPT09ICcwJyB8fCB2ID09PSAnbm8nKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBkZWY7XG59XG5cbi8qKiBSZWFkIGEgc3RyaW5nIGVudiB2YXI7IHVuc2V0IC8gYmxhbmsg4oaSIGBkZWZgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudlN0cihuYW1lOiBzdHJpbmcsIGRlZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnZbbmFtZV07XG4gIHJldHVybiByYXcgPT09IHVuZGVmaW5lZCB8fCByYXcudHJpbSgpID09PSAnJyA/IGRlZiA6IHJhdztcbn1cbiJdfQ==
|
package/lib/utils/identity.d.ts
CHANGED
|
@@ -30,13 +30,22 @@ export declare function normalizeOrgId(orgId: string | undefined | null): string
|
|
|
30
30
|
* never resolved. One spelling, because the audit trail is queried by it.
|
|
31
31
|
*/
|
|
32
32
|
export declare const SYSTEM_ACTOR_ID = "system";
|
|
33
|
+
/**
|
|
34
|
+
* The actor id written for an UNAUTHENTICATED actor: an anonymous public plugin
|
|
35
|
+
* submission (docs/plugin-publishing.md — the event carries
|
|
36
|
+
* `details.submissionId` for correlation and is recorded against the system
|
|
37
|
+
* org; the submitter's email, hashed or otherwise, never appears in the audit
|
|
38
|
+
* trail) and platform's pre-auth `device.authorize.start` (a device-login code
|
|
39
|
+
* requested before anyone has signed in). Distinct from {@link SYSTEM_ACTOR_ID}, which means "no person
|
|
40
|
+
* involved", not "a person we don't know".
|
|
41
|
+
*/
|
|
42
|
+
export declare const ANONYMOUS_ACTOR_ID = "anonymous";
|
|
33
43
|
/**
|
|
34
44
|
* The actor id to stamp on an audit event, from a route context.
|
|
35
45
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* three different actors depending on which route wrote it.
|
|
46
|
+
* One resolver so every route agrees on the fallback: per-route
|
|
47
|
+
* `req.user.sub ?? …` fallbacks disagree, and the same unattributable write
|
|
48
|
+
* would land in the trail under different actors depending on the route.
|
|
40
49
|
*
|
|
41
50
|
* `rc.userId` is already the normalized identity `withRoute` resolved (JWT
|
|
42
51
|
* `sub`, else the `x-user-id` hop header — see {@link getIdentity}), so this is
|
package/lib/utils/identity.js
CHANGED
|
@@ -21,13 +21,22 @@ export function normalizeOrgId(orgId) {
|
|
|
21
21
|
* never resolved. One spelling, because the audit trail is queried by it.
|
|
22
22
|
*/
|
|
23
23
|
export const SYSTEM_ACTOR_ID = 'system';
|
|
24
|
+
/**
|
|
25
|
+
* The actor id written for an UNAUTHENTICATED actor: an anonymous public plugin
|
|
26
|
+
* submission (docs/plugin-publishing.md — the event carries
|
|
27
|
+
* `details.submissionId` for correlation and is recorded against the system
|
|
28
|
+
* org; the submitter's email, hashed or otherwise, never appears in the audit
|
|
29
|
+
* trail) and platform's pre-auth `device.authorize.start` (a device-login code
|
|
30
|
+
* requested before anyone has signed in). Distinct from {@link SYSTEM_ACTOR_ID}, which means "no person
|
|
31
|
+
* involved", not "a person we don't know".
|
|
32
|
+
*/
|
|
33
|
+
export const ANONYMOUS_ACTOR_ID = 'anonymous';
|
|
24
34
|
/**
|
|
25
35
|
* The actor id to stamp on an audit event, from a route context.
|
|
26
36
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* three different actors depending on which route wrote it.
|
|
37
|
+
* One resolver so every route agrees on the fallback: per-route
|
|
38
|
+
* `req.user.sub ?? …` fallbacks disagree, and the same unattributable write
|
|
39
|
+
* would land in the trail under different actors depending on the route.
|
|
31
40
|
*
|
|
32
41
|
* `rc.userId` is already the normalized identity `withRoute` resolved (JWT
|
|
33
42
|
* `sub`, else the `x-user-id` hop header — see {@link getIdentity}), so this is
|
|
@@ -79,8 +88,8 @@ export function getIdentity(req) {
|
|
|
79
88
|
// runs before `requireAuth`, which recomputes this from the JWT).
|
|
80
89
|
// For a USER or SERVICE-ACCOUNT principal the JWT is the ONLY authority.
|
|
81
90
|
// Platform can mint a user token with no `organizationId` (a person between
|
|
82
|
-
// orgs, mid-invite, mid-onboarding)
|
|
83
|
-
//
|
|
91
|
+
// orgs, mid-invite, mid-onboarding); a `user?.organizationId || header`
|
|
92
|
+
// fallback would let such a token name any tenant it liked — a value that
|
|
84
93
|
// flows straight into the RLS tenant GUC. Absent ⇒ undefined ⇒ the route's
|
|
85
94
|
// `requireOrgId` refuses the call, which is the correct answer.
|
|
86
95
|
const principalType = user?.principalType;
|
|
@@ -89,9 +98,8 @@ export function getIdentity(req) {
|
|
|
89
98
|
const rawOrgId = user?.organizationId || (mayUseHeaderOrg ? headerOrgId : undefined);
|
|
90
99
|
// Normalized ONCE here (see normalizeOrgId) so the RLS GUC (`identityScope`
|
|
91
100
|
// reads this `identity.orgId`) and the app-layer WHERE clauses (route-wrapper
|
|
92
|
-
// / app-factory
|
|
93
|
-
//
|
|
94
|
-
// owner-bypass RLS, silently scope reads to the wrong (or no) tenant.
|
|
101
|
+
// / app-factory) always agree on tenant. A mismatch — GUC set to `Acme` while
|
|
102
|
+
// WHERE queries `acme` — would silently return no rows.
|
|
95
103
|
const orgId = normalizeOrgId(rawOrgId);
|
|
96
104
|
return {
|
|
97
105
|
orgId,
|
|
@@ -100,4 +108,4 @@ export function getIdentity(req) {
|
|
|
100
108
|
role: user?.role || getHeaderString(req.headers['x-user-role']),
|
|
101
109
|
};
|
|
102
110
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFnQztJQUM3RCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxFQUE4QjtJQUNwRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFnQjtJQUMxQyxvRUFBb0U7SUFDcEUsdUVBQXVFO0lBQ3ZFLHVFQUF1RTtJQUN2RSxvREFBb0Q7SUFDcEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUN0Qiw2RUFBNkU7SUFDN0Usd0RBQXdEO0lBQ3hELDhFQUE4RTtJQUM5RSwwRUFBMEU7SUFDMUUsNkVBQTZFO0lBQzdFLDBFQUEwRTtJQUMxRSxzRUFBc0U7SUFDdEUseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDJFQUEyRTtJQUMzRSxnRUFBZ0U7SUFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxFQUFFLGFBQWEsQ0FBQztJQUMxQyxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzdELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxJQUFJLGFBQWEsS0FBSyxTQUFTLENBQUM7SUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLGNBQWMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRiw0RUFBNEU7SUFDNUUsOEVBQThFO0lBQzlFLDZFQUE2RTtJQUM3RSx5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxPQUFPO1FBQ0wsS0FBSztRQUNMLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlELFNBQVMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNoRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBnZXRIZWFkZXJTdHJpbmcgfSBmcm9tICcuL2hlYWRlcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2h0dHAuanMnO1xuXG4vKipcbiAqIElkZW50aXR5IGluZm9ybWF0aW9uIGV4dHJhY3RlZCBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0SWRlbnRpdHkge1xuICAvKiogT3JnYW5pemF0aW9uIElEIGZyb20geC1vcmctaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IG9yZ0lkPzogc3RyaW5nO1xuICAvKiogVXNlciBJRCBmcm9tIHgtdXNlci1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgdXNlcklkPzogc3RyaW5nO1xuICAvKiogUmVxdWVzdCBJRCBmcm9tIHgtcmVxdWVzdC1pZCBoZWFkZXIgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdElkPzogc3RyaW5nO1xuICAvKiogVXNlciByb2xlIGZyb20geC11c2VyLXJvbGUgaGVhZGVyIChkZWNvZGVkIGZyb20gSldUKSAqL1xuICByZWFkb25seSByb2xlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBvcmctaWQgbm9ybWFsaXphdGlvbjogdHJpbSArIGxvd2VyY2FzZSwgZW1wdHkg4oeSIHVuZGVmaW5lZC5cbiAqXG4gKiBUaGUgU0lOR0xFIHNwZWxsaW5nIHJ1bGUgZm9yIGEgdGVuYW50IGlkIGFjcm9zcyB0aGUgZmxlZXQuIE9yZyBpZHMgYXJlXG4gKiAyNC1oZXggT2JqZWN0SWQgc3RyaW5ncyAocGx1cyB0aGUgYCdzeXN0ZW0nYCBzZW50aW5lbCksIGFuZCBoZXggaXNcbiAqIGNhc2UtaW5zZW5zaXRpdmUg4oCUIHNvIGBBY21lYC1zdHlsZSBjYXNpbmcgZGlmZmVyZW5jZXMgcmVzb2x2ZSB0byB0aGUgU0FNRVxuICogTW9uZ28gZG9jdW1lbnQgd2hpbGUgc3RyaW5nIGNvbXBhcmlzb25zIChgYWN0aXZlT3JnSWQgPT09IHRhcmdldE9yZ0lkYCwgYW5cbiAqIFJMUyBHVUMgdnMgYSBXSEVSRSBjbGF1c2UsIGEgY2FjaGUga2V5KSBzaWxlbnRseSBkaXNhZ3JlZS4gRXZlcnl0aGluZyB0aGF0XG4gKiBjb21wYXJlcyBvciBrZXlzIG9uIGFuIG9yZyBpZCBub3JtYWxpemVzIHRocm91Z2ggaGVyZSBzbyB0aGUgY29tcGFyaXNvbiBhbmRcbiAqIHRoZSBsb29rdXAgY2FuIG5ldmVyIGRyaWZ0IGFwYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3JnSWQob3JnSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3JnSWQ/LnRyaW0oKS50b0xvd2VyQ2FzZSgpIHx8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgd3JpdHRlbiB3aGVuIG5vdGhpbmcgaW4gdGhlIHJlcXVlc3QgYXR0cmlidXRlcyB0aGUgYWN0aW9uIHRvIGFcbiAqIHBlcnNvbiDigJQgYW4gaW50ZXJuYWwgc2VydmljZSBob3AsIGEgc2NoZWR1bGVyIHRpY2ssIGEgdG9rZW4gd2hvc2Ugc3ViamVjdFxuICogbmV2ZXIgcmVzb2x2ZWQuIE9uZSBzcGVsbGluZywgYmVjYXVzZSB0aGUgYXVkaXQgdHJhaWwgaXMgcXVlcmllZCBieSBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNZU1RFTV9BQ1RPUl9JRCA9ICdzeXN0ZW0nO1xuXG4vKipcbiAqIFRoZSBhY3RvciBpZCB0byBzdGFtcCBvbiBhbiBhdWRpdCBldmVudCwgZnJvbSBhIHJvdXRlIGNvbnRleHQuXG4gKlxuICogUm91dGUgaGFuZGxlcnMgdXNlZCB0byByZWFjaCBiYWNrIGludG8gYHJlcS51c2VyLnN1YmAgdGhlbXNlbHZlcywgd2l0aFxuICogZmFsbGJhY2tzIHRoYXQgZGlzYWdyZWVkIGFjcm9zcyBzZXJ2aWNlcyAoYD8/ICcnYCwgYD8/IHVzZXJJZCA/PyAnc3lzdGVtJ2AsXG4gKiBgPz8gJ3N5c3RlbSdgKSDigJQgc28gdGhlIHNhbWUgdW5hdHRyaWJ1dGFibGUgd3JpdGUgbGFuZGVkIGluIHRoZSB0cmFpbCB1bmRlclxuICogdGhyZWUgZGlmZmVyZW50IGFjdG9ycyBkZXBlbmRpbmcgb24gd2hpY2ggcm91dGUgd3JvdGUgaXQuXG4gKlxuICogYHJjLnVzZXJJZGAgaXMgYWxyZWFkeSB0aGUgbm9ybWFsaXplZCBpZGVudGl0eSBgd2l0aFJvdXRlYCByZXNvbHZlZCAoSldUXG4gKiBgc3ViYCwgZWxzZSB0aGUgYHgtdXNlci1pZGAgaG9wIGhlYWRlciDigJQgc2VlIHtAbGluayBnZXRJZGVudGl0eX0pLCBzbyB0aGlzIGlzXG4gKiB0aGUgc2FtZSB2YWx1ZSB0aGUgcmVzdCBvZiB0aGUgcmVxdWVzdCBpcyBzY29wZWQgYnksIGFuZCB0aGUgT05FIHBsYWNlIHRoZVxuICogXCJ1bmF0dHJpYnV0YWJsZVwiIHNlbnRpbmVsIGlzIGNob3Nlbi4gQWNjZXB0cyBhbnl0aGluZyBjYXJyeWluZyBhIGB1c2VySWRgLFxuICogd2hpY2ggdGhlIHJvdXRlIGNvbnRleHQgZG9lcyDigJQgcGFzcyBgcmNgLCBvciBgeyB1c2VySWQgfWAgd2hlbiB0aGUgaGFuZGxlclxuICogZGVzdHJ1Y3R1cmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0b3JJZChyYzogeyB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIH0pOiBzdHJpbmcge1xuICByZXR1cm4gcmMudXNlcklkIHx8IFNZU1RFTV9BQ1RPUl9JRDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGlkZW50aXR5IGluZm9ybWF0aW9uIGZyb20gcmVxdWVzdCBoZWFkZXJzLlxuICpcbiAqIEV4dHJhY3RzIGNvbW1vbiBpZGVudGl0eSBoZWFkZXJzIHVzZWQgZm9yIG11bHRpLXRlbmFudCBhdXRoZW50aWNhdGlvbjpcbiAqIC0geC1vcmctaWQ6IE9yZ2FuaXphdGlvbiBpZGVudGlmaWVyIChJTlRFUk5BTCBTRVJWSUNFIGhvcHMgb25seSwgc2VlIGJlbG93KVxuICogLSB4LXVzZXItaWQ6IFVzZXIgaWRlbnRpZmllclxuICogLSB4LXJlcXVlc3QtaWQ6IFJlcXVlc3QgdHJhY2UgaWRlbnRpZmllclxuICogLSB4LXVzZXItcm9sZTogVXNlciByb2xlXG4gKlxuICogQHBhcmFtIHJlcSAtIEhUVFAgcmVxdWVzdCBvYmplY3RcbiAqIEByZXR1cm5zIElkZW50aXR5IG9iamVjdCB3aXRoIG9yZ0lkLCB1c2VySWQsIHJlcXVlc3RJZCwgYW5kIHJvbGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXBwLnBvc3QoJy9hcGkvcmVzb3VyY2UnLCByZXF1aXJlQXV0aCwgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgIGNvbnN0IGlkZW50aXR5ID0gZ2V0SWRlbnRpdHkocmVxKTtcbiAqXG4gKiAgIGlmICghaWRlbnRpdHkub3JnSWQpIHtcbiAqICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgNDAwLCAneC1vcmctaWQgaGVhZGVyIHJlcXVpcmVkJyk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIFVzZSBpZGVudGl0eS5vcmdJZCwgaWRlbnRpdHkudXNlcklkLCBldGMuXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpdHkocmVxOiBIdHRwUmVxdWVzdCk6IFJlcXVlc3RJZGVudGl0eSB7XG4gIC8vIFByZWZlciBKV1QtdmVyaWZpZWQgY2xhaW1zIChyZXEudXNlcikgb3ZlciByYXcgaGVhZGVycyB0byBwcmV2ZW50XG4gIC8vIHNwb29maW5nLiBIZWFkZXJzIGFyZSBvbmx5IHVzZWQgYXMgZmFsbGJhY2sgb3IgZm9yIGZpZWxkcyBub3QgaW4gdGhlXG4gIC8vIEpXVCAoZS5nLiByZXF1ZXN0SWQpLiBUaGUgSldUIHBheWxvYWQgdXNlcyBgc3ViYCBmb3IgdGhlIHVzZXIgaWQgcGVyXG4gIC8vIE9JREMgY29udmVudGlvbjsgdGhhdCdzIG91ciBhdXRob3JpdGF0aXZlIHNvdXJjZS5cbiAgY29uc3QgdXNlciA9IHJlcS51c2VyO1xuICAvLyBUaGUgYHgtb3JnLWlkYCBoZWFkZXIgaXMgQ0xJRU5ULVNFVFRBQkxFLCBzbyBpdCBpcyBvbmx5IGV2ZXIgaG9ub3JlZCBmb3IgYVxuICAvLyBwcmluY2lwYWwgdGhhdCBoYXMgbm8gdGVuYW50IG9mIGl0cyBvd24gdG8gc3BlYWsgZm9yOlxuICAvLyAgIC0gYW4gSU5URVJOQUwgU0VSVklDRSBwcmluY2lwYWwgKGBwcmluY2lwYWxUeXBlOiAnc2VydmljZSdgKSwgd2hvc2UgdG9rZW5cbiAgLy8gICAgIG5hbWVzIHRoZSBzaWduaW5nIHNlcnZpY2UgcmF0aGVyIHRoYW4gdGhlIHRlbmFudCBpdCBpcyBhY3RpbmcgZm9yIOKAlFxuICAvLyAgICAgdGhhdCBpcyB0aGUgUzJTIGhvcCBjb252ZW50aW9uICh0aGUgY2FzY2FkZSwgdGhlIHF1b3RhIGNsaWVudCwg4oCmKTsgYW5kXG4gIC8vICAgLSBhIHJlcXVlc3Qgd2l0aCBubyB2ZXJpZmllZCBwcmluY2lwYWwgYXQgYWxsIChgYXR0YWNoUmVxdWVzdENvbnRleHRgXG4gIC8vICAgICBydW5zIGJlZm9yZSBgcmVxdWlyZUF1dGhgLCB3aGljaCByZWNvbXB1dGVzIHRoaXMgZnJvbSB0aGUgSldUKS5cbiAgLy8gRm9yIGEgVVNFUiBvciBTRVJWSUNFLUFDQ09VTlQgcHJpbmNpcGFsIHRoZSBKV1QgaXMgdGhlIE9OTFkgYXV0aG9yaXR5LlxuICAvLyBQbGF0Zm9ybSBjYW4gbWludCBhIHVzZXIgdG9rZW4gd2l0aCBubyBgb3JnYW5pemF0aW9uSWRgIChhIHBlcnNvbiBiZXR3ZWVuXG4gIC8vIG9yZ3MsIG1pZC1pbnZpdGUsIG1pZC1vbmJvYXJkaW5nKSwgYW5kIHRoZSBvbGQgYHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8XG4gIC8vIGhlYWRlcmAgZmFsbGJhY2sgbGV0IHN1Y2ggYSB0b2tlbiBuYW1lIGFueSB0ZW5hbnQgaXQgbGlrZWQg4oCUIGEgdmFsdWUgdGhhdFxuICAvLyBmbG93cyBzdHJhaWdodCBpbnRvIHRoZSBSTFMgdGVuYW50IEdVQy4gQWJzZW50IOKHkiB1bmRlZmluZWQg4oeSIHRoZSByb3V0ZSdzXG4gIC8vIGByZXF1aXJlT3JnSWRgIHJlZnVzZXMgdGhlIGNhbGwsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGFuc3dlci5cbiAgY29uc3QgcHJpbmNpcGFsVHlwZSA9IHVzZXI/LnByaW5jaXBhbFR5cGU7XG4gIGNvbnN0IGhlYWRlck9yZ0lkID0gZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LW9yZy1pZCddKTtcbiAgY29uc3QgbWF5VXNlSGVhZGVyT3JnID0gIXVzZXIgfHwgcHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnO1xuICBjb25zdCByYXdPcmdJZCA9IHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IChtYXlVc2VIZWFkZXJPcmcgPyBoZWFkZXJPcmdJZCA6IHVuZGVmaW5lZCk7XG4gIC8vIE5vcm1hbGl6ZWQgT05DRSBoZXJlIChzZWUgbm9ybWFsaXplT3JnSWQpIHNvIHRoZSBSTFMgR1VDIChgaWRlbnRpdHlTY29wZWBcbiAgLy8gcmVhZHMgdGhpcyBgaWRlbnRpdHkub3JnSWRgKSBhbmQgdGhlIGFwcC1sYXllciBXSEVSRSBjbGF1c2VzIChyb3V0ZS13cmFwcGVyXG4gIC8vIC8gYXBwLWZhY3RvcnksIHdoaWNoIGhpc3RvcmljYWxseSByZS1sb3dlcmNhc2VkKSBhbHdheXMgYWdyZWUgb24gdGVuYW50LiBBXG4gIC8vIG1pc21hdGNoIOKAlCBHVUMgc2V0IHRvIGBBY21lYCB3aGlsZSBXSEVSRSBxdWVyaWVzIGBhY21lYCDigJQgd291bGQsIHVuZGVyXG4gIC8vIG93bmVyLWJ5cGFzcyBSTFMsIHNpbGVudGx5IHNjb3BlIHJlYWRzIHRvIHRoZSB3cm9uZyAob3Igbm8pIHRlbmFudC5cbiAgY29uc3Qgb3JnSWQgPSBub3JtYWxpemVPcmdJZChyYXdPcmdJZCk7XG4gIHJldHVybiB7XG4gICAgb3JnSWQsXG4gICAgdXNlcklkOiB1c2VyPy5zdWIgfHwgZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXVzZXItaWQnXSksXG4gICAgcmVxdWVzdElkOiBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddKSxcbiAgICByb2xlOiB1c2VyPy5yb2xlIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLXJvbGUnXSksXG4gIH07XG59XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaWRlbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBaUIvQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFnQztJQUM3RCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLENBQUM7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBRXhDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLEVBQThCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQWdCO0lBQzFDLG9FQUFvRTtJQUNwRSx1RUFBdUU7SUFDdkUsdUVBQXVFO0lBQ3ZFLG9EQUFvRDtJQUNwRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3RCLDZFQUE2RTtJQUM3RSx3REFBd0Q7SUFDeEQsOEVBQThFO0lBQzlFLDBFQUEwRTtJQUMxRSw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLHNFQUFzRTtJQUN0RSx5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLHdFQUF3RTtJQUN4RSwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLGdFQUFnRTtJQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLEVBQUUsYUFBYSxDQUFDO0lBQzFDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLElBQUksYUFBYSxLQUFLLFNBQVMsQ0FBQztJQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsY0FBYyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JGLDRFQUE0RTtJQUM1RSw4RUFBOEU7SUFDOUUsOEVBQThFO0lBQzlFLHdEQUF3RDtJQUN4RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RCxTQUFTLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDaEUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgZ2V0SGVhZGVyU3RyaW5nIH0gZnJvbSAnLi9oZWFkZXJzLmpzJztcbmltcG9ydCB0eXBlIHsgSHR0cFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcy9odHRwLmpzJztcblxuLyoqXG4gKiBJZGVudGl0eSBpbmZvcm1hdGlvbiBleHRyYWN0ZWQgZnJvbSByZXF1ZXN0IGhlYWRlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdElkZW50aXR5IHtcbiAgLyoqIE9yZ2FuaXphdGlvbiBJRCBmcm9tIHgtb3JnLWlkIGhlYWRlciAqL1xuICByZWFkb25seSBvcmdJZD86IHN0cmluZztcbiAgLyoqIFVzZXIgSUQgZnJvbSB4LXVzZXItaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IHVzZXJJZD86IHN0cmluZztcbiAgLyoqIFJlcXVlc3QgSUQgZnJvbSB4LXJlcXVlc3QtaWQgaGVhZGVyICovXG4gIHJlYWRvbmx5IHJlcXVlc3RJZD86IHN0cmluZztcbiAgLyoqIFVzZXIgcm9sZSBmcm9tIHgtdXNlci1yb2xlIGhlYWRlciAoZGVjb2RlZCBmcm9tIEpXVCkgKi9cbiAgcmVhZG9ubHkgcm9sZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgb3JnLWlkIG5vcm1hbGl6YXRpb246IHRyaW0gKyBsb3dlcmNhc2UsIGVtcHR5IOKHkiB1bmRlZmluZWQuXG4gKlxuICogVGhlIFNJTkdMRSBzcGVsbGluZyBydWxlIGZvciBhIHRlbmFudCBpZCBhY3Jvc3MgdGhlIGZsZWV0LiBPcmcgaWRzIGFyZVxuICogMjQtaGV4IE9iamVjdElkIHN0cmluZ3MgKHBsdXMgdGhlIGAnc3lzdGVtJ2Agc2VudGluZWwpLCBhbmQgaGV4IGlzXG4gKiBjYXNlLWluc2Vuc2l0aXZlIOKAlCBzbyBgQWNtZWAtc3R5bGUgY2FzaW5nIGRpZmZlcmVuY2VzIHJlc29sdmUgdG8gdGhlIFNBTUVcbiAqIE1vbmdvIGRvY3VtZW50IHdoaWxlIHN0cmluZyBjb21wYXJpc29ucyAoYGFjdGl2ZU9yZ0lkID09PSB0YXJnZXRPcmdJZGAsIGFuXG4gKiBSTFMgR1VDIHZzIGEgV0hFUkUgY2xhdXNlLCBhIGNhY2hlIGtleSkgc2lsZW50bHkgZGlzYWdyZWUuIEV2ZXJ5dGhpbmcgdGhhdFxuICogY29tcGFyZXMgb3Iga2V5cyBvbiBhbiBvcmcgaWQgbm9ybWFsaXplcyB0aHJvdWdoIGhlcmUgc28gdGhlIGNvbXBhcmlzb24gYW5kXG4gKiB0aGUgbG9va3VwIGNhbiBuZXZlciBkcmlmdCBhcGFydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ0lkKG9yZ0lkOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9yZ0lkPy50cmltKCkudG9Mb3dlckNhc2UoKSB8fCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIGFjdG9yIGlkIHdyaXR0ZW4gd2hlbiBub3RoaW5nIGluIHRoZSByZXF1ZXN0IGF0dHJpYnV0ZXMgdGhlIGFjdGlvbiB0byBhXG4gKiBwZXJzb24g4oCUIGFuIGludGVybmFsIHNlcnZpY2UgaG9wLCBhIHNjaGVkdWxlciB0aWNrLCBhIHRva2VuIHdob3NlIHN1YmplY3RcbiAqIG5ldmVyIHJlc29sdmVkLiBPbmUgc3BlbGxpbmcsIGJlY2F1c2UgdGhlIGF1ZGl0IHRyYWlsIGlzIHF1ZXJpZWQgYnkgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWVNURU1fQUNUT1JfSUQgPSAnc3lzdGVtJztcblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgd3JpdHRlbiBmb3IgYW4gVU5BVVRIRU5USUNBVEVEIGFjdG9yOiBhbiBhbm9ueW1vdXMgcHVibGljIHBsdWdpblxuICogc3VibWlzc2lvbiAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCDigJQgdGhlIGV2ZW50IGNhcnJpZXNcbiAqIGBkZXRhaWxzLnN1Ym1pc3Npb25JZGAgZm9yIGNvcnJlbGF0aW9uIGFuZCBpcyByZWNvcmRlZCBhZ2FpbnN0IHRoZSBzeXN0ZW1cbiAqIG9yZzsgdGhlIHN1Ym1pdHRlcidzIGVtYWlsLCBoYXNoZWQgb3Igb3RoZXJ3aXNlLCBuZXZlciBhcHBlYXJzIGluIHRoZSBhdWRpdFxuICogdHJhaWwpIGFuZCBwbGF0Zm9ybSdzIHByZS1hdXRoIGBkZXZpY2UuYXV0aG9yaXplLnN0YXJ0YCAoYSBkZXZpY2UtbG9naW4gY29kZVxuICogcmVxdWVzdGVkIGJlZm9yZSBhbnlvbmUgaGFzIHNpZ25lZCBpbikuIERpc3RpbmN0IGZyb20ge0BsaW5rIFNZU1RFTV9BQ1RPUl9JRH0sIHdoaWNoIG1lYW5zIFwibm8gcGVyc29uXG4gKiBpbnZvbHZlZFwiLCBub3QgXCJhIHBlcnNvbiB3ZSBkb24ndCBrbm93XCIuXG4gKi9cbmV4cG9ydCBjb25zdCBBTk9OWU1PVVNfQUNUT1JfSUQgPSAnYW5vbnltb3VzJztcblxuLyoqXG4gKiBUaGUgYWN0b3IgaWQgdG8gc3RhbXAgb24gYW4gYXVkaXQgZXZlbnQsIGZyb20gYSByb3V0ZSBjb250ZXh0LlxuICpcbiAqIE9uZSByZXNvbHZlciBzbyBldmVyeSByb3V0ZSBhZ3JlZXMgb24gdGhlIGZhbGxiYWNrOiBwZXItcm91dGVcbiAqIGByZXEudXNlci5zdWIgPz8g4oCmYCBmYWxsYmFja3MgZGlzYWdyZWUsIGFuZCB0aGUgc2FtZSB1bmF0dHJpYnV0YWJsZSB3cml0ZVxuICogd291bGQgbGFuZCBpbiB0aGUgdHJhaWwgdW5kZXIgZGlmZmVyZW50IGFjdG9ycyBkZXBlbmRpbmcgb24gdGhlIHJvdXRlLlxuICpcbiAqIGByYy51c2VySWRgIGlzIGFscmVhZHkgdGhlIG5vcm1hbGl6ZWQgaWRlbnRpdHkgYHdpdGhSb3V0ZWAgcmVzb2x2ZWQgKEpXVFxuICogYHN1YmAsIGVsc2UgdGhlIGB4LXVzZXItaWRgIGhvcCBoZWFkZXIg4oCUIHNlZSB7QGxpbmsgZ2V0SWRlbnRpdHl9KSwgc28gdGhpcyBpc1xuICogdGhlIHNhbWUgdmFsdWUgdGhlIHJlc3Qgb2YgdGhlIHJlcXVlc3QgaXMgc2NvcGVkIGJ5LCBhbmQgdGhlIE9ORSBwbGFjZSB0aGVcbiAqIFwidW5hdHRyaWJ1dGFibGVcIiBzZW50aW5lbCBpcyBjaG9zZW4uIEFjY2VwdHMgYW55dGhpbmcgY2FycnlpbmcgYSBgdXNlcklkYCxcbiAqIHdoaWNoIHRoZSByb3V0ZSBjb250ZXh0IGRvZXMg4oCUIHBhc3MgYHJjYCwgb3IgYHsgdXNlcklkIH1gIHdoZW4gdGhlIGhhbmRsZXJcbiAqIGRlc3RydWN0dXJlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdG9ySWQocmM6IHsgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB9KTogc3RyaW5nIHtcbiAgcmV0dXJuIHJjLnVzZXJJZCB8fCBTWVNURU1fQUNUT1JfSUQ7XG59XG5cbi8qKlxuICogRXh0cmFjdCBpZGVudGl0eSBpbmZvcm1hdGlvbiBmcm9tIHJlcXVlc3QgaGVhZGVycy5cbiAqXG4gKiBFeHRyYWN0cyBjb21tb24gaWRlbnRpdHkgaGVhZGVycyB1c2VkIGZvciBtdWx0aS10ZW5hbnQgYXV0aGVudGljYXRpb246XG4gKiAtIHgtb3JnLWlkOiBPcmdhbml6YXRpb24gaWRlbnRpZmllciAoSU5URVJOQUwgU0VSVklDRSBob3BzIG9ubHksIHNlZSBiZWxvdylcbiAqIC0geC11c2VyLWlkOiBVc2VyIGlkZW50aWZpZXJcbiAqIC0geC1yZXF1ZXN0LWlkOiBSZXF1ZXN0IHRyYWNlIGlkZW50aWZpZXJcbiAqIC0geC11c2VyLXJvbGU6IFVzZXIgcm9sZVxuICpcbiAqIEBwYXJhbSByZXEgLSBIVFRQIHJlcXVlc3Qgb2JqZWN0XG4gKiBAcmV0dXJucyBJZGVudGl0eSBvYmplY3Qgd2l0aCBvcmdJZCwgdXNlcklkLCByZXF1ZXN0SWQsIGFuZCByb2xlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFwcC5wb3N0KCcvYXBpL3Jlc291cmNlJywgcmVxdWlyZUF1dGgsIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICogICBjb25zdCBpZGVudGl0eSA9IGdldElkZW50aXR5KHJlcSk7XG4gKlxuICogICBpZiAoIWlkZW50aXR5Lm9yZ0lkKSB7XG4gKiAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIDQwMCwgJ3gtb3JnLWlkIGhlYWRlciByZXF1aXJlZCcpO1xuICogICB9XG4gKlxuICogICAvLyBVc2UgaWRlbnRpdHkub3JnSWQsIGlkZW50aXR5LnVzZXJJZCwgZXRjLlxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElkZW50aXR5KHJlcTogSHR0cFJlcXVlc3QpOiBSZXF1ZXN0SWRlbnRpdHkge1xuICAvLyBQcmVmZXIgSldULXZlcmlmaWVkIGNsYWltcyAocmVxLnVzZXIpIG92ZXIgcmF3IGhlYWRlcnMgdG8gcHJldmVudFxuICAvLyBzcG9vZmluZy4gSGVhZGVycyBhcmUgb25seSB1c2VkIGFzIGZhbGxiYWNrIG9yIGZvciBmaWVsZHMgbm90IGluIHRoZVxuICAvLyBKV1QgKGUuZy4gcmVxdWVzdElkKS4gVGhlIEpXVCBwYXlsb2FkIHVzZXMgYHN1YmAgZm9yIHRoZSB1c2VyIGlkIHBlclxuICAvLyBPSURDIGNvbnZlbnRpb247IHRoYXQncyBvdXIgYXV0aG9yaXRhdGl2ZSBzb3VyY2UuXG4gIGNvbnN0IHVzZXIgPSByZXEudXNlcjtcbiAgLy8gVGhlIGB4LW9yZy1pZGAgaGVhZGVyIGlzIENMSUVOVC1TRVRUQUJMRSwgc28gaXQgaXMgb25seSBldmVyIGhvbm9yZWQgZm9yIGFcbiAgLy8gcHJpbmNpcGFsIHRoYXQgaGFzIG5vIHRlbmFudCBvZiBpdHMgb3duIHRvIHNwZWFrIGZvcjpcbiAgLy8gICAtIGFuIElOVEVSTkFMIFNFUlZJQ0UgcHJpbmNpcGFsIChgcHJpbmNpcGFsVHlwZTogJ3NlcnZpY2UnYCksIHdob3NlIHRva2VuXG4gIC8vICAgICBuYW1lcyB0aGUgc2lnbmluZyBzZXJ2aWNlIHJhdGhlciB0aGFuIHRoZSB0ZW5hbnQgaXQgaXMgYWN0aW5nIGZvciDigJRcbiAgLy8gICAgIHRoYXQgaXMgdGhlIFMyUyBob3AgY29udmVudGlvbiAodGhlIGNhc2NhZGUsIHRoZSBxdW90YSBjbGllbnQsIOKApik7IGFuZFxuICAvLyAgIC0gYSByZXF1ZXN0IHdpdGggbm8gdmVyaWZpZWQgcHJpbmNpcGFsIGF0IGFsbCAoYGF0dGFjaFJlcXVlc3RDb250ZXh0YFxuICAvLyAgICAgcnVucyBiZWZvcmUgYHJlcXVpcmVBdXRoYCwgd2hpY2ggcmVjb21wdXRlcyB0aGlzIGZyb20gdGhlIEpXVCkuXG4gIC8vIEZvciBhIFVTRVIgb3IgU0VSVklDRS1BQ0NPVU5UIHByaW5jaXBhbCB0aGUgSldUIGlzIHRoZSBPTkxZIGF1dGhvcml0eS5cbiAgLy8gUGxhdGZvcm0gY2FuIG1pbnQgYSB1c2VyIHRva2VuIHdpdGggbm8gYG9yZ2FuaXphdGlvbklkYCAoYSBwZXJzb24gYmV0d2VlblxuICAvLyBvcmdzLCBtaWQtaW52aXRlLCBtaWQtb25ib2FyZGluZyk7IGEgYHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IGhlYWRlcmBcbiAgLy8gZmFsbGJhY2sgd291bGQgbGV0IHN1Y2ggYSB0b2tlbiBuYW1lIGFueSB0ZW5hbnQgaXQgbGlrZWQg4oCUIGEgdmFsdWUgdGhhdFxuICAvLyBmbG93cyBzdHJhaWdodCBpbnRvIHRoZSBSTFMgdGVuYW50IEdVQy4gQWJzZW50IOKHkiB1bmRlZmluZWQg4oeSIHRoZSByb3V0ZSdzXG4gIC8vIGByZXF1aXJlT3JnSWRgIHJlZnVzZXMgdGhlIGNhbGwsIHdoaWNoIGlzIHRoZSBjb3JyZWN0IGFuc3dlci5cbiAgY29uc3QgcHJpbmNpcGFsVHlwZSA9IHVzZXI/LnByaW5jaXBhbFR5cGU7XG4gIGNvbnN0IGhlYWRlck9yZ0lkID0gZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LW9yZy1pZCddKTtcbiAgY29uc3QgbWF5VXNlSGVhZGVyT3JnID0gIXVzZXIgfHwgcHJpbmNpcGFsVHlwZSA9PT0gJ3NlcnZpY2UnO1xuICBjb25zdCByYXdPcmdJZCA9IHVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IChtYXlVc2VIZWFkZXJPcmcgPyBoZWFkZXJPcmdJZCA6IHVuZGVmaW5lZCk7XG4gIC8vIE5vcm1hbGl6ZWQgT05DRSBoZXJlIChzZWUgbm9ybWFsaXplT3JnSWQpIHNvIHRoZSBSTFMgR1VDIChgaWRlbnRpdHlTY29wZWBcbiAgLy8gcmVhZHMgdGhpcyBgaWRlbnRpdHkub3JnSWRgKSBhbmQgdGhlIGFwcC1sYXllciBXSEVSRSBjbGF1c2VzIChyb3V0ZS13cmFwcGVyXG4gIC8vIC8gYXBwLWZhY3RvcnkpIGFsd2F5cyBhZ3JlZSBvbiB0ZW5hbnQuIEEgbWlzbWF0Y2gg4oCUIEdVQyBzZXQgdG8gYEFjbWVgIHdoaWxlXG4gIC8vIFdIRVJFIHF1ZXJpZXMgYGFjbWVgIOKAlCB3b3VsZCBzaWxlbnRseSByZXR1cm4gbm8gcm93cy5cbiAgY29uc3Qgb3JnSWQgPSBub3JtYWxpemVPcmdJZChyYXdPcmdJZCk7XG4gIHJldHVybiB7XG4gICAgb3JnSWQsXG4gICAgdXNlcklkOiB1c2VyPy5zdWIgfHwgZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LXVzZXItaWQnXSksXG4gICAgcmVxdWVzdElkOiBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtcmVxdWVzdC1pZCddKSxcbiAgICByb2xlOiB1c2VyPy5yb2xlIHx8IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC11c2VyLXJvbGUnXSksXG4gIH07XG59XG4iXX0=
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { setLogContextProvider, redactSensitive, createLogger, type Logger, logger, default, } from './logger.js';
|
|
2
2
|
export * from './api-key.js';
|
|
3
3
|
export * from './safe-require.js';
|
|
4
4
|
export * from './secure-compare.js';
|
|
5
5
|
export * from './crash-handlers.js';
|
|
6
|
-
export
|
|
7
|
-
export
|
|
6
|
+
export { sendSuccess, sendError, sendQuotaExceeded, sendPaginatedNested, extractDbError, errorMessage, sendBadRequest, sendInternalError, parsePaginationParams, parseSort, type PaginationParams, type SortParams, } from './response.js';
|
|
7
|
+
export { getParam, parseQueryInt, parseQueryString, parseOptionalDate, parsePositiveInt, parseQueryIntClamped, parsePage, validateBulkArray, parseReportInterval, parseDateRange, type Page, REPORT_INTERVALS, } from './params.js';
|
|
8
8
|
export * from './headers.js';
|
|
9
9
|
export * from './identity.js';
|
|
10
|
-
export { USER_TOKEN_ALGORITHM, USER_TOKEN_CURVE, JWKS_PATH, decodeJwtHeader, isJwksDocument, publicJwkFrom, derToJoseSignature, } from './jwk.js';
|
|
11
|
-
export type { PublicJwk, JwksDocument,
|
|
10
|
+
export { USER_TOKEN_ALGORITHM, USER_TOKEN_CURVE, JWKS_PATH, decodeJwtHeader, isJwksDocument, publicJwkFrom, derToJoseSignature, encodeJwsSigningInput, compactJws, } from './jwk.js';
|
|
11
|
+
export type { PublicJwk, JwksDocument, } from './jwk.js';
|
|
12
12
|
export * from './object.js';
|
|
13
|
-
export
|
|
13
|
+
export { resetSupportAliasesCache, getPrimarySupportAlias, getAllSupportAliases, resolveRecipientAlias, DEFAULT_SUPPORT_ALIAS, } from './alias-resolver.js';
|
|
14
14
|
export * from './concurrency.js';
|
|
15
15
|
export * from './audit.js';
|
|
16
|
-
export
|
|
16
|
+
export { getDefaultKeyProvider, resetDefaultKeyProvider, setKeyProvider, encryptSecret, decryptSecret, isEncryptedBlob, type EncryptedBlob, type KeyProvider, EnvKeyProvider, KmsKeyProvider, type PerOrgKmsConfig, type PerOrgKmsResolver, PerOrgKmsKeyProvider, } from './secret-encryption.js';
|
|
17
17
|
export * from './secret-rotation.js';
|
|
18
|
-
export
|
|
18
|
+
export { setCounterEmitter, resetCounterEmitter, emitCounter, } from './metric-emitter.js';
|
|
19
19
|
export * from './aws-scrub.js';
|
|
20
|
-
export
|
|
21
|
-
export
|
|
20
|
+
export { maskLine, looksSensitive, REDACTED, SENSITIVE_VALUE_PATTERNS, } from './sensitive-patterns.js';
|
|
21
|
+
export { isPrivateAddress, assertSafeUrl, safeFetch, type SafeFetchResponse, } from './ssrf.js';
|
|
22
22
|
export * from './env.js';
|
|
23
|
+
export * from './service-registry.js';
|
|
24
|
+
export * from './retention.js';
|
|
23
25
|
export * from './compliance-attributes.js';
|
|
26
|
+
export { leadingZeroBits, proofOfWorkHash, challengeKey, clampDifficulty, createProofOfWorkChallenge, parseProofOfWorkChallenge, verifyProofOfWork, solveProofOfWork, POW_DEFAULT_DIFFICULTY, POW_MAX_DIFFICULTY, POW_CHALLENGE_TTL_MS, type ProofOfWorkChallenge, type ProofOfWorkSolution, } from './proof-of-work.js';
|