{"version":3,"file":"static/js/schemaFilter.d341913b.chunk.js","mappings":"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","sources":["../node_modules/@customerio/cdp-analytics-browser/src/lib/is-plan-event-enabled.ts","../node_modules/@customerio/cdp-analytics-browser/src/plugins/schema-filter/index.ts","../node_modules/@segment/analytics-next/src/lib/is-plan-event-enabled.ts","../node_modules/@segment/analytics-next/src/plugins/schema-filter/index.ts"],"sourcesContent":["import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n plan: TrackPlan | undefined,\n planEvent: PlanEvent | undefined\n): boolean {\n // Always prioritize the event's `enabled` status\n if (typeof planEvent?.enabled === 'boolean') {\n return planEvent.enabled\n }\n\n // Assume absence of a tracking plan means events are enabled\n return plan?.__default?.enabled ?? true\n}\n","import { LegacySettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { PlanEvent, TrackPlan } from '../../core/events/interfaces'\nimport { Plugin } from '../../core/plugin'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { RemotePlugin } from '../remote-loader'\n\nfunction disabledActionDestinations(\n plan: PlanEvent | undefined,\n settings: LegacySettings\n): { [destination: string]: string[] } {\n if (!plan || !Object.keys(plan)) {\n return {}\n }\n\n const disabledIntegrations = plan.integrations\n ? Object.keys(plan.integrations).filter(\n (i) => plan.integrations![i] === false\n )\n : []\n\n // This accounts for cases like Fullstory, where the settings.integrations\n // contains a \"Fullstory\" object but settings.remotePlugins contains \"Fullstory (Actions)\"\n const disabledRemotePlugins: string[] = []\n ; (settings.remotePlugins ?? []).forEach((p: RemotePlugin) => {\n disabledIntegrations.forEach((int) => {\n if (p.name.includes(int) || int.includes(p.name)) {\n disabledRemotePlugins.push(p.name)\n }\n })\n })\n\n return (settings.remotePlugins ?? []).reduce((acc, p) => {\n if (p.settings['subscriptions']) {\n if (disabledRemotePlugins.includes(p.name)) {\n // @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject\n p.settings['subscriptions'].forEach(\n // @ts-expect-error parameter 'sub' implicitly has an 'any' type\n (sub) => (acc[`${p.name} ${sub.partnerAction}`] = false)\n )\n }\n }\n return acc\n }, {})\n}\n\nexport function schemaFilter(\n track: TrackPlan | undefined,\n settings: LegacySettings\n): Plugin {\n function filter(ctx: Context): Context {\n const plan = track\n const ev = ctx.event.event\n\n if (plan && ev) {\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Customer.io Data Pipelines': true,\n })\n return ctx\n } else {\n const disabledActions = disabledActionDestinations(planEvent, settings)\n\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n ...disabledActions,\n })\n }\n }\n\n return ctx\n }\n\n return {\n name: 'Schema Filter',\n version: '0.1.0',\n isLoaded: () => true,\n load: () => Promise.resolve(),\n type: 'before',\n page: filter,\n alias: filter,\n track: filter,\n identify: filter,\n group: filter,\n }\n}\n","import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n plan: TrackPlan | undefined,\n planEvent: PlanEvent | undefined\n): boolean {\n // Always prioritize the event's `enabled` status\n if (typeof planEvent?.enabled === 'boolean') {\n return planEvent.enabled\n }\n\n // Assume absence of a tracking plan means events are enabled\n return plan?.__default?.enabled ?? true\n}\n","import { LegacySettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { PlanEvent, TrackPlan } from '../../core/events/interfaces'\nimport { Plugin } from '../../core/plugin'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { RemotePlugin } from '../remote-loader'\n\nfunction disabledActionDestinations(\n plan: PlanEvent | undefined,\n settings: LegacySettings\n): { [destination: string]: string[] } {\n if (!plan || !Object.keys(plan)) {\n return {}\n }\n\n const disabledIntegrations = plan.integrations\n ? Object.keys(plan.integrations).filter(\n (i) => plan.integrations![i] === false\n )\n : []\n\n // This accounts for cases like Fullstory, where the settings.integrations\n // contains a \"Fullstory\" object but settings.remotePlugins contains \"Fullstory (Actions)\"\n const disabledRemotePlugins: string[] = []\n ;(settings.remotePlugins ?? []).forEach((p: RemotePlugin) => {\n disabledIntegrations.forEach((int) => {\n if (p.name.includes(int) || int.includes(p.name)) {\n disabledRemotePlugins.push(p.name)\n }\n })\n })\n\n return (settings.remotePlugins ?? []).reduce((acc, p) => {\n if (p.settings['subscriptions']) {\n if (disabledRemotePlugins.includes(p.name)) {\n // @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject\n p.settings['subscriptions'].forEach(\n // @ts-expect-error parameter 'sub' implicitly has an 'any' type\n (sub) => (acc[`${p.name} ${sub.partnerAction}`] = false)\n )\n }\n }\n return acc\n }, {})\n}\n\nexport function schemaFilter(\n track: TrackPlan | undefined,\n settings: LegacySettings\n): Plugin {\n function filter(ctx: Context): Context {\n const plan = track\n const ev = ctx.event.event\n\n if (plan && ev) {\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Segment.io': true,\n })\n return ctx\n } else {\n const disabledActions = disabledActionDestinations(planEvent, settings)\n\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n ...disabledActions,\n })\n }\n }\n\n return ctx\n }\n\n return {\n name: 'Schema Filter',\n version: '0.1.0',\n isLoaded: () => true,\n load: () => Promise.resolve(),\n type: 'before',\n page: filter,\n alias: filter,\n track: filter,\n identify: filter,\n group: filter,\n }\n}\n"],"names":["isPlanEventEnabled","plan","planEvent","enabled","_b","_a","__default","schemaFilter","track","settings","filter","ctx","ev","event","updateEvent","__assign","integrations","All","disabledActions","Object","keys","disabledIntegrations","i","disabledRemotePlugins","remotePlugins","forEach","p","int","name","includes","push","reduce","acc","sub","concat","partnerAction","disabledActionDestinations","version","isLoaded","load","Promise","resolve","type","page","alias","identify","group"],"sourceRoot":""}