@snowplow/snowtype-core
Version:
A code generator for faster and type-safe Snowplow tracking code
562 lines (516 loc) • 272 kB
JavaScript
"use strict";var ql=Object.create;var G=Object.defineProperty;var Kl=Object.getOwnPropertyDescriptor;var Bl=Object.getOwnPropertyNames;var Ql=Object.getPrototypeOf,Yl=Object.prototype.hasOwnProperty;var E=(l,n)=>()=>(n||l((n={exports:{}}).exports,n),n.exports),zl=(l,n)=>{for(var r in n)G(l,r,{get:n[r],enumerable:!0})},Cn=(l,n,r,f)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Bl(n))!Yl.call(l,o)&&o!==r&&G(l,o,{get:()=>n[o],enumerable:!(f=Kl(n,o))||f.enumerable});return l};var w=(l,n,r)=>(r=l!=null?ql(Ql(l)):{},Cn(n||!l||!l.__esModule?G(r,"default",{value:l,enumerable:!0}):r,l)),Xl=l=>Cn(G({},"__esModule",{value:!0}),l);var el=E((va,ll)=>{"use strict";ll.exports={id:{language:"javascript",tracker:"@snowplow/browser-tracker"},1:function(l,n,r,f,o){return`/**
* Creates a Snowplow Event Specification entity.
*/
export function createEventSpecification(eventSpecification){
return {
schema:
'iglu:com.snowplowanalytics.snowplow/event_specification/jsonschema/1-0-3',
data: eventSpecification,
}
}
`},3:function(l,n,r,f,o){return`const ajv = new Ajv({ allErrors: true, verbose: true, strict: false });
addFormats(ajv);
const ERROR_CODES = {
SCHEMA_VALIDATION_ERROR: (schema) => ({
code: 100,
message: "Snowtype Schema Validation Error",
description: \`'There was passing of values that does not match the JSON Schema definition for \${schema}.'\`,
}),
CARDINALITY_RULES_ERROR: (schema) => ({
code: 200,
message: "Snowtype Entity Cardinality Rules Error",
description: \`\${schema} failed entity rules validation.\`,
}),
CARDINALITY_RULES_ERROR_NOT_PRESENT: (schema) => ({
code: 201,
message: "Snowtype Entity Cardinality Rules Error",
description: \`No \${schema} context detected while a rule is present.\`,
}),
};
function defaultViolationErrorHandler(errorMessage){
const msg = JSON.stringify(errorMessage, undefined, 4);
if (
typeof process !== "undefined" &&
typeof process.env === "object" &&
process.env.NODE_ENV === "test"
) {
throw new Error(JSON.stringify(errorMessage));
}
console.warn(msg);
};
let violationsHandler = defaultViolationErrorHandler;
export const snowtype = {
setOptions(options) {
violationsHandler = options.violationsHandler || violationsHandler;
},
};
function validateSchema(sdj, esId) {
let schemaToValidateWith = esId && schemasObject[esId] && schemasObject[esId][sdj.schema];
if(!schemaToValidateWith){
schemaToValidateWith = schemasObject[sdj.schema]
}
const valid = ajv.validate(schemaToValidateWith, sdj.data);
if (!valid && ajv.errors?.length) {
violationsHandler({
...ERROR_CODES.SCHEMA_VALIDATION_ERROR(sdj.schema),
errors: ajv.errors,
})
}
}
function between(lowerBound, upperBound) {
return (input) => input >= lowerBound && input <= upperBound;
}
function atLeast(lowerBound) {
return (input) => input >= lowerBound;
}
function compare({ minCardinality, maxCardinality }) {
if (
typeof minCardinality === "number" &&
typeof maxCardinality === "number"
) {
return between(minCardinality, maxCardinality);
}
if (typeof minCardinality === "number") {
return atLeast(minCardinality);
}
return () => true;
}
function check(cardinalityRule, input) {
const comparator = compare(cardinalityRule);
const isValid = comparator(input);
return isValid;
}
function validateEntityRules(
eventSpecId,
context
) {
const validationRules = entityRules[eventSpecId];
if (!validationRules) {
return;
}
if (!Array.isArray(context)) {
context = [];
}
const contextCounts = context.reduce((accum, cur) => {
const schema = cur.schema;
if (accum[schema]) {
accum[schema] += 1;
} else {
accum[schema] = 1;
}
return accum;
}, {});
Object.entries(validationRules).forEach(([schema, cardinalityRule]) => {
const input = contextCounts[schema];
if (!input && cardinalityRule?.minCardinality !== 0) {
violationsHandler({
...ERROR_CODES.CARDINALITY_RULES_ERROR_NOT_PRESENT(schema),
errors: [],
});
return;
}
const isValid = check(cardinalityRule, input || 0);
if (!isValid) {
violationsHandler({
...ERROR_CODES.CARDINALITY_RULES_ERROR(schema),
errors: [{ ...cardinalityRule, currentCardinality: input }],
});
}
});
}
`},5:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lookupProperty||function(u,m){if(Object.prototype.hasOwnProperty.call(u,m))return u[m]};return((i=s(r,"unless").call(t,n!=null?s(n,"isEntityPropertyRule"):n,{name:"unless",hash:{},fn:l.program(6,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:138,column:0},end:{line:159,column:11}}}))!=null?i:"")+((i=s(r,"unless").call(t,n!=null?s(n,"isEventPropertyRule"):n,{name:"unless",hash:{},fn:l.program(13,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:160,column:0},end:{line:171,column:11}}}))!=null?i:"")},6:function(l,n,r,f,o,a,e){var i,t,s=n??(l.nullContext||{}),u=l.hooks.helperMissing,m="function",c=l.escapeExpression,y=l.lookupProperty||function(g,p){if(Object.prototype.hasOwnProperty.call(g,p))return g[p]};return`/**
* Track a Snowplow event for `+c((t=(t=y(r,"typeName")||(n!=null?y(n,"typeName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"typeName",hash:{},data:o,loc:{start:{line:140,column:30},end:{line:140,column:42}}}):t))+`.
* `+c((t=(t=y(r,"description")||(n!=null?y(n,"description"):n))!=null?t:u,typeof t===m?t.call(s,{name:"description",hash:{},data:o,loc:{start:{line:141,column:3},end:{line:141,column:18}}}):t))+`
* @param { `+c((t=(t=y(r,"typeName")||(n!=null?y(n,"typeName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"typeName",hash:{},data:o,loc:{start:{line:142,column:12},end:{line:142,column:24}}}):t))+" & Timestamp & Context } "+c((y(r,"startLow")||n&&y(n,"startLow")||u).call(s,n!=null?y(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:142,column:49},end:{line:142,column:70}}}))+" - Attributes for "+c((t=(t=y(r,"typeName")||(n!=null?y(n,"typeName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"typeName",hash:{},data:o,loc:{start:{line:142,column:88},end:{line:142,column:100}}}):t))+`.
* @param {string[]} [trackers] - Tracker names to send the event to.
*/
`+((i=y(r,"unless").call(s,n!=null?y(n,"isEventPropertyRule"):n,{name:"unless",hash:{},fn:l.program(7,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:145,column:0},end:{line:145,column:49}}}))!=null?i:"")+"function track"+c((t=(t=y(r,"functionName")||(n!=null?y(n,"functionName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"functionName",hash:{},data:o,loc:{start:{line:145,column:63},end:{line:145,column:79}}}):t))+"("+c((y(r,"startLow")||n&&y(n,"startLow")||u).call(s,n!=null?y(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:145,column:80},end:{line:145,column:101}}}))+`, trackers){
const { context, timestamp,`+((i=y(r,"if").call(s,e[1]!=null?y(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(9,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:146,column:29},end:{line:146,column:66}}}))!=null?i:"")+" ...data } = "+c((y(r,"startLow")||n&&y(n,"startLow")||u).call(s,n!=null?y(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:146,column:79},end:{line:146,column:100}}}))+`;
const event = {
schema: '`+c((t=(t=y(r,"igluUrl")||(n!=null?y(n,"igluUrl"):n))!=null?t:u,typeof t===m?t.call(s,{name:"igluUrl",hash:{},data:o,loc:{start:{line:148,column:13},end:{line:148,column:24}}}):t))+`',
data
};
`+((i=y(r,"if").call(s,e[1]!=null?y(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(11,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:151,column:2},end:{line:151,column:101}}}))!=null?i:"")+`
trackSelfDescribingEvent({
event,
context,
timestamp,
}, trackers);
}
`},7:function(l,n,r,f,o){return"export "},9:function(l,n,r,f,o){return" __esId,"},11:function(l,n,r,f,o){return"[event].concat(context || []).forEach(s => validateSchema(s, __esId));"},13:function(l,n,r,f,o){var a,e=n??(l.nullContext||{}),i=l.hooks.helperMissing,t="function",s=l.escapeExpression,u=l.lookupProperty||function(m,c){if(Object.prototype.hasOwnProperty.call(m,c))return m[c]};return`/**
* Creates a Snowplow `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:162,column:22},end:{line:162,column:34}}}):a))+` entity.
* @param { `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:163,column:12},end:{line:163,column:24}}}):a))+" } "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:163,column:27},end:{line:163,column:48}}}))+" - Attributes for "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:163,column:66},end:{line:163,column:78}}}):a))+`.
*/
export function create`+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:165,column:22},end:{line:165,column:34}}}):a))+"("+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:165,column:35},end:{line:165,column:56}}}))+`){
return {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:167,column:13},end:{line:167,column:24}}}):a))+`',
data: `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:168,column:10},end:{line:168,column:31}}}))+`
}
}
`},15:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lambda,u=l.escapeExpression,m=l.hooks.helperMissing,c=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]};return((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(16,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:175,column:0},end:{line:182,column:7}}}))!=null?i:"")+"/**"+((i=c(r,"if").call(t,c(r,"lookup").call(t,e[1]!=null?c(e[1],"metadataForAllEventSpecs"):e[1],n!=null?c(n,"id"):n,{name:"lookup",hash:{},data:o,loc:{start:{line:184,column:8},end:{line:184,column:52}}}),{name:"if",hash:{},fn:l.program(19,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:184,column:1},end:{line:184,column:120}}}))!=null?i:"")+`
* Tracks a `+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
* `+u((c(r,"addEventSpecificationIdentifier")||n&&c(n,"addEventSpecificationIdentifier")||m).call(t,n!=null?c(n,"id"):n,{name:"addEventSpecificationIdentifier",hash:{},data:o,loc:{start:{line:186,column:3},end:{line:186,column:46}}}))+`
* @param { `+u(s(n!=null?c(n,"event"):n,n))+" & Timestamp"+((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(21,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:187,column:38},end:{line:187,column:99}}}))!=null?i:"")+" } "+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:187,column:102},end:{line:187,column:133}}}))+" - Attributes for "+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
* @param {string[]} [trackers] - Tracker names to send the event specification to.
*/
export function track`+u(s(n!=null?c(n,"generatedName"):n,n))+"Spec("+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:190,column:48},end:{line:190,column:79}}}))+`, trackers){
const eventSpecificationContext = createEventSpecification({
id: '`+u(s(n!=null?c(n,"id"):n,n))+`',
name: '`+u(s(n!=null?c(n,"name"):n,n))+`',
data_product_id: '`+u(s(n!=null?c(n,"dataProductId"):n,n))+`',
data_product_name: '`+u(s(n!=null?c(n,"dataProductName"):n,n))+`',
data_product_domain: '`+u(s(n!=null?c(n,"dataProductDomain"):n,n))+`'
});
`+((i=c(r,"if").call(t,e[1]!=null?c(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(23,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:199,column:2},end:{line:204,column:9}}}))!=null?i:"")+" const context = Array.isArray("+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:205,column:32},end:{line:205,column:63}}}))+`.context)
? [...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:206,column:10},end:{line:206,column:41}}}))+`.context, eventSpecificationContext]
: [eventSpecificationContext];
const modified`+u(s(n!=null?c(n,"generatedName"):n,n))+` = {
...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:210,column:7},end:{line:210,column:38}}}))+`,
context,
`+((i=c(r,"if").call(t,e[1]!=null?c(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(25,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:212,column:4},end:{line:215,column:11}}}))!=null?i:"")+` };
track`+u(s(n!=null?c(n,"event"):n,n))+"(modified"+u(s(n!=null?c(n,"generatedName"):n,n))+`, trackers);
}
`},16:function(l,n,r,f,o){var a,e=l.lambda,i=l.escapeExpression,t=l.lookupProperty||function(s,u){if(Object.prototype.hasOwnProperty.call(s,u))return s[u]};return`/**
* Typedef for `+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification contexts.
* @typedef {object} `+i(e(n!=null?t(n,"generatedName"):n,n))+`Contexts
* @property {(`+((a=t(r,"join").call(n??(l.nullContext||{}),n!=null?t(n,"entities"):n," | ","Context",{name:"join",hash:{},fn:l.program(17,o,0),inverse:l.noop,data:o,loc:{start:{line:179,column:15},end:{line:179,column:63}}}))!=null?a:"")+")[]} [context] Contexts to include in the "+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification.
*/
`},17:function(l,n,r,f,o){return""},19:function(l,n,r,f,o,a,e){var i=l.lookupProperty||function(t,s){if(Object.prototype.hasOwnProperty.call(t,s))return t[s]};return l.escapeExpression((i(r,"warningsMetadataJs")||n&&i(n,"warningsMetadataJs")||l.hooks.helperMissing).call(n??(l.nullContext||{}),e[1]!=null?i(e[1],"metadataForAllEventSpecs"):e[1],n!=null?i(n,"id"):n,{name:"warningsMetadataJs",hash:{},data:o,loc:{start:{line:184,column:54},end:{line:184,column:113}}}))},21:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return" & "+l.escapeExpression(l.lambda(n!=null?a(n,"generatedName"):n,n))+"Contexts"},23:function(l,n,r,f,o){var a=l.escapeExpression,e=l.lookupProperty||function(i,t){if(Object.prototype.hasOwnProperty.call(i,t))return i[t]};return` validateEntityRules(
'`+a(l.lambda(n!=null?e(n,"id"):n,n))+`',
`+a((e(r,"startLow")||n&&e(n,"startLow")||l.hooks.helperMissing).call(n??(l.nullContext||{}),n!=null?e(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:202,column:4},end:{line:202,column:35}}}))+`.context
);
`},25:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return` /* Used for runtime validation only */
__esId: '`+l.escapeExpression(l.lambda(n!=null?a(n,"id"):n,n))+`'
`},27:function(l,n,r,f,o){var a,e=n??(l.nullContext||{}),i=l.lambda,t=l.escapeExpression,s=l.hooks.helperMissing,u=l.lookupProperty||function(m,c){if(Object.prototype.hasOwnProperty.call(m,c))return m[c]};return((a=u(r,"if").call(e,n!=null?u(n,"entities"):n,{name:"if",hash:{},fn:l.program(16,o,0),inverse:l.noop,data:o,loc:{start:{line:222,column:0},end:{line:229,column:7}}}))!=null?a:"")+`/**
* Tracks a `+t(i(n!=null?u(n,"generatedName"):n,n))+` event specification.
* `+t((u(r,"addEventSpecificationIdentifier")||n&&u(n,"addEventSpecificationIdentifier")||s).call(e,n!=null?u(n,"id"):n,{name:"addEventSpecificationIdentifier",hash:{},data:o,loc:{start:{line:232,column:3},end:{line:232,column:46}}}))+`
* @param { `+t((u(r,"ecomFunctionArgument")||n&&u(n,"ecomFunctionArgument")||s).call(e,n!=null?u(n,"event"):n,{name:"ecomFunctionArgument",hash:{},data:o,loc:{start:{line:233,column:12},end:{line:233,column:47}}}))+" "+((a=u(r,"if").call(e,n!=null?u(n,"entities"):n,{name:"if",hash:{},fn:l.program(28,o,0),inverse:l.program(30,o,0),data:o,loc:{start:{line:233,column:48},end:{line:233,column:153}}}))!=null?a:"")+" } "+t((u(r,"startLow")||n&&u(n,"startLow")||s).call(e,n!=null?u(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:233,column:156},end:{line:233,column:187}}}))+" - Attributes for "+t(i(n!=null?u(n,"generatedName"):n,n))+` event specification.
* @param {string[]} [trackers] - Tracker names to send the event specification to.
*/
export function track`+t(i(n!=null?u(n,"generatedName"):n,n))+"Spec("+t((u(r,"startLow")||n&&u(n,"startLow")||s).call(e,n!=null?u(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:236,column:48},end:{line:236,column:79}}}))+`, trackers){
const eventSpecificationContext = createEventSpecification({
id: '`+t(i(n!=null?u(n,"id"):n,n))+`',
name: '`+t(i(n!=null?u(n,"name"):n,n))+`',
data_product_id: '`+t(i(n!=null?u(n,"dataProductId"):n,n))+`',
data_product_name: '`+t(i(n!=null?u(n,"dataProductName"):n,n))+`',
data_product_domain: '`+t(i(n!=null?u(n,"dataProductDomain"):n,n))+`'
});
const context = Array.isArray(`+t((u(r,"startLow")||n&&u(n,"startLow")||s).call(e,n!=null?u(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:245,column:32},end:{line:245,column:63}}}))+`.context)
? [...`+t((u(r,"startLow")||n&&u(n,"startLow")||s).call(e,n!=null?u(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:246,column:10},end:{line:246,column:41}}}))+`.context, eventSpecificationContext]
: [eventSpecificationContext];
const modified`+t(i(n!=null?u(n,"generatedName"):n,n))+` = {
...`+t((u(r,"startLow")||n&&u(n,"startLow")||s).call(e,n!=null?u(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:250,column:7},end:{line:250,column:38}}}))+`,
context,
};
`+t((u(r,"ecomFunction")||n&&u(n,"ecomFunction")||s).call(e,n!=null?u(n,"event"):n,{name:"ecomFunction",hash:{},data:o,loc:{start:{line:254,column:2},end:{line:254,column:29}}}))+"(modified"+t(i(n!=null?u(n,"generatedName"):n,n))+`, trackers);
}
`},28:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return"& "+l.escapeExpression(l.lambda(n!=null?a(n,"generatedName"):n,n))+"Contexts"},30:function(l,n,r,f,o){return"& Ecom.CommonEcommerceEventProperties"},compiler:[8,">= 4.3.0"],main:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lookupProperty||function(u,m){if(Object.prototype.hasOwnProperty.call(u,m))return u[m]};return((i=s(r,"if").call(t,(s(r,"or")||n&&s(n,"or")||l.hooks.helperMissing).call(t,(i=n!=null?s(n,"eventSpecifications"):n)!=null?s(i,"length"):i,(i=n!=null?s(n,"ecomEventSpecifications"):n)!=null?s(i,"length"):i,{name:"or",hash:{},data:o,loc:{start:{line:1,column:6},end:{line:1,column:68}}}),{name:"if",hash:{},fn:l.program(1,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:1,column:0},end:{line:12,column:7}}}))!=null?i:"")+`
`+((i=s(r,"if").call(t,n!=null?s(n,"validations"):n,{name:"if",hash:{},fn:l.program(3,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:14,column:0},end:{line:135,column:7}}}))!=null?i:"")+`
`+((i=s(r,"each").call(t,n!=null?s(n,"type"):n,{name:"each",hash:{},fn:l.program(5,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:137,column:0},end:{line:172,column:9}}}))!=null?i:"")+`
`+((i=s(r,"each").call(t,n!=null?s(n,"eventSpecifications"):n,{name:"each",hash:{},fn:l.program(15,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:174,column:0},end:{line:220,column:9}}}))!=null?i:"")+((i=s(r,"each").call(t,n!=null?s(n,"ecomEventSpecifications"):n,{name:"each",hash:{},fn:l.program(27,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:221,column:0},end:{line:256,column:9}}}))!=null?i:"")},useData:!0,useDepths:!0}});var ol=E((ka,al)=>{"use strict";al.exports={id:{language:"javascript",tracker:"@snowplow/javascript-tracker"},1:function(l,n,r,f,o){var a,e=n??(l.nullContext||{}),i=l.hooks.helperMissing,t="function",s=l.escapeExpression,u=l.lookupProperty||function(m,c){if(Object.prototype.hasOwnProperty.call(m,c))return m[c]};return`/**
* Track a Snowplow event for `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:3,column:30},end:{line:3,column:42}}}):a))+`.
* `+s((a=(a=u(r,"description")||(n!=null?u(n,"description"):n))!=null?a:i,typeof a===t?a.call(e,{name:"description",hash:{},data:o,loc:{start:{line:4,column:3},end:{line:4,column:18}}}):a))+`
* @param { `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:5,column:12},end:{line:5,column:24}}}):a))+" & Timestamp & Context } "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:5,column:49},end:{line:5,column:70}}}))+" - Attributes for "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:5,column:88},end:{line:5,column:100}}}):a))+`.
* @param {string[]} [trackers] - Tracker names to send the event to.
*/
function track`+s((a=(a=u(r,"functionName")||(n!=null?u(n,"functionName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"functionName",hash:{},data:o,loc:{start:{line:8,column:14},end:{line:8,column:30}}}):a))+"("+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:8,column:31},end:{line:8,column:52}}}))+`, trackers){
const trackerNames = (trackers && trackers.length) ? ':' + trackers.join(';') : '';
const { context, timestamp, ...data } = `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:10,column:42},end:{line:10,column:63}}}))+`;
window.snowplow('trackSelfDescribingEvent' + trackerNames, {
event: {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:13,column:15},end:{line:13,column:26}}}):a))+`',
data
},
context,
timestamp,
});
}
/**
* Creates a Snowplow `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:22,column:22},end:{line:22,column:34}}}):a))+` entity.
* @param { `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:23,column:12},end:{line:23,column:24}}}):a))+" } "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:23,column:27},end:{line:23,column:48}}}))+" - Attributes for "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:23,column:66},end:{line:23,column:78}}}):a))+`.
*/
function create`+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:25,column:15},end:{line:25,column:27}}}):a))+"("+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:25,column:28},end:{line:25,column:49}}}))+`){
return {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:27,column:13},end:{line:27,column:24}}}):a))+`',
data: `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:28,column:10},end:{line:28,column:31}}}))+`
}
}
`},3:function(l,n,r,f,o){return`/**
* Creates a Snowplow Event Specification entity.
*/
export function createEventSpecification(eventSpecification){
return {
schema:
'iglu:com.snowplowanalytics.snowplow/event_specification/jsonschema/1-0-3',
data: eventSpecification,
}
}
`},5:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lambda,u=l.escapeExpression,m=l.hooks.helperMissing,c=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]};return((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(6,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:47,column:0},end:{line:54,column:7}}}))!=null?i:"")+"/**"+((i=c(r,"if").call(t,c(r,"lookup").call(t,e[1]!=null?c(e[1],"metadataForAllEventSpecs"):e[1],n!=null?c(n,"id"):n,{name:"lookup",hash:{},data:o,loc:{start:{line:56,column:8},end:{line:56,column:52}}}),{name:"if",hash:{},fn:l.program(9,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:56,column:1},end:{line:56,column:120}}}))!=null?i:"")+`
* Tracks a `+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
* `+u((c(r,"addEventSpecificationIdentifier")||n&&c(n,"addEventSpecificationIdentifier")||m).call(t,n!=null?c(n,"id"):n,{name:"addEventSpecificationIdentifier",hash:{},data:o,loc:{start:{line:58,column:3},end:{line:58,column:46}}}))+`
* @param { `+u(s(n!=null?c(n,"event"):n,n))+" & Timestamp"+((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(11,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:59,column:38},end:{line:59,column:99}}}))!=null?i:"")+" } "+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:59,column:102},end:{line:59,column:133}}}))+" - Attributes for "+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
* @param {string[]} [trackers] - Tracker names to send the event specification to.
*/
function track`+u(s(n!=null?c(n,"generatedName"):n,n))+"Spec("+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:62,column:41},end:{line:62,column:72}}}))+`, trackers){
const eventSpecificationContext = createEventSpecification({
id: '`+u(s(n!=null?c(n,"id"):n,n))+`',
name: '`+u(s(n!=null?c(n,"name"):n,n))+`',
data_product_id: '`+u(s(n!=null?c(n,"dataProductId"):n,n))+`',
data_product_name: '`+u(s(n!=null?c(n,"dataProductName"):n,n))+`',
data_product_domain: '`+u(s(n!=null?c(n,"dataProductDomain"):n,n))+`'
});
const context = Array.isArray(`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:71,column:32},end:{line:71,column:63}}}))+`.context)
? [...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:72,column:10},end:{line:72,column:41}}}))+`.context, eventSpecificationContext]
: [eventSpecificationContext];
const modified`+u(s(n!=null?c(n,"generatedName"):n,n))+` = {
...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:76,column:7},end:{line:76,column:38}}}))+`,
context,
};
track`+u(s(n!=null?c(n,"event"):n,n))+"(modified"+u(s(n!=null?c(n,"generatedName"):n,n))+`, trackers);
}
`},6:function(l,n,r,f,o){var a,e=l.lambda,i=l.escapeExpression,t=l.lookupProperty||function(s,u){if(Object.prototype.hasOwnProperty.call(s,u))return s[u]};return`/**
* Typedef for `+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification contexts.
* @typedef {object} `+i(e(n!=null?t(n,"generatedName"):n,n))+`Contexts
* @property {(`+((a=t(r,"join").call(n??(l.nullContext||{}),n!=null?t(n,"entities"):n," | ","Context",{name:"join",hash:{},fn:l.program(7,o,0),inverse:l.noop,data:o,loc:{start:{line:51,column:15},end:{line:51,column:63}}}))!=null?a:"")+")[]} [context] Contexts to include in the "+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification.
*/
`},7:function(l,n,r,f,o){return""},9:function(l,n,r,f,o,a,e){var i=l.lookupProperty||function(t,s){if(Object.prototype.hasOwnProperty.call(t,s))return t[s]};return l.escapeExpression((i(r,"warningsMetadataJs")||n&&i(n,"warningsMetadataJs")||l.hooks.helperMissing).call(n??(l.nullContext||{}),e[1]!=null?i(e[1],"metadataForAllEventSpecs"):e[1],n!=null?i(n,"id"):n,{name:"warningsMetadataJs",hash:{},data:o,loc:{start:{line:56,column:54},end:{line:56,column:113}}}))},11:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return" & "+l.escapeExpression(l.lambda(n!=null?a(n,"generatedName"):n,n))+"Contexts"},compiler:[8,">= 4.3.0"],main:function(l,n,r,f,o,a,e){var i,t,s,u=n??(l.nullContext||{}),m=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]},c="";return i=(t=(t=m(r,"type")||(n!=null?m(n,"type"):n))!=null?t:l.hooks.helperMissing,s={name:"type",hash:{},fn:l.program(1,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:1,column:0},end:{line:31,column:9}}},typeof t=="function"?t.call(u,s):t),m(r,"type")||(i=l.hooks.blockHelperMissing.call(n,i,s)),i!=null&&(c+=i),c+`
`+((i=m(r,"if").call(u,(i=n!=null?m(n,"eventSpecifications"):n)!=null?m(i,"length"):i,{name:"if",hash:{},fn:l.program(3,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:33,column:0},end:{line:44,column:7}}}))!=null?i:"")+`
`+((i=m(r,"each").call(u,n!=null?m(n,"eventSpecifications"):n,{name:"each",hash:{},fn:l.program(5,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:46,column:0},end:{line:82,column:9}}}))!=null?i:"")},useData:!0,useDepths:!0}});var rl=E((wa,tl)=>{"use strict";tl.exports={id:{language:"javascript",tracker:"@snowplow/node-tracker"},1:function(l,n,r,f,o){return`/**
* Creates a Snowplow Event Specification entity.
*/
export function createEventSpecification(eventSpecification){
return {
schema:
'iglu:com.snowplowanalytics.snowplow/event_specification/jsonschema/1-0-3',
data: eventSpecification,
}
}
`},3:function(l,n,r,f,o){var a,e=n??(l.nullContext||{}),i=l.hooks.helperMissing,t="function",s=l.escapeExpression,u=l.lookupProperty||function(m,c){if(Object.prototype.hasOwnProperty.call(m,c))return m[c]};return`/**
* Track a Snowplow event for `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:21,column:30},end:{line:21,column:42}}}):a))+`.
* `+s((a=(a=u(r,"description")||(n!=null?u(n,"description"):n))!=null?a:i,typeof a===t?a.call(e,{name:"description",hash:{},data:o,loc:{start:{line:22,column:3},end:{line:22,column:18}}}):a))+`
* @param {Tracker} tracker - Tracker to send the event to.
* @param { `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:24,column:12},end:{line:24,column:24}}}):a))+" & Timestamp & Context } "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:24,column:49},end:{line:24,column:70}}}))+" - Attributes for "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:24,column:88},end:{line:24,column:100}}}):a))+`.
*/
export function track`+s((a=(a=u(r,"functionName")||(n!=null?u(n,"functionName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"functionName",hash:{},data:o,loc:{start:{line:26,column:21},end:{line:26,column:37}}}):a))+"(tracker, "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:26,column:47},end:{line:26,column:68}}}))+`){
const { context, timestamp, ...data } = `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:27,column:42},end:{line:27,column:63}}}))+`;
tracker.track(buildSelfDescribingEvent({
event: {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:31,column:15},end:{line:31,column:26}}}):a))+`',
data
}
}), context, timestamp);
}
/**
* Creates a Snowplow `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:38,column:22},end:{line:38,column:34}}}):a))+` entity.
* @param { `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:39,column:12},end:{line:39,column:24}}}):a))+" } "+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:39,column:27},end:{line:39,column:48}}}))+" - Attributes for "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:39,column:66},end:{line:39,column:78}}}):a))+`.
*/
export function create`+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:41,column:22},end:{line:41,column:34}}}):a))+"("+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:41,column:35},end:{line:41,column:56}}}))+`){
return {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:43,column:13},end:{line:43,column:24}}}):a))+`',
data: `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:44,column:10},end:{line:44,column:31}}}))+`
}
}
`},5:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lambda,u=l.escapeExpression,m=l.hooks.helperMissing,c=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]};return((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(6,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:50,column:0},end:{line:57,column:7}}}))!=null?i:"")+"/**"+((i=c(r,"if").call(t,c(r,"lookup").call(t,e[1]!=null?c(e[1],"metadataForAllEventSpecs"):e[1],n!=null?c(n,"id"):n,{name:"lookup",hash:{},data:o,loc:{start:{line:59,column:8},end:{line:59,column:52}}}),{name:"if",hash:{},fn:l.program(9,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:59,column:1},end:{line:59,column:120}}}))!=null?i:"")+`
* Tracks a `+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
* `+u((c(r,"addEventSpecificationIdentifier")||n&&c(n,"addEventSpecificationIdentifier")||m).call(t,n!=null?c(n,"id"):n,{name:"addEventSpecificationIdentifier",hash:{},data:o,loc:{start:{line:61,column:3},end:{line:61,column:46}}}))+`
* @param {Tracker} tracker - Tracker to send the tracking event specification to.
* @param { `+u(s(n!=null?c(n,"event"):n,n))+" & Timestamp"+((i=c(r,"if").call(t,n!=null?c(n,"entities"):n,{name:"if",hash:{},fn:l.program(11,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:63,column:38},end:{line:63,column:91}}}))!=null?i:"")+" } "+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:63,column:94},end:{line:63,column:125}}}))+" - Attributes for "+u(s(n!=null?c(n,"generatedName"):n,n))+` event specification.
*/
export function track`+u(s(n!=null?c(n,"generatedName"):n,n))+"Spec(tracker, "+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:65,column:57},end:{line:65,column:88}}}))+`){
const eventSpecificationContext = createEventSpecification({
id: '`+u(s(n!=null?c(n,"id"):n,n))+`',
name: '`+u(s(n!=null?c(n,"name"):n,n))+`',
data_product_id: '`+u(s(n!=null?c(n,"dataProductId"):n,n))+`',
data_product_name: '`+u(s(n!=null?c(n,"dataProductName"):n,n))+`',
data_product_domain: '`+u(s(n!=null?c(n,"dataProductDomain"):n,n))+`'
});
const context = Array.isArray(`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:74,column:31},end:{line:74,column:62}}}))+`.context)
? [...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:75,column:10},end:{line:75,column:41}}}))+`.context, eventSpecificationContext]
: [eventSpecificationContext];
const modified`+u(s(n!=null?c(n,"generatedName"):n,n))+` = {
...`+u((c(r,"startLow")||n&&c(n,"startLow")||m).call(t,n!=null?c(n,"generatedName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:79,column:7},end:{line:79,column:38}}}))+`,
context,
};
track`+u(s(n!=null?c(n,"event"):n,n))+"(tracker, modified"+u(s(n!=null?c(n,"generatedName"):n,n))+`);
}
`},6:function(l,n,r,f,o){var a,e=l.lambda,i=l.escapeExpression,t=l.lookupProperty||function(s,u){if(Object.prototype.hasOwnProperty.call(s,u))return s[u]};return`/**
* Typedef for `+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification contexts.
* @typedef {object} `+i(e(n!=null?t(n,"event"):n,n))+`Contexts
* @property {(`+((a=t(r,"join").call(n??(l.nullContext||{}),n!=null?t(n,"entities"):n," | ","Context",{name:"join",hash:{},fn:l.program(7,o,0),inverse:l.noop,data:o,loc:{start:{line:54,column:15},end:{line:54,column:63}}}))!=null?a:"")+")[]} [context] Contexts to include in the "+i(e(n!=null?t(n,"generatedName"):n,n))+` event specification.
*/
`},7:function(l,n,r,f,o){return""},9:function(l,n,r,f,o,a,e){var i=l.lookupProperty||function(t,s){if(Object.prototype.hasOwnProperty.call(t,s))return t[s]};return l.escapeExpression((i(r,"warningsMetadataJs")||n&&i(n,"warningsMetadataJs")||l.hooks.helperMissing).call(n??(l.nullContext||{}),e[1]!=null?i(e[1],"metadataForAllEventSpecs"):e[1],n!=null?i(n,"id"):n,{name:"warningsMetadataJs",hash:{},data:o,loc:{start:{line:59,column:54},end:{line:59,column:113}}}))},11:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return" & "+l.escapeExpression(l.lambda(n!=null?a(n,"event"):n,n))+"Contexts"},compiler:[8,">= 4.3.0"],main:function(l,n,r,f,o,a,e){var i,t,s,u=n??(l.nullContext||{}),m=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]},c=((i=m(r,"if").call(u,(i=n!=null?m(n,"eventSpecifications"):n)!=null?m(i,"length"):i,{name:"if",hash:{},fn:l.program(1,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:1,column:0},end:{line:12,column:7}}}))!=null?i:"")+`
/**
* Typedef for a Node.js tracker object.
* @typedef {object} Tracker
*/
`;return i=(t=(t=m(r,"type")||(n!=null?m(n,"type"):n))!=null?t:l.hooks.helperMissing,s={name:"type",hash:{},fn:l.program(3,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:19,column:0},end:{line:47,column:9}}},typeof t=="function"?t.call(u,s):t),m(r,"type")||(i=l.hooks.blockHelperMissing.call(n,i,s)),i!=null&&(c+=i),c+`
`+((i=m(r,"each").call(u,n!=null?m(n,"eventSpecifications"):n,{name:"each",hash:{},fn:l.program(5,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:49,column:0},end:{line:85,column:9}}}))!=null?i:"")},useData:!0,useDepths:!0}});var ul=E((Sa,il)=>{"use strict";il.exports={id:{language:"typescript",tracker:"@snowplow/browser-tracker"},1:function(l,n,r,f,o){return`/**
* Creates a Snowplow Event Specification entity.
*/
export function createEventSpecification(eventSpecification: EventSpecification){
return {
schema:
'iglu:com.snowplowanalytics.snowplow/event_specification/jsonschema/1-0-3',
data: eventSpecification,
}
}
/**
* Automatically attached context for event specifications
*/
interface EventSpecification {
id: string;
name: string;
data_product_id: string;
data_product_name: string;
data_product_domain: string;
}
`},3:function(l,n,r,f,o){return`const ajv = new Ajv({ allErrors: true, verbose: true, strict: false });
addFormats(ajv);
type EventSpecIdInput = { __esId: string | undefined };
type ERROR_TYPES =
| "SCHEMA_VALIDATION_ERROR"
| "CARDINALITY_RULES_ERROR"
| "CARDINALITY_RULES_ERROR_NOT_PRESENT";
type ERROR_CODE = { code: number; message: string; description: string };
type ERROR_CODES_DICT = Record<ERROR_TYPES, (schema: string) => ERROR_CODE>;
const ERROR_CODES: ERROR_CODES_DICT = {
SCHEMA_VALIDATION_ERROR: (schema: string) => ({
code: 100,
message: "Snowtype Schema Validation Error",
description: \`'There was passing of values that does not match the JSON Schema definition for \${schema}.'\`,
}),
CARDINALITY_RULES_ERROR: (schema: string) => ({
code: 200,
message: "Snowtype Entity Cardinality Rules Error",
description: \`\${schema} failed entity rules validation.\`,
}),
CARDINALITY_RULES_ERROR_NOT_PRESENT: (schema: string) => ({
code: 201,
message: "Snowtype Entity Cardinality Rules Error",
description: \`No \${schema} context detected while a rule is present.\`,
}),
};
export type ErrorType = {
code: number;
message: string;
description: string;
errors: (ErrorObject | Record<string, unknown>)[];
};
const defaultViolationErrorHandler = (errorMessage: ErrorType) => {
const msg = JSON.stringify(errorMessage, undefined, 4);
if (
typeof process !== "undefined" &&
typeof process.env === "object" &&
process.env.NODE_ENV === "test"
) {
throw new Error(JSON.stringify(errorMessage));
}
console.warn(msg);
};
export type SnowtypeOptions = {
violationsHandler: (errorMessage: ErrorType) => void;
};
let violationsHandler = defaultViolationErrorHandler;
export const snowtype = {
setOptions(options: Partial<SnowtypeOptions>) {
violationsHandler = options.violationsHandler || violationsHandler;
},
};
function validateSchema(sdj: SelfDescribingJson, esId?: string) {
let schemaToValidateWith = esId && schemasObject[esId] && (schemasObject[esId] as Record<string, AnySchema>)[sdj.schema];
if(!schemaToValidateWith){
schemaToValidateWith = schemasObject[sdj.schema]
}
const valid = ajv.validate(schemaToValidateWith, sdj.data);
if (!valid && ajv.errors?.length) {
violationsHandler({
...ERROR_CODES.SCHEMA_VALIDATION_ERROR(sdj.schema),
errors: ajv.errors,
});
}
}
function between(lowerBound: number, upperBound: number){
return (input: number) => input >= lowerBound && input <= upperBound
}
function atLeast(lowerBound: number){
return (input: number) => input >= lowerBound
}
function compare({ minCardinality, maxCardinality }: CardinalityRule) {
if(typeof minCardinality === 'number' && typeof maxCardinality === 'number'){
return between(minCardinality, maxCardinality)
}
if(typeof minCardinality === 'number'){
return atLeast(minCardinality)
}
return () => true
}
function check(cardinalityRule: CardinalityRule, input: number): boolean {
const comparator = compare(cardinalityRule);
const isValid = comparator(input);
return isValid;
}
function validateEntityRules(
eventSpecId: keyof typeof entityRules,
context?: SelfDescribingJson[]
) {
const validationRules = entityRules[eventSpecId];
if (!validationRules) {
return;
}
if (!Array.isArray(context)) {
context = [];
}
const contextCounts = context.reduce<Record<string, number>>((accum, cur) => {
const schema = cur.schema;
if (accum[schema]) {
accum[schema] += 1;
} else {
accum[schema] = 1;
}
return accum;
}, {});
Object.entries(validationRules).forEach(([schema, cardinalityRule]) => {
const input = contextCounts[schema];
if (!input && cardinalityRule?.minCardinality !== 0) {
violationsHandler({
...ERROR_CODES.CARDINALITY_RULES_ERROR_NOT_PRESENT(schema),
errors: [],
});
return;
}
const isValid = check(cardinalityRule, input || 0);
if (!isValid) {
violationsHandler({
...ERROR_CODES.CARDINALITY_RULES_ERROR(schema),
errors: [{ ...cardinalityRule, currentCardinality: input }],
});
}
});
}
`},5:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lookupProperty||function(u,m){if(Object.prototype.hasOwnProperty.call(u,m))return u[m]};return((i=s(r,"unless").call(t,n!=null?s(n,"isEntityPropertyRule"):n,{name:"unless",hash:{},fn:l.program(6,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:166,column:0},end:{line:185,column:11}}}))!=null?i:"")+((i=s(r,"unless").call(t,n!=null?s(n,"isEventPropertyRule"):n,{name:"unless",hash:{},fn:l.program(15,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:186,column:0},end:{line:196,column:11}}}))!=null?i:"")},6:function(l,n,r,f,o,a,e){var i,t,s=n??(l.nullContext||{}),u=l.hooks.helperMissing,m="function",c=l.escapeExpression,y=l.lookupProperty||function(g,p){if(Object.prototype.hasOwnProperty.call(g,p))return g[p]};return`/**
* Track a Snowplow event for `+c((t=(t=y(r,"typeName")||(n!=null?y(n,"typeName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"typeName",hash:{},data:o,loc:{start:{line:168,column:30},end:{line:168,column:42}}}):t))+`.
* `+c((t=(t=y(r,"description")||(n!=null?y(n,"description"):n))!=null?t:u,typeof t===m?t.call(s,{name:"description",hash:{},data:o,loc:{start:{line:169,column:3},end:{line:169,column:18}}}):t))+`
*/
`+((i=y(r,"unless").call(s,n!=null?y(n,"isEventPropertyRule"):n,{name:"unless",hash:{},fn:l.program(7,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:171,column:0},end:{line:171,column:49}}}))!=null?i:"")+"function track"+c((t=(t=y(r,"functionName")||(n!=null?y(n,"functionName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"functionName",hash:{},data:o,loc:{start:{line:171,column:63},end:{line:171,column:79}}}):t))+"<T extends {} = any>("+c((y(r,"startLow")||n&&y(n,"startLow")||u).call(s,n!=null?y(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:171,column:100},end:{line:171,column:121}}}))+": "+c((t=(t=y(r,"typeName")||(n!=null?y(n,"typeName"):n))!=null?t:u,typeof t===m?t.call(s,{name:"typeName",hash:{},data:o,loc:{start:{line:171,column:123},end:{line:171,column:135}}}):t))+` & ContextsOrTimestamp<T>, trackers?: string[]){
const { context, timestamp,`+((i=y(r,"if").call(s,e[1]!=null?y(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(9,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:172,column:29},end:{line:172,column:66}}}))!=null?i:"")+" ...data } = "+c((y(r,"startLow")||n&&y(n,"startLow")||u).call(s,n!=null?y(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:172,column:79},end:{line:172,column:100}}}))+((i=y(r,"if").call(s,e[1]!=null?y(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(11,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:172,column:100},end:{line:172,column:180}}}))!=null?i:"")+`;
const event: SelfDescribingJson = {
schema: '`+c((t=(t=y(r,"igluUrl")||(n!=null?y(n,"igluUrl"):n))!=null?t:u,typeof t===m?t.call(s,{name:"igluUrl",hash:{},data:o,loc:{start:{line:174,column:13},end:{line:174,column:24}}}):t))+`',
data
};
`+((i=y(r,"if").call(s,e[1]!=null?y(e[1],"validations"):e[1],{name:"if",hash:{},fn:l.program(13,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:177,column:2},end:{line:177,column:101}}}))!=null?i:"")+`
trackSelfDescribingEvent({
event,
context,
timestamp,
}, trackers);
}
`},7:function(l,n,r,f,o){return"export "},9:function(l,n,r,f,o){return" __esId,"},11:function(l,n,r,f,o){var a=l.lookupProperty||function(e,i){if(Object.prototype.hasOwnProperty.call(e,i))return e[i]};return" as typeof "+l.escapeExpression((a(r,"startLow")||n&&a(n,"startLow")||l.hooks.helperMissing).call(n??(l.nullContext||{}),n!=null?a(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:172,column:133},end:{line:172,column:154}}}))+" & EventSpecIdInput"},13:function(l,n,r,f,o){return"[event].concat(context || []).forEach(s => validateSchema(s, __esId));"},15:function(l,n,r,f,o){var a,e=n??(l.nullContext||{}),i=l.hooks.helperMissing,t="function",s=l.escapeExpression,u=l.lookupProperty||function(m,c){if(Object.prototype.hasOwnProperty.call(m,c))return m[c]};return`/**
* Creates a Snowplow `+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:188,column:22},end:{line:188,column:34}}}):a))+` entity.
*/
export function create`+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:190,column:22},end:{line:190,column:34}}}):a))+"("+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:190,column:35},end:{line:190,column:56}}}))+": "+s((a=(a=u(r,"typeName")||(n!=null?u(n,"typeName"):n))!=null?a:i,typeof a===t?a.call(e,{name:"typeName",hash:{},data:o,loc:{start:{line:190,column:58},end:{line:190,column:70}}}):a))+`){
return {
schema: '`+s((a=(a=u(r,"igluUrl")||(n!=null?u(n,"igluUrl"):n))!=null?a:i,typeof a===t?a.call(e,{name:"igluUrl",hash:{},data:o,loc:{start:{line:192,column:13},end:{line:192,column:24}}}):a))+`',
data: `+s((u(r,"startLow")||n&&u(n,"startLow")||i).call(e,n!=null?u(n,"typeName"):n,{name:"startLow",hash:{},data:o,loc:{start:{line:193,column:10},end:{line:193,column:31}}}))+`
}
}
`},17:function(l,n,r,f,o,a,e){var i,t=n??(l.nullContext||{}),s=l.lambda,u=l.escapeExpression,m=l.hooks.helperMissing,c=l.lookupProperty||function(y,g){if(Object.prototype.hasOwnProperty.call(y,g))return y[g]};return"/**"+((i=c(r,"if").call(t,c(r,"lookup").call(t,e[1]!=null?c(e[1],"metadataForAllEventSpecs"):e[1],n!=null?c(n,"id"):n,{name:"lookup",hash:{},data:o,loc:{start:{line:201,column:8},end:{line:201,column:52}}}),{name:"if",hash:{},fn:l.program(18,o,0,a,e),inverse:l.noop,data:o,loc:{start:{line:201,c