diff --git a/.eslintrc.js b/.eslintrc.js
index d530ad2..a571a1d 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,22 +1,36 @@
+/* eslint-disable */
+
module.exports = {
env: {
browser: true,
node: true,
es6: true,
},
- extends: ['eslint:recommended', 'google', '@typescript-eslint/recommended'],
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:@typescript-eslint/recommended-requiring-type-checking',
+ 'prettier',
+ ],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parser: '@typescript-eslint/parser',
parserOptions: {
- ecmaVersion: 11,
- sourceType: 'module',
+ tsconfigRootDir: __dirname,
},
plugins: ['@typescript-eslint'],
rules: {
- indent: ['warn', 4],
+ indent: 'off',
'max-len': 'off',
},
+ overrides: [
+ {
+ files: ['*.ts', '*.tsx'], // Your TypeScript files extension
+ parserOptions: {
+ project: ['./tsconfig.json'], // Specify it only for TypeScript files
+ },
+ },
+ ],
};
diff --git a/README.md b/README.md
index f503ab8..6035a54 100644
--- a/README.md
+++ b/README.md
@@ -16,8 +16,7 @@ $ yarn add affiliate
Or use a CDN ([check out the codeless setup](#blogs-and-related-sites))
```html
-
-
+
```
## What It Can Do
@@ -43,7 +42,8 @@ Affiliate has easy [plugins](https://affiliate.js.org/plugins), including one fo
Read **[the documentation](https://affiliate.js.org/)** for more advanced usage.
```js
-const Affiliate = require('affiliate');
+import Affiliate from 'affiliate';
+
const aff = Affiliate.create({
tags: [
{
@@ -60,6 +60,7 @@ const aff = Affiliate.create({
},
],
});
+
aff.attach();
```
@@ -67,33 +68,32 @@ aff.attach();
Affiliate is simple and quick to set up, even for more complex usage. Read the docs at: **[affiliate.js.org](https://affiliate.js.org/)**.
-### Blogs and Related Sites
+## Blogs and Related Sites
-A simplified codeless solution might better suit some blogging-style sites.
+A simplified codeless solution might better suit some sites that use content module systems, such as WordPress, SquareSpace, etc.
-Insert this code within the HTML `
...` tag. The contents of the `data-aff` attribute will tell Affiliate what to do.
+Insert this code within the HTML `...` tag. The contents of the `data-auto-affiliate` attribute will tell Affiliate what to do.
```html
-
```
-#### data-aff Syntax
+### data-auto-affiliate Syntax
-The syntax for data-aff is a comma separated list of domains, a colon, and then comma separated list of url queries in the format `key=value`. Multiple website groups can be separated by an exclamation mark.
+The syntax for data-auto-affiliate is capital `WHERE`, a comma separated list of domains, capital `SET`, and then comma separated list of URL queries in the format `key=value`. Multiple website groups can be separated by a capital `AND`.
-```
-amazon.com, www.amazon.com : tag = MY-AMAZON-TAG ! example.com, shop.example.com : ref = MY-OTHER-TAG
+```sql
+WHERE amazon.com, www.amazon.com SET tag = MY-AMAZON-TAG AND WHERE example.com, shop.example.com SET ref = MY-OTHER-TAG
```
## Left with Questions?
-If for any reason you feel that this documentation is unclear or incomplete, [add an issue](https://github.com/russellsteadman/affiliate/issues/new) detailing what needs to be improved. It will be addressed quickly.
+If for any reason you feel that this documentation is unclear or incomplete, [add an issue](https://github.com/russellsteadman/affiliate/issues/new) detailing what needs to be improved.
## Star This Project
diff --git a/dist/node/Affiliate.d.ts b/dist/node/Affiliate.d.ts
index 05c757f..8dcf489 100644
--- a/dist/node/Affiliate.d.ts
+++ b/dist/node/Affiliate.d.ts
@@ -1,4 +1,3 @@
-import URLParse from 'url-parse';
import Log from './shared/log';
export interface AffiliateConfigTag {
hosts: string | string[];
@@ -9,7 +8,7 @@ export interface AffiliateConfigTag {
to: string;
from: string;
}[];
- modify?: (url: URLParse) => URLParse | string;
+ modify?: (url: URL) => URL | string;
}
export interface AffiliateConfig {
tags: AffiliateConfigTag[];
@@ -33,7 +32,7 @@ declare class Affiliate {
* @function
* @param {object=} nodeSet The node to traverse for links (default: document.body)
*/
- traverse(nodeSet?: HTMLElement): void;
+ traverse(nodeSet?: HTMLElement): Affiliate;
/**
* Modify the URL of a matching link while preserving the original link state
*
@@ -43,18 +42,18 @@ declare class Affiliate {
* @param {object} node Anchor link node
* @param {object} tag Matching configuration tag
*/
- modifyURL: (url: URLParse, node: HTMLAnchorElement, tag: AffiliateConfigTag) => void;
+ modifyURL: (url: URL, node: HTMLAnchorElement, tag: AffiliateConfigTag) => void;
/**
* Attach the mutation observer
*
* @function
*/
- attach: () => void;
+ attach: () => Affiliate;
/**
* Detach the mutation observer
*
* @function
*/
- detach: () => void;
+ detach: () => Affiliate;
}
export default Affiliate;
diff --git a/dist/node/Affiliate.js b/dist/node/Affiliate.js
index 2eeab6e..fb5f0c9 100644
--- a/dist/node/Affiliate.js
+++ b/dist/node/Affiliate.js
@@ -3,12 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
-const url_parse_1 = __importDefault(require("url-parse"));
+const features_1 = require("./shared/features");
const log_1 = __importDefault(require("./shared/log"));
const nodeTools_1 = require("./shared/nodeTools");
-// Check for MutationObserver
-const canObserve = typeof window === 'object' &&
- !(typeof window.MutationObserver === 'undefined');
/**
* @class Manages stateful affiliation
*/
@@ -33,23 +30,28 @@ class Affiliate {
* @param {object} tag Matching configuration tag
*/
this.modifyURL = (url, node, tag) => {
- var _a;
+ var _a, _b;
// Check if URL is already modified
- let linkData = (0, nodeTools_1.getNodeData)(node);
+ const linkData = (0, nodeTools_1.getNodeData)(node);
if (linkData.is && linkData.is === url.href)
return;
// Preserve the original URL
- let originalURL = url.href;
+ const originalURL = url.href;
this.log(false, 'Discovered URL: ' + url.href);
// Change query variables
- url.set('query', Object.assign(Object.assign({}, url.query), tag.query));
+ if (tag.query) {
+ Object.keys((_a = tag.query) !== null && _a !== void 0 ? _a : {}).forEach((key) => {
+ if (typeof tag.query === 'object')
+ url.searchParams.set(key, tag.query[key]);
+ });
+ }
// Run the modification function
if (typeof tag.modify === 'function') {
try {
let returnedURL = tag.modify(url);
if (typeof returnedURL === 'object')
returnedURL = returnedURL.href;
- url = (0, url_parse_1.default)(returnedURL, true);
+ url = new URL(returnedURL, window === null || window === void 0 ? void 0 : window.location.origin);
}
catch (e) {
(0, log_1.default)(true, e);
@@ -57,14 +59,14 @@ class Affiliate {
}
// Replace certain parts of the url
let modifiedUrl = url.href;
- (_a = tag.replace) === null || _a === void 0 ? void 0 : _a.forEach((replacement) => {
+ (_b = tag.replace) === null || _b === void 0 ? void 0 : _b.forEach((replacement) => {
modifiedUrl = modifiedUrl.replace(replacement.from, replacement.to);
});
// Update the href tag and save the url to the DOM node
node.href = modifiedUrl;
(0, nodeTools_1.setNodeData)(node, {
was: originalURL,
- is: url,
+ is: url.href,
});
};
/**
@@ -75,15 +77,15 @@ class Affiliate {
this.attach = () => {
// Cannot attach twice, cannot attach for node
if (this.state.attached || typeof document === 'undefined')
- return;
+ return this;
// Get readyState, or the loading state of the DOM
- let { readyState } = document;
+ const { readyState } = document;
if (readyState === 'complete' || readyState === 'interactive') {
// Set attached to true
this.state.attached = true;
// Run through the entire body tag
this.traverse();
- if (canObserve && this.observer) {
+ if (features_1.hasMutationObserver && this.observer) {
// Attach the observer
this.observer.observe(document.body, {
childList: true,
@@ -99,8 +101,9 @@ class Affiliate {
}
else {
// Wait until the DOM loads
- return window.addEventListener('DOMContentLoaded', this.attach);
+ window.addEventListener('DOMContentLoaded', this.attach);
}
+ return this;
};
/**
* Detach the mutation observer
@@ -108,11 +111,12 @@ class Affiliate {
* @function
*/
this.detach = () => {
- if (!canObserve || !this.observer)
- return;
+ if (!features_1.hasMutationObserver || !this.observer)
+ return this;
this.state.attached = false;
this.observer.disconnect();
this.log(false, 'Observer disconnected.');
+ return this;
};
// Extend the configuration
config = config !== null && config !== void 0 ? config : {};
@@ -132,35 +136,35 @@ class Affiliate {
];
});
// Set logging function
- this.log = config.log ? log_1.default : () => { };
+ this.log = config.log ? log_1.default : () => undefined;
this.log(false, 'New Instance', config);
// Check is MutationObserver is supported
- if (canObserve) {
+ if (features_1.hasMutationObserver) {
// Initialize MutationObserver
this.observer = new window.MutationObserver((mutations) => {
// This function is called for every DOM mutation
// Has a mutation been logged
let emitted = false;
- for (let i in mutations) {
+ mutations.forEach((mutation) => {
// If the attributes of the link have been modified
- if (mutations[i].type === 'attributes') {
+ if (mutation.type === 'attributes') {
// Skip links without an href
- if (mutations[i].attributeName !== 'href')
- continue;
- let href = mutations[i].target.href;
- let linkData = (0, nodeTools_1.getNodeData)(mutations[i].target);
+ if (mutation.attributeName !== 'href')
+ return;
+ const href = mutation.target.href;
+ const linkData = (0, nodeTools_1.getNodeData)(mutation.target);
// Skip links without a modified href
if (linkData.is && linkData.is === href)
- continue;
+ return;
}
// Only calls on first mutation
if (!emitted) {
- this.log(false, 'DOM Mutation', mutations[i]);
+ this.log(false, 'DOM Mutation', mutation);
emitted = true;
}
// Scan the node and subnodes if there are any
- this.traverse(mutations[i].target);
- }
+ this.traverse(mutation.target);
+ });
});
}
// Set internal state
@@ -173,33 +177,39 @@ class Affiliate {
* @param {object=} nodeSet The node to traverse for links (default: document.body)
*/
traverse(nodeSet = document.body) {
- var _a;
if (typeof nodeSet !== 'object' ||
typeof nodeSet.getElementsByTagName !== 'function')
- return;
+ return this;
+ if (!features_1.hasURL) {
+ this.log(true, 'This browser needs a URL polyfill.');
+ return this;
+ }
this.log(false, 'Traversing DOM...');
// Reduce link collection to array
- let collection = nodeSet.getElementsByTagName('a');
+ const collection = nodeSet.getElementsByTagName('a');
let nodes = Object.values(collection);
// If the nodeSet is a single link, turn to array
if (nodeSet.nodeName.toLowerCase() === 'a')
nodes = [nodeSet];
+ this.log(false, `Found ${nodes.length + 1} nodes...`);
// Go through each link
- for (let o in nodes) {
+ nodes.forEach((node) => {
+ var _a;
// Check if it is actually linking
- if (!nodes[o] || 'href' in nodes[o])
- continue;
- // Parse the URL via url-parse
- let url = (0, url_parse_1.default)((_a = nodes[o].href) !== null && _a !== void 0 ? _a : '', true);
+ if (!node || !('href' in node))
+ return;
+ // Parse the URL natively
+ const url = new URL((_a = node.href) !== null && _a !== void 0 ? _a : '', window === null || window === void 0 ? void 0 : window.location.origin);
// Only modify hosts provided.
if (this.state.hosts.indexOf(url.host) === -1)
- continue;
- for (let i in this.state.config.tags) {
- if (this.state.config.tags[i].hosts.indexOf(url.host) !== -1) {
- this.modifyURL(url, nodes[o], this.state.config.tags[i]);
+ return;
+ this.state.config.tags.forEach((tag) => {
+ if (tag.hosts.indexOf(url.host) !== -1) {
+ this.modifyURL(url, node, tag);
}
- }
- }
+ });
+ });
+ return this;
}
}
exports.default = Affiliate;
diff --git a/dist/node/Affiliate.js.map b/dist/node/Affiliate.js.map
index 9ddab53..f29baa0 100644
--- a/dist/node/Affiliate.js.map
+++ b/dist/node/Affiliate.js.map
@@ -1 +1 @@
-{"version":3,"file":"Affiliate.js","sourceRoot":"","sources":["../../src/Affiliate.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Affiliate.js","sourceRoot":"","sources":["../../src/Affiliate.ts"],"names":[],"mappings":";;;;;AAAA,gDAAgE;AAChE,uDAA+B;AAC/B,kDAA8D;AAiB9D;;GAEG;AACH,MAAM,SAAS;IAeb,YAAY,MAAiC;;QAd7C,UAAK,GAID;YACF,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE;aACT;YACD,KAAK,EAAE,EAAE;SACV,CAAC;QACF,aAAQ,GAAiC,SAAS,CAAC;QA2HnD;;;;;;;;WAQG;QACH,cAAS,GAAG,CAAC,GAAQ,EAAE,IAAuB,EAAE,GAAuB,EAAE,EAAE;;YACzE,mCAAmC;YACnC,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI;gBAAE,OAAO;YAEpD,4BAA4B;YAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YAE7B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YAE/C,yBAAyB;YACzB,IAAI,GAAG,CAAC,KAAK,EAAE;gBACb,MAAM,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC3C,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;wBAC/B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;aACJ;YAED,gCAAgC;YAChC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;gBACpC,IAAI;oBACF,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,OAAO,WAAW,KAAK,QAAQ;wBAAE,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;oBACpE,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACrD;gBAAC,OAAO,CAAC,EAAE;oBACV,IAAA,aAAG,EAAC,IAAI,EAAE,CAAU,CAAC,CAAC;iBACvB;aACF;YAED,mCAAmC;YACnC,IAAI,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YAC3B,MAAA,GAAG,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;gBACnC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,uDAAuD;YACvD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;YACxB,IAAA,uBAAW,EAAC,IAAI,EAAE;gBAChB,GAAG,EAAE,WAAW;gBAChB,EAAE,EAAE,GAAG,CAAC,IAAI;aACb,CAAC,CAAC;QACL,CAAC,CAAC;QAEF;;;;WAIG;QACH,WAAM,GAAG,GAAc,EAAE;YACvB,8CAA8C;YAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YAExE,kDAAkD;YAClD,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;YAEhC,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,aAAa,EAAE;gBAC7D,uBAAuB;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAE3B,kCAAkC;gBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAEhB,IAAI,8BAAmB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACxC,sBAAsB;oBACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;wBACnC,SAAS,EAAE,IAAI;wBACf,OAAO,EAAE,IAAI;wBACb,UAAU,EAAE,IAAI;wBAChB,aAAa,EAAE,IAAI;wBACnB,eAAe,EAAE,CAAC,MAAM,CAAC;qBAC1B,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;iBAC/D;aACF;iBAAM;gBACL,2BAA2B;gBAC3B,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1D;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF;;;;WAIG;QACH,WAAM,GAAG,GAAc,EAAE;YACvB,IAAI,CAAC,8BAAmB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QA7NA,2BAA2B;QAC3B,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,mCAAI,EAAE,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,OAAO;YAEpC,oCAAoC;YACpC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;gBAAE,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE3D,kCAAkC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,mBACZ,KAAK,EAAE,EAAE,EACT,OAAO,EAAE,EAAE,IACR,GAAG,CACP,CAAC;YAEF,4BAA4B;YAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;gBACjB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;gBACnB,GAAc,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAM;aACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QAE9C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAExC,yCAAyC;QACzC,IAAI,8BAAmB,EAAE;YACvB,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAAE;gBACxD,iDAAiD;gBAEjD,6BAA6B;gBAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;gBAEpB,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAC7B,mDAAmD;oBACnD,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;wBAClC,6BAA6B;wBAC7B,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM;4BAAE,OAAO;wBAE9C,MAAM,IAAI,GAAuB,QAAQ,CAAC,MAAO,CAAC,IAAI,CAAC;wBACvD,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAE9C,qCAAqC;wBACrC,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI;4BAAE,OAAO;qBACjD;oBAED,+BAA+B;oBAC/B,IAAI,CAAC,OAAO,EAAE;wBACZ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;wBAC1C,OAAO,GAAG,IAAI,CAAC;qBAChB;oBAED,8CAA8C;oBAC9C,IAAI,CAAC,QAAQ,CAAc,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;QAED,qBAAqB;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAoB,MAAM,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,UAAuB,QAAQ,CAAC,IAAI;QAC3C,IACE,OAAO,OAAO,KAAK,QAAQ;YAC3B,OAAO,OAAO,CAAC,oBAAoB,KAAK,UAAU;YAElD,OAAO,IAAI,CAAC;QAEd,IAAI,CAAC,iBAAM,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,oCAAoC,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAErC,kCAAkC;QAClC,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,KAAK,GAAkB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAErD,iDAAiD;QACjD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG;YAAE,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtD,uBAAuB;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;YACrB,kCAAkC;YAClC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;gBAAE,OAAO;YAEvC,yBAAyB;YACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,MAAoB,IAAK,CAAC,IAAI,mCAAI,EAAE,EACpC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC,MAAM,CACxB,CAAC;YAEF,8BAA8B;YAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO;YACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrC,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;oBACtC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAqB,IAAI,EAAE,GAAG,CAAC,CAAC;iBACnD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;CAyGF;AAED,kBAAe,SAAS,CAAC"}
\ No newline at end of file
diff --git a/dist/node/index.js b/dist/node/index.js
index 74214b7..cc74704 100644
--- a/dist/node/index.js
+++ b/dist/node/index.js
@@ -23,7 +23,7 @@ class Generator {
* @returns {object} Affiliate instance
*/
this.create = (config) => {
- let Instance = new Affiliate_1.default(config);
+ const Instance = new Affiliate_1.default(config);
this.state.instances.push(Instance);
return Instance;
};
@@ -33,9 +33,7 @@ class Generator {
* @function
*/
this.detachAll = () => {
- for (let i in this.state.instances) {
- this.state.instances[i].detach();
- }
+ this.state.instances.forEach((instance) => instance.detach());
};
/**
* Revert all traversed links to their non-affiliated state
@@ -44,19 +42,19 @@ class Generator {
*/
this.revert = () => {
this.detachAll();
- let nodes = ([].slice.call(document.body.getElementsByTagName('a')));
- for (let i in nodes) {
- let linkData = (0, nodeTools_1.getNodeData)(nodes[i]);
- if (linkData && linkData.was) {
- nodes[i].href = linkData.was;
- (0, nodeTools_1.setNodeData)(nodes[i], {});
+ const nodes = Object.values(document.body.getElementsByTagName('a'));
+ nodes.forEach((node) => {
+ const linkData = (0, nodeTools_1.getNodeData)(node);
+ if (linkData && typeof linkData.was === 'string') {
+ node.href = linkData.was;
+ (0, nodeTools_1.setNodeData)(node, {});
}
- }
+ });
};
try {
- let config = (0, autoConfig_1.default)();
+ const config = (0, autoConfig_1.default)();
if (typeof config === 'object') {
- let auto = this.create(config);
+ const auto = this.create(config);
(0, log_1.default)(false, auto);
this.state.auto = auto;
auto.attach();
diff --git a/dist/node/index.js.map b/dist/node/index.js.map
index b5dc489..88bfc59 100644
--- a/dist/node/index.js.map
+++ b/dist/node/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,qEAA6C;AAC7C,4DAAyD;AACzD,uDAA+B;AAC/B,kDAA8D;AAE9D;;GAEG;AACH,MAAM,SAAS;IAQb;QAPA,UAAK,GAGD;YACF,SAAS,EAAE,EAAE;SACd,CAAC;QAgBF;;;;;;WAMG;QACH,WAAM,GAAG,CAAC,MAAgC,EAAE,EAAE;YAC5C,IAAI,QAAQ,GAAG,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAWF;;;;WAIG;QACH,cAAS,GAAG,GAAG,EAAE;YACf,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aAClC;QACH,CAAC,CAAC;QAEF;;;;WAIG;QACH,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK,GAAwB,CAC/B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CACvD,CAAC;YACF,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;gBACnB,IAAI,QAAQ,GAAG,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE;oBAC5B,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC;oBAC7B,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC3B;aACF;QACH,CAAC,CAAC;QA/DA,IAAI;YACF,IAAI,MAAM,GAAG,IAAA,oBAAU,GAAE,CAAC;YAC1B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAA,aAAG,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,aAAG,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACd;IACH,CAAC;IAeD;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CA+BF;AAED,kBAAe,IAAI,SAAS,EAAE,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,qEAA6C;AAC7C,4DAAyD;AACzD,uDAA+B;AAC/B,kDAA8D;AAE9D;;GAEG;AACH,MAAM,SAAS;IAQb;QAPA,UAAK,GAGD;YACF,SAAS,EAAE,EAAE;SACd,CAAC;QAgBF;;;;;;WAMG;QACH,WAAM,GAAG,CAAC,MAAgC,EAAE,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,mBAAS,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAWF;;;;WAIG;QACH,cAAS,GAAG,GAAG,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF;;;;WAIG;QACH,WAAM,GAAG,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE;oBAChD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACzB,IAAA,uBAAW,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QA3DA,IAAI;YACF,MAAM,MAAM,GAAG,IAAA,oBAAU,GAAE,CAAC;YAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAA,aAAG,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,aAAG,EAAC,IAAI,EAAE,CAAU,CAAC,CAAC;SACvB;IACH,CAAC;IAeD;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CA2BF;AAED,kBAAe,IAAI,SAAS,EAAE,CAAC"}
\ No newline at end of file
diff --git a/dist/node/shared/autoConfig.d.ts b/dist/node/shared/autoConfig.d.ts
index e581cf1..57ddcad 100644
--- a/dist/node/shared/autoConfig.d.ts
+++ b/dist/node/shared/autoConfig.d.ts
@@ -1,9 +1,7 @@
declare const AutoConfig: () => {
tags: {
hosts: string[];
- query: {
- [key: string]: string;
- };
+ query: Record;
}[];
} | undefined;
export default AutoConfig;
diff --git a/dist/node/shared/autoConfig.js b/dist/node/shared/autoConfig.js
index 2c0e56d..17abc02 100644
--- a/dist/node/shared/autoConfig.js
+++ b/dist/node/shared/autoConfig.js
@@ -1,41 +1,33 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-/* Utility function for parsing data-aff syntax */
-const breakUp = (data, delimiter) => {
- if (typeof data === 'object') {
- for (let i in data) {
- data[i] = breakUp(data[i], delimiter);
- }
- }
- else if (typeof data === 'string') {
- data = data.split(delimiter);
- for (let o in data) {
- data[o] = data[o].trim();
- }
- }
- return data;
-};
+const AUTO_CONFIG_SYNTAX_REGEX = /WHERE (.+?) SET (.+?)\s*(?:AND|$)/g;
/* Setup automatic configuration */
const AutoConfig = () => {
- let scriptNode = document.getElementById('aff-js');
- if (typeof scriptNode === 'object' && scriptNode !== null) {
- let nodeData = scriptNode.dataset.aff;
+ var _a;
+ const scriptNode = document.getElementById('aff-js');
+ if (typeof scriptNode === 'object' && scriptNode) {
+ const nodeData = (_a = scriptNode === null || scriptNode === void 0 ? void 0 : scriptNode.dataset) === null || _a === void 0 ? void 0 : _a.autoAffiliate;
if (typeof nodeData === 'string') {
- let parsedData = (breakUp(breakUp(breakUp(breakUp(nodeData, '!'), ':'), ','), '='));
- let tags = [];
- for (let i in parsedData) {
- let tag = {
- hosts: [],
- query: {},
- };
- for (let o in parsedData[i][0]) {
- tag.hosts.push(parsedData[i][0][o][0]);
- }
- for (let u in parsedData[i][1]) {
- tag.query[parsedData[i][1][u][0]] = parsedData[i][1][u][1];
- }
- tags.push(tag);
- }
+ const tags = [];
+ const expressions = nodeData.match(AUTO_CONFIG_SYNTAX_REGEX);
+ if (!expressions)
+ return;
+ Object.values(expressions).forEach((expression) => {
+ const components = AUTO_CONFIG_SYNTAX_REGEX.exec(expression);
+ if (!components || components.length !== 3)
+ return;
+ const hosts = components[1];
+ const queries = components[2];
+ tags.push({
+ hosts: hosts.split(',').map((host) => host.trim()),
+ query: queries.split(',').reduce((a, b) => {
+ const [key, value] = b.split('=');
+ if (key && value)
+ a[key.trim()] = value.trim();
+ return a;
+ }, {}),
+ });
+ });
return { tags };
}
}
diff --git a/dist/node/shared/autoConfig.js.map b/dist/node/shared/autoConfig.js.map
index bc96129..6884bf4 100644
--- a/dist/node/shared/autoConfig.js.map
+++ b/dist/node/shared/autoConfig.js.map
@@ -1 +1 @@
-{"version":3,"file":"autoConfig.js","sourceRoot":"","sources":["../../../src/shared/autoConfig.ts"],"names":[],"mappings":";;AAEA,kDAAkD;AAClD,MAAM,OAAO,GAA0D,CACrE,IAA0B,EAC1B,SAAiB,EACjB,EAAE;IACF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;SACvC;KACF;SAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,CAAC,CAAC,GAAY,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;SACpC;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,mCAAmC;AACnC,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE;QACzD,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;QAEtC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,IAAI,UAAU,GAAmB,CAC/B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CACjE,CAAC;YACF,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,KAAK,IAAI,CAAC,IAAI,UAAU,EAAE;gBACxB,IAAI,GAAG,GAGH;oBACF,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,EAAE;iBACV,CAAC;gBACF,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC;gBACD,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC9B,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5D;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;YAED,OAAO,EAAE,IAAI,EAAE,CAAC;SACjB;KACF;AACH,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
\ No newline at end of file
+{"version":3,"file":"autoConfig.js","sourceRoot":"","sources":["../../../src/shared/autoConfig.ts"],"names":[],"mappings":";;AAAA,MAAM,wBAAwB,GAAG,oCAAoC,CAAC;AAEtE,mCAAmC;AACnC,MAAM,UAAU,GAAG,GAAG,EAAE;;IACtB,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,0CAAE,aAAa,CAAC;QAEpD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,MAAM,IAAI,GAAyD,EAAE,CAAC;YAEtE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAE7D,IAAI,CAAC,WAAW;gBAAE,OAAO;YAEzB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAChD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAE7D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAEnD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAE9B,IAAI,CAAC,IAAI,CAAC;oBACR,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClD,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACxC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,GAAG,IAAI,KAAK;4BAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC/C,OAAO,CAAC,CAAC;oBACX,CAAC,EAAE,EAA4B,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,IAAI,EAAE,CAAC;SACjB;KACF;AACH,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
\ No newline at end of file
diff --git a/dist/node/shared/features.d.ts b/dist/node/shared/features.d.ts
new file mode 100644
index 0000000..d5ceb26
--- /dev/null
+++ b/dist/node/shared/features.d.ts
@@ -0,0 +1,2 @@
+export declare const hasMutationObserver: boolean;
+export declare const hasURL: boolean;
diff --git a/dist/node/shared/features.js b/dist/node/shared/features.js
new file mode 100644
index 0000000..6e36478
--- /dev/null
+++ b/dist/node/shared/features.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hasURL = exports.hasMutationObserver = void 0;
+// Check for MutationObserver
+exports.hasMutationObserver = typeof window === 'object' &&
+ !(typeof window.MutationObserver === 'undefined');
+// Check for URL and URLSearchParams
+exports.hasURL = typeof URL === 'function' && typeof URLSearchParams === 'function';
+//# sourceMappingURL=features.js.map
\ No newline at end of file
diff --git a/dist/node/shared/features.js.map b/dist/node/shared/features.js.map
new file mode 100644
index 0000000..3f32a28
--- /dev/null
+++ b/dist/node/shared/features.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"features.js","sourceRoot":"","sources":["../../../src/shared/features.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAChB,QAAA,mBAAmB,GAC9B,OAAO,MAAM,KAAK,QAAQ;IAC1B,CAAC,CAAC,OAAO,MAAM,CAAC,gBAAgB,KAAK,WAAW,CAAC,CAAC;AAEpD,oCAAoC;AACvB,QAAA,MAAM,GACjB,OAAO,GAAG,KAAK,UAAU,IAAI,OAAO,eAAe,KAAK,UAAU,CAAC"}
\ No newline at end of file
diff --git a/dist/node/shared/log.d.ts b/dist/node/shared/log.d.ts
index 75c7b25..3e1b908 100644
--- a/dist/node/shared/log.d.ts
+++ b/dist/node/shared/log.d.ts
@@ -3,4 +3,4 @@
*
* @module affiliate/src/Log
*/
-export default function (isError: boolean, ...args: any): void;
+export default function (isError: boolean, ...args: (string | number | object)[]): void;
diff --git a/dist/node/shared/log.js.map b/dist/node/shared/log.js.map
index 7bfc7bd..2f1dbd3 100644
--- a/dist/node/shared/log.js.map
+++ b/dist/node/shared/log.js.map
@@ -1 +1 @@
-{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/shared/log.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,mBAAyB,OAAgB,EAAE,GAAG,IAAS;IACrD,MAAM,MAAM,GAAG,cAAc,CAAC;IAE9B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;SAChC;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;SAC9B;KACF;AACH,CAAC;AAVD,4BAUC"}
\ No newline at end of file
+{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/shared/log.ts"],"names":[],"mappings":";;AAAA;;;;GAIG;AACH,mBACE,OAAgB,EAChB,GAAG,IAAkC;IAErC,MAAM,MAAM,GAAG,cAAc,CAAC;IAE9B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;SAChC;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;SAC9B;KACF;AACH,CAAC;AAbD,4BAaC"}
\ No newline at end of file
diff --git a/dist/node/shared/nodeTools.d.ts b/dist/node/shared/nodeTools.d.ts
index 23d69c4..69ed953 100644
--- a/dist/node/shared/nodeTools.d.ts
+++ b/dist/node/shared/nodeTools.d.ts
@@ -1,7 +1,7 @@
-declare const NODE_DATA_KEY = "_aff_data";
+declare const NODE_DATA_KEY = "_aff";
declare type DataNode = Node & {
- [NODE_DATA_KEY]?: Record;
+ [NODE_DATA_KEY]?: Record;
};
-export declare const getNodeData: (node: DataNode) => Record;
-export declare const setNodeData: (node: DataNode, data: Record) => void;
+export declare const getNodeData: (node: DataNode) => Record;
+export declare const setNodeData: (node: DataNode, data: Record) => void;
export {};
diff --git a/dist/node/shared/nodeTools.js b/dist/node/shared/nodeTools.js
index 3be7abb..f89b2c1 100644
--- a/dist/node/shared/nodeTools.js
+++ b/dist/node/shared/nodeTools.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.setNodeData = exports.getNodeData = void 0;
-const NODE_DATA_KEY = '_aff_data';
+const NODE_DATA_KEY = '_aff';
const getNodeData = (node) => {
var _a;
return (_a = node[NODE_DATA_KEY]) !== null && _a !== void 0 ? _a : {};
diff --git a/dist/node/shared/nodeTools.js.map b/dist/node/shared/nodeTools.js.map
index b93d9ba..caa0f5f 100644
--- a/dist/node/shared/nodeTools.js.map
+++ b/dist/node/shared/nodeTools.js.map
@@ -1 +1 @@
-{"version":3,"file":"nodeTools.js","sourceRoot":"","sources":["../../../src/shared/nodeTools.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG,WAAW,CAAC;AAI3B,MAAM,WAAW,GAAG,CAAC,IAAc,EAAuB,EAAE;;IACjE,OAAO,MAAA,IAAI,CAAC,aAAa,CAAC,mCAAI,EAAE,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,WAAW,GAAG,CACzB,IAAc,EACd,IAAyB,EACnB,EAAE;IACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB"}
\ No newline at end of file
+{"version":3,"file":"nodeTools.js","sourceRoot":"","sources":["../../../src/shared/nodeTools.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa,GAAG,MAAM,CAAC;AAItB,MAAM,WAAW,GAAG,CAAC,IAAc,EAA0B,EAAE;;IACpE,OAAO,MAAA,IAAI,CAAC,aAAa,CAAC,mCAAI,EAAE,CAAC;AACnC,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,WAAW,GAAG,CACzB,IAAc,EACd,IAA4B,EACtB,EAAE;IACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB"}
\ No newline at end of file
diff --git a/dist/web/affiliate.web.js b/dist/web/affiliate.web.js
index d7f845e..c5da925 100644
--- a/dist/web/affiliate.web.js
+++ b/dist/web/affiliate.web.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";var t={735:function(t,e,o){function r(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?n(t,e):void 0}}(t)||function(){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 n(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,r=new Array(e);o0&&void 0!==arguments[0]?arguments[0]:document.body;if("object"===s(e)&&"function"==typeof e.getElementsByTagName){this.log(!1,"Traversing DOM...");var o=e.getElementsByTagName("a"),r=Object.values(o);"a"===e.nodeName.toLowerCase()&&(r=[e]),this.log(!1,"Found ".concat(r.length+1," nodes...")),r.forEach((function(e){var o;if(e&&"href"in e){var r=(0,u.default)(null!==(o=e.href)&&void 0!==o?o:"",!0);-1!==t.state.hosts.indexOf(r.host)&&t.state.config.tags.forEach((function(o){-1!==o.hosts.indexOf(r.host)&&t.modifyURL(r,e,o)}))}}))}}}],o&&a(e.prototype,o),t}();e.default=p},309:function(t,e,o){function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,r=new Array(e);o{function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}Object.defineProperty(e,"__esModule",{value:!0});var r=function t(e,r){if("object"===o(e))for(var n in e)e[n]=t(e[n],r);else if("string"==typeof e)for(var a in e=e.split(r))e[a]=e[a].trim();return e};e.default=function(){var t=document.getElementById("aff-js");if("object"===o(t)&&null!==t){var e=t.dataset.aff;if("string"==typeof e){var n=r(r(r(r(e,"!"),":"),","),"="),a=[];for(var s in n){var i={hosts:[],query:{}};for(var u in n[s][0])i.hosts.push(n[s][0][u][0]);for(var c in n[s][1])i.query[n[s][1][c][0]]=n[s][1][c][1];a.push(i)}return{tags:a}}}}},223:(t,e)=>{function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e="[Affiliate] ";if("object"===("undefined"==typeof console?"undefined":o(console))){for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a{Object.defineProperty(e,"__esModule",{value:!0}),e.setNodeData=e.getNodeData=void 0;e.getNodeData=function(t){var e;return null!==(e=t._aff_data)&&void 0!==e?e:{}},e.setNodeData=function(t,e){var o,r,n;Object.assign(t,(n=e,(r="_aff_data")in(o={})?Object.defineProperty(o,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):o[r]=n,o))}},157:(t,e)=>{var o=Object.prototype.hasOwnProperty;function r(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}e.stringify=function(t,e){e=e||"";var r,n,a=[];for(n in"string"!=typeof e&&(e="?"),t)if(o.call(t,n)){if((r=t[n])||null!=r&&!isNaN(r)||(r=""),n=encodeURIComponent(n),r=encodeURIComponent(r),null===n||null===r)continue;a.push(n+"="+r)}return a.length?e+a.join("&"):""},e.parse=function(t){for(var e,o=/([^=?&]+)=?([^&]*)/g,n={};e=o.exec(t);){var a=r(e[1]),s=r(e[2]);null===a||null===s||a in n||(n[a]=s)}return n}},96:t=>{t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},899:(t,e,o)=>{var r=o(96),n=o(157),a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,s=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,i=/^[a-zA-Z]:/,u=new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+");function c(t){return(t||"").toString().replace(u,"")}var f=[["#","hash"],["?","query"],function(t,e){return h(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d+)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],l={hash:1,query:1};function p(t){var e,r=("undefined"!=typeof window?window:void 0!==o.g?o.g:"undefined"!=typeof self?self:{}).location||{},n={},s=typeof(t=t||r);if("blob:"===t.protocol)n=new d(unescape(t.pathname),{});else if("string"===s)for(e in n=new d(t,{}),l)delete n[e];else if("object"===s){for(e in t)e in l||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function h(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=c(t),e=e||{};var o,r=s.exec(t),n=r[1]?r[1].toLowerCase():"",a=!!r[2],i=!!r[3],u=0;return a?i?(o=r[2]+r[3]+r[4],u=r[2].length+r[3].length):(o=r[2]+r[4],u=r[2].length):i?(o=r[3]+r[4],u=r[3].length):o=r[4],"file:"===n?u>=2&&(o=o.slice(2)):h(n)?o=r[4]:n?a&&(o=o.slice(2)):u>=2&&h(e.protocol)&&(o=r[4]),{protocol:n,slashes:a||h(n),slashesCount:u,rest:o}}function d(t,e,o){if(t=c(t),!(this instanceof d))return new d(t,e,o);var a,s,u,l,v,b,m=f.slice(),g=typeof e,w=this,j=0;for("object"!==g&&"string"!==g&&(o=e,e=null),o&&"function"!=typeof o&&(o=n.parse),a=!(s=y(t||"",e=p(e))).protocol&&!s.slashes,w.slashes=s.slashes||a&&e.slashes,w.protocol=s.protocol||e.protocol||"",t=s.rest,("file:"===s.protocol&&(2!==s.slashesCount||i.test(t))||!s.slashes&&(s.protocol||s.slashesCount<2||!h(w.protocol)))&&(m[3]=[/(.*)/,"pathname"]);j{"use strict";var t={735:function(t,e,r){function o(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t)||function(){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 n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:document.body;if("object"!==a(e)||"function"!=typeof e.getElementsByTagName)return this;if(!f.hasURL)return this.log(!0,"This browser needs a URL polyfill."),this;this.log(!1,"Traversing DOM...");var r=e.getElementsByTagName("a"),o=Object.values(r);return"a"===e.nodeName.toLowerCase()&&(o=[e]),this.log(!1,"Found ".concat(o.length+1," nodes...")),o.forEach((function(e){var r;if(e&&"href"in e){var o=new URL(null!==(r=e.href)&&void 0!==r?r:"",null===window||void 0===window?void 0:window.location.origin);-1!==t.state.hosts.indexOf(o.host)&&t.state.config.tags.forEach((function(r){-1!==r.hosts.indexOf(o.host)&&t.modifyURL(o,e,r)}))}})),this}}],r&&i(e.prototype,r),t}();e.default=l},309:function(t,e,r){function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r{function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.hasURL=e.hasMutationObserver=void 0,e.hasMutationObserver="object"===("undefined"==typeof window?"undefined":r(window))&&!(void 0===window.MutationObserver),e.hasURL="function"==typeof URL&&"function"==typeof URLSearchParams},223:(t,e)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e="[Affiliate] ";if("object"===("undefined"==typeof console?"undefined":r(console))){for(var o=arguments.length,n=new Array(o>1?o-1:0),a=1;a{Object.defineProperty(e,"__esModule",{value:!0}),e.setNodeData=e.getNodeData=void 0;e.getNodeData=function(t){var e;return null!==(e=t._aff)&&void 0!==e?e:{}},e.setNodeData=function(t,e){var r,o,n;Object.assign(t,(n=e,(o="_aff")in(r={})?Object.defineProperty(r,o,{value:n,enumerable:!0,configurable:!0,writable:!0}):r._aff=n,r))}}},e={},r=function r(o){var n=e[o];if(void 0!==n)return n.exports;var a=e[o]={exports:{}};return t[o].call(a.exports,a,a.exports,r),a.exports}(309);window.Affiliate=r.default})();
//# sourceMappingURL=affiliate.web.js.map
\ No newline at end of file
diff --git a/dist/web/affiliate.web.js.map b/dist/web/affiliate.web.js.map
index d989bd2..c1fabf4 100644
--- a/dist/web/affiliate.web.js.map
+++ b/dist/web/affiliate.web.js.map
@@ -1 +1 @@
-{"version":3,"file":"affiliate.web.js","mappings":"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","sources":["webpack://Affiliate/../src/Affiliate.ts","webpack://Affiliate/../src/index.ts","webpack://Affiliate/../src/shared/autoConfig.ts","webpack://Affiliate/../src/shared/log.ts","webpack://Affiliate/../src/shared/nodeTools.ts","webpack://Affiliate/../node_modules/querystringify/index.js","webpack://Affiliate/../node_modules/requires-port/index.js","webpack://Affiliate/../node_modules/url-parse/index.js","webpack://Affiliate/webpack/bootstrap","webpack://Affiliate/webpack/runtime/global","webpack://Affiliate/webpack/startup"],"sourcesContent":["import URLParse from 'url-parse';\nimport Log from './shared/log';\nimport { getNodeData, setNodeData } from './shared/nodeTools';\n\n// Check for MutationObserver\nconst canObserve =\n typeof window === 'object' &&\n !(typeof window.MutationObserver === 'undefined');\n\nexport interface AffiliateConfigTag {\n hosts: string | string[];\n query?: { [key: string]: string };\n replace?: {\n to: string;\n from: string;\n }[];\n modify?: (url: URLParse) => URLParse | string;\n}\n\nexport interface AffiliateConfig {\n tags: AffiliateConfigTag[];\n log?: boolean;\n}\n\n/**\n * @class Manages stateful affiliation\n */\nclass Affiliate {\n state: {\n attached: boolean;\n config: AffiliateConfig;\n hosts: string[];\n } = {\n attached: false,\n config: {\n tags: [],\n },\n hosts: [],\n };\n observer: MutationObserver | undefined = undefined;\n log: typeof Log;\n\n constructor(config?: Partial) {\n // Extend the configuration\n config = config ?? {};\n config.tags = config.tags ?? [];\n\n config.tags.map((tag, i) => {\n if (!config || !config.tags) return;\n\n // Convert a single host to an array\n if (typeof tag.hosts === 'string') tag.hosts = [tag.hosts];\n\n // Extend proper tag configuration\n config.tags[i] = {\n query: {},\n replace: [],\n ...tag,\n };\n\n // Append hosts to full list\n this.state.hosts = [\n ...this.state.hosts,\n ...(config.tags[i].hosts),\n ];\n });\n\n // Set logging function\n this.log = config.log ? Log : () => {};\n\n this.log(false, 'New Instance', config);\n\n // Check is MutationObserver is supported\n if (canObserve) {\n // Initialize MutationObserver\n this.observer = new window.MutationObserver((mutations) => {\n // This function is called for every DOM mutation\n\n // Has a mutation been logged\n let emitted = false;\n\n for (let i in mutations) {\n // If the attributes of the link have been modified\n if (mutations[i].type === 'attributes') {\n // Skip links without an href\n if (mutations[i].attributeName !== 'href') continue;\n\n let href = (mutations[i].target).href;\n let linkData = getNodeData(mutations[i].target);\n\n // Skip links without a modified href\n if (linkData.is && linkData.is === href) continue;\n }\n\n // Only calls on first mutation\n if (!emitted) {\n this.log(false, 'DOM Mutation', mutations[i]);\n emitted = true;\n }\n\n // Scan the node and subnodes if there are any\n this.traverse(mutations[i].target);\n }\n });\n }\n\n // Set internal state\n this.state.config = config;\n }\n\n /**\n * Manual function to search the DOM for unaffiliated links\n *\n * @function\n * @param {object=} nodeSet The node to traverse for links (default: document.body)\n */\n traverse(nodeSet: HTMLElement = document.body) {\n if (\n typeof nodeSet !== 'object' ||\n typeof nodeSet.getElementsByTagName !== 'function'\n )\n return;\n\n this.log(false, 'Traversing DOM...');\n\n // Reduce link collection to array\n let collection = nodeSet.getElementsByTagName('a');\n let nodes = Object.values(collection);\n\n // If the nodeSet is a single link, turn to array\n if (nodeSet.nodeName.toLowerCase() === 'a') nodes = [nodeSet];\n\n this.log(false, `Found ${nodes.length + 1} nodes...`);\n\n // Go through each link\n nodes.forEach((node) => {\n // Check if it is actually linking\n if (!node || !('href' in node)) return;\n\n // Parse the URL via url-parse\n let url = URLParse((node).href ?? '', true);\n\n // Only modify hosts provided.\n if (this.state.hosts.indexOf(url.host) === -1) return;\n this.state.config.tags.forEach((tag) => {\n if (tag.hosts.indexOf(url.host) !== -1) {\n this.modifyURL(url, node, tag);\n }\n });\n });\n }\n\n /**\n * Modify the URL of a matching link while preserving the original link state\n *\n * @private\n * @function\n * @param {string} url Original url string\n * @param {object} node Anchor link node\n * @param {object} tag Matching configuration tag\n */\n modifyURL = (\n url: URLParse,\n node: HTMLAnchorElement,\n tag: AffiliateConfigTag,\n ) => {\n // Check if URL is already modified\n let linkData = getNodeData(node);\n if (linkData.is && linkData.is === url.href) return;\n\n // Preserve the original URL\n let originalURL = url.href;\n\n this.log(false, 'Discovered URL: ' + url.href);\n\n // Change query variables\n url.set('query', { ...url.query, ...tag.query });\n\n // Run the modification function\n if (typeof tag.modify === 'function') {\n try {\n let returnedURL = tag.modify(url);\n if (typeof returnedURL === 'object') returnedURL = returnedURL.href;\n url = URLParse(returnedURL, true);\n } catch (e) {\n Log(true, e);\n }\n }\n\n // Replace certain parts of the url\n let modifiedUrl = url.href;\n tag.replace?.forEach((replacement) => {\n modifiedUrl = modifiedUrl.replace(replacement.from, replacement.to);\n });\n\n // Update the href tag and save the url to the DOM node\n node.href = modifiedUrl;\n setNodeData(node, {\n was: originalURL,\n is: url,\n });\n };\n\n /**\n * Attach the mutation observer\n *\n * @function\n */\n attach: () => void = () => {\n // Cannot attach twice, cannot attach for node\n if (this.state.attached || typeof document === 'undefined') return;\n\n // Get readyState, or the loading state of the DOM\n let { readyState } = document;\n\n if (readyState === 'complete' || readyState === 'interactive') {\n // Set attached to true\n this.state.attached = true;\n\n // Run through the entire body tag\n this.traverse();\n\n if (canObserve && this.observer) {\n // Attach the observer\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n characterData: true,\n attributeFilter: ['href'],\n });\n } else {\n this.log(false, 'Browser does not support MutationObserver.');\n }\n } else {\n // Wait until the DOM loads\n return window.addEventListener('DOMContentLoaded', this.attach);\n }\n };\n\n /**\n * Detach the mutation observer\n *\n * @function\n */\n detach = () => {\n if (!canObserve || !this.observer) return;\n this.state.attached = false;\n this.observer.disconnect();\n this.log(false, 'Observer disconnected.');\n };\n}\n\nexport default Affiliate;\n","import AutoConfig from './shared/autoConfig';\nimport Affiliate, { AffiliateConfig } from './Affiliate';\nimport Log from './shared/log';\nimport { getNodeData, setNodeData } from './shared/nodeTools';\n\n/**\n * @class Set up the global Affiliate export\n */\nclass Generator {\n state: {\n instances: Affiliate[];\n auto?: Affiliate;\n } = {\n instances: [],\n };\n\n constructor() {\n try {\n let config = AutoConfig();\n if (typeof config === 'object') {\n let auto = this.create(config);\n Log(false, auto);\n this.state.auto = auto;\n auto.attach();\n }\n } catch (e) {\n Log(true, e);\n }\n }\n\n /**\n * Create a new Affiliate instance\n *\n * @function\n * @param {object} config Configuration options for Affiliate\n * @returns {object} Affiliate instance\n */\n create = (config: Partial) => {\n let Instance = new Affiliate(config);\n this.state.instances.push(Instance);\n return Instance;\n };\n\n /**\n * Expose the instance list\n *\n * @type {Array.