dd-trace 6.12.0 → 6.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ci/test-optimization-validation/framework-adapters/cypress.js +9 -11
- package/ci/test-optimization-validation/scenarios/ci-wiring.js +5 -4
- package/index.d.ts +127 -26
- package/package.json +10 -10
- package/packages/datadog-instrumentations/src/bunyan.js +4 -2
- package/packages/datadog-instrumentations/src/helpers/bunyan.js +12 -3
- package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +28 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +1 -0
- package/packages/datadog-instrumentations/src/jest.js +140 -18
- package/packages/datadog-instrumentations/src/mariadb-bundle.js +1597 -0
- package/packages/datadog-instrumentations/src/mariadb.js +7 -0
- package/packages/datadog-instrumentations/src/pino.js +15 -4
- package/packages/datadog-instrumentations/src/playwright.js +34 -20
- package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +7 -4
- package/packages/datadog-instrumentations/src/vitest-worker.js +11 -0
- package/packages/datadog-instrumentations/src/webdriverio.js +26 -0
- package/packages/datadog-instrumentations/src/winston.js +6 -3
- package/packages/datadog-plugin-cypress/src/support.js +1 -0
- package/packages/datadog-plugin-http/src/client.js +2 -15
- package/packages/datadog-plugin-http2/src/client.js +2 -15
- package/packages/datadog-plugin-openai-agents/src/integration.js +15 -11
- package/packages/datadog-plugin-playwright/src/index.js +9 -1
- package/packages/datadog-plugin-undici/src/index.js +2 -15
- package/packages/dd-trace/src/aiguard/evaluation.js +94 -20
- package/packages/dd-trace/src/aiguard/integrations/vercel-ai.js +2 -3
- package/packages/dd-trace/src/aiguard/messages/anthropic.js +21 -9
- package/packages/dd-trace/src/aiguard/noop.js +9 -1
- package/packages/dd-trace/src/aiguard/redaction.js +183 -0
- package/packages/dd-trace/src/aiguard/sdk.js +7 -2
- package/packages/dd-trace/src/aiguard/tags.js +2 -0
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +10 -9
- package/packages/dd-trace/src/appsec/rule_manager.js +2 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/request-tracker.js +51 -26
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +5 -11
- package/packages/dd-trace/src/ci-visibility/final-flush.js +20 -0
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +196 -29
- package/packages/dd-trace/src/config/generated-config-types.d.ts +6 -0
- package/packages/dd-trace/src/config/index.js +2 -1
- package/packages/dd-trace/src/config/supported-configurations.json +27 -0
- package/packages/dd-trace/src/debugger/devtools_client/send.js +4 -3
- package/packages/dd-trace/src/dogstatsd.js +45 -18
- package/packages/dd-trace/src/encode/agentless-json.js +5 -4
- package/packages/dd-trace/src/exporters/agent/index.js +22 -2
- package/packages/dd-trace/src/exporters/agent/writer.js +4 -4
- package/packages/dd-trace/src/exporters/common/writer.js +24 -2
- package/packages/dd-trace/src/exporters/span-stats/index.js +23 -4
- package/packages/dd-trace/src/external-logger/src/index.js +4 -3
- package/packages/dd-trace/src/flush.js +102 -0
- package/packages/dd-trace/src/llmobs/experiments/client.js +4 -0
- package/packages/dd-trace/src/llmobs/experiments/dataset.js +51 -2
- package/packages/dd-trace/src/llmobs/experiments/experiment.js +420 -105
- package/packages/dd-trace/src/llmobs/experiments/index.js +54 -42
- package/packages/dd-trace/src/llmobs/experiments/noop.js +39 -8
- package/packages/dd-trace/src/llmobs/experiments/result.js +1 -0
- package/packages/dd-trace/src/llmobs/experiments/util.js +21 -0
- package/packages/dd-trace/src/llmobs/index.js +80 -17
- package/packages/dd-trace/src/llmobs/noop.js +2 -1
- package/packages/dd-trace/src/llmobs/plugins/anthropic/util.js +8 -4
- package/packages/dd-trace/src/llmobs/plugins/claude-agent-sdk/index.js +6 -3
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +13 -6
- package/packages/dd-trace/src/llmobs/plugins/openai-agents/utils.js +5 -7
- package/packages/dd-trace/src/llmobs/writers/base.js +60 -24
- package/packages/dd-trace/src/noop/span.js +5 -0
- package/packages/dd-trace/src/openfeature/writers/exposures.js +8 -1
- package/packages/dd-trace/src/opentelemetry/logs/batch_log_processor.js +45 -3
- package/packages/dd-trace/src/opentelemetry/logs/index.js +4 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +7 -4
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +3 -1
- package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +8 -0
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +4 -2
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +4 -2
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +25 -5
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +61 -25
- package/packages/dd-trace/src/opentelemetry/tracer.js +26 -2
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +410 -342
- package/packages/dd-trace/src/opentracing/span.js +28 -0
- package/packages/dd-trace/src/otel-thread-ctx.js +23 -5
- package/packages/dd-trace/src/plugin_manager.js +2 -0
- package/packages/dd-trace/src/plugins/util/status-validator.js +98 -0
- package/packages/dd-trace/src/plugins/util/test.js +74 -21
- package/packages/dd-trace/src/plugins/util/web.js +2 -65
- package/packages/dd-trace/src/profiling/oom.js +4 -3
- package/packages/dd-trace/src/profiling/profiler.js +7 -0
- package/packages/dd-trace/src/profiling/profilers/events.js +3 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +14 -14
- package/packages/dd-trace/src/proxy.js +36 -8
- package/packages/dd-trace/src/runtime_metrics/index.js +5 -0
- package/packages/dd-trace/src/runtime_metrics/otlp_runtime_metrics.js +5 -0
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +17 -6
- package/packages/dd-trace/src/serverless/telemetry-delivery-tracker.js +55 -0
- package/packages/dd-trace/src/serverless/vercel.js +122 -0
- package/packages/dd-trace/src/serverless.js +37 -20
- package/packages/dd-trace/src/span_stats.js +40 -3
- package/packages/dd-trace/src/tracer.js +22 -0
- package/packages/dd-trace/src/web-tags-cache.js +67 -13
- package/vendor/dist/@datadog/openfeature-node-server/index.js +1 -1
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
// Per-span cache of "which tag bag from the started-spans chain identifies
|
|
4
4
|
// this span (or its nearest web-server ancestor) as a web-server span?"
|
|
5
5
|
// Populated lazily on first `getCachedWebTags(span)`, refreshed
|
|
6
|
-
// automatically when a `dd-trace:span:tags:update` event
|
|
7
|
-
//
|
|
6
|
+
// automatically when a `dd-trace:span:tags:update` event turns a span into a
|
|
7
|
+
// web-server span after the fact — for that span and for every descendant
|
|
8
|
+
// whose answer the promotion changes.
|
|
8
9
|
//
|
|
9
10
|
// Used by the wall profiler (endpoint-collection label on samples) and by
|
|
10
11
|
// the OTEP-4947 thread-context writer (endpoint attribute in the record);
|
|
@@ -13,11 +14,12 @@
|
|
|
13
14
|
//
|
|
14
15
|
// Consumers that want to react to late web-server-span discovery
|
|
15
16
|
// subscribe to `resolvedCh` — a diagnostics channel we publish on once
|
|
16
|
-
// per span at the moment its cached webTags
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
// how many other
|
|
17
|
+
// per span at the moment its cached webTags changes, i.e. when a promotion
|
|
18
|
+
// gives it an answer it didn't have or replaces the one it had with a
|
|
19
|
+
// nearer one. Doing it via a channel (rather than exposing a stateful "did
|
|
20
|
+
// the transition happen?" query) means each consumer sees every transition
|
|
21
|
+
// exactly once, regardless of subscription order or how many other
|
|
22
|
+
// consumers are attached.
|
|
21
23
|
//
|
|
22
24
|
// `endpointResolvedCh` is the same idea one field over: published once per
|
|
23
25
|
// web-server span at the moment its endpoint name settles (see finalEndpoint in
|
|
@@ -63,17 +65,21 @@ function getCache (span) {
|
|
|
63
65
|
// Returns the web-server tag bag for this span or its nearest web-server
|
|
64
66
|
// ancestor in the started-spans chain, or undefined if none is a
|
|
65
67
|
// web-server span. Lazy: walks the parent chain on the first call, caches
|
|
66
|
-
// the result on the span.
|
|
68
|
+
// the result on the span. Answers only ever change through onTagsUpdate, which
|
|
69
|
+
// rewrites the affected entries in place, so a resolved answer is never
|
|
70
|
+
// revisited here.
|
|
67
71
|
function getCachedWebTags (span) {
|
|
68
72
|
const cached = getCache(span)
|
|
69
73
|
if (cached.resolved) return cached.webTags
|
|
70
74
|
const spanContext = span.context()
|
|
71
75
|
const tags = spanContext.getTags()
|
|
76
|
+
const parentId = spanContext._parentId
|
|
72
77
|
let webTags
|
|
73
78
|
if (isWebServerSpan(tags)) {
|
|
74
79
|
webTags = tags
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
// A span with no parent has nothing to inherit from, and looking for one
|
|
81
|
+
// anyway means scanning the entire started-spans list to conclude that.
|
|
82
|
+
} else if (parentId != null) {
|
|
77
83
|
const startedSpans = getStartedSpans(spanContext)
|
|
78
84
|
for (let i = startedSpans.length; --i >= 0;) {
|
|
79
85
|
const ispan = startedSpans[i]
|
|
@@ -97,11 +103,17 @@ function getCachedWebTags (span) {
|
|
|
97
103
|
function onTagsUpdate (span) {
|
|
98
104
|
const cached = span[CachedSym]
|
|
99
105
|
if (cached === undefined || !cached.resolved) return
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
const spanContext = span.context()
|
|
107
|
+
const tags = spanContext.getTags()
|
|
108
|
+
// Anything but this span's own bag is an answer that predates it being a
|
|
109
|
+
// web-server span: either empty, or an outer web-server ancestor's bag that
|
|
110
|
+
// this span now supersedes for itself and for its descendants. A span whose
|
|
111
|
+
// cached answer already is its own bag is the overwhelmingly common case here
|
|
112
|
+
// (every further tag update on a request span), and stops at one comparison.
|
|
113
|
+
if (cached.webTags !== tags && isWebServerSpan(tags)) {
|
|
103
114
|
cached.webTags = tags
|
|
104
115
|
resolvedCh.publish(span)
|
|
116
|
+
resolveDescendants(span, spanContext, tags)
|
|
105
117
|
}
|
|
106
118
|
// Endpoint finality is a property of the web-server span itself: for a
|
|
107
119
|
// descendant, cached.webTags is an ancestor's bag rather than these tags, and
|
|
@@ -114,6 +126,48 @@ function onTagsUpdate (span) {
|
|
|
114
126
|
endpointResolvedCh.publish(span)
|
|
115
127
|
}
|
|
116
128
|
|
|
129
|
+
// A span has just become a web-server span; answers cached for its descendants
|
|
130
|
+
// before that moment found a farther ancestor or nothing at all, and are now
|
|
131
|
+
// wrong. Rewrite them here rather than letting each descendant discover it on
|
|
132
|
+
// its next lookup: a descendant that is already active keeps handing samplers
|
|
133
|
+
// its stale answer for as long as it runs without re-entering storage, which is
|
|
134
|
+
// precisely the uninterrupted synchronous stretch profiling cares about.
|
|
135
|
+
//
|
|
136
|
+
// One forward pass over the trace's started-spans list, which is in creation
|
|
137
|
+
// order, so a span's parent always precedes it: `answers` holds the new answer
|
|
138
|
+
// for each span in the promoted span's subtree, keyed by span id, and a span
|
|
139
|
+
// inherits its parent's unless it is a web-server span itself, in which case its
|
|
140
|
+
// own bag shadows the promotion for its own subtree. Spans outside the subtree
|
|
141
|
+
// are never in `answers`, so they cost one map lookup and nothing else.
|
|
142
|
+
//
|
|
143
|
+
// That same creation order means nothing before the promoted span can be a
|
|
144
|
+
// descendant of it, so the pass starts just past it. Locating it from the end
|
|
145
|
+
// costs one comparison in the common case, where a request span is promoted as
|
|
146
|
+
// it is created and is still the newest entry — leaving nothing to visit and
|
|
147
|
+
// nothing to allocate. A span the list no longer holds (finished, and dropped by
|
|
148
|
+
// a partial flush) ends that scan at -1, which visits the whole list.
|
|
149
|
+
function resolveDescendants (span, spanContext, webTags) {
|
|
150
|
+
const startedSpans = getStartedSpans(spanContext)
|
|
151
|
+
let index = startedSpans.length - 1
|
|
152
|
+
while (index >= 0 && startedSpans[index] !== span) index--
|
|
153
|
+
index++
|
|
154
|
+
if (index === startedSpans.length) return
|
|
155
|
+
const answers = new Map([[spanContext._spanId, webTags]])
|
|
156
|
+
for (; index < startedSpans.length; index++) {
|
|
157
|
+
const descendant = startedSpans[index]
|
|
158
|
+
const context = descendant.context()
|
|
159
|
+
const inherited = answers.get(context._parentId)
|
|
160
|
+
if (inherited === undefined) continue
|
|
161
|
+
const tags = context.getTags()
|
|
162
|
+
const answer = isWebServerSpan(tags) ? tags : inherited
|
|
163
|
+
answers.set(context._spanId, answer)
|
|
164
|
+
const cached = descendant[CachedSym]
|
|
165
|
+
if (cached === undefined || !cached.resolved || cached.webTags === answer) continue
|
|
166
|
+
cached.webTags = answer
|
|
167
|
+
resolvedCh.publish(descendant)
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
117
171
|
let activeCount = 0
|
|
118
172
|
|
|
119
173
|
function activate () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={"./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractAssignmentCache=void 0,t.assignmentCacheKeyToString=assignmentCacheKeyToString,t.assignmentCacheValueToString=assignmentCacheValueToString;let r=a("./@datadog/flagging-core/cjs/obfuscation.js");function assignmentCacheKeyToString(e){let t={flag:{key:e.flag.key},subject:{id:e.subject.id,attributes:e.subject.attributes}};return(0,r.getMD5Hash)(JSON.stringify(t))}function assignmentCacheValueToString(e){return(0,r.getMD5Hash)(JSON.stringify(e))}let AbstractAssignmentCache=class AbstractAssignmentCache{constructor(e){this.delegate=e}init(){return Promise.resolve()}has(e){return this.get(e)===assignmentCacheValueToString(e)}get(e){return this.delegate.get(assignmentCacheKeyToString(e))}set(e){this.delegate.set(assignmentCacheKeyToString(e),assignmentCacheValueToString(e))}entries(){return this.delegate.entries()}clear(){this.delegate.clear()}};t.AbstractAssignmentCache=AbstractAssignmentCache},"./@datadog/flagging-core/cjs/cache/index.js"(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),n(a("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"),t),n(a("./@datadog/flagging-core/cjs/cache/lru-in-memory-assignment-cache.js"),t),n(a("./@datadog/flagging-core/cjs/cache/non-expiring-in-memory-cache-assignment.js"),t)},"./@datadog/flagging-core/cjs/cache/lru-cache.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;let LRUCache=class LRUCache{constructor(e){this.capacity=e,this.cache=new Map}entries(){return this.cache.entries()}clear(){this.cache.clear()}delete(e){return this.cache.delete(e)}keys(){return this.cache.keys()}values(){return this.cache.values()}has(e){return this.cache.has(e)}get(e){if(!this.has(e))return;let t=this.cache.get(e);return void 0!==t&&(this.delete(e),this.cache.set(e,t)),t}set(e,t){if(0===this.capacity)return this;if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){let e=this.cache.keys().next().value;e&&this.delete(e)}return this.cache.set(e,t),this}};t.LRUCache=LRUCache},"./@datadog/flagging-core/cjs/cache/lru-in-memory-assignment-cache.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUInMemoryAssignmentCache=void 0;let r=a("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"),n=a("./@datadog/flagging-core/cjs/cache/lru-cache.js");let LRUInMemoryAssignmentCache=class LRUInMemoryAssignmentCache extends r.AbstractAssignmentCache{constructor(e){super(new n.LRUCache(e))}};t.LRUInMemoryAssignmentCache=LRUInMemoryAssignmentCache},"./@datadog/flagging-core/cjs/cache/non-expiring-in-memory-cache-assignment.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NonExpiringInMemoryAssignmentCache=void 0;let r=a("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js");let NonExpiringInMemoryAssignmentCache=class NonExpiringInMemoryAssignmentCache extends r.AbstractAssignmentCache{constructor(e=new Map){super(e)}};t.NonExpiringInMemoryAssignmentCache=NonExpiringInMemoryAssignmentCache},"./@datadog/flagging-core/cjs/configuration/configuration.js"(e,t){"use strict";function configMatchesContext(e,t){if(!(null==e?void 0:e.precomputed))return!1;let a=e.precomputed.context;return!a||contextsEqual(a,t)}function contextsEqual(e,t){return objectsEqual(e,t)}function objectsEqual(e,t){let a=Object.keys(e).sort(),r=Object.keys(t).sort();if(a.length!==r.length)return!1;for(let n=0;n<a.length;n++)if(a[n]!==r[n]||!valuesEqual(e[a[n]],t[r[n]]))return!1;return!0}function isRecord(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function valuesEqual(e,t){return e===t||null!=e&&null!=t&&typeof e==typeof t&&(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,a)=>valuesEqual(e,t[a])):!!(isRecord(e)&&isRecord(t))&&objectsEqual(e,t))}Object.defineProperty(t,"__esModule",{value:!0}),t.configMatchesContext=configMatchesContext},"./@datadog/flagging-core/cjs/configuration/exposureEvent.js"(e,t){"use strict";function createExposureEvent(e,t){var a,r;if(!(null==(a=t.flagMetadata)?void 0:a.doLog))return;let n=null==(r=t.flagMetadata)?void 0:r.allocationKey,i=t.variant;if(!n||!i)return;let{targetingKey:o="",...s}=e;return{allocation:{key:n},flag:{key:t.flagKey},variant:{key:i},subject:{id:o,attributes:s}}}Object.defineProperty(t,"__esModule",{value:!0}),t.createExposureEvent=createExposureEvent},"./@datadog/flagging-core/cjs/configuration/exposureEvent.types.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},"./@datadog/flagging-core/cjs/configuration/flagEvaluationAggregator.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlagEvaluationAggregator=void 0;let r=a("./@datadog/flagging-core/cjs/obfuscation.js"),n=a("./@datadog/flagging-core/cjs/time.js"),i=a("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js");let FlagEvaluationAggregator=class FlagEvaluationAggregator{constructor(e,t){this.aggregatedData=new Map,this.flushInterval=e,this.onFlush=t}start(){this.intervalId=setInterval(()=>{this.flush()},this.flushInterval)}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=void 0),this.flush()}addEvaluation(e,t,a){var r,n;let i=this.createAggregationKeyString(e,t,a),o=getEvaluationTimestamp(t),s=this.aggregatedData.get(i);if(s)s.count++,s.lastEvaluation=o,a&&(s.error=a);else{let s=isRuntimeDefaultUsed(t),l=null==(r=t.flagMetadata)?void 0:r.allocationKey,u=null==(n=t.flagMetadata)?void 0:n.targetingRuleKey,{targetingKey:c,...g}=e;this.aggregatedData.set(i,{flagKey:t.flagKey,variantKey:t.variant,allocationKey:l,targetingRuleKey:u,targetingKey:c,targetingContext:g,count:1,firstEvaluation:o,lastEvaluation:o,runtimeDefaultUsed:s,error:a})}}flush(){if(0===this.aggregatedData.size)return;let e=(0,n.timeStampNow)(),t=Array.from(this.aggregatedData.values()).map(t=>(0,i.createFlagEvaluationEvent)(t,e));this.aggregatedData.clear(),this.onFlush(t)}createAggregationKeyString(e,t,a){var n,i;let o=null==(n=t.flagMetadata)?void 0:n.allocationKey,s=null==(i=t.flagMetadata)?void 0:i.targetingRuleKey,{targetingKey:l,...u}=e;return(0,r.getMD5Hash)(JSON.stringify({flagKey:t.flagKey,variant:t.variant||"",allocationKey:o||"",targetingRuleKey:s||"",targetingKey:l||"",targetingContext:u,error:a||""}))}};function getEvaluationTimestamp(e){var t;let a=null==(t=e.flagMetadata)?void 0:t.__dd_eval_timestamp_ms;return Number.isFinite(a)?a:(0,n.timeStampNow)()}function isRuntimeDefaultUsed(e){return null==e.variant}t.FlagEvaluationAggregator=FlagEvaluationAggregator},"./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js"(e,t){"use strict";function createFlagEvaluationEvent(e,t){let a={flag:{key:e.flagKey},first_evaluation:e.firstEvaluation,last_evaluation:e.lastEvaluation,evaluation_count:e.count,runtime_default_used:e.runtimeDefaultUsed,timestamp:t};return null!=e.targetingKey&&(a.targeting_key=e.targetingKey),e.error&&(a.error={message:e.error}),e.variantKey&&(a.variant={key:e.variantKey}),e.allocationKey&&(a.allocation={key:e.allocationKey}),e.targetingRuleKey&&(a.targeting_rule={key:e.targetingRuleKey}),e.targetingContext&&Object.keys(e.targetingContext).length>0&&(a.context={evaluation:e.targetingContext}),a}Object.defineProperty(t,"__esModule",{value:!0}),t.createFlagEvaluationEvent=createFlagEvaluationEvent},"./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.types.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},"./@datadog/flagging-core/cjs/configuration/index.js"(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),n(a("./@datadog/flagging-core/cjs/configuration/configuration.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/exposureEvent.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/exposureEvent.types.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/flagEvaluationAggregator.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.types.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/wire.js"),t)},"./@datadog/flagging-core/cjs/configuration/wire.js"(e,t){"use strict";function configurationFromString(e){try{let t=JSON.parse(e);if(1!==t.version)return{};let a={};return t.precomputed&&(a.precomputed={...t.precomputed,response:JSON.parse(t.precomputed.response)}),a}catch(e){return{}}}function configurationToString(e){let t={version:1};return e.precomputed&&(t.precomputed={...e.precomputed,response:JSON.stringify(e.precomputed.response)}),JSON.stringify(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.configurationFromString=configurationFromString,t.configurationToString=configurationToString},"./@datadog/flagging-core/cjs/evaluation/errors.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TargetingKeyMissingError=void 0;let TargetingKeyMissingError=class TargetingKeyMissingError extends Error{constructor(){super("Targeting key is required for split evaluation"),this.name="TargetingKeyMissingError"}};t.TargetingKeyMissingError=TargetingKeyMissingError},"./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateForSubject=evaluateForSubject,t.containsMatchingRule=containsMatchingRule;let r=a("./@datadog/flagging-core/cjs/time.js"),n=a("./@datadog/flagging-core/cjs/evaluation/errors.js"),i=a("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"),o=a("./@datadog/flagging-core/cjs/evaluation/matchesShard.js"),s=a("./@datadog/flagging-core/cjs/evaluation/rules.js"),l=a("./@datadog/flagging-core/cjs/evaluation/ufc-v1.js");function evaluateForSubject(e,t,a,n,o,s,u=(0,r.timeStampNow)()){var c;if(!e.enabled)return s.debug("returning default assignment because flag is disabled",{flagKey:e.key,subjectKey:a}),{value:o,reason:"DISABLED",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};if(!isValidFlag(e))return s.debug("returning default assignment because flag configuration is invalid",{flagKey:e.key,subjectKey:a}),{value:o,reason:"DEFAULT",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};if(!validateTypeMatch(t,e.variationType))return s.debug("variant value type mismatch, returning default value",{flagKey:e.key,subjectKey:a,expectedType:t,variantType:e.variationType}),{value:o,reason:"ERROR",errorCode:"TYPE_MISMATCH",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};let g=new Date(u);for(let t of e.allocations){if(t.startAt&&g<new Date(t.startAt)){s.debug("allocation before start date",{flagKey:e.key,subjectKey:a,allocationKey:t.key,startAt:t.startAt});continue}if(t.endAt&&g>=new Date(t.endAt)){s.debug("allocation after end date",{flagKey:e.key,subjectKey:a,allocationKey:t.key,endAt:t.endAt});continue}if(!containsMatchingRule(t.rules,n,s))continue;let r=selectSplitUsingSharding(t.splits,a,e.key,s);if(r){let n=e.variations[r.variationKey];if(n){s.debug("evaluated a flag",{flagKey:e.key,subjectKey:a,assignment:n.value});let o=(null==(c=t.rules)?void 0:c.length)?"TARGETING_MATCH":r.shards.length?"SPLIT":t.startAt||t.endAt?"DEFAULT":"STATIC";return{value:n.value,reason:o,variant:n.key,flagMetadata:{...(0,i.createEvaluationTimestampMetadata)(u),__dd_allocation_key:t.key,__dd_do_log:!!t.doLog,__dd_split_serial_id:r.serialId,allocationKey:t.key,variationType:(0,l.variantTypeToFlagValueType)(e.variationType),doLog:!!t.doLog}}}}else s.debug("no matching split found for subject",{flagKey:e.key,subjectKey:a,allocationKey:t.key})}return s.debug("returning default assignment because no allocation matched",{flagKey:e.key,subjectKey:a}),{value:o,reason:"DEFAULT",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)}}function validateTypeMatch(e,t){if("boolean"===e)return"BOOLEAN"===t;if("string"===e)return"STRING"===t;if("number"===e)return"INTEGER"===t||"NUMERIC"===t;if("object"===e)return"JSON"===t;throw Error(`Invalid expected type: ${e}`)}function isValidFlag(e){return Array.isArray(e.allocations)&&e.allocations.every(e=>Array.isArray(e.splits)&&e.splits.every(e=>Array.isArray(e.shards))&&(void 0===e.rules||Array.isArray(e.rules)&&e.rules.every(e=>(0,s.isValidRule)(e))))}function containsMatchingRule(e,t,a){return null==e||!e.length||(a.debug("evaluating rules",{rules:JSON.stringify(e),subjectAttributes:t}),e.some(e=>(0,s.matchesRule)(e,t)))}function selectSplitUsingSharding(e,t,a,r){if(!e||0===e.length)return null;for(let i of e)if(r.debug("evaluating split sharding",{flagKey:a,subjectKey:t,variationKey:i.variationKey,shards:i.shards}),i.shards.every(e=>{if(null==t)throw new n.TargetingKeyMissingError;let s=(0,o.matchesShard)(e,t);return r.debug("shard match result",{flagKey:a,subjectKey:t,variationKey:i.variationKey,shard:e,matches:s}),s}))return r.debug("subject matches split",{flagKey:a,subjectKey:t,variationKey:i.variationKey}),i;return r.debug("subject matches no splits",{flagKey:a,subjectKey:t}),null}},"./@datadog/flagging-core/cjs/evaluation/evaluation.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateRulesBasedConfiguration=evaluateRulesBasedConfiguration;let r=a("./@datadog/flagging-core/cjs/time.js"),n=a("./@datadog/flagging-core/cjs/evaluation/errors.js"),i=a("./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"),o=a("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js");function evaluateRulesBasedConfiguration(e,t,a,s,l,u){let c=(0,r.timeStampNow)();if(!e)return{value:s,reason:"ERROR",errorCode:"PROVIDER_NOT_READY",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};let{targetingKey:g,...d}=l,f={...null!=g?{id:g}:{},...d},h=e.flags[a];if(!h)return u.debug("returning default value because flag is not found",{flagKey:a,subjectKey:g}),{value:s,reason:"ERROR",errorCode:"FLAG_NOT_FOUND",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};try{return(0,i.evaluateForSubject)(h,t,g,f,s,u,c)}catch(e){if(e instanceof n.TargetingKeyMissingError)return{value:s,reason:"ERROR",errorCode:"TARGETING_KEY_MISSING",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};return u.error("Error evaluating flag",{error:e}),{value:s,reason:"ERROR",errorCode:"GENERAL",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)}}}},"./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"(e,t){"use strict";function createEvaluationTimestampMetadata(e){return{__dd_eval_timestamp_ms:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.createEvaluationTimestampMetadata=createEvaluationTimestampMetadata},"./@datadog/flagging-core/cjs/evaluation/index.js"(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),n(a("./@datadog/flagging-core/cjs/evaluation/errors.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/evaluation.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/matchesShard.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/rules.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/sharders.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/ufc-v1.js"),t)},"./@datadog/flagging-core/cjs/evaluation/matchesShard.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.matchesShard=matchesShard;let r=a("./@datadog/flagging-core/cjs/evaluation/sharders.js");function matchesShard(e,t,a){let n=(null!=a?a:new r.MD5Sharder).getShard(hashKey(e.salt,t),e.totalShards);return e.ranges.some(e=>isInShardRange(n,e))}function isInShardRange(e,t){return t.start<=e&&e<t.end}function hashKey(e,t){return`${e}-${t}`}},"./@datadog/flagging-core/cjs/evaluation/rules.js"(e,t){"use strict";var a,r;Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorType=void 0,t.isValidRule=isValidRule,t.matchesRule=matchesRule,(r=a||(t.OperatorType=a={})).MATCHES="MATCHES",r.NOT_MATCHES="NOT_MATCHES",r.GTE="GTE",r.GT="GT",r.LTE="LTE",r.LT="LT",r.ONE_OF="ONE_OF",r.NOT_ONE_OF="NOT_ONE_OF",r.IS_NULL="IS_NULL";let n=new Set(Object.values(a));function isValidRule(e){return!!Array.isArray(e.conditions)&&e.conditions.every(e=>{if(!n.has(e.operator))return!1;if(e.operator!==a.MATCHES&&e.operator!==a.NOT_MATCHES)return!0;try{return compileRegex(e.value),!0}catch(e){return!1}})}function matchesRule(e,t){return!evaluateRuleConditions(t,e.conditions).includes(!1)}function evaluateRuleConditions(e,t){return t.map(t=>evaluateCondition(e,t))}function evaluateCondition(e,t){let r=e[t.attribute];if(t.operator===a.IS_NULL)return t.value?null==r:null!=r;if(null!=r)switch(t.operator){case a.GTE:case a.GT:case a.LTE:case a.LT:return compareNumber(r,t.value,(e,r)=>t.operator===a.GTE?e>=r:t.operator===a.GT?e>r:t.operator===a.LTE?e<=r:e<r);case a.MATCHES:return compileRegex(t.value).test(String(r));case a.NOT_MATCHES:return!compileRegex(t.value).test(String(r));case a.ONE_OF:var n;return n=r.toString(),t.value.includes(n);case a.NOT_ONE_OF:return isNotOneOf(r.toString(),t.value)}return!1}function compileRegex(e){let t=e.match(/^\(\?([imsu]+)\)/),a=t?[...new Set(t[1])].join(""):"";return new RegExp((t?e.slice(t[0].length):e).split("[:alnum:]").join("A-Za-z0-9"),a)}function isNotOneOf(e,t){return!t.includes(e)}function compareNumber(e,t,a){return a(Number(e),Number(t))}},"./@datadog/flagging-core/cjs/evaluation/sharders.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeterministicSharder=t.MD5Sharder=t.Sharder=void 0;let r=a("./@datadog/flagging-core/cjs/obfuscation.js");let Sharder=class Sharder{};t.Sharder=Sharder;let MD5Sharder=class MD5Sharder extends Sharder{getShard(e,t){return parseInt((0,r.getMD5Hash)(e).slice(0,8),16)%t}};t.MD5Sharder=MD5Sharder;let DeterministicSharder=class DeterministicSharder extends Sharder{constructor(e){super(),this.lookup=e}getShard(e,t){var a;return null!=(a=this.lookup[e])?a:0}};t.DeterministicSharder=DeterministicSharder},"./@datadog/flagging-core/cjs/evaluation/ufc-v1.js"(e,t){"use strict";function variantTypeToFlagValueType(e){if("BOOLEAN"===e)return"boolean";if("STRING"===e)return"string";if("INTEGER"===e||"NUMERIC"===e)return"number";if("JSON"===e)return"object";throw Error(`Cannot convert variant type to flag value type: ${e}`)}Object.defineProperty(t,"__esModule",{value:!0}),t.variantTypeToFlagValueType=variantTypeToFlagValueType},"./@datadog/flagging-core/cjs/index.js"(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),n(a("./@datadog/flagging-core/cjs/cache/index.js"),t),n(a("./@datadog/flagging-core/cjs/configuration/index.js"),t),n(a("./@datadog/flagging-core/cjs/evaluation/index.js"),t),n(a("./@datadog/flagging-core/cjs/obfuscation.js"),t),n(a("./@datadog/flagging-core/cjs/time.js"),t)},"./@datadog/flagging-core/cjs/obfuscation.js"(e,t,a){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getMD5Hash=getMD5Hash,t.buildStorageKeySuffix=buildStorageKeySuffix;let n=r(a("./spark-md5/spark-md5.js"));function getMD5Hash(e,t=""){return new n.default().append(t).append(e).end()}function buildStorageKeySuffix(e){return getMD5Hash(e).slice(0,16)}},"./@datadog/flagging-core/cjs/time.js"(e,t){"use strict";function timeStampNow(){return new Date().getTime()}Object.defineProperty(t,"__esModule",{value:!0}),t.timeStampNow=timeStampNow},"./@datadog/openfeature-node-server/cjs/configuration/evaluation.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluate=void 0;var r=a("./@datadog/flagging-core/cjs/index.js");Object.defineProperty(t,"evaluate",{enumerable:!0,get:function(){return r.evaluateRulesBasedConfiguration}})},"./@datadog/openfeature-node-server/cjs/index.js"(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)};Object.defineProperty(t,"__esModule",{value:!0}),n(a("./@datadog/openfeature-node-server/cjs/provider.js"),t)},"./@datadog/openfeature-node-server/cjs/initialization-controller.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InitializationController=void 0;let InitializationController=class InitializationController{constructor(e,t){this.promise=Promise.race([new Promise((e,t)=>{this.resolve=()=>{this.cleanup(),e()},this.reject=e=>{this.cleanup(),t(e)}}),new Promise(()=>{this.timeoutId=setTimeout(()=>{t()},e)})])}async wait(){try{await this.promise}finally{this.cleanup()}}complete(){this.resolve&&this.resolve()}fail(e){this.reject&&this.reject(e)}isInitializing(){return void 0!==this.resolve}cleanup(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.resolve=void 0,this.reject=void 0}};t.InitializationController=InitializationController},"./@datadog/openfeature-node-server/cjs/provider-event-emitter.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeProviderEventEmitter=void 0;let r=a("node:events");let NodeProviderEventEmitter=class NodeProviderEventEmitter{constructor(){this.eventEmitter=new r.EventEmitter,this.handlers=new Map}emit(e,t){this.eventEmitter.emit(e,t)}addHandler(e,t){var a,r;let asyncHandler=async e=>{try{await t(e)}catch(e){this.logHandlerError(e)}},n=null!=(a=this.handlers.get(e))?a:new Map,i=null!=(r=n.get(t))?r:[];i.push(asyncHandler),n.set(t,i),this.handlers.set(e,n),this.eventEmitter.on(e,asyncHandler)}removeHandler(e,t){let a=this.handlers.get(e),r=null==a?void 0:a.get(t),n=null==r?void 0:r.pop();n&&this.eventEmitter.removeListener(e,n),(null==r?void 0:r.length)===0&&(null==a||a.delete(t)),(null==a?void 0:a.size)===0&&this.handlers.delete(e)}removeAllHandlers(e){if(e){this.eventEmitter.removeAllListeners(e),this.handlers.delete(e);return}this.eventEmitter.removeAllListeners(),this.handlers.clear()}getHandlers(e){return this.eventEmitter.listeners(e)}setLogger(e){return this.logger=e,this}logHandlerError(e){var t;try{null==(t=this.logger)||t.error("Error running event handler:",e)}catch(e){}}};t.NodeProviderEventEmitter=NodeProviderEventEmitter},"./@datadog/openfeature-node-server/cjs/provider.js"(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DatadogNodeServerProvider=void 0;let r=a("./@datadog/flagging-core/cjs/index.js"),n=a("./@datadog/openfeature-node-server/cjs/configuration/evaluation.js"),i=a("./@datadog/openfeature-node-server/cjs/initialization-controller.js"),o=a("./@datadog/openfeature-node-server/cjs/provider-event-emitter.js");let DatadogNodeServerProvider=class DatadogNodeServerProvider{constructor(e){this.options=e,this.metadata={name:"datadog-node-server"},this.runsOn="server",this.hooks=[],this.events=new o.NodeProviderEventEmitter,this.exposureCache=new r.LRUInMemoryAssignmentCache(5e4)}getConfiguration(){return this.configuration}setConfiguration(e){var t,a,r;let n=null==(t=this.configuration)?void 0:t.createdAt,i=!!this.configuration;if(i&&this.configuration!==e){this.events.emit("PROVIDER_CONFIGURATION_CHANGED"),n!==(null==e?void 0:e.createdAt)&&(null==(a=this.exposureCache)||a.clear()),this.configuration=e;return}this.configuration=e,(null==(r=this.initController)?void 0:r.isInitializing())?this.initController.complete():i||this.events.emit("PROVIDER_READY")}setError(e){var t;(null==(t=this.initController)?void 0:t.isInitializing())?this.initController.fail(e):this.events.emit("PROVIDER_ERROR",{error:e})}async initialize(){var e,t;if(this.configuration)return;let a=null!=(e=this.options.initializationTimeoutMs)?e:3e4;this.initController=new i.InitializationController(a,()=>this.setError(Error(`Initialization timeout after ${a}ms`))),await this.initController.wait(),await (null==(t=this.exposureCache)?void 0:t.init())}async resolveBooleanEvaluation(e,t,a,r){let i=(0,n.evaluate)(this.configuration,"boolean",e,t,a,r);return this.handleExposure(e,a,i),i}async resolveStringEvaluation(e,t,a,r){let i=(0,n.evaluate)(this.configuration,"string",e,t,a,r);return this.handleExposure(e,a,i),i}async resolveNumberEvaluation(e,t,a,r){let i=(0,n.evaluate)(this.configuration,"number",e,t,a,r);return this.handleExposure(e,a,i),i}async resolveObjectEvaluation(e,t,a,r){let i=(0,n.evaluate)(this.configuration,"object",e,t,a,r);return this.handleExposure(e,a,i),i}handleExposure(e,t,a){var n,i,o;let s=(0,r.timeStampNow)(),l={...a,flagKey:e,flagMetadata:null!=(n=a.flagMetadata)?n:{}},u=(0,r.createExposureEvent)(t,l);!u||(null==(i=this.exposureCache)?void 0:i.has(u))||this.options.exposureChannel.hasSubscribers&&(this.options.exposureChannel.publish({...u,timestamp:s}),null==(o=this.exposureCache)||o.set(u))}};t.DatadogNodeServerProvider=DatadogNodeServerProvider},"./spark-md5/spark-md5.js"(e){e.exports=function(){"use strict";var e=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function md5cycle(e,t){var a=e[0],r=e[1],n=e[2],i=e[3];a+=(r&n|~r&i)+t[0]-0x28955b88|0,i+=((a=(a<<7|a>>>25)+r|0)&r|~a&n)+t[1]-0x173848aa|0,n+=((i=(i<<12|i>>>20)+a|0)&a|~i&r)+t[2]+0x242070db|0,r+=((n=(n<<17|n>>>15)+i|0)&i|~n&a)+t[3]-0x3e423112|0,a+=((r=(r<<22|r>>>10)+n|0)&n|~r&i)+t[4]-0xa83f051|0,i+=((a=(a<<7|a>>>25)+r|0)&r|~a&n)+t[5]+0x4787c62a|0,n+=((i=(i<<12|i>>>20)+a|0)&a|~i&r)+t[6]-0x57cfb9ed|0,r+=((n=(n<<17|n>>>15)+i|0)&i|~n&a)+t[7]-0x2b96aff|0,a+=((r=(r<<22|r>>>10)+n|0)&n|~r&i)+t[8]+0x698098d8|0,i+=((a=(a<<7|a>>>25)+r|0)&r|~a&n)+t[9]-0x74bb0851|0,n+=((i=(i<<12|i>>>20)+a|0)&a|~i&r)+t[10]-42063|0,r+=((n=(n<<17|n>>>15)+i|0)&i|~n&a)+t[11]-0x76a32842|0,a+=((r=(r<<22|r>>>10)+n|0)&n|~r&i)+t[12]+0x6b901122|0,i+=((a=(a<<7|a>>>25)+r|0)&r|~a&n)+t[13]-0x2678e6d|0,n+=((i=(i<<12|i>>>20)+a|0)&a|~i&r)+t[14]-0x5986bc72|0,r+=((n=(n<<17|n>>>15)+i|0)&i|~n&a)+t[15]+0x49b40821|0,a+=((r=(r<<22|r>>>10)+n|0)&i|n&~i)+t[1]-0x9e1da9e|0,i+=((a=(a<<5|a>>>27)+r|0)&n|r&~n)+t[6]-0x3fbf4cc0|0,n+=((i=(i<<9|i>>>23)+a|0)&r|a&~r)+t[11]+0x265e5a51|0,r+=((n=(n<<14|n>>>18)+i|0)&a|i&~a)+t[0]-0x16493856|0,a+=((r=(r<<20|r>>>12)+n|0)&i|n&~i)+t[5]-0x29d0efa3|0,i+=((a=(a<<5|a>>>27)+r|0)&n|r&~n)+t[10]+0x2441453|0,n+=((i=(i<<9|i>>>23)+a|0)&r|a&~r)+t[15]-0x275e197f|0,r+=((n=(n<<14|n>>>18)+i|0)&a|i&~a)+t[4]-0x182c0438|0,a+=((r=(r<<20|r>>>12)+n|0)&i|n&~i)+t[9]+0x21e1cde6|0,i+=((a=(a<<5|a>>>27)+r|0)&n|r&~n)+t[14]-0x3cc8f82a|0,n+=((i=(i<<9|i>>>23)+a|0)&r|a&~r)+t[3]-0xb2af279|0,r+=((n=(n<<14|n>>>18)+i|0)&a|i&~a)+t[8]+0x455a14ed|0,a+=((r=(r<<20|r>>>12)+n|0)&i|n&~i)+t[13]-0x561c16fb|0,i+=((a=(a<<5|a>>>27)+r|0)&n|r&~n)+t[2]-0x3105c08|0,n+=((i=(i<<9|i>>>23)+a|0)&r|a&~r)+t[7]+0x676f02d9|0,r+=((n=(n<<14|n>>>18)+i|0)&a|i&~a)+t[12]-0x72d5b376|0,a+=((r=(r<<20|r>>>12)+n|0)^n^i)+t[5]-378558|0,i+=((a=(a<<4|a>>>28)+r|0)^r^n)+t[8]-0x788e097f|0,n+=((i=(i<<11|i>>>21)+a|0)^a^r)+t[11]+0x6d9d6122|0,r+=((n=(n<<16|n>>>16)+i|0)^i^a)+t[14]-0x21ac7f4|0,a+=((r=(r<<23|r>>>9)+n|0)^n^i)+t[1]-0x5b4115bc|0,i+=((a=(a<<4|a>>>28)+r|0)^r^n)+t[4]+0x4bdecfa9|0,n+=((i=(i<<11|i>>>21)+a|0)^a^r)+t[7]-0x944b4a0|0,r+=((n=(n<<16|n>>>16)+i|0)^i^a)+t[10]-0x41404390|0,a+=((r=(r<<23|r>>>9)+n|0)^n^i)+t[13]+0x289b7ec6|0,i+=((a=(a<<4|a>>>28)+r|0)^r^n)+t[0]-0x155ed806|0,n+=((i=(i<<11|i>>>21)+a|0)^a^r)+t[3]-0x2b10cf7b|0,r+=((n=(n<<16|n>>>16)+i|0)^i^a)+t[6]+0x4881d05|0,a+=((r=(r<<23|r>>>9)+n|0)^n^i)+t[9]-0x262b2fc7|0,i+=((a=(a<<4|a>>>28)+r|0)^r^n)+t[12]-0x1924661b|0,n+=((i=(i<<11|i>>>21)+a|0)^a^r)+t[15]+0x1fa27cf8|0,r+=((n=(n<<16|n>>>16)+i|0)^i^a)+t[2]-0x3b53a99b|0,r=(r<<23|r>>>9)+n|0,a+=(n^(r|~i))+t[0]-0xbd6ddbc|0,a=(a<<6|a>>>26)+r|0,i+=(r^(a|~n))+t[7]+0x432aff97|0,i=(i<<10|i>>>22)+a|0,n+=(a^(i|~r))+t[14]-0x546bdc59|0,n=(n<<15|n>>>17)+i|0,r+=(i^(n|~a))+t[5]-0x36c5fc7|0,r=(r<<21|r>>>11)+n|0,a+=(n^(r|~i))+t[12]+0x655b59c3|0,a=(a<<6|a>>>26)+r|0,i+=(r^(a|~n))+t[3]-0x70f3336e|0,i=(i<<10|i>>>22)+a|0,n+=(a^(i|~r))+t[10]-1051523|0,n=(n<<15|n>>>17)+i|0,r+=(i^(n|~a))+t[1]-0x7a7ba22f|0,r=(r<<21|r>>>11)+n|0,a+=(n^(r|~i))+t[8]+0x6fa87e4f|0,a=(a<<6|a>>>26)+r|0,i+=(r^(a|~n))+t[15]-0x1d31920|0,i=(i<<10|i>>>22)+a|0,n+=(a^(i|~r))+t[6]-0x5cfebcec|0,n=(n<<15|n>>>17)+i|0,r+=(i^(n|~a))+t[13]+0x4e0811a1|0,r=(r<<21|r>>>11)+n|0,a+=(n^(r|~i))+t[4]-0x8ac817e|0,a=(a<<6|a>>>26)+r|0,i+=(r^(a|~n))+t[11]-0x42c50dcb|0,i=(i<<10|i>>>22)+a|0,n+=(a^(i|~r))+t[2]+0x2ad7d2bb|0,n=(n<<15|n>>>17)+i|0,r+=(i^(n|~a))+t[9]-0x14792c6f|0,r=(r<<21|r>>>11)+n|0,e[0]=a+e[0]|0,e[1]=r+e[1]|0,e[2]=n+e[2]|0,e[3]=i+e[3]|0}function md5blk(e){var t,a=[];for(t=0;t<64;t+=4)a[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return a}function md5blk_array(e){var t,a=[];for(t=0;t<64;t+=4)a[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return a}function md51(e){var t,a,r,n,i,o,s=e.length,l=[0x67452301,-0x10325477,-0x67452302,0x10325476];for(t=64;t<=s;t+=64)md5cycle(l,md5blk(e.substring(t-64,t)));for(a=(e=e.substring(t-64)).length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<a;t+=1)r[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(md5cycle(l,r),t=0;t<16;t+=1)r[t]=0;return i=parseInt((n=(n=8*s).toString(16).match(/(.*?)(.{0,8})$/))[2],16),o=parseInt(n[1],16)||0,r[14]=i,r[15]=o,md5cycle(l,r),l}function md51_array(e){var t,a,r,n,i,o,s=e.length,l=[0x67452301,-0x10325477,-0x67452302,0x10325476];for(t=64;t<=s;t+=64)md5cycle(l,md5blk_array(e.subarray(t-64,t)));for(a=(e=t-64<s?e.subarray(t-64):new Uint8Array(0)).length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<a;t+=1)r[t>>2]|=e[t]<<(t%4<<3);if(r[t>>2]|=128<<(t%4<<3),t>55)for(md5cycle(l,r),t=0;t<16;t+=1)r[t]=0;return i=parseInt((n=(n=8*s).toString(16).match(/(.*?)(.{0,8})$/))[2],16),o=parseInt(n[1],16)||0,r[14]=i,r[15]=o,md5cycle(l,r),l}function rhex(t){var a,r="";for(a=0;a<4;a+=1)r+=e[t>>8*a+4&15]+e[t>>8*a&15];return r}function hex(e){var t;for(t=0;t<e.length;t+=1)e[t]=rhex(e[t]);return e.join("")}function toUtf8(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function utf8Str2ArrayBuffer(e,t){var a,r=e.length,n=new ArrayBuffer(r),i=new Uint8Array(n);for(a=0;a<r;a+=1)i[a]=e.charCodeAt(a);return t?i:n}function arrayBuffer2Utf8Str(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function concatenateArrayBuffers(e,t,a){var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e)),r.set(new Uint8Array(t),e.byteLength),a?r:r.buffer}function hexToBinaryString(e){var t,a=[],r=e.length;for(t=0;t<r-1;t+=2)a.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,a)}function SparkMD5(){this.reset()}return hex(md51("hello")),"u">typeof ArrayBuffer&&!ArrayBuffer.prototype.slice&&function(){function clamp(e,t){return(e=0|e||0)<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(e,t){var a,r,n,i,o=this.byteLength,s=clamp(e,o),l=o;return(void 0!==t&&(l=clamp(t,o)),s>l)?new ArrayBuffer(0):(n=new Uint8Array(r=new ArrayBuffer(a=l-s)),i=new Uint8Array(this,s,a),n.set(i),r)}}(),SparkMD5.prototype.append=function(e){return this.appendBinary(toUtf8(e)),this},SparkMD5.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,a=this._buff.length;for(t=64;t<=a;t+=64)md5cycle(this._hash,md5blk(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},SparkMD5.prototype.end=function(e){var t,a,r=this._buff,n=r.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)i[t>>2]|=r.charCodeAt(t)<<(t%4<<3);return this._finish(i,n),a=hex(this._hash),e&&(a=hexToBinaryString(a)),this.reset(),a},SparkMD5.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[0x67452301,-0x10325477,-0x67452302,0x10325476],this},SparkMD5.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},SparkMD5.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},SparkMD5.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},SparkMD5.prototype._finish=function(e,t){var a,r,n,i=t;if(e[i>>2]|=128<<(i%4<<3),i>55)for(md5cycle(this._hash,e),i=0;i<16;i+=1)e[i]=0;r=parseInt((a=(a=8*this._length).toString(16).match(/(.*?)(.{0,8})$/))[2],16),n=parseInt(a[1],16)||0,e[14]=r,e[15]=n,md5cycle(this._hash,e)},SparkMD5.hash=function(e,t){return SparkMD5.hashBinary(toUtf8(e),t)},SparkMD5.hashBinary=function(e,t){var a=hex(md51(e));return t?hexToBinaryString(a):a},SparkMD5.ArrayBuffer=function(){this.reset()},SparkMD5.ArrayBuffer.prototype.append=function(e){var t,a=concatenateArrayBuffers(this._buff.buffer,e,!0),r=a.length;for(this._length+=e.byteLength,t=64;t<=r;t+=64)md5cycle(this._hash,md5blk_array(a.subarray(t-64,t)));return this._buff=new Uint8Array(t-64<r?a.buffer.slice(t-64):0),this},SparkMD5.ArrayBuffer.prototype.end=function(e){var t,a,r=this._buff,n=r.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)i[t>>2]|=r[t]<<(t%4<<3);return this._finish(i,n),a=hex(this._hash),e&&(a=hexToBinaryString(a)),this.reset(),a},SparkMD5.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[0x67452301,-0x10325477,-0x67452302,0x10325476],this},SparkMD5.ArrayBuffer.prototype.getState=function(){var e=SparkMD5.prototype.getState.call(this);return e.buff=arrayBuffer2Utf8Str(e.buff),e},SparkMD5.ArrayBuffer.prototype.setState=function(e){return e.buff=utf8Str2ArrayBuffer(e.buff,!0),SparkMD5.prototype.setState.call(this,e)},SparkMD5.ArrayBuffer.prototype.destroy=SparkMD5.prototype.destroy,SparkMD5.ArrayBuffer.prototype._finish=SparkMD5.prototype._finish,SparkMD5.ArrayBuffer.hash=function(e,t){var a=hex(md51_array(new Uint8Array(e)));return t?hexToBinaryString(a):a},SparkMD5}()},"node:events"(e){"use strict";e.exports=require("node:events")}},t={};function __webpack_require__(a){var r=t[a];if(void 0!==r)return r.exports;var n=t[a]={exports:{}};return e[a].call(n.exports,n,n.exports,__webpack_require__),n.exports}var a=__webpack_require__("./@datadog/openfeature-node-server/cjs/index.js");module.exports=a})();
|
|
1
|
+
(()=>{var e={"./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractAssignmentCache=void 0,t.assignmentCacheKeyToString=assignmentCacheKeyToString,t.assignmentCacheValueToString=assignmentCacheValueToString;let a=r("./@datadog/flagging-core/cjs/obfuscation.js");function assignmentCacheKeyToString(e){let t={flag:{key:e.flag.key},subject:{id:e.subject.id,attributes:e.subject.attributes}};return(0,a.getMD5Hash)(JSON.stringify(t))}function assignmentCacheValueToString(e){return(0,a.getMD5Hash)(JSON.stringify(e))}let AbstractAssignmentCache=class AbstractAssignmentCache{constructor(e){this.delegate=e}init(){return Promise.resolve()}has(e){return this.get(e)===assignmentCacheValueToString(e)}get(e){return this.delegate.get(assignmentCacheKeyToString(e))}set(e){this.delegate.set(assignmentCacheKeyToString(e),assignmentCacheValueToString(e))}entries(){return this.delegate.entries()}clear(){this.delegate.clear()}};t.AbstractAssignmentCache=AbstractAssignmentCache},"./@datadog/flagging-core/cjs/cache/index.js"(e,t,r){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,n)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"),t),n(r("./@datadog/flagging-core/cjs/cache/lru-in-memory-assignment-cache.js"),t),n(r("./@datadog/flagging-core/cjs/cache/non-expiring-in-memory-cache-assignment.js"),t)},"./@datadog/flagging-core/cjs/cache/lru-cache.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUCache=void 0;let LRUCache=class LRUCache{constructor(e){this.capacity=e,this.cache=new Map}entries(){return this.cache.entries()}clear(){this.cache.clear()}delete(e){return this.cache.delete(e)}keys(){return this.cache.keys()}values(){return this.cache.values()}has(e){return this.cache.has(e)}get(e){if(!this.has(e))return;let t=this.cache.get(e);return void 0!==t&&(this.delete(e),this.cache.set(e,t)),t}set(e,t){if(0===this.capacity)return this;if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.capacity){let e=this.cache.keys().next().value;e&&this.delete(e)}return this.cache.set(e,t),this}};t.LRUCache=LRUCache},"./@datadog/flagging-core/cjs/cache/lru-in-memory-assignment-cache.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LRUInMemoryAssignmentCache=void 0;let a=r("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js"),n=r("./@datadog/flagging-core/cjs/cache/lru-cache.js");let LRUInMemoryAssignmentCache=class LRUInMemoryAssignmentCache extends a.AbstractAssignmentCache{constructor(e){super(new n.LRUCache(e))}};t.LRUInMemoryAssignmentCache=LRUInMemoryAssignmentCache},"./@datadog/flagging-core/cjs/cache/non-expiring-in-memory-cache-assignment.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NonExpiringInMemoryAssignmentCache=void 0;let a=r("./@datadog/flagging-core/cjs/cache/abstract-assignment-cache.js");let NonExpiringInMemoryAssignmentCache=class NonExpiringInMemoryAssignmentCache extends a.AbstractAssignmentCache{constructor(e=new Map){super(e)}};t.NonExpiringInMemoryAssignmentCache=NonExpiringInMemoryAssignmentCache},"./@datadog/flagging-core/cjs/configuration/configuration.js"(e,t){"use strict";function configMatchesContext(e,t){if(!(null==e?void 0:e.precomputed))return!1;let r=e.precomputed.context;return!r||contextsEqual(r,t)}function contextsEqual(e,t){return objectsEqual(e,t)}function objectsEqual(e,t){let r=Object.keys(e).sort(),a=Object.keys(t).sort();if(r.length!==a.length)return!1;for(let n=0;n<r.length;n++)if(r[n]!==a[n]||!valuesEqual(e[r[n]],t[a[n]]))return!1;return!0}function isRecord(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function valuesEqual(e,t){return e===t||null!=e&&null!=t&&typeof e==typeof t&&(e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((e,r)=>valuesEqual(e,t[r])):!!(isRecord(e)&&isRecord(t))&&objectsEqual(e,t))}Object.defineProperty(t,"__esModule",{value:!0}),t.configMatchesContext=configMatchesContext},"./@datadog/flagging-core/cjs/configuration/exposureEvent.js"(e,t){"use strict";function createExposureEvent(e,t){var r,a,n;if(!(null==(r=t.flagMetadata)?void 0:r.doLog))return;let i=null==(a=t.flagMetadata)?void 0:a.allocationKey,o=t.variant;if(!i||!o)return;let{targetingKey:s="",...l}=e,u=null==(n=t.flagMetadata)?void 0:n.__dd_split_serial_id;return{allocation:{key:i},flag:{key:t.flagKey},variant:{key:o},..."number"==typeof u?{serial_id:u}:{},subject:{id:s,attributes:l}}}Object.defineProperty(t,"__esModule",{value:!0}),t.createExposureEvent=createExposureEvent},"./@datadog/flagging-core/cjs/configuration/exposureEvent.types.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},"./@datadog/flagging-core/cjs/configuration/flagEvaluationAggregator.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FlagEvaluationAggregator=void 0;let a=r("./@datadog/flagging-core/cjs/obfuscation.js"),n=r("./@datadog/flagging-core/cjs/time.js"),i=r("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js");let FlagEvaluationAggregator=class FlagEvaluationAggregator{constructor(e,t){this.aggregatedData=new Map,this.flushInterval=e,this.onFlush=t}start(){this.intervalId=setInterval(()=>{this.flush()},this.flushInterval)}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=void 0),this.flush()}addEvaluation(e,t,r){var a,n;let i=this.createAggregationKeyString(e,t,r),o=getEvaluationTimestamp(t),s=this.aggregatedData.get(i);if(s)s.count++,s.lastEvaluation=o,r&&(s.error=r);else{let s=isRuntimeDefaultUsed(t),l=null==(a=t.flagMetadata)?void 0:a.allocationKey,u=null==(n=t.flagMetadata)?void 0:n.targetingRuleKey,{targetingKey:c,...g}=e;this.aggregatedData.set(i,{flagKey:t.flagKey,variantKey:t.variant,allocationKey:l,targetingRuleKey:u,targetingKey:c,targetingContext:g,count:1,firstEvaluation:o,lastEvaluation:o,runtimeDefaultUsed:s,error:r})}}flush(){if(0===this.aggregatedData.size)return;let e=(0,n.timeStampNow)(),t=Array.from(this.aggregatedData.values()).map(t=>(0,i.createFlagEvaluationEvent)(t,e));this.aggregatedData.clear(),this.onFlush(t)}createAggregationKeyString(e,t,r){var n,i;let o=null==(n=t.flagMetadata)?void 0:n.allocationKey,s=null==(i=t.flagMetadata)?void 0:i.targetingRuleKey,{targetingKey:l,...u}=e;return(0,a.getMD5Hash)(JSON.stringify({flagKey:t.flagKey,variant:t.variant||"",allocationKey:o||"",targetingRuleKey:s||"",targetingKey:l||"",targetingContext:u,error:r||""}))}};function getEvaluationTimestamp(e){var t;let r=null==(t=e.flagMetadata)?void 0:t.__dd_eval_timestamp_ms;return Number.isFinite(r)?r:(0,n.timeStampNow)()}function isRuntimeDefaultUsed(e){return null==e.variant}t.FlagEvaluationAggregator=FlagEvaluationAggregator},"./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js"(e,t){"use strict";function createFlagEvaluationEvent(e,t){let r={flag:{key:e.flagKey},first_evaluation:e.firstEvaluation,last_evaluation:e.lastEvaluation,evaluation_count:e.count,runtime_default_used:e.runtimeDefaultUsed,timestamp:t};return null!=e.targetingKey&&(r.targeting_key=e.targetingKey),e.error&&(r.error={message:e.error}),e.variantKey&&(r.variant={key:e.variantKey}),e.allocationKey&&(r.allocation={key:e.allocationKey}),e.targetingRuleKey&&(r.targeting_rule={key:e.targetingRuleKey}),e.targetingContext&&Object.keys(e.targetingContext).length>0&&(r.context={evaluation:e.targetingContext}),r}Object.defineProperty(t,"__esModule",{value:!0}),t.createFlagEvaluationEvent=createFlagEvaluationEvent},"./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.types.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},"./@datadog/flagging-core/cjs/configuration/index.js"(e,t,r){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,n)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r("./@datadog/flagging-core/cjs/configuration/configuration.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/exposureEvent.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/exposureEvent.types.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/flagEvaluationAggregator.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/flagEvaluationEvent.types.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/wire.js"),t)},"./@datadog/flagging-core/cjs/configuration/wire.js"(e,t){"use strict";function configurationFromString(e){try{let t=JSON.parse(e);if(1!==t.version)return{};let r={};return t.precomputed&&(r.precomputed={...t.precomputed,response:JSON.parse(t.precomputed.response)}),r}catch(e){return{}}}function configurationToString(e){let t={version:1};return e.precomputed&&(t.precomputed={...e.precomputed,response:JSON.stringify(e.precomputed.response)}),JSON.stringify(t)}Object.defineProperty(t,"__esModule",{value:!0}),t.configurationFromString=configurationFromString,t.configurationToString=configurationToString},"./@datadog/flagging-core/cjs/evaluation/errors.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TargetingKeyMissingError=void 0;let TargetingKeyMissingError=class TargetingKeyMissingError extends Error{constructor(){super("Targeting key is required for split evaluation"),this.name="TargetingKeyMissingError"}};t.TargetingKeyMissingError=TargetingKeyMissingError},"./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateForSubject=evaluateForSubject,t.containsMatchingRule=containsMatchingRule;let a=r("./@datadog/flagging-core/cjs/time.js"),n=r("./@datadog/flagging-core/cjs/evaluation/errors.js"),i=r("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"),o=r("./@datadog/flagging-core/cjs/evaluation/matchesShard.js"),s=r("./@datadog/flagging-core/cjs/evaluation/rules.js"),l=r("./@datadog/flagging-core/cjs/evaluation/ufc-v1.js");function evaluateForSubject(e,t,r,n,o,s,u=(0,a.timeStampNow)()){var c;if(!e.enabled)return s.debug("returning default assignment because flag is disabled",{flagKey:e.key,subjectKey:r}),{value:o,reason:"DISABLED",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};if(!isValidFlag(e))return s.debug("returning default assignment because flag configuration is invalid",{flagKey:e.key,subjectKey:r}),{value:o,reason:"DEFAULT",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};if(!validateTypeMatch(t,e.variationType))return s.debug("variant value type mismatch, returning default value",{flagKey:e.key,subjectKey:r,expectedType:t,variantType:e.variationType}),{value:o,reason:"ERROR",errorCode:"TYPE_MISMATCH",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)};let g=new Date(u);for(let t of e.allocations){if(t.startAt&&g<new Date(t.startAt)){s.debug("allocation before start date",{flagKey:e.key,subjectKey:r,allocationKey:t.key,startAt:t.startAt});continue}if(t.endAt&&g>=new Date(t.endAt)){s.debug("allocation after end date",{flagKey:e.key,subjectKey:r,allocationKey:t.key,endAt:t.endAt});continue}if(!containsMatchingRule(t.rules,n,s))continue;let a=selectSplitUsingSharding(t.splits,r,e.key,s);if(a){let n=e.variations[a.variationKey];if(n){s.debug("evaluated a flag",{flagKey:e.key,subjectKey:r,assignment:n.value});let o=(null==(c=t.rules)?void 0:c.length)?"TARGETING_MATCH":a.shards.length?"SPLIT":t.startAt||t.endAt?"DEFAULT":"STATIC";return{value:n.value,reason:o,variant:n.key,flagMetadata:{...(0,i.createEvaluationTimestampMetadata)(u),__dd_allocation_key:t.key,__dd_do_log:!!t.doLog,__dd_split_serial_id:a.serialId,allocationKey:t.key,variationType:(0,l.variantTypeToFlagValueType)(e.variationType),doLog:!!t.doLog}}}}else s.debug("no matching split found for subject",{flagKey:e.key,subjectKey:r,allocationKey:t.key})}return s.debug("returning default assignment because no allocation matched",{flagKey:e.key,subjectKey:r}),{value:o,reason:"DEFAULT",flagMetadata:(0,i.createEvaluationTimestampMetadata)(u)}}function validateTypeMatch(e,t){if("boolean"===e)return"BOOLEAN"===t;if("string"===e)return"STRING"===t;if("number"===e)return"INTEGER"===t||"NUMERIC"===t;if("object"===e)return"JSON"===t;throw Error(`Invalid expected type: ${e}`)}function isValidFlag(e){if(!Array.isArray(e.allocations))return!1;if(e.allocations.some(e=>Array.isArray(e.rules)&&e.rules.some(e=>(0,s.hasInvalidSemverComparand)(e))))throw Error("invalid semantic version comparand");return e.allocations.every(e=>Array.isArray(e.splits)&&e.splits.every(e=>Array.isArray(e.shards))&&(void 0===e.rules||Array.isArray(e.rules)&&e.rules.every(e=>(0,s.isValidRule)(e))))}function containsMatchingRule(e,t,r){return null==e||!e.length||(r.debug("evaluating rules",{rules:JSON.stringify(e),subjectAttributes:t}),e.some(e=>(0,s.matchesRule)(e,t)))}function selectSplitUsingSharding(e,t,r,a){if(!e||0===e.length)return null;for(let i of e)if(a.debug("evaluating split sharding",{flagKey:r,subjectKey:t,variationKey:i.variationKey,shards:i.shards}),i.shards.every(e=>{if(null==t)throw new n.TargetingKeyMissingError;let s=(0,o.matchesShard)(e,t);return a.debug("shard match result",{flagKey:r,subjectKey:t,variationKey:i.variationKey,shard:e,matches:s}),s}))return a.debug("subject matches split",{flagKey:r,subjectKey:t,variationKey:i.variationKey}),i;return a.debug("subject matches no splits",{flagKey:r,subjectKey:t}),null}},"./@datadog/flagging-core/cjs/evaluation/evaluation.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluateRulesBasedConfiguration=evaluateRulesBasedConfiguration;let a=r("./@datadog/flagging-core/cjs/time.js"),n=r("./@datadog/flagging-core/cjs/evaluation/errors.js"),i=r("./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"),o=r("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js");function evaluateRulesBasedConfiguration(e,t,r,s,l,u){let c=(0,a.timeStampNow)();if(!e)return{value:s,reason:"ERROR",errorCode:"PROVIDER_NOT_READY",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};let{targetingKey:g,...d}=l,f={...null!=g?{id:g}:{},...d},h=e.flags[r];if(!h)return u.debug("returning default value because flag is not found",{flagKey:r,subjectKey:g}),{value:s,reason:"ERROR",errorCode:"FLAG_NOT_FOUND",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};try{return(0,i.evaluateForSubject)(h,t,g,f,s,u,c)}catch(e){if(e instanceof n.TargetingKeyMissingError)return{value:s,reason:"ERROR",errorCode:"TARGETING_KEY_MISSING",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)};return u.error("Error evaluating flag",{error:e}),{value:s,reason:"ERROR",errorCode:"GENERAL",flagMetadata:(0,o.createEvaluationTimestampMetadata)(c)}}}},"./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"(e,t){"use strict";function createEvaluationTimestampMetadata(e){return{__dd_eval_timestamp_ms:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.createEvaluationTimestampMetadata=createEvaluationTimestampMetadata},"./@datadog/flagging-core/cjs/evaluation/index.js"(e,t,r){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,n)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r("./@datadog/flagging-core/cjs/evaluation/errors.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/evaluateForSubject.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/evaluation.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/evaluationMetadata.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/matchesShard.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/rules.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/sharders.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/ufc-v1.js"),t)},"./@datadog/flagging-core/cjs/evaluation/matchesShard.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.matchesShard=matchesShard;let a=r("./@datadog/flagging-core/cjs/evaluation/sharders.js");function matchesShard(e,t,r){let n=(null!=r?r:new a.MD5Sharder).getShard(hashKey(e.salt,t),e.totalShards);return e.ranges.some(e=>isInShardRange(n,e))}function isInShardRange(e,t){return t.start<=e&&e<t.end}function hashKey(e,t){return`${e}-${t}`}},"./@datadog/flagging-core/cjs/evaluation/rules.js"(e,t,r){"use strict";var a,n;Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorType=void 0,t.isValidRule=isValidRule,t.matchesRule=matchesRule,t.isSemverOperator=isSemverOperator,t.hasInvalidSemverComparand=hasInvalidSemverComparand;let i=r("./@datadog/flagging-core/cjs/evaluation/semver.js");(n=a||(t.OperatorType=a={})).MATCHES="MATCHES",n.NOT_MATCHES="NOT_MATCHES",n.GTE="GTE",n.GT="GT",n.LTE="LTE",n.LT="LT",n.ONE_OF="ONE_OF",n.NOT_ONE_OF="NOT_ONE_OF",n.IS_NULL="IS_NULL",n.SEMVER_EQ="SEMVER_EQ",n.SEMVER_NEQ="SEMVER_NEQ",n.SEMVER_LT="SEMVER_LT",n.SEMVER_LTE="SEMVER_LTE",n.SEMVER_GT="SEMVER_GT",n.SEMVER_GTE="SEMVER_GTE";let o=new Set(Object.values(a));function isValidRule(e){return!!Array.isArray(e.conditions)&&e.conditions.every(e=>{if(!o.has(e.operator))return!1;if(isSemverOperator(e.operator))return null!==(0,i.parseSemver)(e.value);if(e.operator!==a.MATCHES&&e.operator!==a.NOT_MATCHES)return!0;try{return compileRegex(e.value),!0}catch(e){return!1}})}function matchesRule(e,t){return!evaluateRuleConditions(t,e.conditions).includes(!1)}function evaluateRuleConditions(e,t){return t.map(t=>evaluateCondition(e,t))}function evaluateCondition(e,t){let r=e[t.attribute];if(t.operator===a.IS_NULL)return t.value?null==r:null!=r;if(null!=r)switch(t.operator){case a.GTE:case a.GT:case a.LTE:case a.LT:return compareNumber(r,t.value,(e,r)=>t.operator===a.GTE?e>=r:t.operator===a.GT?e>r:t.operator===a.LTE?e<=r:e<r);case a.MATCHES:return compileRegex(t.value).test(String(r));case a.NOT_MATCHES:return!compileRegex(t.value).test(String(r));case a.ONE_OF:var n;return n=r.toString(),t.value.includes(n);case a.NOT_ONE_OF:return isNotOneOf(r.toString(),t.value);case a.SEMVER_EQ:case a.SEMVER_NEQ:case a.SEMVER_LT:case a.SEMVER_LTE:case a.SEMVER_GT:case a.SEMVER_GTE:return evaluateSemverCondition(r,t.value,t.operator)}return!1}function isSemverOperator(e){return e===a.SEMVER_EQ||e===a.SEMVER_NEQ||e===a.SEMVER_LT||e===a.SEMVER_LTE||e===a.SEMVER_GT||e===a.SEMVER_GTE}function hasInvalidSemverComparand(e){return e.conditions.some(e=>isSemverOperator(e.operator)&&null===(0,i.parseSemver)(e.value))}function evaluateSemverCondition(e,t,r){if("string"!=typeof e)return!1;let n=(0,i.parseSemver)(e),o=(0,i.parseSemver)(t);if(!n||!o)return!1;let s=(0,i.compareSemver)(n,o);switch(r){case a.SEMVER_EQ:return 0===s;case a.SEMVER_NEQ:return 0!==s;case a.SEMVER_LT:return s<0;case a.SEMVER_LTE:return s<=0;case a.SEMVER_GT:return s>0;case a.SEMVER_GTE:return s>=0}}function compileRegex(e){let t=e.match(/^\(\?([imsu]+)\)/),r=t?[...new Set(t[1])].join(""):"";return new RegExp((t?e.slice(t[0].length):e).split("[:alnum:]").join("A-Za-z0-9"),r)}function isNotOneOf(e,t){return!t.includes(e)}function compareNumber(e,t,r){return r(Number(e),Number(t))}},"./@datadog/flagging-core/cjs/evaluation/semver.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseSemver=parseSemver,t.compareSemver=compareSemver;let r="18446744073709551615";function parseSemver(e){if("string"!=typeof e)return null;let t=parseCoreIdentifier(e,0);if(!t||t.next>=e.length||"."!==e[t.next])return null;let r=parseCoreIdentifier(e,t.next+1);if(!r||r.next>=e.length||"."!==e[r.next])return null;let a=parseCoreIdentifier(e,r.next+1);if(!a)return null;let n={major:t.value,minor:r.value,patch:a.value,prerelease:""};if(a.next===e.length)return n;let i=e.slice(a.next);if(i.startsWith("-")){let e=(i=i.slice(1)).indexOf("+");if(-1===e)return isValidSemverIdentifiers(i,!1)?{...n,prerelease:i}:null;let t=i.slice(0,e);if(!isValidSemverIdentifiers(t,!1))return null;n.prerelease=t,i=i.slice(e+1)}else{if(!i.startsWith("+"))return null;i=i.slice(1)}return isValidSemverIdentifiers(i,!0)?n:null}function compareSemver(e,t){for(let[r,a]of[[e.major,t.major],[e.minor,t.minor],[e.patch,t.patch]]){let e=compareNumericStrings(r,a);if(0!==e)return e}return compareSemverPrerelease(e.prerelease,t.prerelease)}function parseCoreIdentifier(e,t){if(t>=e.length||!isAsciiDigit(e.charCodeAt(t)))return null;if("0"===e[t])return{value:"0",next:t+1};let a=t;for(;a<e.length&&isAsciiDigit(e.charCodeAt(a));)a++;let n=e.slice(t,a);return n.length>r.length||n.length===r.length&&n>r?null:{value:n,next:a}}function isValidSemverIdentifiers(e,t){let r=0,a=!0;for(let n=0;n<=e.length;n++){if(n===e.length||"."===e[n]){if(n===r||!t&&a&&n-r>1&&"0"===e[r])return!1;r=n+1,a=!0;continue}let i=e.charCodeAt(n);if(!isAsciiAlphanumeric(i)&&"-"!==e[n])return!1;isAsciiDigit(i)||(a=!1)}return!0}function compareSemverPrerelease(e,t){if(e===t)return 0;if(""===e)return 1;if(""===t)return -1;let r=e,a=t;for(;;){let[e,t]=nextSemverIdentifier(r),[n,i]=nextSemverIdentifier(a),o=compareSemverIdentifier(e,n);if(0!==o)return o;if(""===t||""===i){if(""===t&&""===i)return 0;return""===t?-1:1}r=t.slice(1),a=i.slice(1)}}function nextSemverIdentifier(e){let t=e.indexOf(".");return -1===t?[e,""]:[e.slice(0,t),e.slice(t)]}function compareSemverIdentifier(e,t){let r=isSemverNumericIdentifier(e),a=isSemverNumericIdentifier(t);return r&&a?compareNumericStrings(e,t):r?-1:a?1:compareAsciiStrings(e,t)}function isSemverNumericIdentifier(e){for(let t=0;t<e.length;t++)if(!isAsciiDigit(e.charCodeAt(t)))return!1;return!0}function compareNumericStrings(e,t){return e.length!==t.length?e.length<t.length?-1:1:compareAsciiStrings(e,t)}function compareAsciiStrings(e,t){let r=Math.min(e.length,t.length);for(let a=0;a<r;a++){let r=e.charCodeAt(a),n=t.charCodeAt(a);if(r!==n)return r<n?-1:1}return e.length===t.length?0:e.length<t.length?-1:1}function isAsciiDigit(e){return e>=48&&e<=57}function isAsciiAlphanumeric(e){return isAsciiDigit(e)||e>=65&&e<=90||e>=97&&e<=122}},"./@datadog/flagging-core/cjs/evaluation/sharders.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeterministicSharder=t.MD5Sharder=t.Sharder=void 0;let a=r("./@datadog/flagging-core/cjs/obfuscation.js");let Sharder=class Sharder{};t.Sharder=Sharder;let MD5Sharder=class MD5Sharder extends Sharder{getShard(e,t){return parseInt((0,a.getMD5Hash)(e).slice(0,8),16)%t}};t.MD5Sharder=MD5Sharder;let DeterministicSharder=class DeterministicSharder extends Sharder{constructor(e){super(),this.lookup=e}getShard(e,t){var r;return null!=(r=this.lookup[e])?r:0}};t.DeterministicSharder=DeterministicSharder},"./@datadog/flagging-core/cjs/evaluation/ufc-v1.js"(e,t){"use strict";function variantTypeToFlagValueType(e){if("BOOLEAN"===e)return"boolean";if("STRING"===e)return"string";if("INTEGER"===e||"NUMERIC"===e)return"number";if("JSON"===e)return"object";throw Error(`Cannot convert variant type to flag value type: ${e}`)}Object.defineProperty(t,"__esModule",{value:!0}),t.variantTypeToFlagValueType=variantTypeToFlagValueType},"./@datadog/flagging-core/cjs/index.js"(e,t,r){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,n)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r("./@datadog/flagging-core/cjs/cache/index.js"),t),n(r("./@datadog/flagging-core/cjs/configuration/index.js"),t),n(r("./@datadog/flagging-core/cjs/evaluation/index.js"),t),n(r("./@datadog/flagging-core/cjs/obfuscation.js"),t),n(r("./@datadog/flagging-core/cjs/time.js"),t)},"./@datadog/flagging-core/cjs/obfuscation.js"(e,t,r){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getMD5Hash=getMD5Hash,t.buildStorageKeySuffix=buildStorageKeySuffix;let n=a(r("./spark-md5/spark-md5.js"));function getMD5Hash(e,t=""){return new n.default().append(t).append(e).end()}function buildStorageKeySuffix(e){return getMD5Hash(e).slice(0,16)}},"./@datadog/flagging-core/cjs/time.js"(e,t){"use strict";function timeStampNow(){return new Date().getTime()}Object.defineProperty(t,"__esModule",{value:!0}),t.timeStampNow=timeStampNow},"./@datadog/openfeature-node-server/cjs/configuration/evaluation.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.evaluate=void 0;var a=r("./@datadog/flagging-core/cjs/index.js");Object.defineProperty(t,"evaluate",{enumerable:!0,get:function(){return a.evaluateRulesBasedConfiguration}})},"./@datadog/openfeature-node-server/cjs/index.js"(e,t,r){"use strict";var a=this&&this.__createBinding||(Object.create?function(e,t,r,a){void 0===a&&(a=r);var n=Object.getOwnPropertyDescriptor(t,r);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,a,n)}:function(e,t,r,a){void 0===a&&(a=r),e[a]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r("./@datadog/openfeature-node-server/cjs/provider.js"),t)},"./@datadog/openfeature-node-server/cjs/initialization-controller.js"(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InitializationController=void 0;let InitializationController=class InitializationController{constructor(e,t){this.promise=Promise.race([new Promise((e,t)=>{this.resolve=()=>{this.cleanup(),e()},this.reject=e=>{this.cleanup(),t(e)}}),new Promise(()=>{var r,a;this.timeoutId=setTimeout(()=>{t()},e),null==(a=(r=this.timeoutId).unref)||a.call(r)})])}async wait(){try{await this.promise}finally{this.cleanup()}}complete(){this.resolve&&this.resolve()}fail(e){this.reject&&this.reject(e)}isInitializing(){return void 0!==this.resolve}cleanup(){this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.resolve=void 0,this.reject=void 0}};t.InitializationController=InitializationController},"./@datadog/openfeature-node-server/cjs/provider-event-emitter.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeProviderEventEmitter=void 0;let a=r("node:events");let NodeProviderEventEmitter=class NodeProviderEventEmitter{constructor(){this.eventEmitter=new a.EventEmitter,this.handlers=new Map}emit(e,t){this.eventEmitter.emit(e,t)}addHandler(e,t){var r,a;let asyncHandler=async e=>{try{await t(e)}catch(e){this.logHandlerError(e)}},n=null!=(r=this.handlers.get(e))?r:new Map,i=null!=(a=n.get(t))?a:[];i.push(asyncHandler),n.set(t,i),this.handlers.set(e,n),this.eventEmitter.on(e,asyncHandler)}removeHandler(e,t){let r=this.handlers.get(e),a=null==r?void 0:r.get(t),n=null==a?void 0:a.pop();n&&this.eventEmitter.removeListener(e,n),(null==a?void 0:a.length)===0&&(null==r||r.delete(t)),(null==r?void 0:r.size)===0&&this.handlers.delete(e)}removeAllHandlers(e){if(e){this.eventEmitter.removeAllListeners(e),this.handlers.delete(e);return}this.eventEmitter.removeAllListeners(),this.handlers.clear()}getHandlers(e){return this.eventEmitter.listeners(e)}setLogger(e){return this.logger=e,this}logHandlerError(e){var t;try{null==(t=this.logger)||t.error("Error running event handler:",e)}catch(e){}}};t.NodeProviderEventEmitter=NodeProviderEventEmitter},"./@datadog/openfeature-node-server/cjs/provider.js"(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DatadogNodeServerProvider=void 0;let a=r("./@datadog/flagging-core/cjs/index.js"),n=r("./@datadog/openfeature-node-server/cjs/configuration/evaluation.js"),i=r("./@datadog/openfeature-node-server/cjs/initialization-controller.js"),o=r("./@datadog/openfeature-node-server/cjs/provider-event-emitter.js");let DatadogNodeServerProvider=class DatadogNodeServerProvider{constructor(e){this.options=e,this.metadata={name:"datadog-node-server"},this.runsOn="server",this.hooks=[],this.events=new o.NodeProviderEventEmitter,this.exposureCache=new a.LRUInMemoryAssignmentCache(5e4)}getConfiguration(){return this.configuration}setConfiguration(e){var t,r,a;let n=null==(t=this.configuration)?void 0:t.createdAt,i=!!this.configuration;if(i&&this.configuration!==e){this.events.emit("PROVIDER_CONFIGURATION_CHANGED"),n!==(null==e?void 0:e.createdAt)&&(null==(r=this.exposureCache)||r.clear()),this.configuration=e;return}this.configuration=e,(null==(a=this.initController)?void 0:a.isInitializing())?this.initController.complete():i||this.events.emit("PROVIDER_READY")}setError(e){var t;(null==(t=this.initController)?void 0:t.isInitializing())?this.initController.fail(e):this.events.emit("PROVIDER_ERROR",{error:e})}async initialize(){var e,t;if(this.configuration)return;let r=null!=(e=this.options.initializationTimeoutMs)?e:3e4;this.initController=new i.InitializationController(r,()=>this.setError(Error(`Initialization timeout after ${r}ms`))),await this.initController.wait(),await (null==(t=this.exposureCache)?void 0:t.init())}async resolveBooleanEvaluation(e,t,r,a){let i=(0,n.evaluate)(this.configuration,"boolean",e,t,r,a);return this.handleExposure(e,r,i),i}async resolveStringEvaluation(e,t,r,a){let i=(0,n.evaluate)(this.configuration,"string",e,t,r,a);return this.handleExposure(e,r,i),i}async resolveNumberEvaluation(e,t,r,a){let i=(0,n.evaluate)(this.configuration,"number",e,t,r,a);return this.handleExposure(e,r,i),i}async resolveObjectEvaluation(e,t,r,a){let i=(0,n.evaluate)(this.configuration,"object",e,t,r,a);return this.handleExposure(e,r,i),i}handleExposure(e,t,r){var n,i,o;let s=(0,a.timeStampNow)(),l={...r,flagKey:e,flagMetadata:null!=(n=r.flagMetadata)?n:{}},u=(0,a.createExposureEvent)(t,l);!u||(null==(i=this.exposureCache)?void 0:i.has(u))||this.options.exposureChannel.hasSubscribers&&(this.options.exposureChannel.publish({...u,timestamp:s}),null==(o=this.exposureCache)||o.set(u))}};t.DatadogNodeServerProvider=DatadogNodeServerProvider},"./spark-md5/spark-md5.js"(e){e.exports=function(){"use strict";var e=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function md5cycle(e,t){var r=e[0],a=e[1],n=e[2],i=e[3];r+=(a&n|~a&i)+t[0]-0x28955b88|0,i+=((r=(r<<7|r>>>25)+a|0)&a|~r&n)+t[1]-0x173848aa|0,n+=((i=(i<<12|i>>>20)+r|0)&r|~i&a)+t[2]+0x242070db|0,a+=((n=(n<<17|n>>>15)+i|0)&i|~n&r)+t[3]-0x3e423112|0,r+=((a=(a<<22|a>>>10)+n|0)&n|~a&i)+t[4]-0xa83f051|0,i+=((r=(r<<7|r>>>25)+a|0)&a|~r&n)+t[5]+0x4787c62a|0,n+=((i=(i<<12|i>>>20)+r|0)&r|~i&a)+t[6]-0x57cfb9ed|0,a+=((n=(n<<17|n>>>15)+i|0)&i|~n&r)+t[7]-0x2b96aff|0,r+=((a=(a<<22|a>>>10)+n|0)&n|~a&i)+t[8]+0x698098d8|0,i+=((r=(r<<7|r>>>25)+a|0)&a|~r&n)+t[9]-0x74bb0851|0,n+=((i=(i<<12|i>>>20)+r|0)&r|~i&a)+t[10]-42063|0,a+=((n=(n<<17|n>>>15)+i|0)&i|~n&r)+t[11]-0x76a32842|0,r+=((a=(a<<22|a>>>10)+n|0)&n|~a&i)+t[12]+0x6b901122|0,i+=((r=(r<<7|r>>>25)+a|0)&a|~r&n)+t[13]-0x2678e6d|0,n+=((i=(i<<12|i>>>20)+r|0)&r|~i&a)+t[14]-0x5986bc72|0,a+=((n=(n<<17|n>>>15)+i|0)&i|~n&r)+t[15]+0x49b40821|0,r+=((a=(a<<22|a>>>10)+n|0)&i|n&~i)+t[1]-0x9e1da9e|0,i+=((r=(r<<5|r>>>27)+a|0)&n|a&~n)+t[6]-0x3fbf4cc0|0,n+=((i=(i<<9|i>>>23)+r|0)&a|r&~a)+t[11]+0x265e5a51|0,a+=((n=(n<<14|n>>>18)+i|0)&r|i&~r)+t[0]-0x16493856|0,r+=((a=(a<<20|a>>>12)+n|0)&i|n&~i)+t[5]-0x29d0efa3|0,i+=((r=(r<<5|r>>>27)+a|0)&n|a&~n)+t[10]+0x2441453|0,n+=((i=(i<<9|i>>>23)+r|0)&a|r&~a)+t[15]-0x275e197f|0,a+=((n=(n<<14|n>>>18)+i|0)&r|i&~r)+t[4]-0x182c0438|0,r+=((a=(a<<20|a>>>12)+n|0)&i|n&~i)+t[9]+0x21e1cde6|0,i+=((r=(r<<5|r>>>27)+a|0)&n|a&~n)+t[14]-0x3cc8f82a|0,n+=((i=(i<<9|i>>>23)+r|0)&a|r&~a)+t[3]-0xb2af279|0,a+=((n=(n<<14|n>>>18)+i|0)&r|i&~r)+t[8]+0x455a14ed|0,r+=((a=(a<<20|a>>>12)+n|0)&i|n&~i)+t[13]-0x561c16fb|0,i+=((r=(r<<5|r>>>27)+a|0)&n|a&~n)+t[2]-0x3105c08|0,n+=((i=(i<<9|i>>>23)+r|0)&a|r&~a)+t[7]+0x676f02d9|0,a+=((n=(n<<14|n>>>18)+i|0)&r|i&~r)+t[12]-0x72d5b376|0,r+=((a=(a<<20|a>>>12)+n|0)^n^i)+t[5]-378558|0,i+=((r=(r<<4|r>>>28)+a|0)^a^n)+t[8]-0x788e097f|0,n+=((i=(i<<11|i>>>21)+r|0)^r^a)+t[11]+0x6d9d6122|0,a+=((n=(n<<16|n>>>16)+i|0)^i^r)+t[14]-0x21ac7f4|0,r+=((a=(a<<23|a>>>9)+n|0)^n^i)+t[1]-0x5b4115bc|0,i+=((r=(r<<4|r>>>28)+a|0)^a^n)+t[4]+0x4bdecfa9|0,n+=((i=(i<<11|i>>>21)+r|0)^r^a)+t[7]-0x944b4a0|0,a+=((n=(n<<16|n>>>16)+i|0)^i^r)+t[10]-0x41404390|0,r+=((a=(a<<23|a>>>9)+n|0)^n^i)+t[13]+0x289b7ec6|0,i+=((r=(r<<4|r>>>28)+a|0)^a^n)+t[0]-0x155ed806|0,n+=((i=(i<<11|i>>>21)+r|0)^r^a)+t[3]-0x2b10cf7b|0,a+=((n=(n<<16|n>>>16)+i|0)^i^r)+t[6]+0x4881d05|0,r+=((a=(a<<23|a>>>9)+n|0)^n^i)+t[9]-0x262b2fc7|0,i+=((r=(r<<4|r>>>28)+a|0)^a^n)+t[12]-0x1924661b|0,n+=((i=(i<<11|i>>>21)+r|0)^r^a)+t[15]+0x1fa27cf8|0,a+=((n=(n<<16|n>>>16)+i|0)^i^r)+t[2]-0x3b53a99b|0,a=(a<<23|a>>>9)+n|0,r+=(n^(a|~i))+t[0]-0xbd6ddbc|0,r=(r<<6|r>>>26)+a|0,i+=(a^(r|~n))+t[7]+0x432aff97|0,i=(i<<10|i>>>22)+r|0,n+=(r^(i|~a))+t[14]-0x546bdc59|0,n=(n<<15|n>>>17)+i|0,a+=(i^(n|~r))+t[5]-0x36c5fc7|0,a=(a<<21|a>>>11)+n|0,r+=(n^(a|~i))+t[12]+0x655b59c3|0,r=(r<<6|r>>>26)+a|0,i+=(a^(r|~n))+t[3]-0x70f3336e|0,i=(i<<10|i>>>22)+r|0,n+=(r^(i|~a))+t[10]-1051523|0,n=(n<<15|n>>>17)+i|0,a+=(i^(n|~r))+t[1]-0x7a7ba22f|0,a=(a<<21|a>>>11)+n|0,r+=(n^(a|~i))+t[8]+0x6fa87e4f|0,r=(r<<6|r>>>26)+a|0,i+=(a^(r|~n))+t[15]-0x1d31920|0,i=(i<<10|i>>>22)+r|0,n+=(r^(i|~a))+t[6]-0x5cfebcec|0,n=(n<<15|n>>>17)+i|0,a+=(i^(n|~r))+t[13]+0x4e0811a1|0,a=(a<<21|a>>>11)+n|0,r+=(n^(a|~i))+t[4]-0x8ac817e|0,r=(r<<6|r>>>26)+a|0,i+=(a^(r|~n))+t[11]-0x42c50dcb|0,i=(i<<10|i>>>22)+r|0,n+=(r^(i|~a))+t[2]+0x2ad7d2bb|0,n=(n<<15|n>>>17)+i|0,a+=(i^(n|~r))+t[9]-0x14792c6f|0,a=(a<<21|a>>>11)+n|0,e[0]=r+e[0]|0,e[1]=a+e[1]|0,e[2]=n+e[2]|0,e[3]=i+e[3]|0}function md5blk(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e.charCodeAt(t)+(e.charCodeAt(t+1)<<8)+(e.charCodeAt(t+2)<<16)+(e.charCodeAt(t+3)<<24);return r}function md5blk_array(e){var t,r=[];for(t=0;t<64;t+=4)r[t>>2]=e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24);return r}function md51(e){var t,r,a,n,i,o,s=e.length,l=[0x67452301,-0x10325477,-0x67452302,0x10325476];for(t=64;t<=s;t+=64)md5cycle(l,md5blk(e.substring(t-64,t)));for(r=(e=e.substring(t-64)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<r;t+=1)a[t>>2]|=e.charCodeAt(t)<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(md5cycle(l,a),t=0;t<16;t+=1)a[t]=0;return i=parseInt((n=(n=8*s).toString(16).match(/(.*?)(.{0,8})$/))[2],16),o=parseInt(n[1],16)||0,a[14]=i,a[15]=o,md5cycle(l,a),l}function md51_array(e){var t,r,a,n,i,o,s=e.length,l=[0x67452301,-0x10325477,-0x67452302,0x10325476];for(t=64;t<=s;t+=64)md5cycle(l,md5blk_array(e.subarray(t-64,t)));for(r=(e=t-64<s?e.subarray(t-64):new Uint8Array(0)).length,a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t=0;t<r;t+=1)a[t>>2]|=e[t]<<(t%4<<3);if(a[t>>2]|=128<<(t%4<<3),t>55)for(md5cycle(l,a),t=0;t<16;t+=1)a[t]=0;return i=parseInt((n=(n=8*s).toString(16).match(/(.*?)(.{0,8})$/))[2],16),o=parseInt(n[1],16)||0,a[14]=i,a[15]=o,md5cycle(l,a),l}function rhex(t){var r,a="";for(r=0;r<4;r+=1)a+=e[t>>8*r+4&15]+e[t>>8*r&15];return a}function hex(e){var t;for(t=0;t<e.length;t+=1)e[t]=rhex(e[t]);return e.join("")}function toUtf8(e){return/[\u0080-\uFFFF]/.test(e)&&(e=unescape(encodeURIComponent(e))),e}function utf8Str2ArrayBuffer(e,t){var r,a=e.length,n=new ArrayBuffer(a),i=new Uint8Array(n);for(r=0;r<a;r+=1)i[r]=e.charCodeAt(r);return t?i:n}function arrayBuffer2Utf8Str(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function concatenateArrayBuffers(e,t,r){var a=new Uint8Array(e.byteLength+t.byteLength);return a.set(new Uint8Array(e)),a.set(new Uint8Array(t),e.byteLength),r?a:a.buffer}function hexToBinaryString(e){var t,r=[],a=e.length;for(t=0;t<a-1;t+=2)r.push(parseInt(e.substr(t,2),16));return String.fromCharCode.apply(String,r)}function SparkMD5(){this.reset()}return hex(md51("hello")),"u">typeof ArrayBuffer&&!ArrayBuffer.prototype.slice&&function(){function clamp(e,t){return(e=0|e||0)<0?Math.max(e+t,0):Math.min(e,t)}ArrayBuffer.prototype.slice=function(e,t){var r,a,n,i,o=this.byteLength,s=clamp(e,o),l=o;return(void 0!==t&&(l=clamp(t,o)),s>l)?new ArrayBuffer(0):(n=new Uint8Array(a=new ArrayBuffer(r=l-s)),i=new Uint8Array(this,s,r),n.set(i),a)}}(),SparkMD5.prototype.append=function(e){return this.appendBinary(toUtf8(e)),this},SparkMD5.prototype.appendBinary=function(e){this._buff+=e,this._length+=e.length;var t,r=this._buff.length;for(t=64;t<=r;t+=64)md5cycle(this._hash,md5blk(this._buff.substring(t-64,t)));return this._buff=this._buff.substring(t-64),this},SparkMD5.prototype.end=function(e){var t,r,a=this._buff,n=a.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)i[t>>2]|=a.charCodeAt(t)<<(t%4<<3);return this._finish(i,n),r=hex(this._hash),e&&(r=hexToBinaryString(r)),this.reset(),r},SparkMD5.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[0x67452301,-0x10325477,-0x67452302,0x10325476],this},SparkMD5.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},SparkMD5.prototype.setState=function(e){return this._buff=e.buff,this._length=e.length,this._hash=e.hash,this},SparkMD5.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},SparkMD5.prototype._finish=function(e,t){var r,a,n,i=t;if(e[i>>2]|=128<<(i%4<<3),i>55)for(md5cycle(this._hash,e),i=0;i<16;i+=1)e[i]=0;a=parseInt((r=(r=8*this._length).toString(16).match(/(.*?)(.{0,8})$/))[2],16),n=parseInt(r[1],16)||0,e[14]=a,e[15]=n,md5cycle(this._hash,e)},SparkMD5.hash=function(e,t){return SparkMD5.hashBinary(toUtf8(e),t)},SparkMD5.hashBinary=function(e,t){var r=hex(md51(e));return t?hexToBinaryString(r):r},SparkMD5.ArrayBuffer=function(){this.reset()},SparkMD5.ArrayBuffer.prototype.append=function(e){var t,r=concatenateArrayBuffers(this._buff.buffer,e,!0),a=r.length;for(this._length+=e.byteLength,t=64;t<=a;t+=64)md5cycle(this._hash,md5blk_array(r.subarray(t-64,t)));return this._buff=new Uint8Array(t-64<a?r.buffer.slice(t-64):0),this},SparkMD5.ArrayBuffer.prototype.end=function(e){var t,r,a=this._buff,n=a.length,i=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(t=0;t<n;t+=1)i[t>>2]|=a[t]<<(t%4<<3);return this._finish(i,n),r=hex(this._hash),e&&(r=hexToBinaryString(r)),this.reset(),r},SparkMD5.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[0x67452301,-0x10325477,-0x67452302,0x10325476],this},SparkMD5.ArrayBuffer.prototype.getState=function(){var e=SparkMD5.prototype.getState.call(this);return e.buff=arrayBuffer2Utf8Str(e.buff),e},SparkMD5.ArrayBuffer.prototype.setState=function(e){return e.buff=utf8Str2ArrayBuffer(e.buff,!0),SparkMD5.prototype.setState.call(this,e)},SparkMD5.ArrayBuffer.prototype.destroy=SparkMD5.prototype.destroy,SparkMD5.ArrayBuffer.prototype._finish=SparkMD5.prototype._finish,SparkMD5.ArrayBuffer.hash=function(e,t){var r=hex(md51_array(new Uint8Array(e)));return t?hexToBinaryString(r):r},SparkMD5}()},"node:events"(e){"use strict";e.exports=require("node:events")}},t={};function __webpack_require__(r){var a=t[r];if(void 0!==a)return a.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.exports}var r=__webpack_require__("./@datadog/openfeature-node-server/cjs/index.js");module.exports=r})();
|