@walkeros/server-source-aws 4.7.0-next-1790722899482 → 4.7.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/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  # @walkeros/server-source-aws
2
2
 
3
- ## 4.7.0-next-1790722899482
3
+ ## 4.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 64b06de: Packages with several exports, such as the GCP and AWS sources and
8
+ destinations, now publish a settings schema per export. `walkeros validate`
9
+ and MCP `package_get` use the schema of the export a step imports. Pub/Sub,
10
+ BigQuery, SNS and SQS steps pinned to this release or later are checked
11
+ instead of skipped; older pins still report a skip.
4
12
 
5
13
  ### Patch Changes
6
14
 
@@ -18,6 +26,8 @@
18
26
  - Updated dependencies [74821ed]
19
27
  - Updated dependencies [06b498a]
20
28
  - Updated dependencies [74821ed]
29
+ - Updated dependencies [64b06de]
30
+ - Updated dependencies [4b4937f]
21
31
  - Updated dependencies [74821ed]
22
32
  - Updated dependencies [74821ed]
23
33
  - Updated dependencies [74821ed]
@@ -27,9 +37,11 @@
27
37
  - Updated dependencies [74821ed]
28
38
  - Updated dependencies [74821ed]
29
39
  - Updated dependencies [74821ed]
40
+ - Updated dependencies [e860006]
30
41
  - Updated dependencies [74821ed]
31
42
  - Updated dependencies [74821ed]
32
- - @walkeros/core@4.7.0-next-1790722899482
43
+ - Updated dependencies [4f89234]
44
+ - @walkeros/core@4.7.0
33
45
 
34
46
  ## 4.6.1
35
47
 
package/dist/dev.d.mts CHANGED
@@ -74,19 +74,6 @@ type Settings = z.infer<typeof SettingsSchema>;
74
74
 
75
75
  declare const settings$1: _walkeros_core_dev.JSONSchema;
76
76
 
