@blotoutio/edgetag-sdk-js 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # EdgeTag SDK Core
2
+
3
+ More info on https://edgetag.io/integration/js
package/cjs/index.js ADDED
@@ -0,0 +1,361 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const isDevMode = process.env.NODE_ENV === 'development';
6
+ const tagStorage = 'edgeTag';
7
+ const consentKey = 'consent';
8
+ const providersKey = 'providers';
9
+ const keyPrefix = `_worker`;
10
+
11
+ const initKey = `${keyPrefix}Store`;
12
+ const saveDataPerKey = (persistType, provider, value, key) => {
13
+ const storage = getData(persistType);
14
+ if (!storage.data) {
15
+ storage.data = {};
16
+ }
17
+ if (!storage.data[provider]) {
18
+ storage.data[provider] = {};
19
+ }
20
+ // migration
21
+ if (storage[provider]) {
22
+ storage.data[provider] = storage[provider];
23
+ }
24
+ storage.data[provider][key] = value;
25
+ saveData(persistType, storage);
26
+ };
27
+ const savePerKey = (persistType, provider, value, key) => {
28
+ const storage = getData(persistType);
29
+ if (!storage[provider]) {
30
+ storage[provider] = {};
31
+ }
32
+ storage[provider][key] = value;
33
+ saveData(persistType, storage);
34
+ };
35
+ const getDataPerKey = (persistType, provider, key) => {
36
+ const storage = getData(persistType);
37
+ if (!storage[provider]) {
38
+ return undefined;
39
+ }
40
+ return storage[provider][key];
41
+ };
42
+ const saveData = (persistType, value, key = initKey) => {
43
+ if (persistType === 'session') {
44
+ saveSession(value, key);
45
+ return;
46
+ }
47
+ saveLocal(value, key);
48
+ };
49
+ const getData = (persistType, key = initKey) => {
50
+ if (persistType === 'session') {
51
+ return getSession(key);
52
+ }
53
+ return getLocal(key);
54
+ };
55
+ const saveLocal = (value, key) => {
56
+ localStorage.setItem(key, JSON.stringify(value));
57
+ };
58
+ const getLocal = (key) => {
59
+ return JSON.parse(localStorage.getItem(key)) || {};
60
+ };
61
+ const saveSession = (value, key) => {
62
+ sessionStorage.setItem(key, JSON.stringify(value));
63
+ };
64
+ const getSession = (key) => {
65
+ return JSON.parse(sessionStorage.getItem(key)) || {};
66
+ };
67
+
68
+ let endpointUrl = '';
69
+ const generateUrl = (path) => {
70
+ const endpoint = getUrl();
71
+ if (!endpoint) {
72
+ console.log('URL is not valid');
73
+ return '';
74
+ }
75
+ return `${endpoint}${path}`;
76
+ };
77
+ const getUrl = () => {
78
+ return endpointUrl;
79
+ };
80
+ const setUrl = (url) => {
81
+ if (url == null) {
82
+ return;
83
+ }
84
+ endpointUrl = url;
85
+ };
86
+ const getTagURL = () => {
87
+ return generateUrl('/tag');
88
+ };
89
+ const getInitURL = () => {
90
+ return generateUrl('/init');
91
+ };
92
+ const getConsentURL = () => {
93
+ return generateUrl('/consent');
94
+ };
95
+
96
+ let consentDisabled = false;
97
+ const setPreferences = (preferences) => {
98
+ if (!preferences) {
99
+ return false;
100
+ }
101
+ if (!preferences.edgeURL) {
102
+ console.error('Please provide URL for EdgeTag');
103
+ return false;
104
+ }
105
+ consentDisabled = !!preferences.disableConsentCheck;
106
+ setUrl(preferences.edgeURL);
107
+ return true;
108
+ };
109
+ const isConsentDisabled = () => consentDisabled;
110
+
111
+ const getUserAgent = () => {
112
+ const nav = navigator;
113
+ let ua = nav.userAgent;
114
+ ua += nav.brave ? `${ua} Brave` : '';
115
+ return ua;
116
+ };
117
+ const allowTag = (providers) => {
118
+ const consent = getDataPerKey('local', tagStorage, consentKey);
119
+ if (isConsentDisabled()) {
120
+ return true;
121
+ }
122
+ if (!consent) {
123
+ return false;
124
+ }
125
+ if (consent.all === true) {
126
+ return true;
127
+ }
128
+ if (!providers) {
129
+ return Object.values(consent).find((isAllowed) => isAllowed);
130
+ }
131
+ const allProviders = getDataPerKey('local', tagStorage, providersKey) || [];
132
+ for (const provider of allProviders) {
133
+ const tagProviderSetting = providers[provider];
134
+ if (tagProviderSetting ||
135
+ (providers.all === true && tagProviderSetting == undefined) ||
136
+ (providers.all === false && tagProviderSetting === true)) {
137
+ if (consent[provider]) {
138
+ return true;
139
+ }
140
+ }
141
+ }
142
+ return false;
143
+ };
144
+
145
+ const beacon = (url, payload) => {
146
+ let blob;
147
+ if (payload) {
148
+ blob = new Blob([JSON.stringify(payload)], { type: 'application/json' });
149
+ }
150
+ return navigator.sendBeacon(url, blob);
151
+ };
152
+ const ajax = async (method, url, payload) => {
153
+ return await fetch(url, {
154
+ method,
155
+ headers: {
156
+ 'Content-type': 'application/json; charset=utf-8',
157
+ Accept: 'application/json; charset=utf-8',
158
+ },
159
+ body: JSON.stringify(payload),
160
+ credentials: 'include',
161
+ })
162
+ .then((response) => response.json().then((data) => ({ status: response.status, body: data })))
163
+ .then((data) => {
164
+ if (data.status < 200 || data.status >= 300) {
165
+ // Q: do we need to retry?
166
+ return Promise.reject(new Error(JSON.stringify(data.body)));
167
+ }
168
+ return Promise.resolve(data.body);
169
+ })
170
+ .catch((error) => {
171
+ // Q: do we need to retry?
172
+ return Promise.reject(new Error(error));
173
+ });
174
+ };
175
+ const getStandardPayload = (payload) => {
176
+ const data = {
177
+ pageUrl: window.location.href,
178
+ userAgent: getUserAgent(),
179
+ ...payload,
180
+ };
181
+ let storage = {};
182
+ const session = getData('session');
183
+ if (session) {
184
+ storage = {
185
+ ...storage,
186
+ ...session,
187
+ };
188
+ }
189
+ const local = getData('local');
190
+ if (local) {
191
+ storage = {
192
+ ...storage,
193
+ ...local,
194
+ };
195
+ }
196
+ data.storage = storage;
197
+ return data;
198
+ };
199
+ async function postRequest(url, data, options) {
200
+ if (!url) {
201
+ return Promise.reject(new Error('URL is empty'));
202
+ }
203
+ const payload = getStandardPayload(data);
204
+ if (options && options.method === 'beacon' && navigator.sendBeacon) {
205
+ return Promise.resolve(beacon(url, payload));
206
+ }
207
+ return await ajax('POST', url, payload);
208
+ }
209
+ async function getRequest(url, options) {
210
+ if (!url) {
211
+ return Promise.reject(new Error('URL is empty'));
212
+ }
213
+ if (options && options.method === 'beacon' && navigator.sendBeacon) {
214
+ return Promise.resolve(beacon(url));
215
+ }
216
+ return await ajax('GET', url);
217
+ }
218
+
219
+ const info = (data) => {
220
+ if (isDevMode) {
221
+ console.info(data);
222
+ }
223
+ };
224
+
225
+ const saveConsent = (consent) => {
226
+ savePerKey('local', tagStorage, consent, consentKey);
227
+ };
228
+ const handleConsent = (consent) => {
229
+ const payload = {
230
+ consentString: consent,
231
+ };
232
+ saveConsent(consent);
233
+ postRequest(getConsentURL(), payload).catch(info);
234
+ };
235
+
236
+ const handleTag = (name, data, providers) => {
237
+ let payload = {
238
+ eventName: name,
239
+ };
240
+ if (data) {
241
+ payload.data = data;
242
+ }
243
+ if (providers) {
244
+ payload.providers = providers;
245
+ }
246
+ if (!allowTag(providers)) {
247
+ console.log('No consent');
248
+ return;
249
+ }
250
+ postRequest(getTagURL(), payload).catch(info);
251
+ };
252
+
253
+ const getCookieValue = (key) => {
254
+ let name = `${key}=`;
255
+ let decodedCookie = decodeURIComponent(document.cookie);
256
+ let ca = decodedCookie.split(';');
257
+ for (let i = 0; i < ca.length; i++) {
258
+ let c = ca[i];
259
+ while (c.charAt(0) == ' ') {
260
+ c = c.substring(1);
261
+ }
262
+ if (c.indexOf(name) == 0) {
263
+ return c.substring(name.length, c.length);
264
+ }
265
+ }
266
+ return '';
267
+ };
268
+ const handleCaptureQuery = (provider, key, persistType) => {
269
+ const params = new URLSearchParams(window.location.search);
270
+ if (!params || !params.get(key)) {
271
+ return;
272
+ }
273
+ saveDataPerKey(persistType, provider, params.get(key), key);
274
+ };
275
+ const handleCaptureStorage = (provider, location, key, persistType) => {
276
+ let data;
277
+ switch (location) {
278
+ case 'cookie': {
279
+ data = getCookieValue(key);
280
+ break;
281
+ }
282
+ case 'local': {
283
+ data = sessionStorage.getItem(key);
284
+ break;
285
+ }
286
+ case 'session': {
287
+ data = localStorage.getItem(key);
288
+ break;
289
+ }
290
+ }
291
+ if (!data) {
292
+ return;
293
+ }
294
+ saveDataPerKey(persistType, provider, data, key);
295
+ };
296
+ const handleCapture = (provider, params) => {
297
+ params.forEach((param) => {
298
+ switch (param.type) {
299
+ case 'query': {
300
+ handleCaptureQuery(provider, param.key, param.persist);
301
+ break;
302
+ }
303
+ case 'storage': {
304
+ handleCaptureStorage(provider, param.location, param.key, param.persist);
305
+ break;
306
+ }
307
+ }
308
+ });
309
+ };
310
+
311
+ const handleManifest = (manifest) => {
312
+ const providers = [];
313
+ manifest.forEach((provider) => {
314
+ providers.push(provider.package);
315
+ Object.entries(provider.rules).forEach(([name, recipe]) => {
316
+ switch (name) {
317
+ case 'capture': {
318
+ handleCapture(provider.package, recipe);
319
+ return;
320
+ }
321
+ }
322
+ });
323
+ });
324
+ savePerKey('local', tagStorage, providers, providersKey);
325
+ };
326
+
327
+ const handleInit = (preferences) => {
328
+ const success = setPreferences(preferences);
329
+ if (!success) {
330
+ return;
331
+ }
332
+ let url = `${getInitURL()}`;
333
+ if (preferences.disableConsentCheck) {
334
+ url = `${url}?consentDisabled=true`;
335
+ saveConsent({ all: true });
336
+ }
337
+ getRequest(url)
338
+ .then((result) => {
339
+ if (!result) {
340
+ console.log('init failed');
341
+ return;
342
+ }
343
+ handleManifest(result.result);
344
+ })
345
+ .catch(info);
346
+ };
347
+
348
+ const init = (preferences) => {
349
+ handleInit(preferences);
350
+ };
351
+ const tag = (name, data, providers) => {
352
+ handleTag(name, data, providers);
353
+ };
354
+ const consent = (consent) => {
355
+ handleConsent(consent);
356
+ };
357
+
358
+ exports.consent = consent;
359
+ exports.init = init;
360
+ exports.tag = tag;
361
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/common/constants.ts","../src/common/storage.ts","../src/network/endPoint.ts","../src/common/init.ts","../src/common/utils.ts","../src/network/utils.ts","../src/common/logUtil.ts","../src/api/consent.ts","../src/api/tag.ts","../src/manifest/capture.ts","../src/manifest/index.ts","../src/api/init.ts","../src/index.ts"],"sourcesContent":["export const isDevMode = process.env.NODE_ENV === 'development'\nexport const tagStorage = 'edgeTag'\nexport const consentKey = 'consent'\nexport const providersKey = 'providers'\nexport const keyPrefix = `_worker`\n","import type { PersistType } from '../typings/internal'\nimport { keyPrefix } from './constants'\n\nconst initKey = `${keyPrefix}Store`\n\nexport const saveDataPerKey = (\n persistType: PersistType,\n provider: string,\n value: any,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage.data) {\n storage.data = {}\n }\n\n if (!storage.data[provider]) {\n storage.data[provider] = {}\n }\n\n // migration\n if (storage[provider]) {\n storage.data[provider] = storage[provider]\n }\n\n storage.data[provider][key] = value\n saveData(persistType, storage)\n}\n\nexport const savePerKey = (\n persistType: PersistType,\n provider: string,\n value: any,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage[provider]) {\n storage[provider] = {}\n }\n\n storage[provider][key] = value\n saveData(persistType, storage)\n}\n\nexport const getDataPerKey = (\n persistType: PersistType,\n provider: string,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage[provider]) {\n return undefined\n }\n\n return storage[provider][key]\n}\n\nexport const saveData = (\n persistType: PersistType,\n value: any,\n key = initKey\n) => {\n if (persistType === 'session') {\n saveSession(value, key)\n return\n }\n\n saveLocal(value, key)\n}\n\nexport const getData = (persistType: PersistType, key = initKey) => {\n if (persistType === 'session') {\n return getSession(key)\n }\n\n return getLocal(key)\n}\n\nconst saveLocal = (value: any, key: string) => {\n localStorage.setItem(key, JSON.stringify(value))\n}\n\nconst getLocal = (key: string): Record<string, any> => {\n return JSON.parse(localStorage.getItem(key)) || {}\n}\n\nconst saveSession = (value: any, key: string) => {\n sessionStorage.setItem(key, JSON.stringify(value))\n}\n\nconst getSession = (key: string): Record<string, any> => {\n return JSON.parse(sessionStorage.getItem(key)) || {}\n}\n","let endpointUrl = ''\n\nconst generateUrl = (path: string) => {\n const endpoint = getUrl()\n if (!endpoint) {\n console.log('URL is not valid')\n return ''\n }\n\n return `${endpoint}${path}`\n}\n\nexport const getUrl = (): string => {\n return endpointUrl\n}\n\nexport const setUrl = (url?: string): void => {\n if (url == null) {\n return\n }\n\n endpointUrl = url\n}\n\nexport const getTagURL = (): string => {\n return generateUrl('/tag')\n}\n\nexport const getInitURL = (): string => {\n return generateUrl('/init')\n}\n\nexport const getConsentURL = (): string => {\n return generateUrl('/consent')\n}\n","import { setUrl } from '../network/endPoint'\nimport type { InitPreferences } from '../typings'\n\nlet consentDisabled = false\n\nexport const setPreferences = (preferences: InitPreferences): boolean => {\n if (!preferences) {\n return false\n }\n\n if (!preferences.edgeURL) {\n console.error('Please provide URL for EdgeTag')\n return false\n }\n\n consentDisabled = !!preferences.disableConsentCheck\n\n setUrl(preferences.edgeURL)\n return true\n}\n\nexport const isConsentDisabled = () => consentDisabled\n","import type { Navigator } from '../typings/internal'\nimport { getDataPerKey } from './storage'\nimport { consentKey, providersKey, tagStorage } from './constants'\nimport { Data } from '../typings'\nimport { isConsentDisabled } from './init'\n\nexport const getUserAgent = (): string => {\n const nav = navigator as unknown as Navigator\n let ua = nav.userAgent\n ua += nav.brave ? `${ua} Brave` : ''\n return ua\n}\n\nexport const allowTag = (providers: Data): boolean => {\n const consent: Record<string, boolean> = getDataPerKey(\n 'local',\n tagStorage,\n consentKey\n )\n\n if (isConsentDisabled()) {\n return true\n }\n\n if (!consent) {\n return false\n }\n\n if (consent.all === true) {\n return true\n }\n\n if (!providers) {\n return Object.values(consent).find((isAllowed: boolean) => isAllowed)\n }\n\n const allProviders = getDataPerKey('local', tagStorage, providersKey) || []\n for (const provider of allProviders) {\n const tagProviderSetting = providers[provider]\n if (\n tagProviderSetting ||\n (providers.all === true && tagProviderSetting == undefined) ||\n (providers.all === false && tagProviderSetting === true)\n ) {\n if (consent[provider]) {\n return true\n }\n }\n }\n\n return false\n}\n","import { getUserAgent } from '../common/utils'\nimport { getData } from '../common/storage'\nimport type { EventOptions } from '../typings'\nimport type { PostData, PostPayload } from '../typings/internal'\n\nconst beacon = (url: string, payload?: Record<string, any>) => {\n let blob\n if (payload) {\n blob = new Blob([JSON.stringify(payload)], { type: 'application/json' })\n }\n return navigator.sendBeacon(url, blob)\n}\n\nconst ajax = async (\n method: string,\n url: string,\n payload?: Record<string, any>\n) => {\n return await fetch(url, {\n method,\n headers: {\n 'Content-type': 'application/json; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n },\n body: JSON.stringify(payload),\n credentials: 'include',\n })\n .then((response) =>\n response.json().then((data) => ({ status: response.status, body: data }))\n )\n .then((data) => {\n if (data.status < 200 || data.status >= 300) {\n // Q: do we need to retry?\n return Promise.reject(new Error(JSON.stringify(data.body)))\n }\n return Promise.resolve(data.body)\n })\n .catch((error) => {\n // Q: do we need to retry?\n return Promise.reject(new Error(error))\n })\n}\n\nconst getStandardPayload = (payload: PostData): PostPayload => {\n const data: PostPayload = {\n pageUrl: window.location.href,\n userAgent: getUserAgent(),\n ...payload,\n }\n\n let storage = {}\n const session = getData('session')\n if (session) {\n storage = {\n ...storage,\n ...session,\n }\n }\n\n const local = getData('local')\n if (local) {\n storage = {\n ...storage,\n ...local,\n }\n }\n\n data.storage = storage\n\n return data\n}\n\nexport async function postRequest(\n url: string,\n data?: PostData,\n options?: EventOptions\n): Promise<unknown> {\n if (!url) {\n return Promise.reject(new Error('URL is empty'))\n }\n\n const payload = getStandardPayload(data)\n\n if (options && options.method === 'beacon' && navigator.sendBeacon) {\n return Promise.resolve(beacon(url, payload))\n }\n\n return await ajax('POST', url, payload)\n}\n\nexport async function getRequest(\n url: string,\n options?: EventOptions\n): Promise<unknown> {\n if (!url) {\n return Promise.reject(new Error('URL is empty'))\n }\n\n if (options && options.method === 'beacon' && navigator.sendBeacon) {\n return Promise.resolve(beacon(url))\n }\n\n return await ajax('GET', url)\n}\n","import { isDevMode } from './constants'\n\nexport const info = (data: string): void => {\n if (isDevMode) {\n console.info(data)\n }\n}\n\nexport const log = (data: string): void => {\n if (isDevMode) {\n console.log(data)\n }\n}\n\nexport const error = (data: string): void => {\n if (isDevMode) {\n console.error(data)\n }\n}\n","import type { ConsentRequest } from '../typings/internal'\nimport { postRequest } from '../network/utils'\nimport { getConsentURL } from '../network/endPoint'\nimport { info } from '../common/logUtil'\nimport { Data } from '../typings'\nimport { savePerKey } from '../common/storage'\nimport { consentKey, tagStorage } from '../common/constants'\n\nexport const saveConsent = (consent: Data) => {\n savePerKey('local', tagStorage, consent, consentKey)\n}\n\nexport const handleConsent = (consent: Data) => {\n const payload: ConsentRequest = {\n consentString: consent,\n }\n\n saveConsent(consent)\n postRequest(getConsentURL(), payload).catch(info)\n}\n","import type { Data } from '../typings'\nimport type { TagRequest } from '../typings/internal'\nimport { postRequest } from '../network/utils'\nimport { getTagURL } from '../network/endPoint'\nimport { info } from '../common/logUtil'\nimport { allowTag } from '../common/utils'\n\nexport const handleTag = (name: string, data?: Data, providers?: Data) => {\n let payload: TagRequest = {\n eventName: name,\n }\n\n if (data) {\n payload.data = data\n }\n\n if (providers) {\n payload.providers = providers\n }\n\n if (!allowTag(providers)) {\n console.log('No consent')\n return\n }\n\n postRequest(getTagURL(), payload).catch(info)\n}\n","import { saveDataPerKey } from '../common/storage'\nimport { ManifestRule, PersistType } from '../typings/internal'\n\nconst getCookieValue = (key: string): string => {\n let name = `${key}=`\n let decodedCookie = decodeURIComponent(document.cookie)\n let ca = decodedCookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) == ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length)\n }\n }\n\n return ''\n}\n\nconst handleCaptureQuery = (\n provider: string,\n key: string,\n persistType: PersistType\n) => {\n const params = new URLSearchParams(window.location.search)\n if (!params || !params.get(key)) {\n return\n }\n\n saveDataPerKey(persistType, provider, params.get(key), key)\n}\n\nconst handleCaptureStorage = (\n provider: string,\n location: string,\n key: string,\n persistType: PersistType\n) => {\n let data\n switch (location) {\n case 'cookie': {\n data = getCookieValue(key)\n break\n }\n case 'local': {\n data = sessionStorage.getItem(key)\n break\n }\n case 'session': {\n data = localStorage.getItem(key)\n break\n }\n }\n\n if (!data) {\n return\n }\n\n saveDataPerKey(persistType, provider, data, key)\n}\n\nexport const handleCapture = (provider: string, params: ManifestRule[]) => {\n params.forEach((param) => {\n switch (param.type) {\n case 'query': {\n handleCaptureQuery(provider, param.key, param.persist)\n break\n }\n case 'storage': {\n handleCaptureStorage(provider, param.location, param.key, param.persist)\n break\n }\n }\n })\n}\n","import { handleCapture } from './capture'\nimport { savePerKey } from '../common/storage'\nimport { providersKey, tagStorage } from '../common/constants'\nimport { Manifest } from '../typings/internal'\n\nexport const handleManifest = (manifest: Manifest[]) => {\n const providers: string[] = []\n manifest.forEach((provider) => {\n providers.push(provider.package)\n Object.entries(provider.rules).forEach(([name, recipe]) => {\n switch (name) {\n case 'capture': {\n handleCapture(provider.package, recipe)\n return\n }\n }\n })\n })\n\n savePerKey('local', tagStorage, providers, providersKey)\n}\n","import type { InitPreferences } from '../typings'\nimport { setPreferences } from '../common/init'\nimport { getRequest } from '../network/utils'\nimport { getInitURL } from '../network/endPoint'\nimport { handleManifest } from '../manifest'\nimport { info } from '../common/logUtil'\nimport { saveConsent } from './consent'\n\nexport const handleInit = (preferences: InitPreferences) => {\n const success = setPreferences(preferences)\n if (!success) {\n return\n }\n\n let url = `${getInitURL()}`\n if (preferences.disableConsentCheck) {\n url = `${url}?consentDisabled=true`\n saveConsent({ all: true })\n }\n\n getRequest(url)\n .then((result: any) => {\n if (!result) {\n console.log('init failed')\n return\n }\n handleManifest(result.result)\n })\n .catch(info)\n}\n","import type { Data, InitPreferences } from './typings'\nimport { handleConsent } from './api/consent'\nimport { handleTag } from './api/tag'\nimport { handleInit } from './api/init'\n\nexport const init = (preferences: InitPreferences) => {\n handleInit(preferences)\n}\n\nexport const tag = (name: string, data?: Data, providers?: Data) => {\n handleTag(name, data, providers)\n}\n\nexport const consent = (consent: Data) => {\n handleConsent(consent)\n}\n"],"names":[],"mappings":"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"}
package/esm/index.js ADDED
@@ -0,0 +1,355 @@
1
+ const isDevMode = process.env.NODE_ENV === 'development';
2
+ const tagStorage = 'edgeTag';
3
+ const consentKey = 'consent';
4
+ const providersKey = 'providers';
5
+ const keyPrefix = `_worker`;
6
+
7
+ const initKey = `${keyPrefix}Store`;
8
+ const saveDataPerKey = (persistType, provider, value, key) => {
9
+ const storage = getData(persistType);
10
+ if (!storage.data) {
11
+ storage.data = {};
12
+ }
13
+ if (!storage.data[provider]) {
14
+ storage.data[provider] = {};
15
+ }
16
+ // migration
17
+ if (storage[provider]) {
18
+ storage.data[provider] = storage[provider];
19
+ }
20
+ storage.data[provider][key] = value;
21
+ saveData(persistType, storage);
22
+ };
23
+ const savePerKey = (persistType, provider, value, key) => {
24
+ const storage = getData(persistType);
25
+ if (!storage[provider]) {
26
+ storage[provider] = {};
27
+ }
28
+ storage[provider][key] = value;
29
+ saveData(persistType, storage);
30
+ };
31
+ const getDataPerKey = (persistType, provider, key) => {
32
+ const storage = getData(persistType);
33
+ if (!storage[provider]) {
34
+ return undefined;
35
+ }
36
+ return storage[provider][key];
37
+ };
38
+ const saveData = (persistType, value, key = initKey) => {
39
+ if (persistType === 'session') {
40
+ saveSession(value, key);
41
+ return;
42
+ }
43
+ saveLocal(value, key);
44
+ };
45
+ const getData = (persistType, key = initKey) => {
46
+ if (persistType === 'session') {
47
+ return getSession(key);
48
+ }
49
+ return getLocal(key);
50
+ };
51
+ const saveLocal = (value, key) => {
52
+ localStorage.setItem(key, JSON.stringify(value));
53
+ };
54
+ const getLocal = (key) => {
55
+ return JSON.parse(localStorage.getItem(key)) || {};
56
+ };
57
+ const saveSession = (value, key) => {
58
+ sessionStorage.setItem(key, JSON.stringify(value));
59
+ };
60
+ const getSession = (key) => {
61
+ return JSON.parse(sessionStorage.getItem(key)) || {};
62
+ };
63
+
64
+ let endpointUrl = '';
65
+ const generateUrl = (path) => {
66
+ const endpoint = getUrl();
67
+ if (!endpoint) {
68
+ console.log('URL is not valid');
69
+ return '';
70
+ }
71
+ return `${endpoint}${path}`;
72
+ };
73
+ const getUrl = () => {
74
+ return endpointUrl;
75
+ };
76
+ const setUrl = (url) => {
77
+ if (url == null) {
78
+ return;
79
+ }
80
+ endpointUrl = url;
81
+ };
82
+ const getTagURL = () => {
83
+ return generateUrl('/tag');
84
+ };
85
+ const getInitURL = () => {
86
+ return generateUrl('/init');
87
+ };
88
+ const getConsentURL = () => {
89
+ return generateUrl('/consent');
90
+ };
91
+
92
+ let consentDisabled = false;
93
+ const setPreferences = (preferences) => {
94
+ if (!preferences) {
95
+ return false;
96
+ }
97
+ if (!preferences.edgeURL) {
98
+ console.error('Please provide URL for EdgeTag');
99
+ return false;
100
+ }
101
+ consentDisabled = !!preferences.disableConsentCheck;
102
+ setUrl(preferences.edgeURL);
103
+ return true;
104
+ };
105
+ const isConsentDisabled = () => consentDisabled;
106
+
107
+ const getUserAgent = () => {
108
+ const nav = navigator;
109
+ let ua = nav.userAgent;
110
+ ua += nav.brave ? `${ua} Brave` : '';
111
+ return ua;
112
+ };
113
+ const allowTag = (providers) => {
114
+ const consent = getDataPerKey('local', tagStorage, consentKey);
115
+ if (isConsentDisabled()) {
116
+ return true;
117
+ }
118
+ if (!consent) {
119
+ return false;
120
+ }
121
+ if (consent.all === true) {
122
+ return true;
123
+ }
124
+ if (!providers) {
125
+ return Object.values(consent).find((isAllowed) => isAllowed);
126
+ }
127
+ const allProviders = getDataPerKey('local', tagStorage, providersKey) || [];
128
+ for (const provider of allProviders) {
129
+ const tagProviderSetting = providers[provider];
130
+ if (tagProviderSetting ||
131
+ (providers.all === true && tagProviderSetting == undefined) ||
132
+ (providers.all === false && tagProviderSetting === true)) {
133
+ if (consent[provider]) {
134
+ return true;
135
+ }
136
+ }
137
+ }
138
+ return false;
139
+ };
140
+
141
+ const beacon = (url, payload) => {
142
+ let blob;
143
+ if (payload) {
144
+ blob = new Blob([JSON.stringify(payload)], { type: 'application/json' });
145
+ }
146
+ return navigator.sendBeacon(url, blob);
147
+ };
148
+ const ajax = async (method, url, payload) => {
149
+ return await fetch(url, {
150
+ method,
151
+ headers: {
152
+ 'Content-type': 'application/json; charset=utf-8',
153
+ Accept: 'application/json; charset=utf-8',
154
+ },
155
+ body: JSON.stringify(payload),
156
+ credentials: 'include',
157
+ })
158
+ .then((response) => response.json().then((data) => ({ status: response.status, body: data })))
159
+ .then((data) => {
160
+ if (data.status < 200 || data.status >= 300) {
161
+ // Q: do we need to retry?
162
+ return Promise.reject(new Error(JSON.stringify(data.body)));
163
+ }
164
+ return Promise.resolve(data.body);
165
+ })
166
+ .catch((error) => {
167
+ // Q: do we need to retry?
168
+ return Promise.reject(new Error(error));
169
+ });
170
+ };
171
+ const getStandardPayload = (payload) => {
172
+ const data = {
173
+ pageUrl: window.location.href,
174
+ userAgent: getUserAgent(),
175
+ ...payload,
176
+ };
177
+ let storage = {};
178
+ const session = getData('session');
179
+ if (session) {
180
+ storage = {
181
+ ...storage,
182
+ ...session,
183
+ };
184
+ }
185
+ const local = getData('local');
186
+ if (local) {
187
+ storage = {
188
+ ...storage,
189
+ ...local,
190
+ };
191
+ }
192
+ data.storage = storage;
193
+ return data;
194
+ };
195
+ async function postRequest(url, data, options) {
196
+ if (!url) {
197
+ return Promise.reject(new Error('URL is empty'));
198
+ }
199
+ const payload = getStandardPayload(data);
200
+ if (options && options.method === 'beacon' && navigator.sendBeacon) {
201
+ return Promise.resolve(beacon(url, payload));
202
+ }
203
+ return await ajax('POST', url, payload);
204
+ }
205
+ async function getRequest(url, options) {
206
+ if (!url) {
207
+ return Promise.reject(new Error('URL is empty'));
208
+ }
209
+ if (options && options.method === 'beacon' && navigator.sendBeacon) {
210
+ return Promise.resolve(beacon(url));
211
+ }
212
+ return await ajax('GET', url);
213
+ }
214
+
215
+ const info = (data) => {
216
+ if (isDevMode) {
217
+ console.info(data);
218
+ }
219
+ };
220
+
221
+ const saveConsent = (consent) => {
222
+ savePerKey('local', tagStorage, consent, consentKey);
223
+ };
224
+ const handleConsent = (consent) => {
225
+ const payload = {
226
+ consentString: consent,
227
+ };
228
+ saveConsent(consent);
229
+ postRequest(getConsentURL(), payload).catch(info);
230
+ };
231
+
232
+ const handleTag = (name, data, providers) => {
233
+ let payload = {
234
+ eventName: name,
235
+ };
236
+ if (data) {
237
+ payload.data = data;
238
+ }
239
+ if (providers) {
240
+ payload.providers = providers;
241
+ }
242
+ if (!allowTag(providers)) {
243
+ console.log('No consent');
244
+ return;
245
+ }
246
+ postRequest(getTagURL(), payload).catch(info);
247
+ };
248
+
249
+ const getCookieValue = (key) => {
250
+ let name = `${key}=`;
251
+ let decodedCookie = decodeURIComponent(document.cookie);
252
+ let ca = decodedCookie.split(';');
253
+ for (let i = 0; i < ca.length; i++) {
254
+ let c = ca[i];
255
+ while (c.charAt(0) == ' ') {
256
+ c = c.substring(1);
257
+ }
258
+ if (c.indexOf(name) == 0) {
259
+ return c.substring(name.length, c.length);
260
+ }
261
+ }
262
+ return '';
263
+ };
264
+ const handleCaptureQuery = (provider, key, persistType) => {
265
+ const params = new URLSearchParams(window.location.search);
266
+ if (!params || !params.get(key)) {
267
+ return;
268
+ }
269
+ saveDataPerKey(persistType, provider, params.get(key), key);
270
+ };
271
+ const handleCaptureStorage = (provider, location, key, persistType) => {
272
+ let data;
273
+ switch (location) {
274
+ case 'cookie': {
275
+ data = getCookieValue(key);
276
+ break;
277
+ }
278
+ case 'local': {
279
+ data = sessionStorage.getItem(key);
280
+ break;
281
+ }
282
+ case 'session': {
283
+ data = localStorage.getItem(key);
284
+ break;
285
+ }
286
+ }
287
+ if (!data) {
288
+ return;
289
+ }
290
+ saveDataPerKey(persistType, provider, data, key);
291
+ };
292
+ const handleCapture = (provider, params) => {
293
+ params.forEach((param) => {
294
+ switch (param.type) {
295
+ case 'query': {
296
+ handleCaptureQuery(provider, param.key, param.persist);
297
+ break;
298
+ }
299
+ case 'storage': {
300
+ handleCaptureStorage(provider, param.location, param.key, param.persist);
301
+ break;
302
+ }
303
+ }
304
+ });
305
+ };
306
+
307
+ const handleManifest = (manifest) => {
308
+ const providers = [];
309
+ manifest.forEach((provider) => {
310
+ providers.push(provider.package);
311
+ Object.entries(provider.rules).forEach(([name, recipe]) => {
312
+ switch (name) {
313
+ case 'capture': {
314
+ handleCapture(provider.package, recipe);
315
+ return;
316
+ }
317
+ }
318
+ });
319
+ });
320
+ savePerKey('local', tagStorage, providers, providersKey);
321
+ };
322
+
323
+ const handleInit = (preferences) => {
324
+ const success = setPreferences(preferences);
325
+ if (!success) {
326
+ return;
327
+ }
328
+ let url = `${getInitURL()}`;
329
+ if (preferences.disableConsentCheck) {
330
+ url = `${url}?consentDisabled=true`;
331
+ saveConsent({ all: true });
332
+ }
333
+ getRequest(url)
334
+ .then((result) => {
335
+ if (!result) {
336
+ console.log('init failed');
337
+ return;
338
+ }
339
+ handleManifest(result.result);
340
+ })
341
+ .catch(info);
342
+ };
343
+
344
+ const init = (preferences) => {
345
+ handleInit(preferences);
346
+ };
347
+ const tag = (name, data, providers) => {
348
+ handleTag(name, data, providers);
349
+ };
350
+ const consent = (consent) => {
351
+ handleConsent(consent);
352
+ };
353
+
354
+ export { consent, init, tag };
355
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/common/constants.ts","../src/common/storage.ts","../src/network/endPoint.ts","../src/common/init.ts","../src/common/utils.ts","../src/network/utils.ts","../src/common/logUtil.ts","../src/api/consent.ts","../src/api/tag.ts","../src/manifest/capture.ts","../src/manifest/index.ts","../src/api/init.ts","../src/index.ts"],"sourcesContent":["export const isDevMode = process.env.NODE_ENV === 'development'\nexport const tagStorage = 'edgeTag'\nexport const consentKey = 'consent'\nexport const providersKey = 'providers'\nexport const keyPrefix = `_worker`\n","import type { PersistType } from '../typings/internal'\nimport { keyPrefix } from './constants'\n\nconst initKey = `${keyPrefix}Store`\n\nexport const saveDataPerKey = (\n persistType: PersistType,\n provider: string,\n value: any,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage.data) {\n storage.data = {}\n }\n\n if (!storage.data[provider]) {\n storage.data[provider] = {}\n }\n\n // migration\n if (storage[provider]) {\n storage.data[provider] = storage[provider]\n }\n\n storage.data[provider][key] = value\n saveData(persistType, storage)\n}\n\nexport const savePerKey = (\n persistType: PersistType,\n provider: string,\n value: any,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage[provider]) {\n storage[provider] = {}\n }\n\n storage[provider][key] = value\n saveData(persistType, storage)\n}\n\nexport const getDataPerKey = (\n persistType: PersistType,\n provider: string,\n key: string\n) => {\n const storage = getData(persistType)\n if (!storage[provider]) {\n return undefined\n }\n\n return storage[provider][key]\n}\n\nexport const saveData = (\n persistType: PersistType,\n value: any,\n key = initKey\n) => {\n if (persistType === 'session') {\n saveSession(value, key)\n return\n }\n\n saveLocal(value, key)\n}\n\nexport const getData = (persistType: PersistType, key = initKey) => {\n if (persistType === 'session') {\n return getSession(key)\n }\n\n return getLocal(key)\n}\n\nconst saveLocal = (value: any, key: string) => {\n localStorage.setItem(key, JSON.stringify(value))\n}\n\nconst getLocal = (key: string): Record<string, any> => {\n return JSON.parse(localStorage.getItem(key)) || {}\n}\n\nconst saveSession = (value: any, key: string) => {\n sessionStorage.setItem(key, JSON.stringify(value))\n}\n\nconst getSession = (key: string): Record<string, any> => {\n return JSON.parse(sessionStorage.getItem(key)) || {}\n}\n","let endpointUrl = ''\n\nconst generateUrl = (path: string) => {\n const endpoint = getUrl()\n if (!endpoint) {\n console.log('URL is not valid')\n return ''\n }\n\n return `${endpoint}${path}`\n}\n\nexport const getUrl = (): string => {\n return endpointUrl\n}\n\nexport const setUrl = (url?: string): void => {\n if (url == null) {\n return\n }\n\n endpointUrl = url\n}\n\nexport const getTagURL = (): string => {\n return generateUrl('/tag')\n}\n\nexport const getInitURL = (): string => {\n return generateUrl('/init')\n}\n\nexport const getConsentURL = (): string => {\n return generateUrl('/consent')\n}\n","import { setUrl } from '../network/endPoint'\nimport type { InitPreferences } from '../typings'\n\nlet consentDisabled = false\n\nexport const setPreferences = (preferences: InitPreferences): boolean => {\n if (!preferences) {\n return false\n }\n\n if (!preferences.edgeURL) {\n console.error('Please provide URL for EdgeTag')\n return false\n }\n\n consentDisabled = !!preferences.disableConsentCheck\n\n setUrl(preferences.edgeURL)\n return true\n}\n\nexport const isConsentDisabled = () => consentDisabled\n","import type { Navigator } from '../typings/internal'\nimport { getDataPerKey } from './storage'\nimport { consentKey, providersKey, tagStorage } from './constants'\nimport { Data } from '../typings'\nimport { isConsentDisabled } from './init'\n\nexport const getUserAgent = (): string => {\n const nav = navigator as unknown as Navigator\n let ua = nav.userAgent\n ua += nav.brave ? `${ua} Brave` : ''\n return ua\n}\n\nexport const allowTag = (providers: Data): boolean => {\n const consent: Record<string, boolean> = getDataPerKey(\n 'local',\n tagStorage,\n consentKey\n )\n\n if (isConsentDisabled()) {\n return true\n }\n\n if (!consent) {\n return false\n }\n\n if (consent.all === true) {\n return true\n }\n\n if (!providers) {\n return Object.values(consent).find((isAllowed: boolean) => isAllowed)\n }\n\n const allProviders = getDataPerKey('local', tagStorage, providersKey) || []\n for (const provider of allProviders) {\n const tagProviderSetting = providers[provider]\n if (\n tagProviderSetting ||\n (providers.all === true && tagProviderSetting == undefined) ||\n (providers.all === false && tagProviderSetting === true)\n ) {\n if (consent[provider]) {\n return true\n }\n }\n }\n\n return false\n}\n","import { getUserAgent } from '../common/utils'\nimport { getData } from '../common/storage'\nimport type { EventOptions } from '../typings'\nimport type { PostData, PostPayload } from '../typings/internal'\n\nconst beacon = (url: string, payload?: Record<string, any>) => {\n let blob\n if (payload) {\n blob = new Blob([JSON.stringify(payload)], { type: 'application/json' })\n }\n return navigator.sendBeacon(url, blob)\n}\n\nconst ajax = async (\n method: string,\n url: string,\n payload?: Record<string, any>\n) => {\n return await fetch(url, {\n method,\n headers: {\n 'Content-type': 'application/json; charset=utf-8',\n Accept: 'application/json; charset=utf-8',\n },\n body: JSON.stringify(payload),\n credentials: 'include',\n })\n .then((response) =>\n response.json().then((data) => ({ status: response.status, body: data }))\n )\n .then((data) => {\n if (data.status < 200 || data.status >= 300) {\n // Q: do we need to retry?\n return Promise.reject(new Error(JSON.stringify(data.body)))\n }\n return Promise.resolve(data.body)\n })\n .catch((error) => {\n // Q: do we need to retry?\n return Promise.reject(new Error(error))\n })\n}\n\nconst getStandardPayload = (payload: PostData): PostPayload => {\n const data: PostPayload = {\n pageUrl: window.location.href,\n userAgent: getUserAgent(),\n ...payload,\n }\n\n let storage = {}\n const session = getData('session')\n if (session) {\n storage = {\n ...storage,\n ...session,\n }\n }\n\n const local = getData('local')\n if (local) {\n storage = {\n ...storage,\n ...local,\n }\n }\n\n data.storage = storage\n\n return data\n}\n\nexport async function postRequest(\n url: string,\n data?: PostData,\n options?: EventOptions\n): Promise<unknown> {\n if (!url) {\n return Promise.reject(new Error('URL is empty'))\n }\n\n const payload = getStandardPayload(data)\n\n if (options && options.method === 'beacon' && navigator.sendBeacon) {\n return Promise.resolve(beacon(url, payload))\n }\n\n return await ajax('POST', url, payload)\n}\n\nexport async function getRequest(\n url: string,\n options?: EventOptions\n): Promise<unknown> {\n if (!url) {\n return Promise.reject(new Error('URL is empty'))\n }\n\n if (options && options.method === 'beacon' && navigator.sendBeacon) {\n return Promise.resolve(beacon(url))\n }\n\n return await ajax('GET', url)\n}\n","import { isDevMode } from './constants'\n\nexport const info = (data: string): void => {\n if (isDevMode) {\n console.info(data)\n }\n}\n\nexport const log = (data: string): void => {\n if (isDevMode) {\n console.log(data)\n }\n}\n\nexport const error = (data: string): void => {\n if (isDevMode) {\n console.error(data)\n }\n}\n","import type { ConsentRequest } from '../typings/internal'\nimport { postRequest } from '../network/utils'\nimport { getConsentURL } from '../network/endPoint'\nimport { info } from '../common/logUtil'\nimport { Data } from '../typings'\nimport { savePerKey } from '../common/storage'\nimport { consentKey, tagStorage } from '../common/constants'\n\nexport const saveConsent = (consent: Data) => {\n savePerKey('local', tagStorage, consent, consentKey)\n}\n\nexport const handleConsent = (consent: Data) => {\n const payload: ConsentRequest = {\n consentString: consent,\n }\n\n saveConsent(consent)\n postRequest(getConsentURL(), payload).catch(info)\n}\n","import type { Data } from '../typings'\nimport type { TagRequest } from '../typings/internal'\nimport { postRequest } from '../network/utils'\nimport { getTagURL } from '../network/endPoint'\nimport { info } from '../common/logUtil'\nimport { allowTag } from '../common/utils'\n\nexport const handleTag = (name: string, data?: Data, providers?: Data) => {\n let payload: TagRequest = {\n eventName: name,\n }\n\n if (data) {\n payload.data = data\n }\n\n if (providers) {\n payload.providers = providers\n }\n\n if (!allowTag(providers)) {\n console.log('No consent')\n return\n }\n\n postRequest(getTagURL(), payload).catch(info)\n}\n","import { saveDataPerKey } from '../common/storage'\nimport { ManifestRule, PersistType } from '../typings/internal'\n\nconst getCookieValue = (key: string): string => {\n let name = `${key}=`\n let decodedCookie = decodeURIComponent(document.cookie)\n let ca = decodedCookie.split(';')\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i]\n while (c.charAt(0) == ' ') {\n c = c.substring(1)\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length)\n }\n }\n\n return ''\n}\n\nconst handleCaptureQuery = (\n provider: string,\n key: string,\n persistType: PersistType\n) => {\n const params = new URLSearchParams(window.location.search)\n if (!params || !params.get(key)) {\n return\n }\n\n saveDataPerKey(persistType, provider, params.get(key), key)\n}\n\nconst handleCaptureStorage = (\n provider: string,\n location: string,\n key: string,\n persistType: PersistType\n) => {\n let data\n switch (location) {\n case 'cookie': {\n data = getCookieValue(key)\n break\n }\n case 'local': {\n data = sessionStorage.getItem(key)\n break\n }\n case 'session': {\n data = localStorage.getItem(key)\n break\n }\n }\n\n if (!data) {\n return\n }\n\n saveDataPerKey(persistType, provider, data, key)\n}\n\nexport const handleCapture = (provider: string, params: ManifestRule[]) => {\n params.forEach((param) => {\n switch (param.type) {\n case 'query': {\n handleCaptureQuery(provider, param.key, param.persist)\n break\n }\n case 'storage': {\n handleCaptureStorage(provider, param.location, param.key, param.persist)\n break\n }\n }\n })\n}\n","import { handleCapture } from './capture'\nimport { savePerKey } from '../common/storage'\nimport { providersKey, tagStorage } from '../common/constants'\nimport { Manifest } from '../typings/internal'\n\nexport const handleManifest = (manifest: Manifest[]) => {\n const providers: string[] = []\n manifest.forEach((provider) => {\n providers.push(provider.package)\n Object.entries(provider.rules).forEach(([name, recipe]) => {\n switch (name) {\n case 'capture': {\n handleCapture(provider.package, recipe)\n return\n }\n }\n })\n })\n\n savePerKey('local', tagStorage, providers, providersKey)\n}\n","import type { InitPreferences } from '../typings'\nimport { setPreferences } from '../common/init'\nimport { getRequest } from '../network/utils'\nimport { getInitURL } from '../network/endPoint'\nimport { handleManifest } from '../manifest'\nimport { info } from '../common/logUtil'\nimport { saveConsent } from './consent'\n\nexport const handleInit = (preferences: InitPreferences) => {\n const success = setPreferences(preferences)\n if (!success) {\n return\n }\n\n let url = `${getInitURL()}`\n if (preferences.disableConsentCheck) {\n url = `${url}?consentDisabled=true`\n saveConsent({ all: true })\n }\n\n getRequest(url)\n .then((result: any) => {\n if (!result) {\n console.log('init failed')\n return\n }\n handleManifest(result.result)\n })\n .catch(info)\n}\n","import type { Data, InitPreferences } from './typings'\nimport { handleConsent } from './api/consent'\nimport { handleTag } from './api/tag'\nimport { handleInit } from './api/init'\n\nexport const init = (preferences: InitPreferences) => {\n handleInit(preferences)\n}\n\nexport const tag = (name: string, data?: Data, providers?: Data) => {\n handleTag(name, data, providers)\n}\n\nexport const consent = (consent: Data) => {\n handleConsent(consent)\n}\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ type Data = Record<string, any>
2
+
3
+ interface InitPreferences {
4
+ edgeURL: string
5
+ disableConsentCheck?: boolean
6
+ }
7
+
8
+ interface EventOptions {
9
+ method?: 'beacon'
10
+ }
11
+
12
+ export declare const init: (preferences: InitPreferences) => void
13
+
14
+ export declare const tag: (name: string, data?: Data) => void
15
+
16
+ export declare const consent: (consent: Data) => void
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ 'use strict'
2
+
3
+ module.exports = require('./cjs/index.js')
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "@blotoutio/edgetag-sdk-js",
3
+ "version": "0.2.0",
4
+ "description": "JS SDK for EdgeTag",
5
+ "author": "Blotout",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/blotoutio/edgetag-sdk",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/blotoutio/edgetag-sdk.git"
11
+ },
12
+ "files": [
13
+ "cjs",
14
+ "esm",
15
+ "index.js",
16
+ "package.json",
17
+ "README.md",
18
+ "index.d.ts"
19
+ ],
20
+ "types": "index.d.ts",
21
+ "main": "index.js",
22
+ "module": "esm/index.js",
23
+ "scripts": {
24
+ "prepublish": "npm run build",
25
+ "build": "rollup --config",
26
+ "lint": "prettier --check .",
27
+ "start": "rollup --config --w"
28
+ },
29
+ "dependencies": {
30
+ "uuid": "^8.3.0"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public"
34
+ }
35
+ }