@walkeros/web-destination-api 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ <p align="left">
2
+ <a href="https://elbwalker.com">
3
+ <img title="elbwalker" src='https://www.elbwalker.com/img/elbwalker_logo.png' width="256px"/>
4
+ </a>
5
+ </p>
6
+
7
+ # Web API Destination for walkerOS
8
+
9
+ This package provides a web API destination for walkerOS. It allows you to send
10
+ events to a custom API endpoint.
11
+
12
+ [View documentation](https://www.elbwalker.com/docs/destinations/web/api/)
13
+
14
+ ## Role in walkerOS Ecosystem
15
+
16
+ walkerOS follows a **source → collector → destination** architecture:
17
+
18
+ - **Sources**: Capture events from various environments (browser DOM, dataLayer,
19
+ server requests)
20
+ - **Collector**: Processes, validates, and routes events with consent awareness
21
+ - **Destinations**: Send processed events to analytics platforms (GA4, Meta,
22
+ custom APIs)
23
+
24
+ This API destination receives processed events from the walkerOS collector and
25
+ sends them to your custom API endpoint, enabling integration with internal
26
+ analytics systems, data warehouses, or custom business logic that requires
27
+ real-time event data.
28
+
29
+ ## Installation
30
+
31
+ ```sh
32
+ npm install @walkeros/web-destination-api
33
+ ```
34
+
35
+ ## Usage
36
+
37
+ Here's a basic example of how to use the web API destination:
38
+
39
+ ```typescript
40
+ import { elb } from '@walkeros/collector';
41
+ import { destinationAPI } from '@walkeros/web-destination-api';
42
+
43
+ elb('walker destination', destinationAPI, {
44
+ custom: {
45
+ url: 'https://api.example.com/events',
46
+ },
47
+ });
48
+ ```
49
+
50
+ ## Contribute
51
+
52
+ Feel free to contribute by submitting an
53
+ [issue](https://github.com/elbwalker/walkerOS/issues), starting a
54
+ [discussion](https://github.com/elbwalker/walkerOS/discussions), or getting in
55
+ [contact](https://calendly.com/elb-alexander/30min).
56
+
57
+ ## License
58
+
59
+ This project is licensed under the MIT License.
@@ -0,0 +1,43 @@
1
+ import { SendHeaders, Mapping as Mapping$1, SendDataValue } from '@walkeros/core';
2
+ import { DestinationWeb, SendWebTransport } from '@walkeros/web-core';
3
+
4
+ declare function entity_action$1(): string;
5
+
6
+ declare namespace events {
7
+ export { entity_action$1 as entity_action };
8
+ }
9
+
10
+ declare global {
11
+ namespace WalkerOS {
12
+ interface Elb extends Elb.RegisterDestination<Destination, Config> {
13
+ }
14
+ }
15
+ }
16
+ type Destination = DestinationWeb.Destination<Settings, Mapping>;
17
+ type Config = DestinationWeb.Config<Settings, Mapping>;
18
+ interface Settings {
19
+ url: string;
20
+ headers?: SendHeaders;
21
+ method?: string;
22
+ transform?: Transform;
23
+ transport?: SendWebTransport;
24
+ }
25
+ interface Mapping {
26
+ }
27
+ type Rule = Mapping$1.Rule<Mapping>;
28
+ type Transform = (data?: unknown, config?: Config, mapping?: Mapping$1.Rule<Mapping>) => SendDataValue;
29
+
30
+ declare const entity_action: Rule;
31
+ declare const config: {
32
+ entity: {
33
+ action: Rule;
34
+ };
35
+ };
36
+
37
+ declare const mapping_config: typeof config;
38
+ declare const mapping_entity_action: typeof entity_action;
39
+ declare namespace mapping {
40
+ export { mapping_config as config, mapping_entity_action as entity_action };
41
+ }
42
+
43
+ export { events, mapping };
@@ -0,0 +1,43 @@
1
+ import { SendHeaders, Mapping as Mapping$1, SendDataValue } from '@walkeros/core';
2
+ import { DestinationWeb, SendWebTransport } from '@walkeros/web-core';
3
+
4
+ declare function entity_action$1(): string;
5
+
6
+ declare namespace events {
7
+ export { entity_action$1 as entity_action };
8
+ }
9
+
10
+ declare global {
11
+ namespace WalkerOS {
12
+ interface Elb extends Elb.RegisterDestination<Destination, Config> {
13
+ }
14
+ }
15
+ }
16
+ type Destination = DestinationWeb.Destination<Settings, Mapping>;
17
+ type Config = DestinationWeb.Config<Settings, Mapping>;
18
+ interface Settings {
19
+ url: string;
20
+ headers?: SendHeaders;
21
+ method?: string;
22
+ transform?: Transform;
23
+ transport?: SendWebTransport;
24
+ }
25
+ interface Mapping {
26
+ }
27
+ type Rule = Mapping$1.Rule<Mapping>;
28
+ type Transform = (data?: unknown, config?: Config, mapping?: Mapping$1.Rule<Mapping>) => SendDataValue;
29
+
30
+ declare const entity_action: Rule;
31
+ declare const config: {
32
+ entity: {
33
+ action: Rule;
34
+ };
35
+ };
36
+
37
+ declare const mapping_config: typeof config;
38
+ declare const mapping_entity_action: typeof entity_action;
39
+ declare namespace mapping {
40
+ export { mapping_config as config, mapping_entity_action as entity_action };
41
+ }
42
+
43
+ export { events, mapping };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/examples/index.ts
21
+ var examples_exports = {};
22
+ __export(examples_exports, {
23
+ events: () => events_exports,
24
+ mapping: () => mapping_exports
25
+ });
26
+ module.exports = __toCommonJS(examples_exports);
27
+
28
+ // src/examples/events.ts
29
+ var events_exports = {};
30
+ __export(events_exports, {
31
+ entity_action: () => entity_action
32
+ });
33
+
34
+ // ../../../core/dist/index.mjs
35
+ var e;
36
+ var t;
37
+ var n = Object.getOwnPropertyNames;
38
+ var r = (e = { "package.json"(e2, t2) {
39
+ t2.exports = { name: "@walkeros/core", description: "Core types and platform-agnostic utilities for walkerOS", version: "0.0.7", main: "./dist/index.js", module: "./dist/index.mjs", types: "./dist/index.d.ts", license: "MIT", files: ["dist/**"], scripts: { build: "tsup --silent", clean: "rm -rf .turbo && rm -rf node_modules && rm -rf dist", dev: "jest --watchAll --colors", lint: 'tsc && eslint "**/*.ts*"', test: "jest", update: "npx npm-check-updates -u && npm update" }, dependencies: {}, devDependencies: {}, repository: { url: "git+https://github.com/elbwalker/walkerOS.git", directory: "packages/core" }, author: "elbwalker <hello@elbwalker.com>", homepage: "https://github.com/elbwalker/walkerOS#readme", bugs: { url: "https://github.com/elbwalker/walkerOS/issues" }, keywords: ["walker", "walkerOS", "analytics", "tracking", "data collection", "measurement", "data privacy", "privacy friendly", "web analytics", "product analytics", "core", "types", "utils"], funding: [{ type: "GitHub Sponsors", url: "https://github.com/sponsors/elbwalker" }] };
40
+ } }, function() {
41
+ return t || (0, e[n(e)[0]])((t = { exports: {} }).exports, t), t.exports;
42
+ });
43
+ var w = { merge: true, shallow: true, extend: true };
44
+ function v(e2, t2 = {}, n2 = {}) {
45
+ n2 = { ...w, ...n2 };
46
+ const r2 = Object.entries(t2).reduce((t3, [r3, o]) => {
47
+ const i = e2[r3];
48
+ return n2.merge && Array.isArray(i) && Array.isArray(o) ? t3[r3] = o.reduce((e3, t4) => e3.includes(t4) ? e3 : [...e3, t4], [...i]) : (n2.extend || r3 in e2) && (t3[r3] = o), t3;
49
+ }, {});
50
+ return n2.shallow ? { ...e2, ...r2 } : (Object.assign(e2, r2), e2);
51
+ }
52
+ var { version: V } = r();
53
+ function H(e2 = {}) {
54
+ var _a;
55
+ const t2 = e2.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), n2 = e2.group || "gr0up", r2 = e2.count || 1, o = v({ event: "entity action", data: { string: "foo", number: 1, boolean: true, array: [0, "text", false], not: void 0 }, context: { dev: ["test", 1] }, globals: { lang: "elb" }, custom: { completely: "random" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n" }, nested: [{ type: "child", data: { is: "subordinated" }, nested: [], context: { element: ["child", 0] } }], consent: { functional: true }, id: `${t2}-${n2}-${r2}`, trigger: "test", entity: "entity", action: "action", timestamp: t2, timing: 3.14, group: n2, count: r2, version: { source: V, tagging: 1 }, source: { type: "web", id: "https://localhost:80", previous_id: "http://remotehost:9001" } }, e2, { merge: false });
56
+ if (e2.event) {
57
+ const [t3, n3] = (_a = e2.event.split(" ")) != null ? _a : [];
58
+ t3 && n3 && (o.entity = t3, o.action = n3);
59
+ }
60
+ return o;
61
+ }
62
+ function z(e2 = "entity action", t2 = {}) {
63
+ const n2 = t2.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), r2 = { data: { id: "ers", name: "Everyday Ruck Snack", color: "black", size: "l", price: 420 } }, o = { data: { id: "cc", name: "Cool Cap", size: "one size", price: 42 } };
64
+ return H({ ...{ "cart view": { data: { currency: "EUR", value: 2 * r2.data.price }, context: { shopping: ["cart", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", data: { ...r2.data, quantity: 2 }, context: { shopping: ["cart", 0] }, nested: [] }], trigger: "load" }, "checkout view": { data: { step: "payment", currency: "EUR", value: r2.data.price + o.data.price }, context: { shopping: ["checkout", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...r2, context: { shopping: ["checkout", 0] }, nested: [] }, { type: "product", ...o, context: { shopping: ["checkout", 0] }, nested: [] }], trigger: "load" }, "order complete": { data: { id: "0rd3r1d", currency: "EUR", shipping: 5.22, taxes: 73.76, total: 555 }, context: { shopping: ["complete", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...r2, context: { shopping: ["complete", 0] }, nested: [] }, { type: "product", ...o, context: { shopping: ["complete", 0] }, nested: [] }, { type: "gift", data: { name: "Surprise" }, context: { shopping: ["complete", 0] }, nested: [] }], trigger: "load" }, "page view": { data: { domain: "www.example.com", title: "walkerOS documentation", referrer: "https://www.elbwalker.com/", search: "?foo=bar", hash: "#hash", id: "/docs/" }, globals: { pagegroup: "docs" }, trigger: "load" }, "product add": { ...r2, context: { shopping: ["intent", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "click" }, "product view": { ...r2, context: { shopping: ["detail", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "product visible": { data: { ...r2.data, position: 3, promo: true }, context: { shopping: ["discover", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "promotion visible": { data: { name: "Setting up tracking easily", position: "hero" }, context: { ab_test: ["engagement", 0] }, globals: { pagegroup: "homepage" }, trigger: "visible" }, "session start": { data: { id: "s3ss10n", start: n2, isNew: true, count: 1, runs: 1, isStart: true, storage: true, referrer: "", device: "c00k13" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n", hash: "h4sh", address: "street number", email: "user@example.com", phone: "+49 123 456 789", userAgent: "Mozilla...", browser: "Chrome", browserVersion: "90", deviceType: "desktop", language: "de-DE", country: "DE", region: "HH", city: "Hamburg", zip: "20354", timezone: "Berlin", os: "walkerOS", osVersion: "1.0", screenSize: "1337x420", ip: "127.0.0.0", internal: true, custom: "value" } } }[e2], ...t2, event: e2 });
65
+ }
66
+
67
+ // src/examples/events.ts
68
+ function entity_action() {
69
+ const event = z("entity action");
70
+ return JSON.stringify(event.data);
71
+ }
72
+
73
+ // src/examples/mapping.ts
74
+ var mapping_exports = {};
75
+ __export(mapping_exports, {
76
+ config: () => config,
77
+ entity_action: () => entity_action2
78
+ });
79
+ var entity_action2 = {
80
+ data: "data"
81
+ };
82
+ var config = {
83
+ entity: { action: entity_action2 }
84
+ };
85
+ // Annotate the CommonJS export names for ESM import in node:
86
+ 0 && (module.exports = {
87
+ events,
88
+ mapping
89
+ });
@@ -0,0 +1,67 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ // src/examples/events.ts
8
+ var events_exports = {};
9
+ __export(events_exports, {
10
+ entity_action: () => entity_action
11
+ });
12
+
13
+ // ../../../core/dist/index.mjs
14
+ var e;
15
+ var t;
16
+ var n = Object.getOwnPropertyNames;
17
+ var r = (e = { "package.json"(e2, t2) {
18
+ t2.exports = { name: "@walkeros/core", description: "Core types and platform-agnostic utilities for walkerOS", version: "0.0.7", main: "./dist/index.js", module: "./dist/index.mjs", types: "./dist/index.d.ts", license: "MIT", files: ["dist/**"], scripts: { build: "tsup --silent", clean: "rm -rf .turbo && rm -rf node_modules && rm -rf dist", dev: "jest --watchAll --colors", lint: 'tsc && eslint "**/*.ts*"', test: "jest", update: "npx npm-check-updates -u && npm update" }, dependencies: {}, devDependencies: {}, repository: { url: "git+https://github.com/elbwalker/walkerOS.git", directory: "packages/core" }, author: "elbwalker <hello@elbwalker.com>", homepage: "https://github.com/elbwalker/walkerOS#readme", bugs: { url: "https://github.com/elbwalker/walkerOS/issues" }, keywords: ["walker", "walkerOS", "analytics", "tracking", "data collection", "measurement", "data privacy", "privacy friendly", "web analytics", "product analytics", "core", "types", "utils"], funding: [{ type: "GitHub Sponsors", url: "https://github.com/sponsors/elbwalker" }] };
19
+ } }, function() {
20
+ return t || (0, e[n(e)[0]])((t = { exports: {} }).exports, t), t.exports;
21
+ });
22
+ var w = { merge: true, shallow: true, extend: true };
23
+ function v(e2, t2 = {}, n2 = {}) {
24
+ n2 = { ...w, ...n2 };
25
+ const r2 = Object.entries(t2).reduce((t3, [r3, o]) => {
26
+ const i = e2[r3];
27
+ return n2.merge && Array.isArray(i) && Array.isArray(o) ? t3[r3] = o.reduce((e3, t4) => e3.includes(t4) ? e3 : [...e3, t4], [...i]) : (n2.extend || r3 in e2) && (t3[r3] = o), t3;
28
+ }, {});
29
+ return n2.shallow ? { ...e2, ...r2 } : (Object.assign(e2, r2), e2);
30
+ }
31
+ var { version: V } = r();
32
+ function H(e2 = {}) {
33
+ var _a;
34
+ const t2 = e2.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), n2 = e2.group || "gr0up", r2 = e2.count || 1, o = v({ event: "entity action", data: { string: "foo", number: 1, boolean: true, array: [0, "text", false], not: void 0 }, context: { dev: ["test", 1] }, globals: { lang: "elb" }, custom: { completely: "random" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n" }, nested: [{ type: "child", data: { is: "subordinated" }, nested: [], context: { element: ["child", 0] } }], consent: { functional: true }, id: `${t2}-${n2}-${r2}`, trigger: "test", entity: "entity", action: "action", timestamp: t2, timing: 3.14, group: n2, count: r2, version: { source: V, tagging: 1 }, source: { type: "web", id: "https://localhost:80", previous_id: "http://remotehost:9001" } }, e2, { merge: false });
35
+ if (e2.event) {
36
+ const [t3, n3] = (_a = e2.event.split(" ")) != null ? _a : [];
37
+ t3 && n3 && (o.entity = t3, o.action = n3);
38
+ }
39
+ return o;
40
+ }
41
+ function z(e2 = "entity action", t2 = {}) {
42
+ const n2 = t2.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), r2 = { data: { id: "ers", name: "Everyday Ruck Snack", color: "black", size: "l", price: 420 } }, o = { data: { id: "cc", name: "Cool Cap", size: "one size", price: 42 } };
43
+ return H({ ...{ "cart view": { data: { currency: "EUR", value: 2 * r2.data.price }, context: { shopping: ["cart", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", data: { ...r2.data, quantity: 2 }, context: { shopping: ["cart", 0] }, nested: [] }], trigger: "load" }, "checkout view": { data: { step: "payment", currency: "EUR", value: r2.data.price + o.data.price }, context: { shopping: ["checkout", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...r2, context: { shopping: ["checkout", 0] }, nested: [] }, { type: "product", ...o, context: { shopping: ["checkout", 0] }, nested: [] }], trigger: "load" }, "order complete": { data: { id: "0rd3r1d", currency: "EUR", shipping: 5.22, taxes: 73.76, total: 555 }, context: { shopping: ["complete", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...r2, context: { shopping: ["complete", 0] }, nested: [] }, { type: "product", ...o, context: { shopping: ["complete", 0] }, nested: [] }, { type: "gift", data: { name: "Surprise" }, context: { shopping: ["complete", 0] }, nested: [] }], trigger: "load" }, "page view": { data: { domain: "www.example.com", title: "walkerOS documentation", referrer: "https://www.elbwalker.com/", search: "?foo=bar", hash: "#hash", id: "/docs/" }, globals: { pagegroup: "docs" }, trigger: "load" }, "product add": { ...r2, context: { shopping: ["intent", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "click" }, "product view": { ...r2, context: { shopping: ["detail", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "product visible": { data: { ...r2.data, position: 3, promo: true }, context: { shopping: ["discover", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "promotion visible": { data: { name: "Setting up tracking easily", position: "hero" }, context: { ab_test: ["engagement", 0] }, globals: { pagegroup: "homepage" }, trigger: "visible" }, "session start": { data: { id: "s3ss10n", start: n2, isNew: true, count: 1, runs: 1, isStart: true, storage: true, referrer: "", device: "c00k13" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n", hash: "h4sh", address: "street number", email: "user@example.com", phone: "+49 123 456 789", userAgent: "Mozilla...", browser: "Chrome", browserVersion: "90", deviceType: "desktop", language: "de-DE", country: "DE", region: "HH", city: "Hamburg", zip: "20354", timezone: "Berlin", os: "walkerOS", osVersion: "1.0", screenSize: "1337x420", ip: "127.0.0.0", internal: true, custom: "value" } } }[e2], ...t2, event: e2 });
44
+ }
45
+
46
+ // src/examples/events.ts
47
+ function entity_action() {
48
+ const event = z("entity action");
49
+ return JSON.stringify(event.data);
50
+ }
51
+
52
+ // src/examples/mapping.ts
53
+ var mapping_exports = {};
54
+ __export(mapping_exports, {
55
+ config: () => config,
56
+ entity_action: () => entity_action2
57
+ });
58
+ var entity_action2 = {
59
+ data: "data"
60
+ };
61
+ var config = {
62
+ entity: { action: entity_action2 }
63
+ };
64
+ export {
65
+ events_exports as events,
66
+ mapping_exports as mapping
67
+ };
@@ -0,0 +1 @@
1
+ "use strict";var Walkerjs=(()=>{var e,t,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},i={};a(i,{DestinationAPI:()=>b,default:()=>A,destinationAPI:()=>P,examples:()=>v});var c=Object.getOwnPropertyNames,p=(e={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.7",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[c(e)[0]])((t={exports:{}}).exports,t),t.exports}),d={merge:!0,shallow:!0,extend:!0};function u(e,t={},r={}){r={...d,...r};const n=Object.entries(t).reduce((t,[n,o])=>{const s=e[n];return r.merge&&Array.isArray(s)&&Array.isArray(o)?t[n]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(r.extend||n in e)&&(t[n]=o),t},{});return r.shallow?{...e,...n}:(Object.assign(e,n),e)}var{version:l}=p();function g(e="entity action",t={}){const r=t.timestamp||(new Date).setHours(0,13,37,0),n={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(e={}){var t;const r=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,s=u({event:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{type:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${r}-${n}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:r,timing:3.14,group:n,count:o,version:{source:l,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.event){const[r,n]=null!=(t=e.event.split(" "))?t:[];r&&n&&(s.entity=r,s.action=n)}return s}({...{"cart view":{data:{currency:"EUR",value:2*n.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{type:"product",data:{...n.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:n.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...n,context:{shopping:["checkout",0]},nested:[]},{type:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...n,context:{shopping:["complete",0]},nested:[]},{type:"product",...o,context:{shopping:["complete",0]},nested:[]},{type:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.elbwalker.com/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...n,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...n,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...n.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:r,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,event:e})}function m(e,t,r){return function(...n){try{return e(...n)}catch(e){if(!t)return;return t(e)}finally{null==r||r()}}}function h(e){return void 0===e||function(e,t){return typeof e==typeof t}(e,"")?e:JSON.stringify(e)}function y(e={}){return u({"Content-Type":"application/json; charset=utf-8"},e)}function f(e,t,r={transport:"fetch"}){switch(r.transport||"fetch"){case"beacon":return function(e,t){const r=h(t),n=navigator.sendBeacon(e,r);return{ok:n,error:n?void 0:"Failed to send beacon"}}(e,t);case"xhr":return function(e,t,r={}){const n=y(r.headers),o=r.method||"POST",s=h(t);return m(()=>{const t=new XMLHttpRequest;t.open(o,e,!1);for(const e in n)t.setRequestHeader(e,n[e]);t.send(s);const r=t.status>=200&&t.status<300;return{ok:r,data:m(JSON.parse,()=>t.response)(t.response),error:r?void 0:`${t.status} ${t.statusText}`}},e=>({ok:!1,error:e.message}))()}(e,t,r);default:return async function(e,t,r={}){const n=y(r.headers),o=h(t);return function(e,t,r){return async function(...n){try{return await e(...n)}catch(e){if(!t)return;return await t(e)}finally{await(null==r?void 0:r())}}}(async()=>{const t=await fetch(e,{method:r.method||"POST",headers:n,keepalive:!0,credentials:r.credentials||"same-origin",mode:r.noCors?"no-cors":"cors",body:o}),s=r.noCors?"":await t.text();return{ok:t.ok,data:s,error:t.ok?void 0:t.statusText}},e=>({ok:!1,error:e.message}))()}(e,t,r)}}var b={},v={};a(v,{events:()=>w,mapping:()=>x});var w={};function k(){const e=g("entity action");return JSON.stringify(e.data)}a(w,{entity_action:()=>k});var x={};a(x,{config:()=>j,entity_action:()=>S});var O,S={data:"data"},j={entity:{action:S}},P={type:"api",config:{},push(e,{config:t,mapping:r,data:n,wrap:o}){const{settings:s={}}=t,{url:a,headers:i,method:c,transform:p,transport:d="fetch"}=s;if(!a)return;const u=void 0!==n?n:e;const l=p?p(u,t,r):JSON.stringify(u);o("sendWeb",f)(a,l,{headers:i,method:c,transport:d})}},A=P;return O=i,((e,t,a,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let c of o(t))s.call(e,c)||c===a||r(e,c,{get:()=>t[c],enumerable:!(i=n(t,c))||i.enumerable});return e})(r({},"__esModule",{value:!0}),O)})();
@@ -0,0 +1,63 @@
1
+ import { SendHeaders, Mapping as Mapping$1, SendDataValue } from '@walkeros/core';
2
+ import { DestinationWeb, SendWebTransport } from '@walkeros/web-core';
3
+
4
+ declare global {
5
+ namespace WalkerOS {
6
+ interface Elb extends Elb.RegisterDestination<Destination, Config> {
7
+ }
8
+ }
9
+ }
10
+ type Destination = DestinationWeb.Destination<Settings, Mapping>;
11
+ type Config = DestinationWeb.Config<Settings, Mapping>;
12
+ interface Settings {
13
+ url: string;
14
+ headers?: SendHeaders;
15
+ method?: string;
16
+ transform?: Transform;
17
+ transport?: SendWebTransport;
18
+ }
19
+ interface Mapping {
20
+ }
21
+ type Rule = Mapping$1.Rule<Mapping>;
22
+ type Rules = Mapping$1.Rules<Rule>;
23
+ type Transform = (data?: unknown, config?: Config, mapping?: Mapping$1.Rule<Mapping>) => SendDataValue;
24
+
25
+ type index$1_Config = Config;
26
+ type index$1_Destination = Destination;
27
+ type index$1_Mapping = Mapping;
28
+ type index$1_Rule = Rule;
29
+ type index$1_Rules = Rules;
30
+ type index$1_Settings = Settings;
31
+ type index$1_Transform = Transform;
32
+ declare namespace index$1 {
33
+ export type { index$1_Config as Config, index$1_Destination as Destination, index$1_Mapping as Mapping, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings, index$1_Transform as Transform };
34
+ }
35
+
36
+ declare function entity_action$1(): string;
37
+
38
+ declare namespace events {
39
+ export { entity_action$1 as entity_action };
40
+ }
41
+
42
+ declare const entity_action: Rule;
43
+ declare const config: {
44
+ entity: {
45
+ action: Rule;
46
+ };
47
+ };
48
+
49
+ declare const mapping_config: typeof config;
50
+ declare const mapping_entity_action: typeof entity_action;
51
+ declare namespace mapping {
52
+ export { mapping_config as config, mapping_entity_action as entity_action };
53
+ }
54
+
55
+ declare const index_events: typeof events;
56
+ declare const index_mapping: typeof mapping;
57
+ declare namespace index {
58
+ export { index_events as events, index_mapping as mapping };
59
+ }
60
+
61
+ declare const destinationAPI: Destination;
62
+
63
+ export { index$1 as DestinationAPI, destinationAPI as default, destinationAPI, index as examples };
@@ -0,0 +1,63 @@
1
+ import { SendHeaders, Mapping as Mapping$1, SendDataValue } from '@walkeros/core';
2
+ import { DestinationWeb, SendWebTransport } from '@walkeros/web-core';
3
+
4
+ declare global {
5
+ namespace WalkerOS {
6
+ interface Elb extends Elb.RegisterDestination<Destination, Config> {
7
+ }
8
+ }
9
+ }
10
+ type Destination = DestinationWeb.Destination<Settings, Mapping>;
11
+ type Config = DestinationWeb.Config<Settings, Mapping>;
12
+ interface Settings {
13
+ url: string;
14
+ headers?: SendHeaders;
15
+ method?: string;
16
+ transform?: Transform;
17
+ transport?: SendWebTransport;
18
+ }
19
+ interface Mapping {
20
+ }
21
+ type Rule = Mapping$1.Rule<Mapping>;
22
+ type Rules = Mapping$1.Rules<Rule>;
23
+ type Transform = (data?: unknown, config?: Config, mapping?: Mapping$1.Rule<Mapping>) => SendDataValue;
24
+
25
+ type index$1_Config = Config;
26
+ type index$1_Destination = Destination;
27
+ type index$1_Mapping = Mapping;
28
+ type index$1_Rule = Rule;
29
+ type index$1_Rules = Rules;
30
+ type index$1_Settings = Settings;
31
+ type index$1_Transform = Transform;
32
+ declare namespace index$1 {
33
+ export type { index$1_Config as Config, index$1_Destination as Destination, index$1_Mapping as Mapping, index$1_Rule as Rule, index$1_Rules as Rules, index$1_Settings as Settings, index$1_Transform as Transform };
34
+ }
35
+
36
+ declare function entity_action$1(): string;
37
+
38
+ declare namespace events {
39
+ export { entity_action$1 as entity_action };
40
+ }
41
+
42
+ declare const entity_action: Rule;
43
+ declare const config: {
44
+ entity: {
45
+ action: Rule;
46
+ };
47
+ };
48
+
49
+ declare const mapping_config: typeof config;
50
+ declare const mapping_entity_action: typeof entity_action;
51
+ declare namespace mapping {
52
+ export { mapping_config as config, mapping_entity_action as entity_action };
53
+ }
54
+
55
+ declare const index_events: typeof events;
56
+ declare const index_mapping: typeof mapping;
57
+ declare namespace index {
58
+ export { index_events as events, index_mapping as mapping };
59
+ }
60
+
61
+ declare const destinationAPI: Destination;
62
+
63
+ export { index$1 as DestinationAPI, destinationAPI as default, destinationAPI, index as examples };
@@ -0,0 +1 @@
1
+ "use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function asyncGeneratorStep(e,t,r,n,o,a,i){try{var s=e[a](i),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function _async_to_generator(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function i(e){asyncGeneratorStep(a,n,o,i,s,"next",e)}function s(e){asyncGeneratorStep(a,n,o,i,s,"throw",e)}i(void 0)})}}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a=[],i=!0,s=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){s=!0,o=e}finally{try{i||null==r.return||r.return()}finally{if(s)throw o}}return a}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){_define_property(e,t,r[t])})}return e}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_array_like_to_array(e,t):void 0}}function _ts_generator(e,t){var r,n,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return i.next=s(0),i.throw=s(1),i.return=s(2),"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}var Walkerjs=function(){var e,t,r=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r=_object_spread({},w,r);var n=Object.entries(t).reduce(function(t,n){var o=_sliced_to_array(n,2),a=o[0],i=o[1],s=e[a];return r.merge&&Array.isArray(s)&&Array.isArray(i)?t[a]=i.reduce(function(e,t){return e.includes(t)?e:_to_consumable_array(e).concat([t])},_to_consumable_array(s)):(r.extend||a in e)&&(t[a]=i),t},{});return r.shallow?_object_spread({},e,n):(Object.assign(e,n),e)},n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"entity action",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.timestamp||(new Date).setHours(0,13,37,0),o={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},a={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,a=r({event:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{type:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:"".concat(t,"-").concat(n,"-").concat(o),trigger:"test",entity:"entity",action:"action",timestamp:t,timing:3.14,group:n,count:o,version:{source:j,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.event){var i,s=_sliced_to_array(null!==(i=e.event.split(" "))&&void 0!==i?i:[],2),c=s[0],u=s[1];c&&u&&(a.entity=c,a.action=u)}return a}(_object_spread_props(_object_spread({},{"cart view":{data:{currency:"EUR",value:2*o.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{type:"product",data:_object_spread_props(_object_spread({},o.data),{quantity:2}),context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:o.data.price+a.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[_object_spread_props(_object_spread({type:"product"},o),{context:{shopping:["checkout",0]},nested:[]}),_object_spread_props(_object_spread({type:"product"},a),{context:{shopping:["checkout",0]},nested:[]})],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[_object_spread_props(_object_spread({type:"product"},o),{context:{shopping:["complete",0]},nested:[]}),_object_spread_props(_object_spread({type:"product"},a),{context:{shopping:["complete",0]},nested:[]}),{type:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.elbwalker.com/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":_object_spread_props(_object_spread({},o),{context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"}),"product view":_object_spread_props(_object_spread({},o),{context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"}),"product visible":{data:_object_spread_props(_object_spread({},o.data),{position:3,promo:!0}),context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:n,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],t),{event:e}))},o=function(e,t,r){return function(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];try{return e.apply(void 0,_to_consumable_array(o))}catch(e){if(!t)return;return t(e)}finally{null==r||r()}}},a=function(e,t,r){return function(){for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];return _async_to_generator(function(){var n;return _ts_generator(this,function(a){switch(a.label){case 0:return a.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(o))];case 1:case 3:return[2,a.sent()];case 2:return n=a.sent(),t?[4,t(n)]:[2];case 4:return[4,null==r?void 0:r()];case 5:return a.sent(),[7];case 6:return[2]}})})()}},i=function(e){return void 0===e||function(e,t){return(void 0===e?"undefined":_type_of(e))==(void 0===t?"undefined":_type_of(t))}(e,"")?e:JSON.stringify(e)},s=function(){return r({"Content-Type":"application/json; charset=utf-8"},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})},c=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{transport:"fetch"};switch(r.transport||"fetch"){case"beacon":return l(e,t);case"xhr":return p(e,t,r);default:return u(e,t,r)}},u=function(e,t){return _async_to_generator(function(e,t){var r,n,o,c=arguments;return _ts_generator(this,function(u){return n=s((r=c.length>2&&void 0!==c[2]?c[2]:{}).headers),o=i(t),[2,a(function(){return _async_to_generator(function(){var t,a,i;return _ts_generator(this,function(s){switch(s.label){case 0:return[4,fetch(e,{method:r.method||"POST",headers:n,keepalive:!0,credentials:r.credentials||"same-origin",mode:r.noCors?"no-cors":"cors",body:o})];case 1:return t=s.sent(),r.noCors?(i="",[3,4]):[3,2];case 2:return[4,t.text()];case 3:i=s.sent(),s.label=4;case 4:return a=i,[2,{ok:t.ok,data:a,error:t.ok?void 0:t.statusText}]}})})()},function(e){return{ok:!1,error:e.message}})()]})}).apply(this,arguments)},l=function(e,t){var r=i(t),n=navigator.sendBeacon(e,r);return{ok:n,error:n?void 0:"Failed to send beacon"}},p=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=s(r.headers),a=r.method||"POST",c=i(t);return o(function(){var t=new XMLHttpRequest;for(var r in t.open(a,e,!1),n)t.setRequestHeader(r,n[r]);t.send(c);var i=t.status>=200&&t.status<300;return{ok:i,data:o(JSON.parse,function(){return t.response})(t.response),error:i?void 0:"".concat(t.status," ").concat(t.statusText)}},function(e){return{ok:!1,error:e.message}})()},d=function(){var e=n("entity action");return JSON.stringify(e.data)},_=Object.defineProperty,y=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,g=function(e,t){for(var r in t)_(e,r,{get:t[r],enumerable:!0})},h={};g(h,{DestinationAPI:function(){return k},default:function(){return I},destinationAPI:function(){return E},examples:function(){return O}});var m=Object.getOwnPropertyNames,v=(e={"package.json":function(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.7",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[m(e)[0]])((t={exports:{}}).exports,t),t.exports}),w={merge:!0,shallow:!0,extend:!0},j=v().version,k={},O={};g(O,{events:function(){return x},mapping:function(){return S}});var x={};g(x,{entity_action:function(){return d}});var S={};g(S,{config:function(){return D},entity_action:function(){return A}});var P,A={data:"data"},D={entity:{action:A}},E={type:"api",config:{},push:function(e,t){var r=t.config,n=t.mapping,o=t.data,a=t.wrap,i=r.settings,s=void 0===i?{}:i,u=s.url,l=s.headers,p=s.method,d=s.transform,_=s.transport,y=void 0===_?"fetch":_;if(u){var f=void 0!==o?o:e,b=d?d(f,r,n):JSON.stringify(f);a("sendWeb",c)(u,b,{headers:l,method:p,transport:y})}}},I=E;return P=h,function(e,t,r,n){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var o=!0,a=!1,i=void 0;try{for(var s,c=function(){var o=s.value;b.call(e,o)||o===r||_(e,o,{get:function(){return t[o]},enumerable:!(n=y(t,o))||n.enumerable})},u=f(t)[Symbol.iterator]();!(o=(s=u.next()).done);o=!0)c()}catch(e){a=!0,i=e}finally{try{o||null==u.return||u.return()}finally{if(a)throw i}}}return e}(_({},"__esModule",{value:!0}),P)}();
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var e,t,r,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,i=(e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})},c={};i(c,{DestinationAPI:()=>h,default:()=>O,destinationAPI:()=>x,examples:()=>y}),module.exports=(e=c,((e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let c of n(t))a.call(e,c)||c===r||o(e,c,{get:()=>t[c],enumerable:!(i=s(t,c))||i.enumerable});return e})(o({},"__esModule",{value:!0}),e));var p=Object.getOwnPropertyNames,d=(t={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.7",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return r||(0,t[p(t)[0]])((r={exports:{}}).exports,r),r.exports}),l={merge:!0,shallow:!0,extend:!0};var{version:u}=d();function g(e={}){var t;const r=e.timestamp||(new Date).setHours(0,13,37,0),o=e.group||"gr0up",s=e.count||1,n=function(e,t={},r={}){r={...l,...r};const o=Object.entries(t).reduce((t,[o,s])=>{const n=e[o];return r.merge&&Array.isArray(n)&&Array.isArray(s)?t[o]=s.reduce((e,t)=>e.includes(t)?e:[...e,t],[...n]):(r.extend||o in e)&&(t[o]=s),t},{});return r.shallow?{...e,...o}:(Object.assign(e,o),e)}({event:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{type:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${r}-${o}-${s}`,trigger:"test",entity:"entity",action:"action",timestamp:r,timing:3.14,group:o,count:s,version:{source:u,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.event){const[r,o]=null!=(t=e.event.split(" "))?t:[];r&&o&&(n.entity=r,n.action=o)}return n}var m=require("@walkeros/web-core"),h={},y={};i(y,{events:()=>b,mapping:()=>v});var b={};function w(){const e=function(e="entity action",t={}){const r=t.timestamp||(new Date).setHours(0,13,37,0),o={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},s={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return g({...{"cart view":{data:{currency:"EUR",value:2*o.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{type:"product",data:{...o.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:o.data.price+s.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...o,context:{shopping:["checkout",0]},nested:[]},{type:"product",...s,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...o,context:{shopping:["complete",0]},nested:[]},{type:"product",...s,context:{shopping:["complete",0]},nested:[]},{type:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.elbwalker.com/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...o,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...o,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...o.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:r,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,event:e})}("entity action");return JSON.stringify(e.data)}i(b,{entity_action:()=>w});var v={};i(v,{config:()=>k,entity_action:()=>f});var f={data:"data"},k={entity:{action:f}},x={type:"api",config:{},push(e,{config:t,mapping:r,data:o,wrap:s}){const{settings:n={}}=t,{url:a,headers:i,method:c,transform:p,transport:d="fetch"}=n;if(!a)return;const l=void 0!==o?o:e;const u=p?p(l,t,r):JSON.stringify(l);s("sendWeb",m.sendWeb)(a,u,{headers:i,method:c,transport:d})}},O=x;//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/types/index.ts","../src/examples/index.ts","../src/examples/events.ts","../src/examples/mapping.ts"],"sourcesContent":["import type { Settings, Destination } from './types';\nimport { isDefined } from '@walkeros/core';\nimport { sendWeb } from '@walkeros/web-core';\n\n// Types\nexport * as DestinationAPI from './types';\n\n// Examples\nexport * as examples from './examples';\n\nexport const destinationAPI: Destination = {\n type: 'api',\n\n config: {},\n\n push(event, { config, mapping, data, wrap }) {\n const { settings = {} as Settings } = config;\n const { url, headers, method, transform, transport = 'fetch' } = settings;\n\n if (!url) return;\n\n const eventData = isDefined(data) ? data : event;\n const body = transform\n ? transform(eventData, config, mapping) // Transform event data\n : JSON.stringify(eventData);\n\n const send = wrap('sendWeb', sendWeb) as typeof sendWeb;\n send(url, body, { headers, method, transport });\n },\n};\n\nexport default destinationAPI;\n","import type {\n Mapping as WalkerOSMapping,\n SendDataValue,\n SendHeaders,\n Elb,\n} from '@walkeros/core';\nimport type { DestinationWeb } from '@walkeros/web-core';\nimport type { SendWebTransport } from '@walkeros/web-core';\n\ndeclare global {\n // Augment the global WalkerOS namespace with destination-specific types\n namespace WalkerOS {\n interface Elb extends Elb.RegisterDestination<Destination, Config> {}\n }\n}\n\nexport type Destination = DestinationWeb.Destination<Settings, Mapping>;\nexport type Config = DestinationWeb.Config<Settings, Mapping>;\n\n// Destination-specific settings (internal usage)\nexport interface Settings {\n url: string;\n headers?: SendHeaders;\n method?: string;\n transform?: Transform;\n transport?: SendWebTransport;\n}\n\n// Single event transformation rule\nexport interface Mapping {}\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n\nexport type Transform = (\n data?: unknown,\n config?: Config,\n mapping?: WalkerOSMapping.Rule<Mapping>,\n) => SendDataValue;\n","export * as events from './events';\nexport * as mapping from './mapping';\n","import { getEvent } from '@walkeros/core';\n\nexport function entity_action() {\n const event = getEvent('entity action');\n\n return JSON.stringify(event.data);\n}\n","import type { Mapping } from '@walkeros/core';\nimport type { DestinationAPI } from '..';\n\nexport const entity_action: DestinationAPI.Rule = {\n data: 'data',\n};\n\nexport const config = {\n entity: { action: entity_action },\n} satisfies DestinationAPI.Rules;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,sBAAwB;;;ACFxB;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAEO,SAAS,gBAAgB;AAC9B,QAAM,QAAQ,EAAS,eAAe;AAEtC,SAAO,KAAK,UAAU,MAAM,IAAI;AAClC;;;ACNA;AAAA;AAAA;AAAA,uBAAAA;AAAA;AAGO,IAAMA,iBAAqC;AAAA,EAChD,MAAM;AACR;AAEO,IAAM,SAAS;AAAA,EACpB,QAAQ,EAAE,QAAQA,eAAc;AAClC;;;AJCO,IAAM,iBAA8B;AAAA,EACzC,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,KAAK,OAAO,EAAE,QAAAC,SAAQ,SAAS,MAAM,KAAK,GAAG;AAC3C,UAAM,EAAE,WAAW,CAAC,EAAc,IAAIA;AACtC,UAAM,EAAE,KAAK,SAAS,QAAQ,WAAW,YAAY,QAAQ,IAAI;AAEjE,QAAI,CAAC,IAAK;AAEV,UAAM,YAAY,EAAU,IAAI,IAAI,OAAO;AAC3C,UAAM,OAAO,YACT,UAAU,WAAWA,SAAQ,OAAO,IACpC,KAAK,UAAU,SAAS;AAE5B,UAAM,OAAO,KAAK,WAAW,uBAAO;AACpC,SAAK,KAAK,MAAM,EAAE,SAAS,QAAQ,UAAU,CAAC;AAAA,EAChD;AACF;AAEA,IAAO,gBAAQ;","names":["entity_action","config"]}
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ var e,t,r=Object.defineProperty,n=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},o=Object.getOwnPropertyNames,s=(e={"package.json"(e,t){t.exports={name:"@walkeros/core",description:"Core types and platform-agnostic utilities for walkerOS",version:"0.0.7",main:"./dist/index.js",module:"./dist/index.mjs",types:"./dist/index.d.ts",license:"MIT",files:["dist/**"],scripts:{build:"tsup --silent",clean:"rm -rf .turbo && rm -rf node_modules && rm -rf dist",dev:"jest --watchAll --colors",lint:'tsc && eslint "**/*.ts*"',test:"jest",update:"npx npm-check-updates -u && npm update"},dependencies:{},devDependencies:{},repository:{url:"git+https://github.com/elbwalker/walkerOS.git",directory:"packages/core"},author:"elbwalker <hello@elbwalker.com>",homepage:"https://github.com/elbwalker/walkerOS#readme",bugs:{url:"https://github.com/elbwalker/walkerOS/issues"},keywords:["walker","walkerOS","analytics","tracking","data collection","measurement","data privacy","privacy friendly","web analytics","product analytics","core","types","utils"],funding:[{type:"GitHub Sponsors",url:"https://github.com/sponsors/elbwalker"}]}}},function(){return t||(0,e[o(e)[0]])((t={exports:{}}).exports,t),t.exports}),a={merge:!0,shallow:!0,extend:!0};function i(e,t={},r={}){r={...a,...r};const n=Object.entries(t).reduce((t,[n,o])=>{const s=e[n];return r.merge&&Array.isArray(s)&&Array.isArray(o)?t[n]=o.reduce((e,t)=>e.includes(t)?e:[...e,t],[...s]):(r.extend||n in e)&&(t[n]=o),t},{});return r.shallow?{...e,...n}:(Object.assign(e,n),e)}var{version:c}=s();function p(e="entity action",t={}){const r=t.timestamp||(new Date).setHours(0,13,37,0),n={data:{id:"ers",name:"Everyday Ruck Snack",color:"black",size:"l",price:420}},o={data:{id:"cc",name:"Cool Cap",size:"one size",price:42}};return function(e={}){var t;const r=e.timestamp||(new Date).setHours(0,13,37,0),n=e.group||"gr0up",o=e.count||1,s=i({event:"entity action",data:{string:"foo",number:1,boolean:!0,array:[0,"text",!1],not:void 0},context:{dev:["test",1]},globals:{lang:"elb"},custom:{completely:"random"},user:{id:"us3r",device:"c00k13",session:"s3ss10n"},nested:[{type:"child",data:{is:"subordinated"},nested:[],context:{element:["child",0]}}],consent:{functional:!0},id:`${r}-${n}-${o}`,trigger:"test",entity:"entity",action:"action",timestamp:r,timing:3.14,group:n,count:o,version:{source:c,tagging:1},source:{type:"web",id:"https://localhost:80",previous_id:"http://remotehost:9001"}},e,{merge:!1});if(e.event){const[r,n]=null!=(t=e.event.split(" "))?t:[];r&&n&&(s.entity=r,s.action=n)}return s}({...{"cart view":{data:{currency:"EUR",value:2*n.data.price},context:{shopping:["cart",0]},globals:{pagegroup:"shop"},nested:[{type:"product",data:{...n.data,quantity:2},context:{shopping:["cart",0]},nested:[]}],trigger:"load"},"checkout view":{data:{step:"payment",currency:"EUR",value:n.data.price+o.data.price},context:{shopping:["checkout",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...n,context:{shopping:["checkout",0]},nested:[]},{type:"product",...o,context:{shopping:["checkout",0]},nested:[]}],trigger:"load"},"order complete":{data:{id:"0rd3r1d",currency:"EUR",shipping:5.22,taxes:73.76,total:555},context:{shopping:["complete",0]},globals:{pagegroup:"shop"},nested:[{type:"product",...n,context:{shopping:["complete",0]},nested:[]},{type:"product",...o,context:{shopping:["complete",0]},nested:[]},{type:"gift",data:{name:"Surprise"},context:{shopping:["complete",0]},nested:[]}],trigger:"load"},"page view":{data:{domain:"www.example.com",title:"walkerOS documentation",referrer:"https://www.elbwalker.com/",search:"?foo=bar",hash:"#hash",id:"/docs/"},globals:{pagegroup:"docs"},trigger:"load"},"product add":{...n,context:{shopping:["intent",0]},globals:{pagegroup:"shop"},nested:[],trigger:"click"},"product view":{...n,context:{shopping:["detail",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"product visible":{data:{...n.data,position:3,promo:!0},context:{shopping:["discover",0]},globals:{pagegroup:"shop"},nested:[],trigger:"load"},"promotion visible":{data:{name:"Setting up tracking easily",position:"hero"},context:{ab_test:["engagement",0]},globals:{pagegroup:"homepage"},trigger:"visible"},"session start":{data:{id:"s3ss10n",start:r,isNew:!0,count:1,runs:1,isStart:!0,storage:!0,referrer:"",device:"c00k13"},user:{id:"us3r",device:"c00k13",session:"s3ss10n",hash:"h4sh",address:"street number",email:"user@example.com",phone:"+49 123 456 789",userAgent:"Mozilla...",browser:"Chrome",browserVersion:"90",deviceType:"desktop",language:"de-DE",country:"DE",region:"HH",city:"Hamburg",zip:"20354",timezone:"Berlin",os:"walkerOS",osVersion:"1.0",screenSize:"1337x420",ip:"127.0.0.0",internal:!0,custom:"value"}}}[e],...t,event:e})}function d(e,t,r){return function(...n){try{return e(...n)}catch(e){if(!t)return;return t(e)}finally{null==r||r()}}}function u(e){return void 0===e||function(e,t){return typeof e==typeof t}(e,"")?e:JSON.stringify(e)}function l(e={}){return i({"Content-Type":"application/json; charset=utf-8"},e)}function g(e,t,r={transport:"fetch"}){switch(r.transport||"fetch"){case"beacon":return function(e,t){const r=u(t),n=navigator.sendBeacon(e,r);return{ok:n,error:n?void 0:"Failed to send beacon"}}(e,t);case"xhr":return function(e,t,r={}){const n=l(r.headers),o=r.method||"POST",s=u(t);return d(()=>{const t=new XMLHttpRequest;t.open(o,e,!1);for(const e in n)t.setRequestHeader(e,n[e]);t.send(s);const r=t.status>=200&&t.status<300;return{ok:r,data:d(JSON.parse,()=>t.response)(t.response),error:r?void 0:`${t.status} ${t.statusText}`}},e=>({ok:!1,error:e.message}))()}(e,t,r);default:return async function(e,t,r={}){const n=l(r.headers),o=u(t);return function(e,t,r){return async function(...n){try{return await e(...n)}catch(e){if(!t)return;return await t(e)}finally{await(null==r?void 0:r())}}}(async()=>{const t=await fetch(e,{method:r.method||"POST",headers:n,keepalive:!0,credentials:r.credentials||"same-origin",mode:r.noCors?"no-cors":"cors",body:o}),s=r.noCors?"":await t.text();return{ok:t.ok,data:s,error:t.ok?void 0:t.statusText}},e=>({ok:!1,error:e.message}))()}(e,t,r)}}var h={},m={};n(m,{events:()=>y,mapping:()=>b});var y={};function f(){const e=p("entity action");return JSON.stringify(e.data)}n(y,{entity_action:()=>f});var b={};n(b,{config:()=>w,entity_action:()=>v});var v={data:"data"},w={entity:{action:v}},k={type:"api",config:{},push(e,{config:t,mapping:r,data:n,wrap:o}){const{settings:s={}}=t,{url:a,headers:i,method:c,transform:p,transport:d="fetch"}=s;if(!a)return;const u=void 0!==n?n:e;const l=p?p(u,t,r):JSON.stringify(u);o("sendWeb",g)(a,l,{headers:i,method:c,transport:d})}},x=k;export{h as DestinationAPI,x as default,k as destinationAPI,m as examples};//# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/index.ts","../src/examples/index.ts","../src/examples/events.ts","../src/examples/mapping.ts","../src/index.ts"],"sourcesContent":["import type {\n Mapping as WalkerOSMapping,\n SendDataValue,\n SendHeaders,\n Elb,\n} from '@walkeros/core';\nimport type { DestinationWeb } from '@walkeros/web-core';\nimport type { SendWebTransport } from '@walkeros/web-core';\n\ndeclare global {\n // Augment the global WalkerOS namespace with destination-specific types\n namespace WalkerOS {\n interface Elb extends Elb.RegisterDestination<Destination, Config> {}\n }\n}\n\nexport type Destination = DestinationWeb.Destination<Settings, Mapping>;\nexport type Config = DestinationWeb.Config<Settings, Mapping>;\n\n// Destination-specific settings (internal usage)\nexport interface Settings {\n url: string;\n headers?: SendHeaders;\n method?: string;\n transform?: Transform;\n transport?: SendWebTransport;\n}\n\n// Single event transformation rule\nexport interface Mapping {}\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n\nexport type Transform = (\n data?: unknown,\n config?: Config,\n mapping?: WalkerOSMapping.Rule<Mapping>,\n) => SendDataValue;\n","export * as events from './events';\nexport * as mapping from './mapping';\n","import { getEvent } from '@walkeros/core';\n\nexport function entity_action() {\n const event = getEvent('entity action');\n\n return JSON.stringify(event.data);\n}\n","import type { Mapping } from '@walkeros/core';\nimport type { DestinationAPI } from '..';\n\nexport const entity_action: DestinationAPI.Rule = {\n data: 'data',\n};\n\nexport const config = {\n entity: { action: entity_action },\n} satisfies DestinationAPI.Rules;\n","import type { Settings, Destination } from './types';\nimport { isDefined } from '@walkeros/core';\nimport { sendWeb } from '@walkeros/web-core';\n\n// Types\nexport * as DestinationAPI from './types';\n\n// Examples\nexport * as examples from './examples';\n\nexport const destinationAPI: Destination = {\n type: 'api',\n\n config: {},\n\n push(event, { config, mapping, data, wrap }) {\n const { settings = {} as Settings } = config;\n const { url, headers, method, transform, transport = 'fetch' } = settings;\n\n if (!url) return;\n\n const eventData = isDefined(data) ? data : event;\n const body = transform\n ? transform(eventData, config, mapping) // Transform event data\n : JSON.stringify(eventData);\n\n const send = wrap('sendWeb', sendWeb) as typeof sendWeb;\n send(url, body, { headers, method, transport });\n },\n};\n\nexport default destinationAPI;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAEO,SAAS,gBAAgB;AAC9B,QAAM,QAAQ,EAAS,eAAe;AAEtC,SAAO,KAAK,UAAU,MAAM,IAAI;AAClC;;;ACNA;AAAA;AAAA;AAAA,uBAAAA;AAAA;AAGO,IAAMA,iBAAqC;AAAA,EAChD,MAAM;AACR;AAEO,IAAM,SAAS;AAAA,EACpB,QAAQ,EAAE,QAAQA,eAAc;AAClC;;;ACCO,IAAM,iBAA8B;AAAA,EACzC,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,KAAK,OAAO,EAAE,QAAAC,SAAQ,SAAS,MAAM,KAAK,GAAG;AAC3C,UAAM,EAAE,WAAW,CAAC,EAAc,IAAIA;AACtC,UAAM,EAAE,KAAK,SAAS,QAAQ,WAAW,YAAY,QAAQ,IAAI;AAEjE,QAAI,CAAC,IAAK;AAEV,UAAM,YAAY,EAAU,IAAI,IAAI,OAAO;AAC3C,UAAM,OAAO,YACT,UAAU,WAAWA,SAAQ,OAAO,IACpC,KAAK,UAAU,SAAS;AAE5B,UAAM,OAAO,KAAK,WAAW,CAAO;AACpC,SAAK,KAAK,MAAM,EAAE,SAAS,QAAQ,UAAU,CAAC;AAAA,EAChD;AACF;AAEA,IAAO,gBAAQ;","names":["entity_action","config"]}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@walkeros/web-destination-api",
3
+ "description": "Web API destination for walkerOS",
4
+ "version": "0.0.7",
5
+ "license": "MIT",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.js"
14
+ },
15
+ "./examples": {
16
+ "types": "./dist/examples/index.d.ts",
17
+ "import": "./dist/examples/index.mjs",
18
+ "require": "./dist/examples/index.js"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist/**"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsup --silent",
26
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
27
+ "dev": "jest --watchAll --colors",
28
+ "lint": "tsc && eslint \"**/*.ts*\"",
29
+ "test": "jest",
30
+ "update": "npx npm-check-updates -u && npm update"
31
+ },
32
+ "dependencies": {
33
+ "@walkeros/web-core": "0.0.7"
34
+ },
35
+ "devDependencies": {},
36
+ "repository": {
37
+ "url": "git+https://github.com/elbwalker/walkerOS.git",
38
+ "directory": "packages/web/destinations/api"
39
+ },
40
+ "author": "elbwalker <hello@elbwalker.com>",
41
+ "homepage": "https://github.com/elbwalker/walkerOS#readme",
42
+ "bugs": {
43
+ "url": "https://github.com/elbwalker/walkerOS/issues"
44
+ },
45
+ "keywords": [
46
+ "walker",
47
+ "walkerOS",
48
+ "destination",
49
+ "web",
50
+ "api"
51
+ ],
52
+ "funding": [
53
+ {
54
+ "type": "GitHub Sponsors",
55
+ "url": "https://github.com/sponsors/elbwalker"
56
+ }
57
+ ]
58
+ }