77
- declare const settings: _walkeros_core_dev.JSONSchema;
78
- declare const setup: _walkeros_core_dev.JSONSchema;
79
-
80
- type schemas_CorsOptions = CorsOptions;
81
- declare const schemas_CorsOptionsSchema: typeof CorsOptionsSchema;
82
- declare const schemas_CorsOrigin: typeof CorsOrigin;
83
- declare const schemas_HttpMethod: typeof HttpMethod;
84
- type schemas_Settings = Settings;
85
- declare const schemas_SettingsSchema: typeof SettingsSchema;
86
- declare namespace schemas {
87
- export { type schemas_CorsOptions as CorsOptions, schemas_CorsOptionsSchema as CorsOptionsSchema, schemas_CorsOrigin as CorsOrigin, schemas_HttpMethod as HttpMethod, type schemas_Settings as Settings, schemas_SettingsSchema as SettingsSchema, settings$1 as settings, settings as sqsSettings, setup as sqsSetup };
88
- }
89
-
90
77
  declare module '@walkeros/core' {
91
78
  interface SourceMap {
92
79
  lambda: {
@@ -270,10 +257,33 @@ declare namespace sqsExamplesNs {
270
257
  export { type sqsExamplesNs_Content as Content, type sqsExamplesNs_Result as Result, sqsExamplesNs_createTrigger as createTrigger, sqsExamplesNs_env as env, sqsExamplesNs_step as step };
271
258
  }
272
259
 
260
+ declare const settings: _walkeros_core_dev.JSONSchema;
261
+ declare const setup: _walkeros_core_dev.JSONSchema;
262
+
263
+ type schemas_CorsOptions = CorsOptions;
264
+ declare const schemas_CorsOptionsSchema: typeof CorsOptionsSchema;
265
+ declare const schemas_CorsOrigin: typeof CorsOrigin;
266
+ declare const schemas_HttpMethod: typeof HttpMethod;
267
+ type schemas_Settings = Settings;
268
+ declare const schemas_SettingsSchema: typeof SettingsSchema;
269
+ declare namespace schemas {
270
+ export { type schemas_CorsOptions as CorsOptions, schemas_CorsOptionsSchema as CorsOptionsSchema, schemas_CorsOrigin as CorsOrigin, schemas_HttpMethod as HttpMethod, type schemas_Settings as Settings, schemas_SettingsSchema as SettingsSchema, settings$1 as settings, settings as sqsSettings, setup as sqsSetup };
271
+ }
272
+
273
273
  /** Dev examples per export, keyed by the export names in package.json. */
274
274
  declare const exportExamples: {
275
275
  sourceLambda: typeof lambdaExamplesNs;
276
276
  sourceSqs: typeof sqsExamplesNs;
277
277
  };
278
+ /** Schemas per export, keyed by the export names in package.json. */
279
+ declare const exportSchemas: {
280
+ sourceLambda: {
281
+ settings: _walkeros_core_dev.JSONSchema;
282
+ };
283
+ sourceSqs: {
284
+ settings: _walkeros_core_dev.JSONSchema;
285
+ setup: _walkeros_core_dev.JSONSchema;
286
+ };
287
+ };
278
288
 
279
- export { lambdaExamplesNs as examples, exportExamples, schemas, sqsExamplesNs as sqsExamples };
289
+ export { lambdaExamplesNs as examples, exportExamples, exportSchemas, schemas, sqsExamplesNs as sqsExamples };
package/dist/dev.d.ts CHANGED
@@ -74,19 +74,6 @@ type Settings = z.infer<typeof SettingsSchema>;
74
74
 
75
75
  declare const settings$1: _walkeros_core_dev.JSONSchema;
76
76
 
77
- declare const settings: _walkeros_core_dev.JSONSchema;
78
- declare const setup: _walkeros_core_dev.JSONSchema;
79
-
80
- type schemas_CorsOptions = CorsOptions;
81
- declare const schemas_CorsOptionsSchema: typeof CorsOptionsSchema;
82
- declare const schemas_CorsOrigin: typeof CorsOrigin;
83
- declare const schemas_HttpMethod: typeof HttpMethod;
84
- type schemas_Settings = Settings;
85
- declare const schemas_SettingsSchema: typeof SettingsSchema;
86
- declare namespace schemas {
87
- export { type schemas_CorsOptions as CorsOptions, schemas_CorsOptionsSchema as CorsOptionsSchema, schemas_CorsOrigin as CorsOrigin, schemas_HttpMethod as HttpMethod, type schemas_Settings as Settings, schemas_SettingsSchema as SettingsSchema, settings$1 as settings, settings as sqsSettings, setup as sqsSetup };
88
- }
89
-
90
77
  declare module '@walkeros/core' {
91
78
  interface SourceMap {
92
79
  lambda: {
@@ -270,10 +257,33 @@ declare namespace sqsExamplesNs {
270
257
  export { type sqsExamplesNs_Content as Content, type sqsExamplesNs_Result as Result, sqsExamplesNs_createTrigger as createTrigger, sqsExamplesNs_env as env, sqsExamplesNs_step as step };
271
258
  }
272
259
 
260
+ declare const settings: _walkeros_core_dev.JSONSchema;
261
+ declare const setup: _walkeros_core_dev.JSONSchema;
262
+
263
+ type schemas_CorsOptions = CorsOptions;
264
+ declare const schemas_CorsOptionsSchema: typeof CorsOptionsSchema;
265
+ declare const schemas_CorsOrigin: typeof CorsOrigin;
266
+ declare const schemas_HttpMethod: typeof HttpMethod;
267
+ type schemas_Settings = Settings;
268
+ declare const schemas_SettingsSchema: typeof SettingsSchema;
269
+ declare namespace schemas {
270
+ export { type schemas_CorsOptions as CorsOptions, schemas_CorsOptionsSchema as CorsOptionsSchema, schemas_CorsOrigin as CorsOrigin, schemas_HttpMethod as HttpMethod, type schemas_Settings as Settings, schemas_SettingsSchema as SettingsSchema, settings$1 as settings, settings as sqsSettings, setup as sqsSetup };
271
+ }
272
+
273
273
  /** Dev examples per export, keyed by the export names in package.json. */
274
274
  declare const exportExamples: {
275
275
  sourceLambda: typeof lambdaExamplesNs;
276
276
  sourceSqs: typeof sqsExamplesNs;
277
277
  };
278
+ /** Schemas per export, keyed by the export names in package.json. */
279
+ declare const exportSchemas: {
280
+ sourceLambda: {
281
+ settings: _walkeros_core_dev.JSONSchema;
282
+ };
283
+ sourceSqs: {
284
+ settings: _walkeros_core_dev.JSONSchema;
285
+ setup: _walkeros_core_dev.JSONSchema;
286
+ };
287
+ };
278
288
 
279
- export { lambdaExamplesNs as examples, exportExamples, schemas, sqsExamplesNs as sqsExamples };
289
+ export { lambdaExamplesNs as examples, exportExamples, exportSchemas, schemas, sqsExamplesNs as sqsExamples };
package/dist/dev.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,r=Object.prototype.hasOwnProperty,s=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};s(i,{examples:()=>E,exportExamples:()=>Vt,schemas:()=>a,sqsExamples:()=>Mt}),module.exports=(e=i,((e,s,i,a)=>{if(s&&"object"==typeof s||"function"==typeof s)for(let c of o(s))r.call(e,c)||c===i||t(e,c,{get:()=>s[c],enumerable:!(a=n(s,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};s(a,{CorsOptionsSchema:()=>f,CorsOrigin:()=>p,HttpMethod:()=>l,SettingsSchema:()=>g,settings:()=>h,sqsSettings:()=>I,sqsSetup:()=>S});var c=require("@walkeros/core/dev"),d=require("@walkeros/core/dev"),u=require("@walkeros/core/dev"),l=u.z.enum(["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"]),p=u.z.union([u.z.string(),u.z.array(u.z.string()),u.z.literal("*")]),f=u.z.object({origin:p.describe("Allowed origins (* for all, URL string, or array of URLs)").optional(),methods:u.z.array(l).describe("Allowed HTTP methods").optional(),headers:u.z.array(u.z.string()).describe("Allowed request headers").optional(),credentials:u.z.boolean().describe("Allow credentials (cookies, authorization headers)").optional(),maxAge:u.z.number().int().positive().describe("Preflight cache duration in seconds").optional()}),g=d.z.object({cors:d.z.union([d.z.boolean(),f]).describe("CORS configuration: false = disabled, true = allow all origins, object = custom configuration").default(!0),timeout:d.z.number().int().positive().max(9e5).describe("Request timeout in milliseconds (max: 900000 for Lambda)").default(3e4),enablePixelTracking:d.z.boolean().describe("Enable GET requests with 1x1 transparent GIF response for pixel tracking").default(!0),maxBatchSize:d.z.number().int().min(1).describe("Maximum number of events accepted in a single batch request").default(100),healthPath:d.z.string().describe("Health check endpoint path (e.g., /health)").default("/health")}),h=(0,c.zodToSchema)(g),m=require("@walkeros/core/dev"),v=require("@walkeros/core/dev"),y=v.z.object({queueName:v.z.string().min(1).describe("SQS queue short name (like walkeros-events). Required for both setup and runtime poll."),region:v.z.string().describe("AWS region (like eu-central-1). Default: eu-central-1.").optional(),queueUrl:v.z.string().url().describe("Optional pre-resolved queue URL. When set, init skips the GetQueueUrl lookup.").optional(),client:v.z.any().describe("Pre-configured AWS SQSClient instance. Bypasses construction when supplied.").optional(),config:v.z.any().describe("AWS SDK SQSClientConfig (credentials, endpoint overrides, retries).").optional(),decoder:v.z.enum(["json","text","raw"]).describe("Decoder for the message body. json (default) parses JSON, text forwards UTF-8, raw forwards a Buffer.").optional(),maxMessages:v.z.number().int().min(1).max(10).describe("SQS receive batch size. Cap 10. Default: 10.").optional(),waitTimeSeconds:v.z.number().int().min(0).max(20).describe("Long-poll duration in seconds. Cap 20. Default: 20.").optional(),visibilityTimeout:v.z.number().int().nonnegative().describe("Per-receive visibility timeout override. Default: queue-configured value.").optional(),shutdownTimeoutMs:v.z.number().int().positive().describe("Graceful shutdown timeout in milliseconds. Default: 30000. After this window, destroy() force-closes.").optional(),onPushError:v.z.enum(["nack","ack"]).describe("Behavior when forwarding to the collector throws. nack (default) skips DeleteMessage so the message redelivers; ack drops it.").optional()}),w=require("@walkeros/core/dev"),b=w.z.record(w.z.string(),w.z.string()),k=w.z.object({region:w.z.string().min(1).describe("AWS region.").optional(),fifoQueue:w.z.boolean().describe("FIFO queue with content-based deduplication. Auto-appends .fifo suffix to the queue name.").optional(),visibilityTimeoutSeconds:w.z.number().int().nonnegative().describe("Visibility timeout in seconds. Default: 30.").optional(),messageRetentionSeconds:w.z.number().int().positive().describe("Message retention period in seconds. Default: 345600 (4 days).").optional(),maximumMessageSize:w.z.number().int().min(1024).max(262144).describe("Max message size in bytes. Default: 262144 (256 KB).").optional(),kmsMasterKeyId:w.z.string().describe("KMS key alias or ID for at-rest encryption.").optional(),deadLetterQueue:w.z.object({arn:w.z.string().describe("ARN of an existing DLQ. Mutually exclusive with create: true.").optional(),create:w.z.boolean().describe("Create a sibling DLQ named <queueName>-dlq. Default: false.").optional(),maxReceiveCount:w.z.number().int().min(1).max(1e3).describe("Max receive count before message goes to DLQ. Default: 5.").optional()}).describe("Optional dead-letter queue.").optional(),tags:b.describe("Tags applied to the queue (and inherited by an auto-created DLQ).").optional(),subscribeToSnsTopic:w.z.object({topicArn:w.z.string().min(1).describe("Topic ARN to subscribe to."),rawMessageDelivery:w.z.boolean().describe("Deliver SNS messages without the SNS envelope.").optional(),filterPolicy:w.z.record(w.z.string(),w.z.unknown()).describe("SNS filter policy applied at subscription level.").optional()}).describe("Optional SNS topic subscription. Creates the subscription and the matching queue policy.").optional()}),I=(0,m.zodToSchema)(y),S=(0,m.zodToSchema)(k),E={};s(E,{createTrigger:()=>Tt,env:()=>q,step:()=>T,trigger:()=>Dt});var q={};s(q,{push:()=>j});var O=()=>()=>Promise.resolve({ok:!0}),x=()=>{},C={error:x,warn:x,info:x,debug:x,throw:e=>{throw"string"==typeof e?new Error(e):e},json:x,scope:()=>C},j={get push(){return O()},get command(){return O()},get elb(){return O()},logger:C},T={};s(T,{apiGatewayV1Post:()=>M,lambdaGet:()=>A,lambdaPost:()=>D,lambdaPostForwardsSource:()=>P});var D={title:"Lambda POST",description:"An API Gateway v2 HTTP POST with a JSON body is converted into a walker elb event.",trigger:{type:"POST"},in:{version:"2.0",requestContext:{http:{method:"POST",path:"/collect"},requestId:"req-123"},body:JSON.stringify({name:"page view",data:{title:"Home"}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"}}]]},M={title:"API Gateway v1 POST",description:"A REST API Gateway v1 POST request with a JSON body is converted into a walker elb event.",trigger:{type:"POST"},in:{httpMethod:"POST",path:"/collect",requestContext:{requestId:"req-789",identity:{sourceIp:"203.0.113.42"}},queryStringParameters:null,body:JSON.stringify({name:"page view",data:{title:"Home"}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"}}]]},A={title:"Lambda GET",description:"An API Gateway v2 HTTP GET with query parameters is parsed into an elb event payload.",trigger:{type:"GET"},in:{version:"2.0",requestContext:{http:{method:"GET",path:"/collect"},requestId:"req-456"},rawQueryString:"e=page+view&d=%7B%22title%22%3A%22Home%22%7D",isBase64Encoded:!1},out:[["elb",{e:"page view",d:'{"title":"Home"}'}]]},P={title:"Lambda POST with provenance",description:"A POST body carrying a source map is forwarded in full, so release and trace provenance survive the crossing.",trigger:{type:"POST"},in:{version:"2.0",requestContext:{http:{method:"POST",path:"/collect"},requestId:"req-321"},body:JSON.stringify({name:"page view",data:{title:"Home"},source:{release:{web:"r1"}}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"},source:{release:{web:"r1"}}}]]},z=require("@walkeros/core"),$=require("@walkeros/core"),_=require("@walkeros/core"),R=require("@walkeros/core"),B=require("@walkeros/core"),H=require("@walkeros/core"),G=require("@walkeros/core"),N=require("@walkeros/core"),K=require("@walkeros/core"),Q=require("@walkeros/core"),U=require("@walkeros/core"),F=require("@walkeros/core"),L=require("@walkeros/core"),V=require("@walkeros/core"),W=require("@walkeros/core"),J=require("@walkeros/core"),Y=require("@walkeros/core"),X=require("@walkeros/core"),Z={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function ee(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function te(e,t){const n=e.status.startedAt,o={flowId:e.name??"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n};return t.traceId&&(o.traceId=t.traceId),t.sourceId&&(o.sourceId=t.sourceId),t.parentEventId&&(o.parentEventId=t.parentEventId),o}function ne(e,t,n,o,r){e.status.in++;const s=te(e,{stepId:"collector.push",stepType:"collector",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...ee(t,n,e)});s.skipReason="dropped",s.meta={by:o??"route",at:r},(0,R.emitStep)(e,s)}function oe(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const r of e)o.push(oe(r,t,n+1));return o}const r={};t.set(e,r);for(const[o,s]of Object.entries(e))r[o]="function"==typeof s?s:oe(s,t,n+1);return r}function re(e,t){try{return e[t]}catch{return"[unreadable]"}}function se(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const r=e;if(t.has(r))return"[circular]";if(o>=6)return"[truncated]";let s;t.add(r);try{if(Array.isArray(r))s=r.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(r)){const e={};for(const t of Object.keys(r))e[t]=n(re(r,t),o+1);s=e}else s=function(e){try{return String(e)}catch{return"[object]"}}(r)}catch{s="[unreadable]"}return t.delete(r),s};return e.map(e=>n(e,0))}function ie(e){return e.map(e=>({fn:e.fn,args:se(e.args),ts:e.ts}))}function ae(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const r=[];for(;e.length>=n.max;)r.push(e.shift());return e.push(t),r.length>0&&o&&o(r),{appended:!0,dropped:r.length}}var ce=new WeakMap;function de(e,t,n,o){ce.get(e)||(ce.set(e,!0),t.warn(n,o))}function ue(e){ce.delete(e)}var le=()=>Date.now();function pe(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function fe(e,t,n,o,r){if("partial"===n)return;const s=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;return"success"===n?(s.consecutiveFailures=0,s.state="closed",s.probing=!1,void(s.openUntil=void 0)):(s.consecutiveFailures+=1,"half-open"===s.state?(s.state="open",s.probing=!1,void(s.openUntil=le()+r)):void(s.consecutiveFailures>=o&&(s.state="open",s.probing=!1,s.openUntil=le()+r)))}function ge(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function he(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const r=e.dropped[t];return r[n]=(r[n]??0)+o,r[n]}function me(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function ve(e,t,n,o,r){const s=(0,N.stepId)(t,n);return(t,i)=>{try{if(i)return r?function(e,t,n,o,r,s){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=ae(i,[o,r],a);if(c.dropped>0){const t=he(e.status,(0,N.stepId)("destination",n),"dlq",c.dropped);de(i,s,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&ue(i);const d=ge(e,n);d.failed++,d.dlqSize=i.length,e.status.failed++;const u=pe(t.config.breaker);if(u){const o=t.config.id||n;fe(e.status.breakers,(0,N.stepId)("destination",o),"transport-failure",u.threshold,u.cooldown)}}(e,r,n,i,t,o):e.status.failed++,void o.error("report error",{...me(t),event:i.name});e.status.connectionErrors[s]=(e.status.connectionErrors[s]??0)+1,o.error("connection error",me(t))}catch{}}}function ye(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function we(e,t){return e?t.stores[e]:t.stores.__cache}function be(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function ke(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",r=e.logger.scope(`transformer:${o}`),s={collector:e,logger:r,id:n,ingest:(0,Q.createIngest)(n),config:t.config,env:Me(t.config.env),reportError:ve(e,"transformer",n,r)};r.debug("init");const i=await(0,Q.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(s);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},r.debug("init done")}return!0}async function Ie(e,t,n,o,r,s){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:r,config:t.config,env:{...Me(t.config.env),...s?{respond:s}:{}},reportError:ve(e,"transformer",n,a)};a.debug("push",{event:o.name});const d="string"==typeof o.id?o.id:"",{traceId:u,sourceId:l,parentEventId:p}=ee(o,r,e),f=Date.now(),g=te(e,{stepId:(0,Q.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:d,now:f,traceId:u,sourceId:l,parentEventId:p});g.inEvent=o,(0,Q.emitStep)(e,g);try{const r=await(0,Q.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),s=Date.now(),i=te(e,{stepId:(0,Q.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:d,now:s,traceId:u,sourceId:l,parentEventId:p});return i.durationMs=s-f,i.outEvent=r,(0,Q.emitStep)(e,i),a.debug("push done"),r}catch(t){const o=Date.now(),r=te(e,{stepId:(0,Q.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:d,now:o,traceId:u,sourceId:l,parentEventId:p});throw r.durationMs=o-f,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,Q.emitStep)(e,r),t}}function Se(e){return"string"==typeof e.id?e.id:""}function Ee(e,t){const n=Se(e);return""!==n&&""===Se(t)?{...t,id:n}:t}function qe(e,t,n,o){const r=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),s=(0,Q.clone)(t),i=Se(e);var a;if(""===i)return{event:s,ingest:r};r._meta.parentEventId=i;const c=Se(s);return""!==c&&c!==i||(s.id=(0,Q.deriveSpanId)(i,o)),{event:s,ingest:r}}function Oe(e,t){return{copies:e,respond:t}}function xe(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function Ce(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,Q.tryCatchAsync)(je,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,me(t)),{copies:[]}))(e,t))),r=[];let s,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===s&&(s=e.droppedBy):r.push(...e.copies)}),0===r.length?{copies:r,respond:i,...a?{stopped:!0}:{},...void 0!==s?{droppedBy:s}:{}}:Oe(r,i)}async function je(e,t){const{ingest:n}=t;let{stack:o,event:r,respond:s}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=(0,Q.advanceChain)(o,(0,Q.createMappingRoot)(n,r),e.transformers);if("done"===i.kind)return Oe([{event:r,ingest:n}],s);if("stop"===i.kind)return{copies:[],respond:s,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=r;return Ce(e,i.branches.map((e,o)=>({stack:e,...qe(t,t,n,o),respond:void 0})),s)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await Te(e,t,r,n,s,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return Ce(e,c.copies,s);r=c.event,s=c.respond,o=c.stack}}async function Te(e,t,n,o,r,s){const{collector:i,transformers:a,chainContext:c}=e,d=t.id,u=a[d];let l=n,p=r;const f=(e=t.rest)=>({kind:"continue",event:Ee(n,l),respond:p,stack:e}),g=e=>({kind:"halt",result:e});if(!u)return i.logger.warn(`Transformer not found: ${d}`),f();const h=u.config?.cache,m=h?(0,Q.compileCache)(h):void 0,v=m?ye(m,i):void 0;let y=s?.cacheMiss;if(!s){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${d}`),g({copies:[],respond:p});if(o._meta.hops++,o._meta.path.push(d),!await(0,Q.tryCatchAsync)(ke,e=>{if(e instanceof Q.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${u.type||"unknown"}`).error("transformer init failed",{transformer:d,...me(e)}),!1})(i,u,d))return g({copies:[],respond:p});if(c&&void 0!==u.config?.chainMocks?.[c]){const e=u.config.chainMocks[c];return i.logger.scope(`transformer:${u.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,f()}if(void 0!==u.config?.mock)return i.logger.scope(`transformer:${u.type||"unknown"}`).debug("mock"),l=u.config.mock,f();if(u.config?.disabled)return f();if(m&&v){const e=await(0,Q.checkCache)(m,v,(0,Q.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:Ee(n,l),ingest:o}],respond:p,stopped:!0}):f();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==u.config.before){const e=await async function(e,t,n,o,r,s,i){const a=t[n],c=a?a.config.before:void 0,d=await De(e,t,c,o,r,s,i);return d.stopped&&0===d.copies.length&&!d.droppedBy?{...d,droppedBy:n}:d}(i,a,d,l,o,p,c),n=e.respond??p;if(0===e.copies.length||e.stopped)return g({...e,respond:n});p=n;const[r]=e.copies;if(e.copies.length>1||r.ingest!==o){const n={member:t,cacheMiss:y};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=r.event}}const w=u.config?.state?(0,Q.compileState)(u.config.state):void 0,b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),I=async e=>k&&0!==k.length?(0,Q.applyState)(k,e=>we(e,i),e,i,o):e;b&&b.length>0&&(l=await(0,Q.applyState)(b,e=>we(e,i),l,i,o));const S=await(0,Q.tryCatchAsync)(Ie,e=>(i.status.failed++,i.logger.scope(`transformer:${u.type||"unknown"}`).error("Push failed",me(e)),!1))(i,u,d,l,o,p);if(!1===S)return g({copies:[],respond:p,droppedBy:d});if(Array.isArray(S)&&1!==S.length){if(0===S.length)return g({copies:[],respond:p});const e=l,n=[];for(let r=0;r<S.length;r++){const s=S[r],i=await I(s.event||e);n.push({stack:xe(t,s.next),...qe(e,i,o,r),respond:p})}return{kind:"fork",copies:n}}const E=Array.isArray(S)?S[0]:S;let q;return E&&"object"==typeof E&&(E.respond&&(p=E.respond),E.event&&(l=E.event),q=E.next),l=await I(l),y&&v&&(0,Q.storeCache)(v,y.key,l,y.ttl),f(xe(t,q))}async function De(e,t,n,o,r,s,i){const a=r??(0,Q.createIngest)("string"==typeof n?n:"chain");return void 0===n?Oe([{event:o,ingest:a}],s):(i&&(a._meta.chainPath=i),je({collector:e,transformers:t,chainContext:i},{stack:(0,Q.isChainContinuation)(n)?n:(0,Q.startChain)(n),event:o,ingest:a,respond:s}))}function Me(e){return e&&(0,Q.isObject)(e)?e:{}}async function Ae(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const r=n||t.config?.id||"unknown";for(const{type:n,data:s}of o)Ne(n)&&!Le(e,t,n)||(await(0,K.tryCatchAsync)(t.on,t=>{if(t instanceof K.FatalError)throw t;e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:r,type:n,...me(t)})})(n,s),Ne(n)&&Fe(e,t,n))}function Pe(e){return Boolean(e.config.init)&&!e.config.require?.length}async function ze(e,t,n){const{code:o,config:r={},env:s={},primary:i,next:a,before:c,cache:d,terminus:u}=n,l=r.state??n.state,p=l?(0,K.compileState)(l):void 0,f=d,g=f?(0,K.compileCache)({...f,stop:f.stop??!0}):void 0,h=u??e.push,m=Boolean(u),v=async(n,o,s)=>{if(m)return h(n);let i;const d="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,K.getSpanId)()};let u=[{event:d,ingest:s.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await De(e,e.transformers||{},c,d,s.ingest,s.respond,n);if(0===o.copies.length)return ne(e,d,s.ingest,o.droppedBy,n),ut({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(s.respond=o.respond),{ok:!0};o.respond&&(s.respond=o.respond),u=o.copies}if(g){const t=ye(g,e);if(t){const n=(0,K.createMappingRoot)(s.ingest),o=await(0,K.checkCache)(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await(0,K.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),s.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&s.respond){const r=s.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},d=o.key,u=o.rule.ttl,l=n=>{(0,K.storeCache)(t,d,n,u),a?i=(async()=>{const t=await(0,K.applyUpdate)(n,a,c,e);r(t)})():r(n)};s.respond=l}"MISS"!==o.status||g.stop||(0,K.storeCache)(t,o.key,!0,o.rule.ttl)}}}p&&p.length>0&&(u=await Promise.all(u.map(async t=>({event:await(0,K.applyState)(p,t=>we(t,e),t.event,e,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of u)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:s.respond,mapping:r,preChain:a});return i&&await i,l},y=async n=>{const o=(0,K.createIngest)(t),s=(0,K.parseTraceparent)((0,K.isScope)(n)?n?.headers?.traceparent:void 0);if(s&&(o._meta.trace=s.trace,o._meta.parentEventId=s.parentSpan),!r.ingest||void 0===n)return o;const i=await(0,K.getMappingValue)(n,r.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...s,push:async(e,n={})=>{const o={ingest:(0,K.createIngest)(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:r,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ve(e,"source",t,w)},I=await(0,K.tryCatchAsync)(o,n=>{if(n instanceof K.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...me(n)})})(k);if(!I)return;const S=I.type||"unknown",E=e.logger.scope(S).scope(t);return b.logger=E,i&&(I.config={...I.config,primary:i}),I}async function $e(e){for(const[t,n]of Object.entries(e.sources)){if(Pe(n))continue;const o=n.config.require;if(!o?.length)continue;const r=o.filter(t=>!Qe(e,t));r.length!==o.length&&(n.config.require=r,Pe(n)&&await Ae(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const r=o.filter(t=>!Qe(e,t));if(n.config&&(n.config.require=r),r.length>0)continue;delete e.pending.destinations[t];const s=lt(n);!1!==s.config.queue&&(s.queuePush=[...e.queue]),e.destinations[t]=s}}function _e(e){if("object"!=typeof e||null===e)return!1;if(!("logger"in e))return!1;const t=e.logger;return"object"==typeof t&&null!==t&&"scope"in t&&"function"==typeof t.scope}var Re=!1;function Be(){Re||(Re=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function He(e,t,n,o){if(n instanceof H.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...me(n)})}var Ge=[Z.Consent,Z.User,Z.Globals,Z.Custom];function Ne(e){return Ge.includes(e)}function Ke(e,t){switch(t){case Z.Consent:return Object.keys(e.consent).length>0;case Z.User:return Object.keys(e.user).length>0;case Z.Globals:return Object.keys(e.globals).length>0;case Z.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Qe(e,t){switch(t){case Z.Consent:case Z.User:case Z.Globals:case Z.Custom:return Ke(e,t);case Z.Run:case Z.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Ue(e,t){return e.cellVersion[String(t)]??0}function Fe(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Ue(e,n)}function Le(e,t,n){return e.allowed&&Ue(e,n)>function(e,t,n){const o=e.delivery.get(t),r=o?.[String(n)];return void 0===r?-1:r}(e,t,n)}function Ve(e,t,n){const o=e.cascade;if(!o)return!0;let r=o.counts.get(t);r||(r={},o.counts.set(t,r));const s=String(n),i=(r[s]||0)+1;return r[s]=i,i<=8||(9===i&&e.logger.error("state delivery did not converge",{type:s}),!1)}function We(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}function Je(e,t,n,o,r){if(!t.on)return;const s=t.type||"unknown",i=e.logger.scope(s).scope("on").scope(o),a={collector:e,logger:i,id:n,config:t.config,data:r,env:pt(t.env,t.config.env),reportError:ve(e,"destination",n,i,t)};(0,G.tryCatch)(t.on,t=>He(e,"destination",t,{destId:n,type:o}))(o,a)}function Ye(e,t,n,o){if(!_e(e))return void Be();const r=Xe(e,t,o);if(n.length)switch(t){case Z.Consent:!function(e,t,n){const o=n||e.consent,r=We(e,Z.Consent);t.forEach(t=>{Le(e,t,Z.Consent)&&Ve(e,t,Z.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,G.tryCatch)(t[n],t=>He(e,"consent",t,{key:n}))(o,r)}),Fe(e,t,Z.Consent))})}(e,n,o);break;case Z.Ready:!function(e,t){if(!e.allowed)return;const n=We(e,Z.Ready);t.forEach(t=>{(0,G.tryCatch)(t,t=>He(e,"ready",t))(void 0,n)})}(e,n);break;case Z.Run:!function(e,t){if(!e.allowed)return;const n=We(e,Z.Run);t.forEach(t=>{(0,G.tryCatch)(t,t=>He(e,"run",t))(void 0,n)})}(e,n);break;case Z.Session:!function(e,t){if(!e.session)return;const n=We(e,Z.Session);t.forEach(t=>{(0,G.tryCatch)(t,t=>He(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=We(e,t),s=Ne(t);n.forEach(n=>{"function"==typeof n&&(s&&!Le(e,n,t)||s&&!Ve(e,n,t)||((0,G.tryCatch)(n,n=>He(e,"generic",n,{type:t}))(r,o),s&&Fe(e,n,t)))});break}}}function Xe(e,t,n){switch(t){case Z.Consent:return n||e.consent;case Z.Session:return e.session;case Z.User:return n||e.user;case Z.Custom:return n||e.custom;case Z.Globals:return n||e.globals;case Z.Config:return n||e.config;default:return}}async function Ze(e,t,n,o,r){if(!t.on)return!1;if(Ne(o)&&!Le(e,t,o))return!1;if(Ne(o)&&!Ve(e,t,o))return!1;const s=await(0,G.tryCatchAsync)(t.on,t=>He(e,"source",t,{sourceId:n,type:o}))(o,r);return Ne(o)&&Fe(e,t,o),!1===s}function et(e){return"number"==typeof e&&e>0?e:1e4}var tt=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function nt(e,t,n){let o;const r=new Promise((e,r)=>{o=setTimeout(()=>r(new tt(n)),t)});return Promise.race([e,r]).finally(()=>{o&&clearTimeout(o)})}var ot=Object.freeze({batched:!0});function rt(e){return e===ot}function st(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}async function it(e,t,n={},o){if(!e.allowed)return ut({ok:!1});if(!t)return at(e,void 0,n,o);const r=await async function(e,t,n={}){const o=n.ingest??(0,$.createIngest)(n.id||"unknown"),r=e.config.next;if(void 0===r)return{copies:[{event:t,ingest:o}],respond:n.respond};const s=await De(e,e.transformers||{},r,t,o,n.respond,bt),i=s.respond??n.respond;return 0===s.copies.length?(e.logger.debug("Event dropped by collector.next"+(s.droppedBy?` (${s.droppedBy})`:"")),ne(e,t,o,s.droppedBy,bt),{copies:[],respond:i,dropped:!0}):s.stopped?{copies:[],respond:i}:{copies:s.copies.map(t=>({event:yt(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===r.copies.length)return ut({ok:!0,...r.dropped?{dropped:!0}:{}});const s=[];for(const t of r.copies)s.push(await at(e,t.event,{id:n.id,ingest:t.ingest,respond:r.respond},o));return s[0]}async function at(e,t,n,o){const{consent:r,user:s}=e;if(t){const n=e.config.queueMax;if(void 0===n)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const o=ae(e.queue,t,{max:n});if(o.dropped>0){const t=he(e.status,(0,_.stepId)("collector"),"queue",o.dropped);de(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&ue(e.queue);e.status.in++}o||(o=e.destinations);const i=e.transformers||{},a=await Promise.all(Object.entries(o||{}).map(async([o,a])=>{if(a.config.disabled)return{id:o,destination:a,skipped:!0};const c=a.config.id||o,d=(0,_.stepId)("destination",c),u=pe(a.config.breaker);if(u&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const r=le();return void 0!==o.openUntil&&r<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=r+n,!1)}(e.status.breakers,d,u.cooldown))return{id:o,destination:a,skipped:!0};const l=t=>{u&&fe(e.status.breakers,d,t,u.threshold,u.cooldown)},p=()=>{u&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,d)};let f=(a.queuePush||[]).map(e=>({...e,consent:r}));a.queuePush=[],t&&f.push((0,_.clone)(t));const g=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,_.createIngest)("unknown");if(!f.length&&!a.queueOn?.length)return p(),{id:o,destination:a,skipped:!0};if(!f.length&&a.queueOn?.length){if(!(0,_.getGrantedConsent)(a.config.consent,r))return p(),{id:o,destination:a,skipped:!0};let t=!1;try{t=await ct(e,a,o,!0)}catch(t){e.status.failed++;const n=a.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}return p(),{id:o,destination:a,skipped:!t}}const h=[],m=f.filter(t=>{const n=(0,_.getGrantedConsent)(a.config.consent,r,t.consent);if(n)return t.consent=n,h.push(t),!1;const s=te(e,{stepId:(0,_.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...ee(t,g,e)});return s.skipReason="consent",r&&(s.consent={...r}),a.config.consent&&(s.meta={required:{...a.config.consent}}),(0,_.emitStep)(e,s),!0});if(m.length>0){const t=a.queuePush,n=a.config.id||o,r={max:a.config.queueMax??1e3};let s=0;for(const e of m)s+=ae(t,e,r).dropped;if(s>0){ge(e,n);const o=he(e.status,(0,_.stepId)("destination",n),"queue",s);de(t,e.logger.scope(a.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:n,cap:r.max,droppedCount:o})}else t.length<r.max&&ue(t)}if(!h.length)return p(),{id:o,destination:a,queue:f};let v,y,w=!1;try{w=await ct(e,a,o,!0)}catch(t){e.status.failed++;const n=a.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),l("transport-failure")}if(!w)return p(),{id:o,destination:a,queue:f};a.dlq||(a.dlq=[]);const b=a.config.before,k=a.config.next,I=a.config?.cache,S=I?(0,_.compileCache)(I):void 0,E=S?ye(S,e):void 0,q=a.config?.state?(0,_.compileState)(a.config.state):void 0,O=q?.filter(e=>"get"===e.mode),x=q?.filter(e=>"set"===e.mode);let C=0,j=0,T=0;return await Promise.all(h.map(async t=>{let r,c;if(t.user=(0,_.assign)(s,t.user),S?.stop&&E){const e=(0,_.createMappingRoot)(g,t),n=await(0,_.checkCache)(S,E,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(r={key:n.key,ttl:n.rule.ttl})}let d=[{event:t,ingest:g}],u=n.respond;if(void 0!==b){const r=`destination.${o}.before`,s=await De(e,i,b,t,g,n.respond,r);if(0===s.copies.length){const n=te(e,{stepId:(0,_.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),...ee(t,g,e)});return n.skipReason="dropped",n.meta={by:s.droppedBy??"route",at:r},(0,_.emitStep)(e,n),t}s.respond&&(u=s.respond),d=s.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,r)=>{let s=r,d=!1;if(S&&!S.stop&&E){const e=(0,_.createMappingRoot)(n,t??void 0),o=await(0,_.checkCache)(S,E,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(s={key:o.key,ttl:o.rule.ttl},d=!0)}O&&O.length>0&&t&&(t=await(0,_.applyState)(O,t=>we(t,e),t,e,n));const l=Date.now();let p=!1;const f=await(0,_.tryCatchAsync)(dt,n=>{const r=a.type||"unknown";e.logger.scope(r).error("Push failed",{...me(n),event:t.name}),v=n,p=!0;const s=a.dlq,i=a.config.id||o,c={max:a.config.dlqMax??100},d=ae(s,[t,n],c);if(d.dropped>0){ge(e,i);const t=he(e.status,(0,_.stepId)("destination",i),"dlq",d.dropped);de(s,e.logger.scope(a.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:i,cap:c.max,droppedCount:t})}else s.length<c.max&&ue(s)})(e,a,o,t,n,u);if(C+=Date.now()-l,s&&E&&void 0===a.config.mock&&(d?(0,_.storeCache)(E,s.key,f??!0,s.ttl):void 0===c&&(c=f??!0)),!p&&!rt(f)&&x&&x.length>0&&t&&(t=await(0,_.applyState)(x,t=>we(t,e),t,e,n)),void 0===f||rt(f)||(y=f),rt(f)&&j++,!p&&k){void 0!==f&&(n._response=f);const r=await De(e,i,k,t,n,u,`destination.${o}.next`);r.respond&&(u=r.respond)}return!0};for(const e of d)await l(e.event,e.ingest,r)&&T++;return r&&E&&void 0!==c&&void 0===a.config.mock&&(0,_.storeCache)(E,r.key,c,r.ttl),t})),{id:o,destination:a,error:v,response:y,totalDuration:C,batchedCount:j,allowedCount:h.length,pushedCount:T,canonicalId:c,breakerConfig:u}})),c={},d={},u={};for(const t of a){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};ge(e,t.id);const r=e.status.destinations[t.id],s=Date.now();r.queuePushSize=n.queuePush?.length??0,r.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,a=t.canonicalId?(0,_.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&a&&fe(e.status.breakers,a,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,u[t.id]=o,r.failed++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.failed++,l("transport-failure");else if(t.queue&&t.queue.length)d[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,a=t.pushedCount??i;(Math.max(0,a-n)>0||0===i)&&(c[t.id]=o,r.count++,r.lastAt=s,r.duration+=t.totalDuration||0,e.status.out++,l("success"))}}return ut({event:t,...Object.keys(c).length&&{done:c},...Object.keys(d).length&&{queued:d},...Object.keys(u).length&&{failed:u}})}async function ct(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const r=t.type||"unknown",s=e.logger.scope(r),i={collector:e,logger:s,id:n,config:t.config,env:pt(t.env,t.config.env),reportError:ve(e,"destination",n,s,t)};s.debug("init");const a=Date.now();let c;(0,_.emitStep)(e,te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"init",eventId:"",now:a}));try{c=await(0,_.useHooks)(t.init,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const o=Date.now(),r=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"error",eventId:"",now:o});throw r.durationMs=o-a,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,_.emitStep)(e,r),t}if(!1===c)return c;if(t.config={...c||t.config,init:!0},t.queueOn?.length){const o=t.queueOn;t.queueOn=[];for(const{type:r,data:s}of o)Je(e,t,n,r,s)}s.debug("init done")}return!0}async function dt(e,t,n,o,r,s){const{config:i}=t,a=await(0,_.processEventMapping)(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",d=e.logger.scope(c),u={collector:e,logger:d,id:n,config:i,data:a.data,rule:a.mapping,ingest:r,env:{...pt(t.env,i.env),...s?{respond:s}:{}},reportError:ve(e,"destination",n,d,t)};if(void 0!==i.mock)return d.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,f=p?a.mappingKey||"* *":" batch-all";if((p||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[f]){const o={key:f,entries:[],events:[],data:[]},r=st(l?.batch),s=st(i.batch),a=r.wait??s.wait??3e4,c=r.size??s.size??1e3,u=r.age??s.age??3e4,g=pt(t.env,i.env),h=(0,_.debounce)(async()=>{const o=t.batches[f],r=o.batched;if(0===r.entries.length)return;const s={key:r.key,entries:r.entries,events:r.events,data:r.data};r.entries=[],r.events=[],r.data=[];const a=s.entries[0],c={collector:e,logger:d,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:ve(e,"destination",n,d,t)};d.debug("push batch",{events:s.entries.length});const u=t.config.id||n,l=ge(e,u),p=pe(t.config.breaker),h=(0,_.stepId)("destination",u),m=t=>{p&&fe(e.status.breakers,h,t,p.threshold,p.cooldown)},v=Date.now(),y=new Map;let w,b=!1;const k=n=>{const o=t.dlq=t.dlq||[],r={max:t.config.dlqMax??100};let s=0;for(const e of n)s+=ae(o,e,r).dropped;if(s>0){const t=he(e.status,(0,_.stepId)("destination",u),"dlq",s);de(o,d,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:u,cap:r.max,droppedCount:t})}else o.length<r.max&&ue(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=s.entries.length;const S=et(i.timeout),E=await(0,_.tryCatchAsync)((o,r)=>nt(Promise.resolve((0,_.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,r)),S,`Destination "${n}" batch delivery timed out after ${S}ms`),e=>{I=0,b=!0,w=e,k(s.entries.map(t=>[t.event,e])),m("transport-failure"),d.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:s.entries.length})})(s,c);if((0,_.isObject)(q=E)&&Array.isArray(q.failed)&&E.failed.length>0){const e=[];for(const t of E.failed){const n=s.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}e.length>0&&(k(e),I=Math.max(0,s.entries.length-e.length),d.error("Push batch partial failure",{failed:e.length,delivered:I,entries:s.entries.length}))}var q;const O=Date.now();s.entries.forEach((t,o)=>{const r=b||y.has(o),i=ee(t.event,t.ingest,e),a=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:r?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:O,traceId:i.traceId,sourceId:i.sourceId,parentEventId:i.parentEventId});if(a.batch={size:s.entries.length,index:o},a.durationMs=O-v,r){const e=b?w:y.get(o);a.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}(0,_.emitStep)(e,a)}),d.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-s.entries.length),I>0&&(l.count+=I,l.lastAt=Date.now(),e.status.out+=I,m("success"))},{wait:a,size:c,age:u});t.batches[f]={batched:o,isDefault:!p,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[f];c.batched.entries.push({event:a.event,ingest:r,respond:s,rule:l,data:a.data}),c.batched.events.push(a.event),(0,_.isDefined)(a.data)&&c.batched.data.push(a.data);const u="string"==typeof a.event.id?a.event.id:"",g=ee(o,r,e),h=Date.now(),m=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"in",eventId:u,now:h,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,(0,_.emitStep)(e,m);const v=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"out",eventId:u,now:h,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,_.emitStep)(e,v);const y=t.config.id||n,w=ge(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),ot}{let s;if(d.debug("push",{event:a.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},r=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:oe(t,r,1);const s=(0,B.observeEnv)(o,t);return{wrappedEnv:s.env,calls:s.calls,unresolved:s.unresolved}}({...u.env,simulation:t.calls});u.env=e.wrappedEnv,s=e.calls,e.unresolved.length>0&&(e.wrappedEnv[_.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",{traceId:l,sourceId:p,parentEventId:f}=ee(o,r,e),g=Date.now(),h=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:p,parentEventId:f});a.mappingKey&&(h.mappingKey=a.mappingKey),a.event.consent&&(h.consent={...a.event.consent}),h.inEvent=a.event,(0,_.emitStep)(e,h);try{const o=et(i.timeout),r=await nt(Promise.resolve((0,_.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,u)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"out",eventId:c,now:h,traceId:l,sourceId:p,parentEventId:f});return m.durationMs=h-g,m.outEvent=a.event,s&&s.length>0&&(m.calls=ie(s)),(0,_.isDefined)(r)&&(m.meta={...m.meta,response:r}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,_.emitStep)(e,m),d.debug("push done"),r}catch(t){const o=Date.now(),r=te(e,{stepId:(0,_.stepId)("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:p,parentEventId:f});throw r.durationMs=o-g,r.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},s&&s.length>0&&(r.calls=ie(s)),a.mappingKey&&(r.mappingKey=a.mappingKey),(0,_.emitStep)(e,r),t}}}function ut(e){return{ok:!e?.failed,...e}}function lt(e){const{code:t,config:n={},env:o={},cache:r,state:s}=e,{config:i}=be(e,"before"),{config:a}=be({...e,config:i},"next"),c={...t.config,...n,...a};r&&(c.cache=r),void 0!==s&&void 0===c.state&&(c.state=s);const d=pt(t.env,o);return{...t,config:c,env:d}}function pt(e,t){return e||t?t?e&&(0,_.isObject)(e)&&(0,_.isObject)(t)?{...e,...t}:t:e:{}}async function ft(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const r=o.destroy;if(!r)return;const s=o.type||"unknown",i=n.scope(s),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([r(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function gt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function ht(e,t,n){let o,r,s=!1;const i=function(e){return e.cascade?()=>{}:(e.cascade={counts:new WeakMap},()=>{e.cascade=void 0})}(e);try{return await async function(){switch(t){case Z.Config:(0,F.isObject)(n)&&((0,U.assign)(e.config,n,{shallow:!1,merge:!1}),r=n,s=!0);break;case Z.Consent:if((0,F.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,z.assign)(e.consent,n),{update:n}}(e,n);gt(e,Z.Consent),r=t,s=!0}break;case Z.Custom:(0,F.isObject)(n)&&(e.custom=(0,U.assign)(e.custom,n),gt(e,Z.Custom),r=n,s=!0);break;case Z.Destination:(0,F.isObject)(n)&&"code"in n&&(0,F.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:r={},before:s,next:i,cache:a,state:c}=t;if(!(0,_.isFunction)(n.push))return ut({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const d=o||{init:!1};let u=s?{...d,before:s}:{...d};i&&(u={...u,next:i}),a&&(u={...u,cache:a}),void 0!==c&&void 0===u.state&&(u={...u,state:c});let l=u.id;if(!l)do{l=(0,_.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(u.require?.length){e.pending.destinations[l]=t,await $e(e);const n=e.destinations[l];return n?it(e,void 0,{},{[l]:n}):ut({ok:!0})}const p={...n,config:u,env:pt(n.env,r)};return e.destinations[l]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),it(e,void 0,{},{[l]:p})}(e,n));break;case Z.Globals:(0,F.isObject)(n)&&(e.globals=(0,U.assign)(e.globals,n),gt(e,Z.Globals),r=n,s=!0);break;case Z.Hook:if((0,F.isObject)(n)&&(0,U.isString)(n.name)&&(0,U.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,r=n,s=!0}break;case Z.On:if((0,F.isObject)(n)&&(0,U.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!_e(e))return void Be();const o=e.on,r=o[t]||[],s=(0,H.isArray)(n)?n:[n];s.forEach(e=>{r.push(e)}),o[t]=r,Ye(e,t,s)}(e,t,o)}break;case Z.Ready:s=!0;break;case Z.Run:o=await async function(e,t){e.allowed=!0,e.timing=Date.now(),e.trace=(0,U.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,U.assign)(e.consent,t.consent),gt(e,Z.Consent)),t.user&&(e.user=(0,U.assign)(e.user,t.user),gt(e,Z.User)),t.globals&&(e.globals=(0,U.assign)(e.config.globalsStatic||{},t.globals),gt(e,Z.Globals)),t.custom&&(e.custom=(0,U.assign)(e.custom,t.custom),gt(e,Z.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await $e(e),await async function(e){if(_e(e))for(const t of Ge){if(!Ke(e,t))continue;const n=Xe(e,t);Ye(e,t,e.on[t]||[]);for(const[o,r]of Object.entries(e.sources))Pe(r)&&await Ze(e,r,o,t,n)}else Be()}(e);let n=!0;const o={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:r,options:s}of t){const t=await e.push(r,s);!1===t.ok&&(n=!1),t.failed&&Object.assign(o,t.failed)}}const r=await it(e);if(n)return r;const s={...r.failed??{},...o};return{...r,ok:!1,...Object.keys(s).length>0?{failed:s}:{}}}(e,n),s=!0;break;case Z.Session:s=!0;break;case Z.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await ft(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const r=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){r.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await ft(e.destinations,"destination",t),await ft(e.transformers,"transformer",t),await ft(e.stores,"store",t)}(e));break;case Z.User:(0,F.isObject)(n)&&((0,U.assign)(e.user,n,{shallow:!1}),gt(e,Z.User),r=n,s=!0);break;default:return e.logger.warn("unknown command",{command:t}),ut({ok:!1})}if(s){await async function(e,t,n,o){if(!_e(e))return Be(),!0;e.seenEvents.add(String(t));let r=n||[];n||(r=e.on[t]||[]);const s=Xe(e,t,o);let i=!1;for(const[n,o]of Object.entries(e.sources)){if(o.config.require?.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(Pe(o)?await Ze(e,o,n,t,s)&&(i=!0):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:s})))}Object.entries(e.destinations).forEach(([n,o])=>{if(o.on){if(!o.config.init)return o.queueOn=o.queueOn||[],void o.queueOn.push({type:t,data:s});Je(e,o,n,t,s)}});for(const[t,n]of Object.entries(e.sources))Pe(n)&&n.queueOn?.length&&await Ae(e,n,t);const a=Object.values(e.sources).some(e=>!Pe(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||a)&&await $e(e),Ye(e,t,r,o),!i}(e,t,void 0,r);const n=await it(e);if(o&&!1===o.ok){const e={...n.failed??{},...o.failed??{}};o={...n,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=n}return o||ut({ok:!0})}()}finally{i()}}function mt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function vt(e,t,n){return wt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function yt(e,t,n){return wt(e,mt(e,t),n,{globals:{},user:{},consent:{}})}function wt(e,t,n,o){const r=t.name;if("string"!=typeof r)throw new U.InvalidEventError(void 0===r?"Event name is required":"Event name is invalid");if(!r)throw new U.InvalidEventError("Event name is required");const[s,i]=r.split(" ");if(!s||!i)throw new U.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${s} ${i}`,data:d={},context:u={},globals:l={},custom:p={},user:f=o.user,nested:g=[],consent:h=o.consent,id:m=(0,U.getSpanId)(),trigger:v="",entity:y=s,action:w=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,I=k??{type:"collector",schema:"4"},S=I.count??(e.count+=1),E=I.trace??n?._meta.trace??e.trace,q={...I,count:S};void 0!==E&&(q.trace=E);const O=e.name??I.platform??"default",x=e.release??"4.7.0-next-1790722899482";return q.release={...I.release,[O]:x},{name:c,data:d,context:u,globals:(0,U.assign)(o.globals,l),custom:p,user:f,nested:g,consent:h,id:m,trigger:v,entity:y,action:w,timestamp:a,timing:b,source:q}}var bt="collector.next";function kt(e,t){const n=(0,W.useHooks)(async(n,o={})=>await(0,W.tryCatchAsync)(async()=>{if(!e.allowed){const t=e.config.queueMax;if(void 0===t)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const r=ae(e.preRunQueue,{event:n,options:o},{max:t});if(r.dropped>0){const n=he(e.status,"collector.preRun","queue",r.dropped);de(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&ue(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:r.dropped}),ut({ok:!0})}const r=Date.now(),{id:s,ingest:i,respond:a,mapping:c,preChain:d,include:u,exclude:l}=o;let p=a,f=n;const g=u||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,u,l):void 0;let h=i??(0,W.createIngest)(s||"unknown");if(c){const t=await(0,W.processEventMapping)(f,c,e);if(t.ignore)return ut({ok:!0});if(c.consent&&!(0,W.getGrantedConsent)(c.consent,e.consent,t.event.consent))return ut({ok:!0});f=t.event}if(void 0!==d){const n=s?`source.${s}.next`:void 0,o=await De(e,e.transformers||{},d,f,h,p,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),ne(e,f,h,o.droppedBy,n??"collector.push.preChain"),ut({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(p=o.respond),ut({ok:!0});if(o.respond&&(p=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=vt(e,t(n.event),n.ingest);return it(e,o,{id:s,ingest:n.ingest,respond:p},g)}));if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-r}return n[0]??ut({ok:!0})}f=o.copies[0].event,h=o.copies[0].ingest}const m=function(e,t,n){return vt(e,mt(e,t),n)}(e,f,h),v=await it(e,m,{id:s,ingest:h,respond:p},g);if(s){e.status.sources[s]||(e.status.sources[s]={count:0,duration:0});const t=e.status.sources[s];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-r}return v},t=>{if(t instanceof W.FatalError)throw t;if(t instanceof W.InvalidEventError){const n=o.id;if(n){e.status.sources[n]||(e.status.sources[n]={count:0,duration:0});const t=e.status.sources[n];t.rejected=(t.rejected??0)+1}return e.logger.warn("invalid event rejected",{error:t.message}),ut({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...me(t),event:n.name}),ut({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const r="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,W.getSpanId)()},s="string"==typeof r.id?r.id:"",{traceId:i,sourceId:a,parentEventId:c}=ee(r,o?.ingest,e),d=Date.now(),u=te(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:s,now:d,traceId:i,sourceId:a,parentEventId:c});u.inEvent=r,(0,W.emitStep)(e,u);try{const t=await n(r,o),u=Date.now(),l=te(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:s,now:u,traceId:i,sourceId:a,parentEventId:c});return l.durationMs=u-d,l.outEvent=t,(0,W.emitStep)(e,l),t}catch(t){const n=Date.now(),o=te(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:s,now:n,traceId:i,sourceId:a,parentEventId:c});throw o.durationMs=n-d,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,W.emitStep)(e,o),t}}}function It(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,r=Math.floor(t*n),s=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of s)void 0!==o.expires&&o.expires<=e&&(s.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=s.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(s.delete(e),i.evictions_ttl++,void i.misses++):(s.delete(e),s.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!s.has(e);a||s.delete(e),s.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,s.size>t&&function(){if(s.size<=t)return;const e=s.size-r;let n=0;for(const t of s.keys()){if(n>=e)break;s.delete(t),n++}i.evictions_entries+=n}()},delete(e){s.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),s.clear()}}}function St(e,t){const{cacheConfig:n,cacheStore:o,namespace:r,logger:s,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=te(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,X.emitStep)(a,n)},d={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?(0,X.compileMatcher)(e.match):()=>!0,ttl:e.ttl})),l=e=>`${r}:${e}`;function p(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...d}},async get(t){const n=l(t),r=await o.get(n),s=(0,X.readCacheEnvelope)(r);if(void 0!==s){if(!("expired"in s))return d.hits++,c(t,"hit"),s.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=f.get(n);if(i)return d.inflight_dedups++,c(t,"hit"),i;d.misses++,c(t,"miss");const a=(async()=>{try{const r=await e.get(t);if(void 0===r)return;const s=p(t,r);if(s)try{const e=1e3*s.ttl;await o.set(n,(0,X.wrapCacheEnvelope)(r,e),e),d.populates++}catch(e){g("set",t,e)}return r}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,r){d.writes++,await e.set(t,n,r);const s=p(t,n);if(s)try{const e=1e3*s.ttl;await o.set(l(t),(0,X.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){d.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;s?s.warn(o,me(n)):console.warn(o,n)}}function Et(e,t,n){const o=`store.${n}`,r=(0,Y.useHooks)(t.get,"StoreGet",e.hooks,e.logger),s=(0,Y.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,Y.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),s=te(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"get",key:t},(0,Y.emitStep)(e,s);try{const s=await r(t),i=Date.now(),a=te(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,Y.emitStep)(e,a),s}catch(r){const s=Date.now(),i=te(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"get",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},(0,Y.emitStep)(e,i),r}},t.set=async(t,n,r)=>{const i=Date.now(),a=te(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,Y.emitStep)(e,a);try{await s(t,n,r);const a=Date.now(),c=te(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,Y.emitStep)(e,c)}catch(n){const r=Date.now(),s=te(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw s.durationMs=r-i,s.meta={op:"set",key:t},s.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},(0,Y.emitStep)(e,s),n}},t.delete=async t=>{const n=Date.now(),r=te(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"delete",key:t},(0,Y.emitStep)(e,r);try{await i(t);const r=Date.now(),s=te(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:r});s.durationMs=r-n,s.meta={op:"delete",key:t},(0,Y.emitStep)(e,s)}catch(r){const s=Date.now(),i=te(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw i.durationMs=s-n,i.meta={op:"delete",key:t},i.error=r instanceof Error?{name:r.name,message:r.message}:{message:String(r)},(0,Y.emitStep)(e,i),r}}}async function qt(e){const t=(0,V.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,V.createLogger)(n),r={...t.globalsStatic,...e.globals},s={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:r,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(s.name=e.name),void 0!==e.release&&(s.release=e.release),void 0!==e.next&&(t.next=e.next),s.push=kt(s,e=>mt(s,e)),s.command=(i=s,a=ht,(0,J.useHooks)(async(e,t,n)=>await(0,J.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof J.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...me(t),command:e}),ut({ok:!1})})(),"Command",i.hooks,i.logger)),s.elb=function(e){return async(t,n,o,r,s)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return ut({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),r&&Array.isArray(r)&&(i.nested=r),s&&"object"==typeof s&&(i.custom=s),e.push(i)}}(s);const c=e.stores||{};return s.stores=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,config:s={},env:i={}}=r,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:s,env:i,reportError:ve(e,"store",o,a)},d=await t(c);n[o]=d}const o=t,r=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function r(s){const i=t[s];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(s),t=o.slice(-1===e?0:e).concat(s).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[s]="GRAY",o.push(s);const a=e[s].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${s}" cache.store references "${a}", which is not declared in flow.stores`);r(a)}o.pop(),t[s]="BLACK",n.push(s)}for(const n of Object.keys(e))"WHITE"===t[n]&&r(n);return n}(o);for(const t of r){const r=o[t].cache;if(!r)continue;let s,i;void 0!==r.store?(s=n[r.store],i=r.store):(n.__cache||(n.__cache=It()),s=n.__cache,i="__cache");const a=r.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=St(n[t],{storeId:t,cacheConfig:r,cacheStore:s,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&Et(e,o,t);return n}(s,c),function(e,t,n){const o=new Map;for(const[n,r]of Object.entries(e))t[n]&&o.set(r,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))r(t.env);function r(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const r=o.get(n);r&&(e[t]=r)}}}(c,s.stores,e),s.stores.__cache||(s.stores.__cache=It()),s.destinations=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t))r.config?.require?.length?e.pending.destinations[o]=r:n[o]=lt(r);return n}(s,e.destinations||{}),s.transformers=await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const{code:t,env:s={}}=r,i=(0,Q.validateStepEntry)(r,"Transformer");if(!i.ok){e.logger.warn(`Transformer ${o} invalid (${i.code}): ${i.reason}. Skipping.`);continue}const{config:a}=be(r,"before"),{config:c}=be({...r,config:a},"next"),d=Object.keys(s).length>0?{...c,env:s}:c,{cache:u}=r,l=u?{...d,cache:u}:d,p=r.config?.state??r.state,f=void 0!==p&&void 0===l.state?{...l,state:p}:l,g=e.logger.scope("transformer").scope(o),h={collector:e,logger:g,id:o,ingest:(0,Q.createIngest)(o),config:f,env:s,reportError:ve(e,"transformer",o,g)},m=t??(e=>{const t=r.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,r]of Object.entries(o)){if("object"!=typeof r||null===r)continue;const o=r;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,Q.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),v=await m(h);void 0!==r.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:r.before}),void 0!==r.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:r.next}),void 0!==p&&void 0===v.config?.state&&(v.config={...v.config??{},state:p}),n[o]=v}return n}(s,e.transformers||{}),s}var Ot=globalThis;function xt(e){try{const t=Ot.window;if(!t)return;t.localStorage.getItem(L.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(L.OBSERVE_STORAGE_KEY)}catch{}}function Ct(e,t){return void 0===t?e:n=>e({...n,release:t})}async function jt(e){e=e||{};const t=await qt(e);(function(e,t){if(t.observers)for(const n of t.observers)e.observers.add(n);const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=Ot.window,t=Ot.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(L.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),r=t??function(){try{return Ot.window?.localStorage.getItem(L.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!r)return;const s=(0,L.parseObserveCredential)(r);if(!s)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),xt(r)):e.logger.warn("observe: malformed credential ignored"));if(s.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{Ot.window?.localStorage.setItem(L.OBSERVE_STORAGE_KEY,e)}catch{}}(r),null!==t&&function(){const e=Ot.window,t=Ot.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),r=o>=0?n.slice(o):"",s=o>=0?n.slice(0,o):n,i=s.indexOf("?"),a=i>=0?s.slice(0,i):s,c=new t(i>=0?s.slice(i+1):"");c.delete(L.OBSERVE_STORAGE_KEY);const d=c.toString();e.history.replaceState({},"",`${a}${d?`?${d}`:""}${r}`)}catch{}}();const a=(0,L.createBatchedPoster)({url:`${n.url}/ingest/${s.ses}`,token:s.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(xt(r),i&&e.observers.delete(i))}});i=(0,L.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Ct(a,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const r=n.level;void 0!==r&&(e.observeLevel=()=>r),e.observers.add((0,L.createTelemetryObserver)(Ct((0,L.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))})(t,e),await async function(e,t={}){const n={};for(const[o,r]of Object.entries(t)){const t=await ze(e,o,r);if(!t)continue;const s=r.config?.require;t.config={...t.config,init:!1,...s?{require:[...s]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await(0,K.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof K.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...me(n)})})(),o||(n.config.init=!0,Pe(n)&&await Ae(e,n,t))}return await $e(e),n}(t,e.sources||{});const{consent:n,user:o,globals:r,custom:s}=e;n&&await t.command("consent",n),o&&await t.command("user",o),r&&await t.command("globals",r),s&&await t.command("custom",s),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}var Tt=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await jt(e);t={collector:n.collector,elb:n.elb}}const o=function(e){for(const t of Object.values(e.sources||{}))if("lambda"===t.type)return t}(t.collector);if(!o)throw new Error("Lambda source not found in collector");const r={awsRequestId:`test-${Date.now()}`},s=o.push,i=await s(n,r);let a;try{a=JSON.parse(i.body||"{}")}catch{a=i.body}const c={};if(i.headers)for(const[e,t]of Object.entries(i.headers))void 0!==t&&(c[e]=String(t));return{statusCode:i.statusCode,body:a,headers:c}}}};function Dt(e){return async t=>{const n={...t};if(n.body&&"string"==typeof n.body){const e=JSON.parse(n.body);e.name&&!e.event&&(n.body=JSON.stringify({...e,event:e.name,name:void 0}))}return e.push(n,{awsRequestId:"test-req"})}}var Mt={};s(Mt,{createTrigger:()=>Lt,env:()=>At,step:()=>Gt});var At={};s(At,{moduleMockEnv:()=>Bt,push:()=>Rt,simulation:()=>Ht});var Pt=()=>{},zt={error:Pt,warn:Pt,info:Pt,debug:Pt,throw:e=>{throw"string"==typeof e?new Error(e):e},json:Pt,scope:()=>zt},$t=()=>()=>Promise.resolve({ok:!0});function _t(){return{get push(){return $t()},get command(){return $t()},get elb(){return $t()},logger:zt}}var Rt=Object.assign(_t(),{AWS:{SQSClient:class{constructor(e){this.config=e}config;async send(e){return function(e){if(!("input"in e))return!1;const{input:t}=e;return"object"==typeof t&&null!==t&&"WaitTimeSeconds"in t}(e)&&await new Promise(e=>setTimeout(e,100)),{$metadata:{},QueueUrl:"https://sqs.eu-central-1.amazonaws.com/000000000000/walkeros-events",Attributes:{QueueArn:"arn:aws:sqs:eu-central-1:000000000000:walkeros-events"},Messages:[]}}destroy(){}}}}),Bt=_t(),Ht=["call:AWS.SQSClient.send"],Gt={};s(Gt,{decoderText:()=>Qt,malformedJson:()=>Ut,orderComplete:()=>Kt,pageView:()=>Nt});var Nt={title:"Page view from SQS",description:"A standard SQS message body containing a walker elb event payload as JSON.",in:{MessageId:"m-1",Body:JSON.stringify({event:"page view",data:{title:"Documentation",url:"https://example.com/docs"}})},out:[["message.ack","m-1"]]},Kt={title:"Order complete from SQS",description:"Order complete event flowing through the long-poll loop.",in:{MessageId:"m-2",Body:JSON.stringify({event:"order complete",data:{id:"ORD-500",total:199.99,currency:"EUR"}})},out:[["message.ack","m-2"]]},Qt={title:"Text decoder",description:'When decoder is "text", the body string flows under data.payload.',in:{MessageId:"m-3",Body:"raw text payload"},out:[["message.ack","m-3"]]},Ut={title:"Malformed JSON nacks",description:"Default decoder is JSON. A malformed body throws DecoderError; the source nacks (skips DeleteMessage) so the message redelivers.",in:{MessageId:"m-4",Body:"{not json"},out:[["message.nack","m-4"]]};function Ft(e){if("object"!=typeof e||null===e)return!1;const t=e;return"sqs"===t.type&&"function"==typeof t.push}var Lt=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await jt(e);t={collector:n.collector,elb:n.elb}}const o=function(e){for(const t of Object.values(e.sources??{}))if(Ft(t))return t}(t.collector);if(!o)throw new Error("sqs source not registered in collector, ensure it is configured in sources");const r={MessageId:n.MessageId,Body:n.Body,ReceiptHandle:n.ReceiptHandle,Attributes:n.Attributes,MessageAttributes:n.MessageAttributes},s=await o.push(r),i=[];return s&&"object"==typeof s&&(s.acked&&i.push(["message.ack",n.MessageId]),s.nacked&&i.push(["message.nack",n.MessageId])),i}}},Vt={sourceLambda:E,sourceSqs:Mt};//# sourceMappingURL=dev.js.map
1
+ "use strict";var e,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,r=(e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})},i={};r(i,{examples:()=>a,exportExamples:()=>On,exportSchemas:()=>xn,schemas:()=>En,sqsExamples:()=>Ut}),module.exports=(e=i,((e,r,i,a)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let c of o(r))s.call(e,c)||c===i||t(e,c,{get:()=>r[c],enumerable:!(a=n(r,c))||a.enumerable});return e})(t({},"__esModule",{value:!0}),e));var a={};r(a,{createTrigger:()=>Kt,env:()=>c,step:()=>f,trigger:()=>Qt});var c={};r(c,{push:()=>p});var d=()=>()=>Promise.resolve({ok:!0}),u=()=>{},l={error:u,warn:u,info:u,debug:u,throw:e=>{throw"string"==typeof e?new Error(e):e},json:u,scope:()=>l},p={get push(){return d()},get command(){return d()},get elb(){return d()},logger:l},f={};r(f,{apiGatewayV1Post:()=>h,lambdaGet:()=>m,lambdaPost:()=>g,lambdaPostForwardsSource:()=>v});var g={title:"Lambda POST",description:"An API Gateway v2 HTTP POST with a JSON body is converted into a walker elb event.",trigger:{type:"POST"},in:{version:"2.0",requestContext:{http:{method:"POST",path:"/collect"},requestId:"req-123"},body:JSON.stringify({name:"page view",data:{title:"Home"}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"}}]]},h={title:"API Gateway v1 POST",description:"A REST API Gateway v1 POST request with a JSON body is converted into a walker elb event.",trigger:{type:"POST"},in:{httpMethod:"POST",path:"/collect",requestContext:{requestId:"req-789",identity:{sourceIp:"203.0.113.42"}},queryStringParameters:null,body:JSON.stringify({name:"page view",data:{title:"Home"}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"}}]]},m={title:"Lambda GET",description:"An API Gateway v2 HTTP GET with query parameters is parsed into an elb event payload.",trigger:{type:"GET"},in:{version:"2.0",requestContext:{http:{method:"GET",path:"/collect"},requestId:"req-456"},rawQueryString:"e=page+view&d=%7B%22title%22%3A%22Home%22%7D",isBase64Encoded:!1},out:[["elb",{e:"page view",d:'{"title":"Home"}'}]]},v={title:"Lambda POST with provenance",description:"A POST body carrying a source map is forwarded in full, so release and trace provenance survive the crossing.",trigger:{type:"POST"},in:{version:"2.0",requestContext:{http:{method:"POST",path:"/collect"},requestId:"req-321"},body:JSON.stringify({name:"page view",data:{title:"Home"},source:{release:{web:"r1"}}}),isBase64Encoded:!1},out:[["elb",{name:"page view",data:{title:"Home"},source:{release:{web:"r1"}}}]]},y=require("@walkeros/core"),w=require("@walkeros/core"),b=require("@walkeros/core"),k=require("@walkeros/core"),S=require("@walkeros/core"),I=require("@walkeros/core"),q=require("@walkeros/core"),E=require("@walkeros/core"),O=require("@walkeros/core"),x=require("@walkeros/core"),j=require("@walkeros/core"),C=require("@walkeros/core"),T=require("@walkeros/core"),P=require("@walkeros/core"),M=require("@walkeros/core"),D=require("@walkeros/core"),A=require("@walkeros/core"),z=require("@walkeros/core"),$={Action:"action",Actions:"actions",Config:"config",Consent:"consent",Context:"context",Custom:"custom",Destination:"destination",Elb:"elb",Globals:"globals",Hook:"hook",Init:"init",Link:"link",On:"on",Prefix:"data-elb",Ready:"ready",Run:"run",Scoped:"_",Session:"session",Shutdown:"shutdown",User:"user",Walker:"walker"};function _(e,t,n){return{traceId:e.source?.trace??t?._meta.trace??n.trace,sourceId:t?._meta.path[0],parentEventId:t?._meta.parentEventId}}function R(e,t){const n=e.status.startedAt,o={flowId:e.name??"default",stepId:t.stepId,stepType:t.stepType,phase:t.phase,eventId:t.eventId,timestamp:new Date(t.now).toISOString(),elapsedMs:t.now-n};return t.traceId&&(o.traceId=t.traceId),t.sourceId&&(o.sourceId=t.sourceId),t.parentEventId&&(o.parentEventId=t.parentEventId),o}function B(e,t,n,o,s){e.status.in++;const r=R(e,{stepId:"collector.push",stepType:"collector",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),..._(t,n,e)});r.skipReason="dropped",r.meta={by:o??"route",at:s},(0,k.emitStep)(e,r)}function H(e,t,n){if(null===e||"object"!=typeof e)return e;if(n>=8||!function(e){if(Array.isArray(e))return!0;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const o=t.get(e);if(void 0!==o)return o;if(Array.isArray(e)){const o=[];t.set(e,o);for(const s of e)o.push(H(s,t,n+1));return o}const s={};t.set(e,s);for(const[o,r]of Object.entries(e))s[o]="function"==typeof r?r:H(r,t,n+1);return s}function G(e,t){try{return e[t]}catch{return"[unreadable]"}}function W(e){const t=new WeakSet,n=(e,o)=>{if(null===e)return null;if("function"==typeof e)return"[function]";if("string"==typeof e||"boolean"==typeof e)return e;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return String(e);if("object"!=typeof e)return;const s=e;if(t.has(s))return"[circular]";if(o>=6)return"[truncated]";let r;t.add(s);try{if(Array.isArray(s))r=s.map(e=>n(e,o+1));else if(function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(s)){const e={};for(const t of Object.keys(s))e[t]=n(G(s,t),o+1);r=e}else r=function(e){try{return String(e)}catch{return"[object]"}}(s)}catch{r="[unreadable]"}return t.delete(s),r};return e.map(e=>n(e,0))}function N(e){return e.map(e=>({fn:e.fn,args:W(e.args),ts:e.ts}))}function K(e,t,n,o){if(!Number.isFinite(n.max)||n.max<=0)throw new Error(`pushBounded: max must be > 0 (got ${n.max})`);if("dropNewest"===(n.onOverflow??"dropOldest"))return e.length>=n.max?(o&&o([t]),{appended:!1,dropped:1}):(e.push(t),{appended:!0,dropped:0});const s=[];for(;e.length>=n.max;)s.push(e.shift());return e.push(t),s.length>0&&o&&o(s),{appended:!0,dropped:s.length}}var Q=new WeakMap;function U(e,t,n,o){Q.get(e)||(Q.set(e,!0),t.warn(n,o))}function F(e){Q.delete(e)}var L=()=>Date.now();function V(e){if(void 0!==e)return"number"==typeof e?{threshold:e,cooldown:3e4}:{threshold:e.threshold??5,cooldown:e.cooldown??3e4}}function J(e,t,n,o,s){if("partial"===n)return;const r=((i=e)[a=t]||(i[a]={state:"closed",consecutiveFailures:0}),i[a]);var i,a;return"success"===n?(r.consecutiveFailures=0,r.state="closed",r.probing=!1,void(r.openUntil=void 0)):(r.consecutiveFailures+=1,"half-open"===r.state?(r.state="open",r.probing=!1,void(r.openUntil=L()+s)):void(r.consecutiveFailures>=o&&(r.state="open",r.probing=!1,r.openUntil=L()+s)))}function Y(e,t){return e.status.destinations[t]||(e.status.destinations[t]={count:0,failed:0,duration:0,queuePushSize:0,dlqSize:0}),e.status.destinations[t]}function X(e,t,n,o){e.dropped[t]||(e.dropped[t]={});const s=e.dropped[t];return s[n]=(s[n]??0)+o,s[n]}function Z(e){const t={error:e instanceof Error?e.message:String(e)};if(e instanceof Error&&e.name&&"Error"!==e.name&&(t.name=e.name),"object"==typeof e&&null!==e&&"code"in e){const n=e;"number"!=typeof n.code&&"string"!=typeof n.code||(t.code=n.code)}return t}function ee(e,t,n,o,s){const r=(0,E.stepId)(t,n);return(t,i)=>{try{if(i)return s?function(e,t,n,o,s,r){const i=t.dlq=t.dlq||[],a={max:t.config.dlqMax??100},c=K(i,[o,s],a);if(c.dropped>0){const t=X(e.status,(0,E.stepId)("destination",n),"dlq",c.dropped);U(i,r,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:n,cap:a.max,droppedCount:t})}else i.length<a.max&&F(i);const d=Y(e,n);d.failed++,d.dlqSize=i.length,e.status.failed++;const u=V(t.config.breaker);if(u){const o=t.config.id||n;J(e.status.breakers,(0,E.stepId)("destination",o),"transport-failure",u.threshold,u.cooldown)}}(e,s,n,i,t,o):e.status.failed++,void o.error("report error",{...Z(t),event:i.name});e.status.connectionErrors[r]=(e.status.connectionErrors[r]??0)+1,o.error("connection error",Z(t))}catch{}}}function te(e,t){return e.storeId&&t.stores[e.storeId]?t.stores[e.storeId]:t.stores.__cache}function ne(e,t){return e?t.stores[e]:t.stores.__cache}function oe(e,t){const n=e.config||{},o=e[t];return void 0!==o?{config:{...n,[t]:o},chainValue:o}:{config:n,chainValue:void 0}}async function se(e,t,n){if(t.init&&!t.config.init){const o=t.type||"unknown",s=e.logger.scope(`transformer:${o}`),r={collector:e,logger:s,id:n,ingest:(0,x.createIngest)(n),config:t.config,env:he(t.config.env),reportError:ee(e,"transformer",n,s)};s.debug("init");const i=await(0,x.useHooks)(t.init,"TransformerInit",e.hooks,e.logger)(r);if(!1===i)return!1;t.config={...i||t.config,env:i?.env||t.config.env,init:!0},s.debug("init done")}return!0}async function re(e,t,n,o,s,r){const i=t.type||"unknown",a=e.logger.scope(`transformer:${i}`),c={collector:e,logger:a,id:n,ingest:s,config:t.config,env:{...he(t.config.env),...r?{respond:r}:{}},reportError:ee(e,"transformer",n,a)};a.debug("push",{event:o.name});const d="string"==typeof o.id?o.id:"",{traceId:u,sourceId:l,parentEventId:p}=_(o,s,e),f=Date.now(),g=R(e,{stepId:(0,x.stepId)("transformer",n),stepType:"transformer",phase:"in",eventId:d,now:f,traceId:u,sourceId:l,parentEventId:p});g.inEvent=o,(0,x.emitStep)(e,g);try{const s=await(0,x.useHooks)(t.push,"TransformerPush",e.hooks,e.logger)(o,c),r=Date.now(),i=R(e,{stepId:(0,x.stepId)("transformer",n),stepType:"transformer",phase:"out",eventId:d,now:r,traceId:u,sourceId:l,parentEventId:p});return i.durationMs=r-f,i.outEvent=s,(0,x.emitStep)(e,i),a.debug("push done"),s}catch(t){const o=Date.now(),s=R(e,{stepId:(0,x.stepId)("transformer",n),stepType:"transformer",phase:"error",eventId:d,now:o,traceId:u,sourceId:l,parentEventId:p});throw s.durationMs=o-f,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,x.emitStep)(e,s),t}}function ie(e){return"string"==typeof e.id?e.id:""}function ae(e,t){const n=ie(e);return""!==n&&""===ie(t)?{...t,id:n}:t}function ce(e,t,n,o){const s=(a=n,{...a,_meta:{...a._meta,path:[...a._meta.path]}}),r=(0,x.clone)(t),i=ie(e);var a;if(""===i)return{event:r,ingest:s};s._meta.parentEventId=i;const c=ie(r);return""!==c&&c!==i||(r.id=(0,x.deriveSpanId)(i,o)),{event:r,ingest:s}}function de(e,t){return{copies:e,respond:t}}function ue(e,t){if(void 0===t)return e.rest;const n=e.ownNext?e.rest.slice(1):e.rest;return[{route:t,ancestry:e.ancestry},...n]}async function le(e,t,n){const o=await Promise.all(t.map((t,n)=>(0,x.tryCatchAsync)(pe,t=>(e.collector.logger.scope("transformer:fork").error(`fork ${n} failed`,Z(t)),{copies:[]}))(e,t))),s=[];let r,i=n,a=o.length>0;return o.forEach((e,n)=>{void 0!==t[n].respond&&e.respond&&(i=e.respond),e.stopped||(a=!1),e.stopped||0===e.copies.length?void 0===r&&(r=e.droppedBy):s.push(...e.copies)}),0===s.length?{copies:s,respond:i,...a?{stopped:!0}:{},...void 0!==r?{droppedBy:r}:{}}:de(s,i)}async function pe(e,t){const{ingest:n}=t;let{stack:o,event:s,respond:r}=t,i=t.resume;for(;;){let t,a;if(i)t=i.member,a=i,i=void 0;else{const i=(0,x.advanceChain)(o,(0,x.createMappingRoot)(n,s),e.transformers);if("done"===i.kind)return de([{event:s,ingest:n}],r);if("stop"===i.kind)return{copies:[],respond:r,stopped:!0,...void 0!==i.owner?{droppedBy:i.owner}:{}};if("fork"===i.kind){const t=s;return le(e,i.branches.map((e,o)=>({stack:e,...ce(t,t,n,o),respond:void 0})),r)}const a=e.transformers[i.id];t={id:i.id,ancestry:i.ancestry,rest:i.rest,ownNext:!!a&&void 0!==a.config.next}}const c=await fe(e,t,s,n,r,a);if("halt"===c.kind)return c.result;if("fork"===c.kind)return le(e,c.copies,r);s=c.event,r=c.respond,o=c.stack}}async function fe(e,t,n,o,s,r){const{collector:i,transformers:a,chainContext:c}=e,d=t.id,u=a[d];let l=n,p=s;const f=(e=t.rest)=>({kind:"continue",event:ae(n,l),respond:p,stack:e}),g=e=>({kind:"halt",result:e});if(!u)return i.logger.warn(`Transformer not found: ${d}`),f();const h=u.config?.cache,m=h?(0,x.compileCache)(h):void 0,v=m?te(m,i):void 0;let y=r?.cacheMiss;if(!r){if(o._meta.path.length>256)return i.logger.error(`Max path length exceeded at ${d}`),g({copies:[],respond:p});if(o._meta.hops++,o._meta.path.push(d),!await(0,x.tryCatchAsync)(se,e=>{if(e instanceof x.FatalError)throw e;return i.status.failed++,i.logger.scope(`transformer:${u.type||"unknown"}`).error("transformer init failed",{transformer:d,...Z(e)}),!1})(i,u,d))return g({copies:[],respond:p});if(c&&void 0!==u.config?.chainMocks?.[c]){const e=u.config.chainMocks[c];return i.logger.scope(`transformer:${u.type||"unknown"}`).debug("chainMock",{chain:c}),l=e,f()}if(void 0!==u.config?.mock)return i.logger.scope(`transformer:${u.type||"unknown"}`).debug("mock"),l=u.config.mock,f();if(u.config?.disabled)return f();if(m&&v){const e=await(0,x.checkCache)(m,v,(0,x.createMappingRoot)(o,l));if("HIT"===e?.status&&e.value)return l=e.value,m.stop?g({copies:[{event:ae(n,l),ingest:o}],respond:p,stopped:!0}):f();"MISS"===e?.status&&(y={key:e.key,ttl:e.rule.ttl})}if(void 0!==u.config.before){const e=await async function(e,t,n,o,s,r,i){const a=t[n],c=a?a.config.before:void 0,d=await ge(e,t,c,o,s,r,i);return d.stopped&&0===d.copies.length&&!d.droppedBy?{...d,droppedBy:n}:d}(i,a,d,l,o,p,c),n=e.respond??p;if(0===e.copies.length||e.stopped)return g({...e,respond:n});p=n;const[s]=e.copies;if(e.copies.length>1||s.ingest!==o){const n={member:t,cacheMiss:y};return{kind:"fork",copies:e.copies.map(e=>({stack:t.rest,event:e.event,ingest:e.ingest,respond:void 0,resume:n}))}}l=s.event}}const w=u.config?.state?(0,x.compileState)(u.config.state):void 0,b=w?.filter(e=>"get"===e.mode),k=w?.filter(e=>"set"===e.mode),S=async e=>k&&0!==k.length?(0,x.applyState)(k,e=>ne(e,i),e,i,o):e;b&&b.length>0&&(l=await(0,x.applyState)(b,e=>ne(e,i),l,i,o));const I=await(0,x.tryCatchAsync)(re,e=>(i.status.failed++,i.logger.scope(`transformer:${u.type||"unknown"}`).error("Push failed",Z(e)),!1))(i,u,d,l,o,p);if(!1===I)return g({copies:[],respond:p,droppedBy:d});if(Array.isArray(I)&&1!==I.length){if(0===I.length)return g({copies:[],respond:p});const e=l,n=[];for(let s=0;s<I.length;s++){const r=I[s],i=await S(r.event||e);n.push({stack:ue(t,r.next),...ce(e,i,o,s),respond:p})}return{kind:"fork",copies:n}}const q=Array.isArray(I)?I[0]:I;let E;return q&&"object"==typeof q&&(q.respond&&(p=q.respond),q.event&&(l=q.event),E=q.next),l=await S(l),y&&v&&(0,x.storeCache)(v,y.key,l,y.ttl),f(ue(t,E))}async function ge(e,t,n,o,s,r,i){const a=s??(0,x.createIngest)("string"==typeof n?n:"chain");return void 0===n?de([{event:o,ingest:a}],r):(i&&(a._meta.chainPath=i),pe({collector:e,transformers:t,chainContext:i},{stack:(0,x.isChainContinuation)(n)?n:(0,x.startChain)(n),event:o,ingest:a,respond:r}))}function he(e){return e&&(0,x.isObject)(e)?e:{}}var me=1e4;function ve(e){return"number"==typeof e&&e>0?e:me}var ye=class extends Error{constructor(e){super(e),this.name="DestinationTimeoutError"}};function we(e,t,n){let o;const s=new Promise((e,s)=>{o=setTimeout(()=>s(new ye(n)),t)});return Promise.race([e,s]).finally(()=>{o&&clearTimeout(o)})}async function be(e,t,n){if(!t.on||!t.queueOn?.length)return;const o=t.queueOn;t.queueOn=[];const s=n||t.config?.id||"unknown";for(const{type:n,data:r}of o){if(Ce(n)&&!Ae(e,t,n))continue;const o=t.on;let i=!1;await(0,O.tryCatchAsync)(()=>we(Promise.resolve(o(n,r)),me,`Source "${s}" on(${n}) did not settle within 10000ms`),t=>{if(t instanceof O.FatalError)throw t;t instanceof ye?i=!0:e.status.failed++,e.logger.scope("source").error("source on flush failed",{sourceId:s,type:n,...Z(t)})})(),Ce(n)&&!i&&De(e,t,n)}}function ke(e){return Boolean(e.config.init)&&!e.config.require?.length}async function Se(e,t,n){const{code:o,config:s={},env:r={},primary:i,next:a,before:c,cache:d,terminus:u}=n,l=s.state??n.state,p=l?(0,O.compileState)(l):void 0,f=d,g=f?(0,O.compileCache)({...f,stop:f.stop??!0}):void 0,h=u??e.push,m=Boolean(u),v=async(n,o,r)=>{if(m)return h(n);let i;const d="string"==typeof n.id&&""!==n.id?n:{...n,id:(0,O.getSpanId)()};let u=[{event:d,ingest:r.ingest}];if(void 0!==c){const n=`source.${t}.before`,o=await ge(e,e.transformers||{},c,d,r.ingest,r.respond,n);if(0===o.copies.length)return B(e,d,r.ingest,o.droppedBy,n),qt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(r.respond=o.respond),{ok:!0};o.respond&&(r.respond=o.respond),u=o.copies}if(g){const t=te(g,e);if(t){const n=(0,O.createMappingRoot)(r.ingest),o=await(0,O.checkCache)(g,t,n);if(o){if("HIT"===o.status&&void 0!==o.value&&g.stop){let t=o.value;return o.rule.update&&(t=await(0,O.applyUpdate)(t,o.rule.update,{...n,cache:{status:"HIT"}},e)),r.respond?.(t),{ok:!0}}if("MISS"===o.status&&g.stop&&r.respond){const s=r.respond,a=o.rule.update,c={...n,cache:{status:"MISS"}},d=o.key,u=o.rule.ttl,l=n=>{(0,O.storeCache)(t,d,n,u),a?i=(async()=>{const t=await(0,O.applyUpdate)(n,a,c,e);s(t)})():s(n)};r.respond=l}"MISS"!==o.status||g.stop||(0,O.storeCache)(t,o.key,!0,o.rule.ttl)}}}p&&p.length>0&&(u=await Promise.all(u.map(async t=>({event:await(0,O.applyState)(p,t=>ne(t,e),t.event,e,t.ingest),ingest:t.ingest}))));let l={ok:!0};for(const e of u)l=await h(e.event,{...o,id:t,ingest:e.ingest,respond:r.respond,mapping:s,preChain:a});return i&&await i,l},y=async n=>{const o=(0,O.createIngest)(t),r=(0,O.parseTraceparent)((0,O.isScope)(n)?n?.headers?.traceparent:void 0);if(r&&(o._meta.trace=r.trace,o._meta.parentEventId=r.parentSpan),!s.ingest||void 0===n)return o;const i=await(0,O.getMappingValue)(n,s.ingest,{collector:e});return{...o,...i,_meta:o._meta}},w=e.logger.scope("source").scope(t),b={...r,push:async(e,n={})=>{const o={ingest:(0,O.createIngest)(t),respond:void 0};return v(e,n,o)},command:e.command,sources:e.sources,elb:e.elb,logger:w},k={collector:e,logger:w,id:t,config:s,env:b,withScope:async(e,t,n)=>{const o={ingest:await y(e),respond:t};return n({...b,push:(e,t={})=>v(e,t,o),ingest:o.ingest,respond:o.respond})},reportError:ee(e,"source",t,w)},S=await(0,O.tryCatchAsync)(o,n=>{if(n instanceof O.FatalError)throw n;e.status.failed++,e.logger.scope("source").error("source factory failed",{sourceId:t,...Z(n)})})(k);if(!S)return;const I=S.type||"unknown",q=e.logger.scope(I).scope(t);return b.logger=q,i&&(S.config={...S.config,primary:i}),S}async function Ie(e){for(const[t,n]of Object.entries(e.sources)){if(ke(n))continue;const o=n.config.require;if(!o?.length)continue;const s=o.filter(t=>!Pe(e,t));s.length!==o.length&&(n.config.require=s,ke(n)&&await be(e,n,t))}for(const[t,n]of Object.entries(e.pending.destinations)){if(!e.pending.destinations[t]||e.destinations[t])continue;const o=n.config?.require;if(!o)continue;const s=o.filter(t=>!Pe(e,t));if(n.config&&(n.config.require=s),s.length>0)continue;delete e.pending.destinations[t];const r=Et(n);!1!==r.config.queue&&(r.queuePush=[...e.queue]),e.destinations[t]=r,await ct(e,r,t)}}function qe(e){if("object"!=typeof e||null===e)return!1;if(!("logger"in e))return!1;const t=e.logger;return"object"==typeof t&&null!==t&&"scope"in t&&"function"==typeof t.scope}var Ee=!1;function Oe(){Ee||(Ee=!0,"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn("walkerOS: ignored an on-dispatch call with a non-collector argument"))}function xe(e,t,n,o){if(n instanceof I.FatalError)throw n;e.logger.scope("on").error("on callback failed",{kind:t,...o,...Z(n)})}var je=[$.Consent,$.User,$.Globals,$.Custom];function Ce(e){return je.includes(e)}function Te(e,t){switch(t){case $.Consent:return Object.keys(e.consent).length>0;case $.User:return Object.keys(e.user).length>0;case $.Globals:return Object.keys(e.globals).length>0;case $.Custom:return Object.keys(e.custom).length>0;default:return!1}}function Pe(e,t){switch(t){case $.Consent:case $.User:case $.Globals:case $.Custom:return Te(e,t);case $.Run:case $.Ready:return!0===e.allowed;default:return e.seenEvents.has(String(t))}}function Me(e,t){return e.cellVersion?.[String(t)]??0}function De(e,t,n){let o=e.delivery.get(t);o||(o={},e.delivery.set(t,o)),o[String(n)]=Me(e,n)}function Ae(e,t,n){return e.allowed&&Me(e,n)>function(e,t,n){const o=e.delivery.get(t),s=o?.[String(n)];return void 0===s?-1:s}(e,t,n)}var ze=8;function $e(e){const t=e.cascade;if(t&&!_e.has(t))return()=>{};const n=t||{counts:new WeakMap};e.cascade=n,_e.set(n,(_e.get(n)||0)+1);let o=!1;return()=>{if(o)return;o=!0;const t=(_e.get(n)||1)-1;t>0?_e.set(n,t):(_e.delete(n),e.cascade===n&&(e.cascade=void 0))}}var _e=new WeakMap;function Re(e,t,n){const o=e.cascade;if(!o)return!0;let s=o.counts.get(t);s||(s={},o.counts.set(t,s));const r=String(n),i=(s[r]||0)+1;return s[r]=i,i<=ze||(i===ze+1&&e.logger.error("state delivery did not converge",{type:r}),!1)}function Be(e,t){return{collector:e,logger:e.logger.scope("on").scope(String(t))}}async function He(e,t,n,o,s){const r=t.on;if(!r)return!0;const i=Ce(o);if(i&&(Ge.get(t)||We.has(t)))return Ye(e,t,o),Ge.get(t)||Ne.add(t),!1;const a=i?Me(e,o):0,c=i&&function(e,t,n,o){if(Ve.get(t)?.has(String(n)))return!0;const s=e.delivery?.get(t)?.[String(n)];return void 0===s||s<o-1}(e,t,o,a)?nt(e,o):s,d=t.type||"unknown",u=e.logger.scope(d).scope("on").scope(o),l={collector:e,logger:u,id:n,config:t.config,data:c,env:Ot(t.env,t.config.env),reportError:ee(e,"destination",n,u,t)};i&&(Xe(t,o),function(e,t,n){let o=Fe.get(e);o||(o={},Fe.set(e,o));const s=String(t),r=o[s];(void 0===r||r<n)&&(o[s]=n)}(t,o,a),We.add(t));const p=ve(t.config.timeout);let f=Promise.resolve(),g=!0,h=!1,m=!0;try{await(0,q.tryCatchAsync)(()=>(f=Promise.resolve(r(o,l)),we(f,p,`Destination "${n}" on(${o}) did not settle within ${p}ms`)),t=>{g=!1,t instanceof ye&&(h=!0),xe(e,"destination",t,{destId:n,type:o})})(),m=!1}finally{if(i){We.delete(t),m&&Ne.delete(t);const s=Ve.get(t);g?(et(e,t,o,a),s?.delete(String(o))):Ye(e,t,o),h?function(e,t,n,o,s,r,i){Ge.set(t,(Ge.get(t)||0)+1);const a=()=>{const r=(Ge.get(t)||0)-1;r>0?Ge.set(t,r):Ge.delete(t);const a=Ve.get(t);var c,d,u,l;a?a.add(String(o)):Ve.set(t,new Set([String(o)])),Le(t,o,s),Ze(e,t),i.debug("late settle after timeout"),Ne.delete(t),e.allowed&&e.destinations[n]===t&&(c=e,d=t,u=n,l=i,(0,q.tryCatchAsync)(async()=>{await ct(c,d,u),!Qe(d)&&d.queuePush?.length&&await wt(c,void 0,{},{[u]:d})},e=>{l.error("state recovery failed",Z(e))})())};r.then(a,a)}(e,t,n,o,a,f,u):(Le(t,o,a),Ze(e,t))}}return i&&!h&&Ne.delete(t)&&await ct(e,t,n),g}var Ge=new WeakMap,We=new WeakSet,Ne=new WeakSet,Ke=new WeakMap;function Qe(e){return Ke.get(e)}var Ue=new WeakMap,Fe=new WeakMap;function Le(e,t,n){const o=Fe.get(e);o&&o[String(t)]===n&&delete o[String(t)]}var Ve=new WeakMap,Je=new WeakMap;function Ye(e,t,n){!function(e,t,n){const o=e.delivery?.get(t);o&&delete o[String(n)]}(e,t,n);const o=Ve.get(t);o?o.add(String(n)):Ve.set(t,new Set([String(n)])),Ke.set(t,{type:n,since:Date.now()})}function Xe(e,t){Ue.set(e,(Ue.get(e)||0)+1),Ke.set(e,{type:t,since:Date.now()})}function Ze(e,t){const n=(Ue.get(t)||0)-1;n>0?Ue.set(t,n):Ue.delete(t),function(e,t){if(!Ke.has(t))return;if(Ue.get(t))return;if(Ve.get(t)?.size)return;je.some(n=>Te(e,n)&&Ae(e,t,n))||Ke.delete(t)}(e,t)}function et(e,t,n,o){let s=e.delivery.get(t);s||(s={},e.delivery.set(t,s));const r=String(n),i=s[r];(void 0===i||i<o)&&(s[r]=o)}function tt(e,t,n,o){if(!qe(e))return void Oe();const s=nt(e,t,o);if(n.length)switch(t){case $.Consent:!function(e,t,n){const o=n||e.consent,s=Be(e,$.Consent);t.forEach(t=>{Ae(e,t,$.Consent)&&Re(e,t,$.Consent)&&(Object.keys(o).filter(e=>e in t).forEach(n=>{(0,q.tryCatch)(t[n],t=>xe(e,"consent",t,{key:n}))(o,s)}),De(e,t,$.Consent))})}(e,n,o);break;case $.Ready:!function(e,t){if(!e.allowed)return;const n=Be(e,$.Ready);t.forEach(t=>{(0,q.tryCatch)(t,t=>xe(e,"ready",t))(void 0,n)})}(e,n);break;case $.Run:!function(e,t){if(!e.allowed)return;const n=Be(e,$.Run);t.forEach(t=>{(0,q.tryCatch)(t,t=>xe(e,"run",t))(void 0,n)})}(e,n);break;case $.Session:!function(e,t){if(!e.session)return;const n=Be(e,$.Session);t.forEach(t=>{(0,q.tryCatch)(t,t=>xe(e,"session",t))(e.session,n)})}(e,n);break;default:{const o=Be(e,t),r=Ce(t);n.forEach(n=>{"function"==typeof n&&(r&&!Ae(e,n,t)||r&&!Re(e,n,t)||((0,q.tryCatch)(n,n=>xe(e,"generic",n,{type:t}))(s,o),r&&De(e,n,t)))});break}}}function nt(e,t,n){switch(t){case $.Consent:return n||e.consent;case $.Session:return e.session;case $.User:return n||e.user;case $.Custom:return n||e.custom;case $.Globals:return n||e.globals;case $.Config:return n||e.config;default:return}}async function ot(e,t,n,o,s){if(!t.on)return!1;if(Ce(o)&&!Ae(e,t,o))return!1;if(Ce(o)&&!Re(e,t,o))return!1;const r=Ce(o);if(r&&st.has(t))return rt.add(t),!1;const i=r?Me(e,o):0;r&&st.add(t);const a=t.on;let c,d=Promise.resolve(),u=!1;try{c=await(0,q.tryCatchAsync)(()=>(d=Promise.resolve(a(o,s)),we(d,me,`Source "${n}" on(${o}) did not settle within 10000ms`)),t=>{t instanceof ye&&(u=!0),xe(e,"source",t,{sourceId:n,type:o})})()}finally{r&&!u&&st.delete(t)}if(r)if(u){const o=()=>{st.delete(t),rt.delete(t),e.allowed&&e.sources[n]===t&&(0,q.tryCatchAsync)(()=>it(e,t,n),t=>{e.logger.scope("on").error("state recovery failed",Z(t))})()};d.then(o,o)}else et(e,t,o,i),rt.delete(t)&&await it(e,t,n);return!1===c}var st=new WeakSet,rt=new WeakSet;async function it(e,t,n){const o=$e(e);try{for(const o of je)await ot(e,t,n,o,nt(e,o))}finally{o()}}async function at(e,t,n,o,s){if(!t.on)return;const r=Ce(o);if(r&&!Ae(e,t,o))return;const i=Fe.get(t)?.[String(o)];if(r&&void 0!==i&&i>=Me(e,o))return;if(r&&!Re(e,t,o)){if(t.config.init)return void Ye(e,t,o);const n=t.queueOn=t.queueOn||[],s={type:o,data:nt(e,o)},r=n[n.length-1];return r&&r.type===o?n[n.length-1]=s:n.push(s),De(e,t,o),void Ve.get(t)?.delete(String(o))}const a=Je.get(t);if(!t.config.init||a)return t.queueOn=t.queueOn||[],t.queueOn.push({type:o,data:s}),void(r&&(De(e,t,o),a&&!a.held&&(Xe(t,o),a.held=!0)));await He(e,t,n,o,s)}async function ct(e,t,n){if(!t.on)return;const o=$e(e);try{for(const o of je)(Te(e,o)||Ve.get(t)?.has(String(o)))&&await at(e,t,n,o,nt(e,o))}finally{o()}}function dt(e){return(Ue.get(e)||0)>0}function ut(e,t,n){return n.catch(()=>{}),{id:e,destination:t,done:n}}var lt=1e3,pt=1e3,ft=3e4,gt=Object.freeze({batched:!0});function ht(e){return e===gt}var mt=" batch-all";function vt(e){return void 0===e?{}:"number"==typeof e?{wait:e}:{wait:e.wait,size:e.size,age:e.age}}function yt(e){for(const t of e)Qe(t.destination)&&(t.drain=!0)}async function wt(e,t,n={},o){if(!e.allowed)return qt({ok:!1});if(!t)return bt(e,void 0,n,o);const s=await async function(e,t,n={}){const o=n.ingest??(0,w.createIngest)(n.id||"unknown"),s=e.config.next;if(void 0===s)return{copies:[{event:t,ingest:o}],respond:n.respond};const r=await ge(e,e.transformers||{},s,t,o,n.respond,At),i=r.respond??n.respond;return 0===r.copies.length?(e.logger.debug("Event dropped by collector.next"+(r.droppedBy?` (${r.droppedBy})`:"")),B(e,t,o,r.droppedBy,At),{copies:[],respond:i,dropped:!0}):r.stopped?{copies:[],respond:i}:{copies:r.copies.map(t=>({event:Mt(e,t.event,t.ingest),ingest:t.ingest})),respond:i}}(e,t,n);if(0===s.copies.length)return qt({ok:!0,...s.dropped?{dropped:!0}:{}});const r=[];for(const t of s.copies)r.push(await bt(e,t.event,{id:n.id,ingest:t.ingest,respond:s.respond},o));return r[0]}async function bt(e,t,n,o){const{user:s}=e;if(t){const n=e.config.queueMax;if(void 0===n)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const o=K(e.queue,t,{max:n});if(o.dropped>0){const t=X(e.status,(0,b.stepId)("collector"),"queue",o.dropped);U(e.queue,e.logger,"collector.queue overflow; oldest events dropped",{buffer:"queue",cap:n,droppedCount:t})}else e.queue.length<n&&F(e.queue);e.status.in++}o||(o=e.destinations);const r=e.transformers||{},i=await Promise.all(Object.entries(o||{}).map(async([o,i])=>{if(i.config.disabled)return{id:o,destination:i,skipped:!0};const a=i.config.id||o,c=(0,b.stepId)("destination",a),d=V(i.config.breaker);if(d&&function(e,t,n){const o=e[t];if(!o||"closed"===o.state)return!1;if("half-open"===o.state)return!0===o.probing;const s=L();return void 0!==o.openUntil&&s<o.openUntil||(o.state="half-open",o.probing=!0,o.openUntil=s+n,!1)}(e.status.breakers,c,d.cooldown))return{id:o,destination:i,skipped:!0};const u=t=>{d&&J(e.status.breakers,c,t,d.threshold,d.cooldown)},l=()=>{d&&function(e,t){const n=e[t];n&&"half-open"===n.state&&!0===n.probing&&(n.state="open",n.probing=!1)}(e.status.breakers,c)},p=t=>{if(!t.length)return;i.queuePush||(i.queuePush=[]);const n=i.queuePush,s=i.config.id||o,r={max:i.config.queueMax??lt};let a=0;for(const e of t)a+=K(n,e,r).dropped;if(a>0){Y(e,s);const t=X(e.status,(0,b.stepId)("destination",s),"queue",a);U(n,e.logger.scope(i.type||"unknown"),"destination.queuePush overflow; oldest events dropped",{buffer:"queuePush",destination:s,cap:r.max,droppedCount:t})}else n.length<r.max&&F(n)};var f,g;i.on&&i.config.init&&!Qe(i)&&!dt(i)&&(f=e,g=i,Ve.get(g)?.size||je.some(e=>Te(f,e)&&Ae(f,g,e)))&&await ct(e,i,o);const h=Qe(i);if(h&&!dt(i)&&Date.now()-h.since>=ve(i.config.timeout)&&await ct(e,i,o),Qe(i)){if(l(),!t)return{id:o,destination:i,skipped:!0};const e=[(0,b.clone)(t)];return p(e),{id:o,destination:i,queue:e}}let m=(i.queuePush||[]).map(t=>({...t,consent:e.consent}));i.queuePush=[],t&&m.push((0,b.clone)(t));const v=n.ingest?{...n.ingest,_meta:{...n.ingest._meta,path:[...n.ingest._meta.path]}}:(0,b.createIngest)("unknown");if(!m.length&&!i.queueOn?.length)return l(),{id:o,destination:i,skipped:!0};if(!m.length&&i.queueOn?.length){if(!(0,b.getGrantedConsent)(i.config.consent,e.consent))return l(),{id:o,destination:i,skipped:!0};let t=!1;try{t=await St(e,i,o,!0)}catch(t){e.status.failed++;const n=i.type||"unknown";e.logger.scope(n).error("destination init failed",{error:t instanceof Error?t.message:String(t)}),u("transport-failure")}if(Qe(i))return l(),{id:o,destination:i,skipped:!0};if(!t||!i.queuePush?.length)return l(),{id:o,destination:i,skipped:!t};m=i.queuePush.map(t=>({...t,consent:e.consent})),i.queuePush=[]}const y=t=>{const n=e.consent,s=[],r=t.filter(t=>{const r=(0,b.getGrantedConsent)(i.config.consent,n,t.consent);if(r)return t.consent=r,s.push(t),!1;const a=R(e,{stepId:(0,b.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),..._(t,v,e)});return a.skipReason="consent",n&&(a.consent={...n}),i.config.consent&&(a.meta={required:{...i.config.consent}}),(0,b.emitStep)(e,a),!0});return{allowed:s,skipped:r}},w=e.consent,{allowed:k,skipped:S}=y(m);if(p(S),!k.length)return l(),{id:o,destination:i,queue:m};const I=new Set(i.queuePush);let q=!1;try{q=await St(e,i,o,!0)}catch(g){e.status.failed++;const t=i.type||"unknown";e.logger.scope(t).error("destination init failed",{error:g instanceof Error?g.message:String(g)}),u("transport-failure")}if(!q)return l(),{id:o,destination:i,queue:m};if(Qe(i))return l(),p(k),{id:o,destination:i,queue:k};const E=[];if(e.consent!==w){const t=y(k.map(t=>({...t,consent:e.consent})));k.splice(0,k.length,...t.allowed),E.push(...t.skipped)}const O=i.queuePush||[],x=O.filter(e=>!I.has(e));if(x.length){i.queuePush=O.filter(e=>I.has(e));const t=y(x.map(t=>({...t,consent:e.consent})));k.push(...t.allowed),E.push(...t.skipped)}if(p(E),!k.length)return l(),E.length?{id:o,destination:i,queue:E}:{id:o,destination:i,skipped:!0};let j,C;i.dlq||(i.dlq=[]);const T=i.config.before,P=i.config.next,M=i.config?.cache,D=M?(0,b.compileCache)(M):void 0,A=D?te(D,e):void 0,z=i.config?.state?(0,b.compileState)(i.config.state):void 0,$=z?.filter(e=>"get"===e.mode),B=z?.filter(e=>"set"===e.mode);let H=0,G=0,W=0;return await Promise.all(k.map(async t=>{let a,c;if(t.user=(0,b.assign)(s,t.user),D?.stop&&A){const e=(0,b.createMappingRoot)(v,t),n=await(0,b.checkCache)(D,A,e);if("HIT"===n?.status)return t;"MISS"===n?.status&&(a={key:n.key,ttl:n.rule.ttl})}let d=[{event:t,ingest:v}],u=n.respond;if(void 0!==T){const s=`destination.${o}.before`,i=await ge(e,r,T,t,v,n.respond,s);if(0===i.copies.length){const n=R(e,{stepId:(0,b.stepId)("destination",o),stepType:"destination",phase:"skip",eventId:"string"==typeof t.id?t.id:"",now:Date.now(),..._(t,v,e)});return n.skipReason="dropped",n.meta={by:i.droppedBy??"route",at:s},(0,b.emitStep)(e,n),t}i.respond&&(u=i.respond),d=i.copies.map(e=>({event:e.event,ingest:e.ingest}))}const l=async(t,n,s)=>{let a=s,d=!1;if(D&&!D.stop&&A){const e=(0,b.createMappingRoot)(n,t??void 0),o=await(0,b.checkCache)(D,A,e);if("HIT"===o?.status)return!1;"MISS"===o?.status&&(a={key:o.key,ttl:o.rule.ttl},d=!0)}$&&$.length>0&&t&&(t=await(0,b.applyState)($,t=>ne(t,e),t,e,n));const l=Date.now();let p=!1;const f=await(0,b.tryCatchAsync)(It,n=>{const s=i.type||"unknown";e.logger.scope(s).error("Push failed",{...Z(n),event:t.name}),j=n,p=!0;const r=i.dlq,a=i.config.id||o,c={max:i.config.dlqMax??100},d=K(r,[t,n],c);if(d.dropped>0){Y(e,a);const t=X(e.status,(0,b.stepId)("destination",a),"dlq",d.dropped);U(r,e.logger.scope(i.type||"unknown"),"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:a,cap:c.max,droppedCount:t})}else r.length<c.max&&F(r)})(e,i,o,t,n,u);if(H+=Date.now()-l,a&&A&&void 0===i.config.mock&&(d?(0,b.storeCache)(A,a.key,f??!0,a.ttl):void 0===c&&(c=f??!0)),!p&&!ht(f)&&B&&B.length>0&&t&&(t=await(0,b.applyState)(B,t=>ne(t,e),t,e,n)),void 0===f||ht(f)||(C=f),ht(f)&&G++,!p&&P){void 0!==f&&(n._response=f);const s=await ge(e,r,P,t,n,u,`destination.${o}.next`);s.respond&&(u=s.respond)}return!0};for(const e of d)await l(e.event,e.ingest,a)&&W++;return a&&A&&void 0!==c&&void 0===i.config.mock&&(0,b.storeCache)(A,a.key,c,a.ttl),t})),{id:o,destination:i,error:j,response:C,totalDuration:H,batchedCount:G,allowedCount:k.length,pushedCount:W,canonicalId:a,breakerConfig:d}})),a={},c={},d={};for(const t of i){if(t.skipped)continue;const n=t.destination,o={type:n.type||"unknown",data:t.response};Y(e,t.id);const s=e.status.destinations[t.id],r=Date.now();s.queuePushSize=n.queuePush?.length??0,s.dlqSize=n.dlq?.length??0;const i=t.breakerConfig,u=t.canonicalId?(0,b.stepId)("destination",t.canonicalId):void 0,l=t=>{i&&u&&J(e.status.breakers,u,t,i.threshold,i.cooldown)};if(t.error)o.error=t.error,d[t.id]=o,s.failed++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.failed++,l("transport-failure");else if(t.queue&&t.queue.length)c[t.id]=o;else{const n=t.batchedCount??0,i=t.allowedCount??0,c=t.pushedCount??i;(Math.max(0,c-n)>0||0===i)&&(a[t.id]=o,s.count++,s.lastAt=r,s.duration+=t.totalDuration||0,e.status.out++,l("success"))}}return qt({event:t,...Object.keys(a).length&&{done:a},...Object.keys(c).length&&{queued:c},...Object.keys(d).length&&{failed:d}})}var kt=new WeakMap;async function St(e,t,n,o=!1){if(t.init&&!t.config.init){if(!o&&function(e){const t=e.config.consent;return!!t&&Object.keys(t).length>0}(t))return e.logger.scope(t.type||"unknown").debug("init blocked: consent gate not cleared"),!1;const s=kt.get(t);if(s)return s;const r=async function(e,t,n,o){const s=await async function(e,t,n,o){const s=t.type||"unknown",r=e.logger.scope(s),i={collector:e,logger:r,id:o,config:t.config,env:Ot(t.env,t.config.env),reportError:ee(e,"destination",o,r,t)};r.debug("init");const a=Date.now();let c;(0,b.emitStep)(e,R(e,{stepId:(0,b.stepId)("destination",o),stepType:"destination",phase:"init",eventId:"",now:a}));try{c=await(0,b.useHooks)(n,"DestinationInit",e.hooks,e.logger)(i)}catch(t){const n=Date.now(),s=R(e,{stepId:(0,b.stepId)("destination",o),stepType:"destination",phase:"error",eventId:"",now:n});throw s.durationMs=n-a,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,b.emitStep)(e,s),t}return!1!==c&&{...c||t.config,init:!0}}(e,t,n,o);if(!1===s)return!1;if(t.config=s,t.queueOn?.length){const n=$e(e);!function(e){const t=e.queueOn?.find(({type:e})=>Ce(e));t&&Xe(e,t.type),Je.set(e,{held:!!t})}(t);try{for(let n=t.queueOn?.shift();n;n=t.queueOn?.shift())await He(e,t,o,n.type,n.data)}catch(n){for(const{type:n}of t.queueOn||[])Ce(n)&&Ye(e,t,n);throw t.queueOn=[],n}finally{!function(e,t){const n=Je.get(t);Je.delete(t),n?.held&&Ze(e,t)}(e,t),n()}}return e.logger.scope(t.type||"unknown").debug("init done"),!0}(e,t,t.init,n);kt.set(t,r);try{return await r}finally{kt.delete(t)}}return!0}async function It(e,t,n,o,s,r){const{config:i}=t,a=await(0,b.processEventMapping)(o,i,e);if(a.ignore)return!1;const c=t.type||"unknown",d=e.logger.scope(c),u={collector:e,logger:d,id:n,config:i,data:a.data,rule:a.mapping,ingest:s,env:{...Ot(t.env,i.env),...r?{respond:r}:{}},reportError:ee(e,"destination",n,d,t)};if(void 0!==i.mock)return d.debug("mock",{event:a.event.name}),i.mock;const l=a.mapping,p=void 0!==l?.batch,f=p?a.mappingKey||"* *":mt;if((p||void 0!==i.batch)&&t.pushBatch&&void 0===i.mock){if(t.batches=t.batches||{},!t.batches[f]){const o={key:f,entries:[],events:[],data:[]},s=vt(l?.batch),r=vt(i.batch),a=s.wait??r.wait??ft,c=s.size??r.size??pt,u=s.age??r.age??ft,g=Ot(t.env,i.env),h=(0,b.debounce)(async()=>{const o=t.batches[f],s=o.batched;if(0===s.entries.length)return;const r={key:s.key,entries:s.entries,events:s.events,data:s.data};s.entries=[],s.events=[],s.data=[];const a=r.entries[0],c={collector:e,logger:d,id:n,config:i,data:void 0,rule:o.isDefault?void 0:a.rule,ingest:a.ingest,env:{...g,...a.respond?{respond:a.respond}:{}},reportError:ee(e,"destination",n,d,t)};d.debug("push batch",{events:r.entries.length});const u=t.config.id||n,l=Y(e,u),p=V(t.config.breaker),h=(0,b.stepId)("destination",u),m=t=>{p&&J(e.status.breakers,h,t,p.threshold,p.cooldown)},v=Date.now(),y=new Map;let w,k=!1;const S=n=>{const o=t.dlq=t.dlq||[],s={max:t.config.dlqMax??100};let r=0;for(const e of n)r+=K(o,e,s).dropped;if(r>0){const t=X(e.status,(0,b.stepId)("destination",u),"dlq",r);U(o,d,"destination.dlq overflow; oldest entries dropped",{buffer:"dlq",destination:u,cap:s.max,droppedCount:t})}else o.length<s.max&&F(o);l.failed+=n.length,l.dlqSize=o.length,e.status.failed+=n.length};let I=r.entries.length;const q=ve(i.timeout),E=await(0,b.tryCatchAsync)((o,s)=>we(Promise.resolve((0,b.useHooks)(t.pushBatch,"DestinationPushBatch",e.hooks,e.logger)(o,s)),q,`Destination "${n}" batch delivery timed out after ${q}ms`),e=>{I=0,k=!0,w=e,S(r.entries.map(t=>[t.event,e])),m("transport-failure"),d.error("Push batch failed",{error:e instanceof Error?e.message:String(e),entries:r.entries.length})})(r,c);if((0,b.isObject)(O=E)&&Array.isArray(O.failed)&&E.failed.length>0){const e=[];for(const t of E.failed){const n=r.entries[t.index];if(!n||y.has(t.index))continue;const o=t.error??new Error(`Push batch entry ${t.index} failed (no per-row error provided)`);y.set(t.index,o),e.push([n.event,o])}if(e.length>0){S(e),I=Math.max(0,r.entries.length-e.length);const t=new Map;for(const[,n]of e){const e=n instanceof Error&&"code"in n&&"string"==typeof n.code?n.code:n instanceof Error?n.name:"Error",o=t.get(e);o?o.count++:t.set(e,{code:e,count:1,message:n instanceof Error?n.message:String(n)})}d.error("Push batch partial failure",{failed:e.length,delivered:I,entries:r.entries.length,causes:[...t.values()]})}}var O;const x=Date.now();r.entries.forEach((t,o)=>{const s=k||y.has(o),i=_(t.event,t.ingest,e),a=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:s?"error":"flush",eventId:"string"==typeof t.event.id?t.event.id:"",now:x,traceId:i.traceId,sourceId:i.sourceId,parentEventId:i.parentEventId});if(a.batch={size:r.entries.length,index:o},a.durationMs=x-v,s){const e=k?w:y.get(o);a.error=e instanceof Error?{name:e.name,message:e.message}:{message:String(e)}}(0,b.emitStep)(e,a)}),d.debug("push batch done"),l.inFlightBatch=Math.max(0,(l.inFlightBatch??0)-r.entries.length),I>0&&(l.count+=I,l.lastAt=Date.now(),e.status.out+=I,m("success"))},{wait:a,size:c,age:u});t.batches[f]={batched:o,isDefault:!p,batchFn:()=>{h()},flush:async()=>{await h.flush()}}}const c=t.batches[f];c.batched.entries.push({event:a.event,ingest:s,respond:r,rule:l,data:a.data}),c.batched.events.push(a.event),(0,b.isDefined)(a.data)&&c.batched.data.push(a.data);const u="string"==typeof a.event.id?a.event.id:"",g=_(o,s,e),h=Date.now(),m=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:"in",eventId:u,now:h,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});a.mappingKey&&(m.mappingKey=a.mappingKey),a.event.consent&&(m.consent={...a.event.consent}),m.inEvent=a.event,(0,b.emitStep)(e,m);const v=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:"out",eventId:u,now:h,traceId:g.traceId,sourceId:g.sourceId,parentEventId:g.parentEventId});a.mappingKey&&(v.mappingKey=a.mappingKey),v.outEvent=a.event,v.batch={size:c.batched.entries.length,index:c.batched.entries.length-1},(0,b.emitStep)(e,v);const y=t.config.id||n,w=Y(e,y);return w.inFlightBatch=(w.inFlightBatch??0)+1,c.batchFn(),gt}{let r;if(d.debug("push",{event:a.event.name}),"trace"===e.observeLevel?.()&&Array.isArray(t.calls)&&t.calls.length>0){const e=function(e){const{simulation:t,...n}=e,o={},s=new WeakMap;for(const[e,t]of Object.entries(n))o[e]="function"==typeof t?t:H(t,s,1);const r=(0,S.observeEnv)(o,t);return{wrappedEnv:r.env,calls:r.calls,unresolved:r.unresolved}}({...u.env,simulation:t.calls});u.env=e.wrappedEnv,r=e.calls,e.unresolved.length>0&&(e.wrappedEnv[b.OBSERVE_ENV_KEY]={paths:e.unresolved,record:(t,n)=>e.calls.push({fn:t,args:n,ts:Date.now()})})}const c="string"==typeof a.event.id?a.event.id:"",{traceId:l,sourceId:p,parentEventId:f}=_(o,s,e),g=Date.now(),h=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:"in",eventId:c,now:g,traceId:l,sourceId:p,parentEventId:f});a.mappingKey&&(h.mappingKey=a.mappingKey),a.event.consent&&(h.consent={...a.event.consent}),h.inEvent=a.event,(0,b.emitStep)(e,h);try{const o=ve(i.timeout),s=await we(Promise.resolve((0,b.useHooks)(t.push,"DestinationPush",e.hooks,e.logger)(a.event,u)),o,`Destination "${n}" delivery timed out after ${o}ms`),h=Date.now(),m=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:"out",eventId:c,now:h,traceId:l,sourceId:p,parentEventId:f});return m.durationMs=h-g,m.outEvent=a.event,r&&r.length>0&&(m.calls=N(r)),(0,b.isDefined)(s)&&(m.meta={...m.meta,response:s}),a.mappingKey&&(m.mappingKey=a.mappingKey),(0,b.emitStep)(e,m),d.debug("push done"),s}catch(t){const o=Date.now(),s=R(e,{stepId:(0,b.stepId)("destination",n),stepType:"destination",phase:"error",eventId:c,now:o,traceId:l,sourceId:p,parentEventId:f});throw s.durationMs=o-g,s.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},r&&r.length>0&&(s.calls=N(r)),a.mappingKey&&(s.mappingKey=a.mappingKey),(0,b.emitStep)(e,s),t}}}function qt(e){return{ok:!e?.failed,...e}}function Et(e){const{code:t,config:n={},env:o={},cache:s,state:r}=e,{config:i}=oe(e,"before"),{config:a}=oe({...e,config:i},"next"),c={...t.config,...n,...a};s&&(c.cache=s),void 0!==r&&void 0===c.state&&(c.state=r);const d=Ot(t.env,o);return{...t,config:c,env:d}}function Ot(e,t){return e||t?t?e&&(0,b.isObject)(e)&&(0,b.isObject)(t)?{...e,...t}:t:e:{}}async function xt(e,t,n){const o=Object.entries(e).map(async([e,o])=>{const s=o.destroy;if(!s)return;const r=o.type||"unknown",i=n.scope(r),a={id:e,config:o.config,env:o.env??{},logger:i};let c;try{await Promise.race([s(a),new Promise((n,o)=>{c=setTimeout(()=>o(new Error(`${t} '${e}' destroy timed out`)),5e3)})])}catch(n){i.error(`${t} '${e}' destroy failed: ${n}`)}finally{c&&clearTimeout(c)}});await Promise.allSettled(o)}function jt(e,t){e.stateVersion++,e.cellVersion[t]=e.stateVersion}async function Ct(e,t,n){let o,s,r=!1;const i=[],a=$e(e);try{return await async function(){switch(t){case $.Config:(0,C.isObject)(n)&&((0,j.assign)(e.config,n,{shallow:!1,merge:!1}),s=n,r=!0);break;case $.Consent:if((0,C.isObject)(n)){const{update:t}=function(e,t){const n={};return Object.entries(t).forEach(([e,t])=>{n[e]=!!t}),e.consent=(0,y.assign)(e.consent,n),{update:n}}(e,n);jt(e,$.Consent),s=t,r=!0}break;case $.Custom:(0,C.isObject)(n)&&(e.custom=(0,j.assign)(e.custom,n),jt(e,$.Custom),s=n,r=!0);break;case $.Destination:(0,C.isObject)(n)&&"code"in n&&(0,C.isObject)(n.code)&&(o=await async function(e,t){const{code:n,config:o={},env:s={},before:r,next:i,cache:a,state:c}=t;if(!(0,b.isFunction)(n.push))return qt({ok:!1,failed:{invalid:{type:"invalid",error:"Destination code must have a push method"}}});const d={...n.config,...o||{init:!1}};let u=r?{...d,before:r}:{...d};i&&(u={...u,next:i}),a&&(u={...u,cache:a}),void 0!==c&&void 0===u.state&&(u={...u,state:c});let l=u.id;if(!l)do{l=(0,b.getId)(5,"abcdefghijklmnopqrstuvwxyz")}while(e.destinations[l]||e.pending.destinations[l]);if(u.require?.length){e.pending.destinations[l]=t,await Ie(e);const n=e.destinations[l];return n?wt(e,void 0,{},{[l]:n}):qt({ok:!0})}const p={...n,config:u,env:Ot(n.env,s)};return e.destinations[l]=p,!1!==p.config.queue&&(p.queuePush=[...e.queue]),await ct(e,p,l),wt(e,void 0,{},{[l]:p})}(e,n));break;case $.Globals:(0,C.isObject)(n)&&(e.globals=(0,j.assign)(e.globals,n),jt(e,$.Globals),s=n,r=!0);break;case $.Hook:if((0,C.isObject)(n)&&(0,j.isString)(n.name)&&(0,j.isFunction)(n.fn)){const{name:t,fn:o}=n;e.hooks[t]=o,s=n,r=!0}break;case $.On:if((0,C.isObject)(n)&&(0,j.isString)(n.type)){const{type:t,rules:o}=n;await async function(e,t,n){if(!qe(e))return void Oe();const o=e.on,s=o[t]||[],r=(0,I.isArray)(n)?n:[n];r.forEach(e=>{s.push(e)}),o[t]=s,tt(e,t,r)}(e,t,o)}break;case $.Ready:r=!0;break;case $.Run:o=await async function(e,t,n){e.allowed=!0,e.timing=Date.now(),e.trace=(0,j.getTraceId)(),e.count=0,t&&(t.consent&&(e.consent=(0,j.assign)(e.consent,t.consent),jt(e,$.Consent)),t.user&&(e.user=(0,j.assign)(e.user,t.user),jt(e,$.User)),t.globals&&(e.globals=(0,j.assign)(e.config.globalsStatic||{},t.globals),jt(e,$.Globals)),t.custom&&(e.custom=(0,j.assign)(e.custom,t.custom),jt(e,$.Custom))),Object.values(e.destinations).forEach(e=>{e.queuePush=[]}),e.queue=[],e.round++,await Ie(e);const o=await async function(e){if(!qe(e))return Oe(),[];const t=[];for(const[n,o]of Object.entries(e.destinations)){if(!o.on)continue;const s=async()=>{for(const t of je)Te(e,t)&&await at(e,o,n,t,nt(e,t))};t.push(ut(n,o,s()))}for(const t of je){if(!Te(e,t))continue;const n=nt(e,t);tt(e,t,e.on[t]||[]),await Promise.all(Object.entries(e.sources).filter(([,e])=>ke(e)).map(([o,s])=>ot(e,s,o,t,n)))}return t}(e);let s=!0;const r={};if(e.preRunQueue.length){const t=e.preRunQueue.splice(0);e.logger.debug("replaying pre-run events",{count:t.length});for(const{event:n,options:o}of t){const t=await e.push(n,o);!1===t.ok&&(s=!1),t.failed&&Object.assign(r,t.failed)}}yt(o);const i=await wt(e);if(n.push(...o),s)return i;const a={...i.failed??{},...r};return{...i,ok:!1,...Object.keys(a).length>0?{failed:a}:{}}}(e,n,i),r=!0;break;case $.Session:r=!0;break;case $.Shutdown:e.hasShutdown||(e.hasShutdown=!0,await async function(e){const t=e.logger;await xt(e.sources,"source",t),await async function(e,t){const n=Object.entries(e).flatMap(([e,n])=>{const o=n.batches;if(!o)return[];const s=t.scope(n.type||"destination");return Object.values(o).map(async t=>{let n;try{await Promise.race([t.flush(),new Promise((t,o)=>{n=setTimeout(()=>o(new Error(`destination '${e}' batch flush timed out`)),5e3)})])}catch(t){s.error(`destination '${e}' batch flush failed: ${t}`)}finally{n&&clearTimeout(n)}})});await Promise.allSettled(n)}(e.destinations,t),await xt(e.destinations,"destination",t),await xt(e.transformers,"transformer",t),await xt(e.stores,"store",t)}(e));break;case $.User:(0,C.isObject)(n)&&((0,j.assign)(e.user,n,{shallow:!1}),jt(e,$.User),s=n,r=!0);break;default:return e.logger.warn("unknown command",{command:t}),qt({ok:!1})}if(r){const n=await async function(e,t,n,o){if(!qe(e))return Oe(),{ok:!0,deliveries:[]};e.seenEvents.add(String(t));let s=n||[];n||(s=e.on[t]||[]);const r=nt(e,t,o),i=[];for(const[n,o]of Object.entries(e.sources)){if(o.config.require?.length){const e=o.config.require.indexOf(t);-1!==e&&o.config.require.splice(e,1)}o.on&&(ke(o)?i.push(ot(e,o,n,t,r)):(o.queueOn=o.queueOn||[],o.queueOn.push({type:t,data:r})))}const a=[];for(const[n,o]of Object.entries(e.destinations))o.on&&a.push(ut(n,o,at(e,o,n,t,r)));let c=!1;i.length&&(c=(await Promise.all(i)).some(Boolean));for(const[t,n]of Object.entries(e.sources))ke(n)&&n.queueOn?.length&&await be(e,n,t);const d=Object.values(e.sources).some(e=>!ke(e)&&e.config.require?.length);return(Object.keys(e.pending.destinations).length>0||d)&&await Ie(e),tt(e,t,s,o),{ok:!c,deliveries:a}}(e,t,void 0,s);i.push(...n.deliveries),yt(n.deliveries);const r=function(e,t){if(!t.length)return e;const n={...e.done??{}},o={...e.queued??{}},s={...e.failed??{}};for(const e of t){for(const[t,s]of Object.entries(e.done??{}))n[t]=s,delete o[t];for(const[t,n]of Object.entries(e.failed??{}))s[t]=n,delete o[t];Object.assign(o,e.queued??{})}const r={...e,ok:e.ok&&t.every(e=>e.ok)};return delete r.done,delete r.queued,delete r.failed,Object.keys(n).length&&(r.done=n),Object.keys(o).length&&(r.queued=o),Object.keys(s).length&&(r.failed=s),r}(await wt(e),await async function(e,t){return(await Promise.all(t.map(async({id:t,destination:n,done:o,drain:s})=>{if(await o,s&&e.allowed&&!Qe(n)&&n.queuePush?.length&&e.destinations[t]===n)return wt(e,void 0,{},{[t]:n})}))).filter(b.isDefined)}(e,i));if(o&&!1===o.ok){const e={...r.failed??{},...o.failed??{}};o={...r,ok:!1,...Object.keys(e).length>0?{failed:e}:{}}}else o=r}return o||qt({ok:!0})}()}finally{a()}}function Tt(e,t){return{timing:Math.round((Date.now()-e.timing)/10)/100,source:{type:"collector",schema:"4"},...t}}function Pt(e,t,n){return Dt(e,t,n,{globals:e.globals,user:e.user,consent:e.consent})}function Mt(e,t,n){return Dt(e,Tt(e,t),n,{globals:{},user:{},consent:{}})}function Dt(e,t,n,o){const s=t.name;if("string"!=typeof s)throw new j.InvalidEventError(void 0===s?"Event name is required":"Event name is invalid");if(!s)throw new j.InvalidEventError("Event name is required");const[r,i]=s.split(" ");if(!r||!i)throw new j.InvalidEventError("Event name is invalid");const{timestamp:a=Date.now(),name:c=`${r} ${i}`,data:d={},context:u={},globals:l={},custom:p={},user:f=o.user,nested:g=[],consent:h=o.consent,id:m=(0,j.getSpanId)(),trigger:v="",entity:y=r,action:w=i,timing:b=0,source:k={type:"collector",schema:"4"}}=t,S=k??{type:"collector",schema:"4"},I=S.count??(e.count+=1),q=S.trace??n?._meta.trace??e.trace,E={...S,count:I};void 0!==q&&(E.trace=q);const O=e.name??S.platform??"default",x=e.release??"4.7.0";return E.release={...S.release,[O]:x},{name:c,data:d,context:u,globals:(0,j.assign)(o.globals,l),custom:p,user:f,nested:g,consent:h,id:m,trigger:v,entity:y,action:w,timestamp:a,timing:b,source:E}}var At="collector.next";function zt(e,t){const n=(0,M.useHooks)(async(n,o={})=>await(0,M.tryCatchAsync)(async()=>{if(!e.allowed){const t=e.config.queueMax;if(void 0===t)throw new Error("Collector.Config.queueMax is undefined; defaults must be seeded by collector()");const s=K(e.preRunQueue,{event:n,options:o},{max:t});if(s.dropped>0){const n=X(e.status,"collector.preRun","queue",s.dropped);U(e.preRunQueue,e.logger,"collector.preRunQueue overflow; oldest events dropped",{buffer:"queue",cap:t,droppedCount:n})}else e.preRunQueue.length<t&&F(e.preRunQueue);return e.logger.debug("event held until run",{name:n.name,dropped:s.dropped}),qt({ok:!0})}const s=Date.now(),{id:r,ingest:i,respond:a,mapping:c,preChain:d,include:u,exclude:l}=o;let p=a,f=n;const g=u||l?function(e,t,n){let o=e;return t&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>t.includes(e)))),n&&(o=Object.fromEntries(Object.entries(o).filter(([e])=>!n.includes(e)))),o}(e.destinations,u,l):void 0;let h=i??(0,M.createIngest)(r||"unknown");if(c){const t=await(0,M.processEventMapping)(f,c,e);if(t.ignore)return qt({ok:!0});if(c.consent&&!(0,M.getGrantedConsent)(c.consent,e.consent,t.event.consent))return qt({ok:!0});f=t.event}if(void 0!==d){const n=r?`source.${r}.next`:void 0,o=await ge(e,e.transformers||{},d,f,h,p,n);if(0===o.copies.length)return e.logger.debug("Event dropped by transformer chain"+(o.droppedBy?` (${o.droppedBy})`:"")),B(e,f,h,o.droppedBy,n??"collector.push.preChain"),qt({ok:!0,dropped:!0});if(o.stopped)return o.respond&&(p=o.respond),qt({ok:!0});if(o.respond&&(p=o.respond),o.copies.length>1){const n=await Promise.all(o.copies.map(async n=>{const o=Pt(e,t(n.event),n.ingest);return wt(e,o,{id:r,ingest:n.ingest,respond:p},g)}));if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count+=o.copies.length,t.lastAt=Date.now(),t.duration+=Date.now()-s}return n[0]??qt({ok:!0})}f=o.copies[0].event,h=o.copies[0].ingest}const m=function(e,t,n){return Pt(e,Tt(e,t),n)}(e,f,h),v=await wt(e,m,{id:r,ingest:h,respond:p},g);if(r){e.status.sources[r]||(e.status.sources[r]={count:0,duration:0});const t=e.status.sources[r];t.count++,t.lastAt=Date.now(),t.duration+=Date.now()-s}return v},t=>{if(t instanceof M.FatalError)throw t;if(t instanceof M.InvalidEventError){const n=o.id;if(n){e.status.sources[n]||(e.status.sources[n]={count:0,duration:0});const t=e.status.sources[n];t.rejected=(t.rejected??0)+1}return e.logger.warn("invalid event rejected",{error:t.message}),qt({ok:!1,invalid:!0,error:t.message})}return e.status.failed++,e.logger.error("push failed",{...Z(t),event:n.name}),qt({ok:!1})})(),"Push",e.hooks,e.logger);return async(t,o)=>{const s="string"==typeof t.id&&""!==t.id?t:{...t,id:(0,M.getSpanId)()},r="string"==typeof s.id?s.id:"",{traceId:i,sourceId:a,parentEventId:c}=_(s,o?.ingest,e),d=Date.now(),u=R(e,{stepId:"collector.push",stepType:"collector",phase:"in",eventId:r,now:d,traceId:i,sourceId:a,parentEventId:c});u.inEvent=s,(0,M.emitStep)(e,u);try{const t=await n(s,o),u=Date.now(),l=R(e,{stepId:"collector.push",stepType:"collector",phase:"out",eventId:r,now:u,traceId:i,sourceId:a,parentEventId:c});return l.durationMs=u-d,l.outEvent=t,(0,M.emitStep)(e,l),t}catch(t){const n=Date.now(),o=R(e,{stepId:"collector.push",stepType:"collector",phase:"error",eventId:r,now:n,traceId:i,sourceId:a,parentEventId:c});throw o.durationMs=n-d,o.error=t instanceof Error?{name:t.name,message:t.message}:{message:String(t)},(0,M.emitStep)(e,o),t}}}function $t(e={}){const t=e.maxEntries??1e4,n=e.lowWaterMark??.8,o=e.sweepIntervalMs??6e4,s=Math.floor(t*n),r=new Map,i={hits:0,misses:0,populates:0,writes:0,deletes:0,evictions_entries:0,evictions_ttl:0};let a;return o>0&&(a=setInterval(function(){const e=Date.now();let t=0;for(const[n,o]of r)void 0!==o.expires&&o.expires<=e&&(r.delete(n),t++);i.evictions_ttl+=t},o),a&&"function"==typeof a.unref&&a.unref()),{type:"memory",config:{},get(e){const t=r.get(e);if(t)return void 0!==t.expires&&t.expires<=Date.now()?(r.delete(e),i.evictions_ttl++,void i.misses++):(r.delete(e),r.set(e,t),i.hits++,t.value);i.misses++},set(e,n,o){const a=!r.has(e);a||r.delete(e),r.set(e,{value:n,expires:void 0!==o?Date.now()+o:void 0}),i.writes++,a&&i.populates++,r.size>t&&function(){if(r.size<=t)return;const e=r.size-s;let n=0;for(const t of r.keys()){if(n>=e)break;r.delete(t),n++}i.evictions_entries+=n}()},delete(e){r.delete(e)&&i.deletes++},get counters(){return{...i}},destroy(){void 0!==a&&(clearInterval(a),a=void 0),r.clear()}}}function _t(e,t){const{cacheConfig:n,cacheStore:o,namespace:s,logger:r,storeId:i,collector:a}=t,c=(e,t)=>{if(!a)return;const n=R(a,{stepId:`store.${i}`,stepType:"store",phase:"in",eventId:"",now:Date.now()});n.meta={op:"cache",cached:"hit"===t,status:t,key:e},(0,z.emitStep)(a,n)},d={hits:0,misses:0,populates:0,writes:0,deletes:0,inflight_dedups:0},u=n.rules.map(e=>({match:e.match?(0,z.compileMatcher)(e.match):()=>!0,ttl:e.ttl})),l=e=>`${s}:${e}`;function p(e,t){const n=void 0===t?{key:e}:{key:e,value:t};return u.find(e=>e.match(n))}const f=new Map;return{type:e.type,config:e.config,setup:e.setup,get counters(){return{...d}},async get(t){const n=l(t),s=await o.get(n),r=(0,z.readCacheEnvelope)(s);if(void 0!==r){if(!("expired"in r))return d.hits++,c(t,"hit"),r.value;try{await o.delete(n)}catch(e){g("delete",t,e)}}const i=f.get(n);if(i)return d.inflight_dedups++,c(t,"hit"),i;d.misses++,c(t,"miss");const a=(async()=>{try{const s=await e.get(t);if(void 0===s)return;const r=p(t,s);if(r)try{const e=1e3*r.ttl;await o.set(n,(0,z.wrapCacheEnvelope)(s,e),e),d.populates++}catch(e){g("set",t,e)}return s}finally{f.delete(n)}})();return f.set(n,a),a},async set(t,n,s){d.writes++,await e.set(t,n,s);const r=p(t,n);if(r)try{const e=1e3*r.ttl;await o.set(l(t),(0,z.wrapCacheEnvelope)(n,e),e)}catch(e){g("set",t,e)}},async delete(t){d.deletes++,await e.delete(t);try{await o.delete(l(t))}catch(e){g("delete",t,e)}}};function g(e,t,n){const o=`store-cache(${i}): cache ${e} failed for "${t}"; backing succeeded, continuing`;r?r.warn(o,Z(n)):console.warn(o,n)}}function Rt(e,t,n){const o=`store.${n}`,s=(0,A.useHooks)(t.get,"StoreGet",e.hooks,e.logger),r=(0,A.useHooks)(t.set,"StoreSet",e.hooks,e.logger),i=(0,A.useHooks)(t.delete,"StoreDelete",e.hooks,e.logger);t.get=async t=>{const n=Date.now(),r=R(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});r.meta={op:"get",key:t},(0,A.emitStep)(e,r);try{const r=await s(t),i=Date.now(),a=R(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:i});return a.durationMs=i-n,a.meta={op:"get",key:t},(0,A.emitStep)(e,a),r}catch(s){const r=Date.now(),i=R(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw i.durationMs=r-n,i.meta={op:"get",key:t},i.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},(0,A.emitStep)(e,i),s}},t.set=async(t,n,s)=>{const i=Date.now(),a=R(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:i});a.meta={op:"set",key:t},(0,A.emitStep)(e,a);try{await r(t,n,s);const a=Date.now(),c=R(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:a});c.durationMs=a-i,c.meta={op:"set",key:t},(0,A.emitStep)(e,c)}catch(n){const s=Date.now(),r=R(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:s});throw r.durationMs=s-i,r.meta={op:"set",key:t},r.error=n instanceof Error?{name:n.name,message:n.message}:{message:String(n)},(0,A.emitStep)(e,r),n}},t.delete=async t=>{const n=Date.now(),s=R(e,{stepId:o,stepType:"store",phase:"in",eventId:"",now:n});s.meta={op:"delete",key:t},(0,A.emitStep)(e,s);try{await i(t);const s=Date.now(),r=R(e,{stepId:o,stepType:"store",phase:"out",eventId:"",now:s});r.durationMs=s-n,r.meta={op:"delete",key:t},(0,A.emitStep)(e,r)}catch(s){const r=Date.now(),i=R(e,{stepId:o,stepType:"store",phase:"error",eventId:"",now:r});throw i.durationMs=r-n,i.meta={op:"delete",key:t},i.error=s instanceof Error?{name:s.name,message:s.message}:{message:String(s)},(0,A.emitStep)(e,i),s}}}async function Bt(e){const t=(0,P.assign)({globalsStatic:{},sessionStatic:{},run:!0,queueMax:1e3},e,{merge:!1,extend:!1}),n={level:e.logger?.level,handler:e.logger?.handler},o=(0,P.createLogger)(n),s={...t.globalsStatic,...e.globals},r={allowed:!1,config:t,consent:e.consent||{},custom:e.custom||{},destinations:{},transformers:{},stores:{},globals:s,hooks:e.hooks||{},observers:new Set,logger:o,on:{},queue:[],preRunQueue:[],round:0,count:0,stateVersion:0,cellVersion:{},delivery:new WeakMap,session:void 0,status:{startedAt:Date.now(),in:0,out:0,failed:0,sources:{},destinations:{},dropped:{},connectionErrors:{},breakers:{}},timing:Date.now(),user:e.user||{},sources:{},pending:{destinations:{}},hasShutdown:!1,seenEvents:new Set,push:void 0,command:void 0,elb:void 0};var i,a;void 0!==e.name&&(r.name=e.name),void 0!==e.release&&(r.release=e.release),void 0!==e.next&&(t.next=e.next),r.push=zt(r,e=>Tt(r,e)),r.command=(i=r,a=Ct,(0,D.useHooks)(async(e,t,n)=>await(0,D.tryCatchAsync)(async()=>await a(i,e,t,n),t=>{if(t instanceof D.FatalError)throw t;return i.status.failed++,i.logger.error("command failed",{...Z(t),command:e}),qt({ok:!1})})(),"Command",i.hooks,i.logger)),r.elb=function(e){return async(t,n,o,s,r)=>{if("string"==typeof t&&t.startsWith("walker ")){const o=t.replace("walker ","");return e.command(o,n)}let i;if("string"==typeof t)i={name:t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data=n);else{if(!t||"object"!=typeof t||Array.isArray(t))return qt({ok:!1});i={...t},n&&"object"==typeof n&&!Array.isArray(n)&&(i.data={...i.data||{},...n})}return o&&"object"==typeof o&&(i.context=o),s&&Array.isArray(s)&&(i.nested=s),r&&"object"==typeof r&&(i.custom=r),e.push(i)}}(r);const c=e.stores||{};return r.stores=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,config:r={},env:i={}}=s,a=e.logger.scope("store").scope(o),c={collector:e,logger:a,id:o,config:r,env:i,reportError:ee(e,"store",o,a)},d=await t(c);n[o]=d}const o=t,s=function(e){const t={};for(const n of Object.keys(e))t[n]="WHITE";const n=[],o=[];function s(r){const i=t[r];if("BLACK"===i)return;if("GRAY"===i){const e=o.indexOf(r),t=o.slice(-1===e?0:e).concat(r).join(" -> ");throw new Error(`Cycle in cache.store chain: ${t}`)}t[r]="GRAY",o.push(r);const a=e[r].cache?.store;if(void 0!==a){if(!(a in e))throw new Error(`Store "${r}" cache.store references "${a}", which is not declared in flow.stores`);s(a)}o.pop(),t[r]="BLACK",n.push(r)}for(const n of Object.keys(e))"WHITE"===t[n]&&s(n);return n}(o);for(const t of s){const s=o[t].cache;if(!s)continue;let r,i;void 0!==s.store?(r=n[s.store],i=s.store):(n.__cache||(n.__cache=$t()),r=n.__cache,i="__cache");const a=s.namespace??t;e.logger.scope("store-cache").scope(t).info(`store "${t}" caches with namespace "${a}:" via ${i}`),n[t]=_t(n[t],{storeId:t,cacheConfig:s,cacheStore:r,namespace:a,logger:e.logger.scope("store-cache").scope(t),collector:e})}for(const[t,o]of Object.entries(n))"__cache"!==t&&Rt(e,o,t);return n}(r,c),function(e,t,n){const o=new Map;for(const[n,s]of Object.entries(e))t[n]&&o.set(s,t[n]);if(0!==o.size)for(const e of[n.transformers,n.destinations,n.sources])if(e)for(const t of Object.values(e))s(t.env);function s(e){if(e)for(const[t,n]of Object.entries(e))if("object"==typeof n&&null!==n){const s=o.get(n);s&&(e[t]=s)}}}(c,r.stores,e),r.stores.__cache||(r.stores.__cache=$t()),r.destinations=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t))s.config?.require?.length?e.pending.destinations[o]=s:n[o]=Et(s);return n}(r,e.destinations||{}),r.transformers=await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const{code:t,env:r={}}=s,i=(0,x.validateStepEntry)(s,"Transformer");if(!i.ok){e.logger.warn(`Transformer ${o} invalid (${i.code}): ${i.reason}. Skipping.`);continue}const{config:a}=oe(s,"before"),{config:c}=oe({...s,config:a},"next"),d=Object.keys(r).length>0?{...c,env:r}:c,{cache:u}=s,l=u?{...d,cache:u}:d,p=s.config?.state??s.state,f=void 0!==p&&void 0===l.state?{...l,state:p}:l,g=e.logger.scope("transformer").scope(o),h={collector:e,logger:g,id:o,ingest:(0,x.createIngest)(o),config:f,env:r,reportError:ee(e,"transformer",o,g)},m=t??(e=>{const t=s.mapping;if(t){const n=[];if(void 0!==t.data&&n.push("data"),t.mapping)for(const[e,o]of Object.entries(t.mapping))if("object"==typeof o&&null!==o)for(const[t,s]of Object.entries(o)){if("object"!=typeof s||null===s)continue;const o=s;void 0!==o.data&&n.push(`mapping[${e}][${t}].data`),void 0!==o.silent&&n.push(`mapping[${e}][${t}].silent`)}return n.length>0&&e.collector.logger.warn(`Transformer ${o}: \`${n.join(", ")}\` ignored at transformer position (only event-mutating fields apply).`),{type:"pass",config:e.config,push:async n=>{const o=await(0,x.processEventMapping)(n,t,e.collector);return!o.ignore&&{event:o.event}}}}return{type:"pass",config:e.config,push:e=>({event:e})}}),v=await m(h);void 0!==s.before&&void 0===v.config?.before&&(v.config={...v.config??{},before:s.before}),void 0!==s.next&&void 0===v.config?.next&&(v.config={...v.config??{},next:s.next}),void 0!==p&&void 0===v.config?.state&&(v.config={...v.config??{},state:p}),n[o]=v}return n}(r,e.transformers||{}),r}var Ht=globalThis;function Gt(e){try{const t=Ht.window;if(!t)return;t.localStorage.getItem(T.OBSERVE_STORAGE_KEY)===e&&t.localStorage.removeItem(T.OBSERVE_STORAGE_KEY)}catch{}}function Wt(e,t){return void 0===t?e:n=>e({...n,release:t})}async function Nt(e){e=e||{};const t=await Bt(e);(function(e,t){if(t.observers)for(const n of t.observers)e.observers.add(n);const n=t.observe;if(!n)return;const o=e.name??"default";if("binding"in n){const t=function(){const e=Ht.window,t=Ht.URLSearchParams;if(!e||!t)return null;try{const n=new t(e.location.search.replace(/^\?/,"")).getAll(T.OBSERVE_STORAGE_KEY);return n.length>0?n[n.length-1]??null:null}catch{return null}}(),s=t??function(){try{return Ht.window?.localStorage.getItem(T.OBSERVE_STORAGE_KEY)??null}catch{return null}}();if(!s)return;const r=(0,T.parseObserveCredential)(s);if(!r)return void(null===t?(e.logger.warn("observe: malformed stored credential cleared"),Gt(s)):e.logger.warn("observe: malformed credential ignored"));if(r.pb!==n.binding)return void e.logger.warn("observe: credential binding mismatch, credential ignored");let i;!function(e){try{Ht.window?.localStorage.setItem(T.OBSERVE_STORAGE_KEY,e)}catch{}}(s),null!==t&&function(){const e=Ht.window,t=Ht.URLSearchParams;if(e&&t)try{const n=e.location.href,o=n.indexOf("#"),s=o>=0?n.slice(o):"",r=o>=0?n.slice(0,o):n,i=r.indexOf("?"),a=i>=0?r.slice(0,i):r,c=new t(i>=0?r.slice(i+1):"");c.delete(T.OBSERVE_STORAGE_KEY);const d=c.toString();e.history.replaceState({},"",`${a}${d?`?${d}`:""}${s}`)}catch{}}();const a=(0,T.createBatchedPoster)({url:`${n.url}/ingest/${r.ses}`,token:r.secret,headers:{"X-Walkeros-Binding":n.binding},onStatus:t=>{401===t&&(Gt(s),i&&e.observers.delete(i))}});i=(0,T.createTelemetryObserver)(function(e,t){return void 0===t?e:n=>e({...n,flowId:t})}(Wt(a,e.release),n.flowId),{flowId:n.flowId??o,...void 0!==n.level?{level:n.level}:{},...void 0!==n.sample?{sample:n.sample}:{}}),e.observers.add(i);const c=n.level;return void(void 0!==c&&(e.observeLevel=()=>c))}if("off"===n.level)return;const s=n.level;void 0!==s&&(e.observeLevel=()=>s),e.observers.add((0,T.createTelemetryObserver)(Wt((0,T.createBatchedPoster)({url:`${n.url}/ingest/${n.sessionId}`,token:n.token}),e.release),{flowId:o,level:n.level,sample:n.sample}))})(t,e),await async function(e,t={}){const n={};for(const[o,s]of Object.entries(t)){const t=await Se(e,o,s);if(!t)continue;const r=s.config?.require;t.config={...t.config,init:!1,...r?{require:[...r]}:{}},n[o]=t}Object.assign(e.sources,n);for(const t of Object.keys(n)){const n=e.sources[t];let o=!1;n.init&&await(0,O.tryCatchAsync)(n.init.bind(n),n=>{if(n instanceof O.FatalError)throw n;o=!0,e.status.failed++,e.logger.scope("source").error("source init failed",{sourceId:t,...Z(n)})})(),o||(n.config.init=!0,ke(n)&&await be(e,n,t))}return await Ie(e),n}(t,e.sources||{});const{consent:n,user:o,globals:s,custom:r}=e;n&&await t.command("consent",n),o&&await t.command("user",o),s&&await t.command("globals",s),r&&await t.command("custom",r),t.config.run&&await t.command("run");let i=t.elb;const a=Object.values(t.sources),c=a.find(e=>e.config.primary);return c?i=c.push:a.length>0&&(i=a[0].push),{collector:t,elb:i}}var Kt=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Nt(e);t={collector:n.collector,elb:n.elb}}const o=function(e){for(const t of Object.values(e.sources||{}))if("lambda"===t.type)return t}(t.collector);if(!o)throw new Error("Lambda source not found in collector");const s={awsRequestId:`test-${Date.now()}`},r=o.push,i=await r(n,s);let a;try{a=JSON.parse(i.body||"{}")}catch{a=i.body}const c={};if(i.headers)for(const[e,t]of Object.entries(i.headers))void 0!==t&&(c[e]=String(t));return{statusCode:i.statusCode,body:a,headers:c}}}};function Qt(e){return async t=>{const n={...t};if(n.body&&"string"==typeof n.body){const e=JSON.parse(n.body);e.name&&!e.event&&(n.body=JSON.stringify({...e,event:e.name,name:void 0}))}return e.push(n,{awsRequestId:"test-req"})}}var Ut={};r(Ut,{createTrigger:()=>cn,env:()=>Ft,step:()=>tn});var Ft={};r(Ft,{moduleMockEnv:()=>Zt,push:()=>Xt,simulation:()=>en});var Lt=()=>{},Vt={error:Lt,warn:Lt,info:Lt,debug:Lt,throw:e=>{throw"string"==typeof e?new Error(e):e},json:Lt,scope:()=>Vt},Jt=()=>()=>Promise.resolve({ok:!0});function Yt(){return{get push(){return Jt()},get command(){return Jt()},get elb(){return Jt()},logger:Vt}}var Xt=Object.assign(Yt(),{AWS:{SQSClient:class{constructor(e){this.config=e}config;async send(e){return function(e){if(!("input"in e))return!1;const{input:t}=e;return"object"==typeof t&&null!==t&&"WaitTimeSeconds"in t}(e)&&await new Promise(e=>setTimeout(e,100)),{$metadata:{},QueueUrl:"https://sqs.eu-central-1.amazonaws.com/000000000000/walkeros-events",Attributes:{QueueArn:"arn:aws:sqs:eu-central-1:000000000000:walkeros-events"},Messages:[]}}destroy(){}}}}),Zt=Yt(),en=["call:AWS.SQSClient.send"],tn={};r(tn,{decoderText:()=>sn,malformedJson:()=>rn,orderComplete:()=>on,pageView:()=>nn});var nn={title:"Page view from SQS",description:"A standard SQS message body containing a walker elb event payload as JSON.",in:{MessageId:"m-1",Body:JSON.stringify({event:"page view",data:{title:"Documentation",url:"https://example.com/docs"}})},out:[["message.ack","m-1"]]},on={title:"Order complete from SQS",description:"Order complete event flowing through the long-poll loop.",in:{MessageId:"m-2",Body:JSON.stringify({event:"order complete",data:{id:"ORD-500",total:199.99,currency:"EUR"}})},out:[["message.ack","m-2"]]},sn={title:"Text decoder",description:'When decoder is "text", the body string flows under data.payload.',in:{MessageId:"m-3",Body:"raw text payload"},out:[["message.ack","m-3"]]},rn={title:"Malformed JSON nacks",description:"Default decoder is JSON. A malformed body throws DecoderError; the source nacks (skips DeleteMessage) so the message redelivers.",in:{MessageId:"m-4",Body:"{not json"},out:[["message.nack","m-4"]]};function an(e){if("object"!=typeof e||null===e)return!1;const t=e;return"sqs"===t.type&&"function"==typeof t.push}var cn=async e=>{let t;return{get flow(){return t},trigger:()=>async n=>{if(!t){const n=await Nt(e);t={collector:n.collector,elb:n.elb}}const o=function(e){for(const t of Object.values(e.sources??{}))if(an(t))return t}(t.collector);if(!o)throw new Error("sqs source not registered in collector, ensure it is configured in sources");const s={MessageId:n.MessageId,Body:n.Body,ReceiptHandle:n.ReceiptHandle,Attributes:n.Attributes,MessageAttributes:n.MessageAttributes},r=await o.push(s),i=[];return r&&"object"==typeof r&&(r.acked&&i.push(["message.ack",n.MessageId]),r.nacked&&i.push(["message.nack",n.MessageId])),i}}},dn=require("@walkeros/core/dev"),un=require("@walkeros/core/dev"),ln=require("@walkeros/core/dev"),pn=ln.z.enum(["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"]),fn=ln.z.union([ln.z.string(),ln.z.array(ln.z.string()),ln.z.literal("*")]),gn=ln.z.object({origin:fn.describe("Allowed origins (* for all, URL string, or array of URLs)").optional(),methods:ln.z.array(pn).describe("Allowed HTTP methods").optional(),headers:ln.z.array(ln.z.string()).describe("Allowed request headers").optional(),credentials:ln.z.boolean().describe("Allow credentials (cookies, authorization headers)").optional(),maxAge:ln.z.number().int().positive().describe("Preflight cache duration in seconds").optional()}),hn=un.z.object({cors:un.z.union([un.z.boolean(),gn]).describe("CORS configuration: false = disabled, true = allow all origins, object = custom configuration").default(!0),timeout:un.z.number().int().positive().max(9e5).describe("Request timeout in milliseconds (max: 900000 for Lambda)").default(3e4),enablePixelTracking:un.z.boolean().describe("Enable GET requests with 1x1 transparent GIF response for pixel tracking").default(!0),maxBatchSize:un.z.number().int().min(1).describe("Maximum number of events accepted in a single batch request").default(100),healthPath:un.z.string().describe("Health check endpoint path (e.g., /health)").default("/health")}),mn=(0,dn.zodToSchema)(hn),vn=require("@walkeros/core/dev"),yn=require("@walkeros/core/dev"),wn=yn.z.object({queueName:yn.z.string().min(1).describe("SQS queue short name (like walkeros-events). Required for both setup and runtime poll."),region:yn.z.string().describe("AWS region (like eu-central-1). Default: eu-central-1.").optional(),queueUrl:yn.z.string().url().describe("Optional pre-resolved queue URL. When set, init skips the GetQueueUrl lookup.").optional(),client:yn.z.any().describe("Pre-configured AWS SQSClient instance. Bypasses construction when supplied.").optional(),config:yn.z.any().describe("AWS SDK SQSClientConfig (credentials, endpoint overrides, retries).").optional(),decoder:yn.z.enum(["json","text","raw"]).describe("Decoder for the message body. json (default) parses JSON, text forwards UTF-8, raw forwards a Buffer.").optional(),maxMessages:yn.z.number().int().min(1).max(10).describe("SQS receive batch size. Cap 10. Default: 10.").optional(),waitTimeSeconds:yn.z.number().int().min(0).max(20).describe("Long-poll duration in seconds. Cap 20. Default: 20.").optional(),visibilityTimeout:yn.z.number().int().nonnegative().describe("Per-receive visibility timeout override. Default: queue-configured value.").optional(),shutdownTimeoutMs:yn.z.number().int().positive().describe("Graceful shutdown timeout in milliseconds. Default: 30000. After this window, destroy() force-closes.").optional(),onPushError:yn.z.enum(["nack","ack"]).describe("Behavior when forwarding to the collector throws. nack (default) skips DeleteMessage so the message redelivers; ack drops it.").optional()}),bn=require("@walkeros/core/dev"),kn=bn.z.record(bn.z.string(),bn.z.string()),Sn=bn.z.object({region:bn.z.string().min(1).describe("AWS region.").optional(),fifoQueue:bn.z.boolean().describe("FIFO queue with content-based deduplication. Auto-appends .fifo suffix to the queue name.").optional(),visibilityTimeoutSeconds:bn.z.number().int().nonnegative().describe("Visibility timeout in seconds. Default: 30.").optional(),messageRetentionSeconds:bn.z.number().int().positive().describe("Message retention period in seconds. Default: 345600 (4 days).").optional(),maximumMessageSize:bn.z.number().int().min(1024).max(262144).describe("Max message size in bytes. Default: 262144 (256 KB).").optional(),kmsMasterKeyId:bn.z.string().describe("KMS key alias or ID for at-rest encryption.").optional(),deadLetterQueue:bn.z.object({arn:bn.z.string().describe("ARN of an existing DLQ. Mutually exclusive with create: true.").optional(),create:bn.z.boolean().describe("Create a sibling DLQ named <queueName>-dlq. Default: false.").optional(),maxReceiveCount:bn.z.number().int().min(1).max(1e3).describe("Max receive count before message goes to DLQ. Default: 5.").optional()}).describe("Optional dead-letter queue.").optional(),tags:kn.describe("Tags applied to the queue (and inherited by an auto-created DLQ).").optional(),subscribeToSnsTopic:bn.z.object({topicArn:bn.z.string().min(1).describe("Topic ARN to subscribe to."),rawMessageDelivery:bn.z.boolean().describe("Deliver SNS messages without the SNS envelope.").optional(),filterPolicy:bn.z.record(bn.z.string(),bn.z.unknown()).describe("SNS filter policy applied at subscription level.").optional()}).describe("Optional SNS topic subscription. Creates the subscription and the matching queue policy.").optional()}),In=(0,vn.zodToSchema)(wn),qn=(0,vn.zodToSchema)(Sn),En={};r(En,{CorsOptionsSchema:()=>gn,CorsOrigin:()=>fn,HttpMethod:()=>pn,SettingsSchema:()=>hn,settings:()=>mn,sqsSettings:()=>In,sqsSetup:()=>qn});var On={sourceLambda:a,sourceSqs:Ut},xn={sourceLambda:{settings:mn},sourceSqs:{settings:In,setup:qn}};//# sourceMappingURL=dev.js.map