@blackbyte/sugar 1.0.0-beta.33 → 1.0.0-beta.35
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/dist/js/dom/query/_exports.d.ts +2 -1
- package/dist/js/dom/query/_exports.js +2 -1
- package/dist/js/dom/query/_exports.js.map +1 -1
- package/dist/js/dom/query/querySelectorLive/querySelectorLive.d.ts +2 -2
- package/dist/js/dom/query/querySelectorLive/querySelectorLive.js +1 -1
- package/dist/js/dom/query/querySelectorLive/querySelectorLive.js.map +1 -1
- package/dist/js/dom/query/queryStegaElements/queryStegaElements.d.ts +35 -0
- package/dist/js/dom/query/queryStegaElements/queryStegaElements.js +47 -0
- package/dist/js/dom/query/queryStegaElements/queryStegaElements.js.map +1 -0
- package/dist/js/dom/query/queryStegaElementsLive/queryStegaElementsLive.d.ts +67 -0
- package/dist/js/dom/query/queryStegaElementsLive/queryStegaElementsLive.js +198 -0
- package/dist/js/dom/query/queryStegaElementsLive/queryStegaElementsLive.js.map +1 -0
- package/dist/js/dom/when/when/when.d.ts +3 -2
- package/dist/js/dom/when/when/when.js.map +1 -1
- package/dist/shared/crypto/_exports.d.ts +2 -1
- package/dist/shared/crypto/_exports.js +2 -1
- package/dist/shared/crypto/_exports.js.map +1 -1
- package/dist/shared/crypto/stega/stega.d.ts +52 -0
- package/dist/shared/crypto/stega/stega.js +66 -0
- package/dist/shared/crypto/stega/stega.js.map +1 -0
- package/package.json +5 -2
|
@@ -11,4 +11,5 @@ import querySelectorAll from './querySelectorAll/querySelectorAll.js';
|
|
|
11
11
|
import querySelectorAllUp from './querySelectorAllUp/querySelectorAllUp.js';
|
|
12
12
|
import querySelectorLive from './querySelectorLive/querySelectorLive.js';
|
|
13
13
|
import querySelectorUp from './querySelectorUp/querySelectorUp.js';
|
|
14
|
-
|
|
14
|
+
import queryStegaElementsLive from './queryStegaElementsLive/queryStegaElementsLive.js';
|
|
15
|
+
export { closestElement as __closestElement, closestNotVisibleElement as __closestNotVisibleElement, closestScrollableElement as __closestScrollableElement, elementsInViewport as __elementsInViewport, matches as __matches, nearestElement as __nearestElement, nextElement as __nextElement, previousElement as __previousElement, querySelector as __querySelector, querySelectorAll as __querySelectorAll, querySelectorAllUp as __querySelectorAllUp, querySelectorLive as __querySelectorLive, querySelectorUp as __querySelectorUp, queryStegaElementsLive as __queryStegaElementsLive, closestElement, closestNotVisibleElement, closestScrollableElement, elementsInViewport, matches, nearestElement, nextElement, previousElement, querySelector, querySelectorAll, querySelectorAllUp, querySelectorLive, querySelectorUp, queryStegaElementsLive, };
|
|
@@ -11,5 +11,6 @@ import querySelectorAll from './querySelectorAll/querySelectorAll.js';
|
|
|
11
11
|
import querySelectorAllUp from './querySelectorAllUp/querySelectorAllUp.js';
|
|
12
12
|
import querySelectorLive from './querySelectorLive/querySelectorLive.js';
|
|
13
13
|
import querySelectorUp from './querySelectorUp/querySelectorUp.js';
|
|
14
|
-
|
|
14
|
+
import queryStegaElementsLive from './queryStegaElementsLive/queryStegaElementsLive.js';
|
|
15
|
+
export { closestElement as __closestElement, closestNotVisibleElement as __closestNotVisibleElement, closestScrollableElement as __closestScrollableElement, elementsInViewport as __elementsInViewport, matches as __matches, nearestElement as __nearestElement, nextElement as __nextElement, previousElement as __previousElement, querySelector as __querySelector, querySelectorAll as __querySelectorAll, querySelectorAllUp as __querySelectorAllUp, querySelectorLive as __querySelectorLive, querySelectorUp as __querySelectorUp, queryStegaElementsLive as __queryStegaElementsLive, closestElement, closestNotVisibleElement, closestScrollableElement, elementsInViewport, matches, nearestElement, nextElement, previousElement, querySelector, querySelectorAll, querySelectorAllUp, querySelectorLive, querySelectorUp, queryStegaElementsLive, };
|
|
15
16
|
//# sourceMappingURL=_exports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../../src/js/dom/query/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,kBAAkB,MAAM,4CAA4C,CAAC;AAC5E,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,aAAa,MAAM,kCAAkC,CAAC;AAC7D,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,kBAAkB,MAAM,4CAA4C,CAAC;AAC5E,OAAO,iBAAiB,MAAM,0CAA0C,CAAC;AACzE,OAAO,eAAe,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../../src/js/dom/query/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,wBAAwB,MAAM,wDAAwD,CAAC;AAC9F,OAAO,kBAAkB,MAAM,4CAA4C,CAAC;AAC5E,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,cAAc,MAAM,oCAAoC,CAAC;AAChE,OAAO,WAAW,MAAM,8BAA8B,CAAC;AACvD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,aAAa,MAAM,kCAAkC,CAAC;AAC7D,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,kBAAkB,MAAM,4CAA4C,CAAC;AAC5E,OAAO,iBAAiB,MAAM,0CAA0C,CAAC;AACzE,OAAO,eAAe,MAAM,sCAAsC,CAAC;AACnE,OAAO,sBAAsB,MAAM,oDAAoD,CAAC;AAExF,OAAO,EACL,cAAc,IAAI,gBAAgB,EAClC,wBAAwB,IAAI,0BAA0B,EACtD,wBAAwB,IAAI,0BAA0B,EACtD,kBAAkB,IAAI,oBAAoB,EAC1C,OAAO,IAAI,SAAS,EACpB,cAAc,IAAI,gBAAgB,EAClC,WAAW,IAAI,aAAa,EAC5B,eAAe,IAAI,iBAAiB,EACpC,aAAa,IAAI,eAAe,EAChC,gBAAgB,IAAI,kBAAkB,EACtC,kBAAkB,IAAI,oBAAoB,EAC1C,iBAAiB,IAAI,mBAAmB,EACxC,eAAe,IAAI,iBAAiB,EACpC,sBAAsB,IAAI,wBAAwB,EAClD,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,GACvB,CAAC"}
|
|
@@ -25,7 +25,7 @@ import type { TWhenTrigger } from '@blackbyte/sugar/dom';
|
|
|
25
25
|
* @setting {Boolean} [once=true] If true, each observed nodes will be handled only once even if they are removed and reinjected in the dom
|
|
26
26
|
* @setting {Function} [afterFirst=null] A function that will be called once the first scan is done
|
|
27
27
|
* @setting {Boolean} [firstOnly=false] If true, the query will stop after the first matching node is found
|
|
28
|
-
* @setting {TWhenTrigger
|
|
28
|
+
* @setting {TWhenTrigger} [when=null] An optional when trigger or array of triggers to wait for before calling the callback with the detected node
|
|
29
29
|
* @setting {Function} [disconnectedCallback=null] An optional callback function that will be called when a previously detected node is removed from the dom
|
|
30
30
|
* @setting {String[]} [attributes=[]] An optional array of attributes to monitor for changes (in addition to class and id)
|
|
31
31
|
*
|
|
@@ -52,7 +52,7 @@ export type TQuerySelectorLiveSettings = {
|
|
|
52
52
|
once: boolean;
|
|
53
53
|
afterFirst?: Function;
|
|
54
54
|
firstOnly: boolean;
|
|
55
|
-
when?: TWhenTrigger
|
|
55
|
+
when?: TWhenTrigger;
|
|
56
56
|
disconnectedCallback?: ($elm: HTMLElement) => void;
|
|
57
57
|
attributes: string[];
|
|
58
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querySelectorLive.js","sourceRoot":"","sources":["../../../../../src/js/dom/query/querySelectorLive/querySelectorLive.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAsE5C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,QAAgB,EAChB,EAA8B,EAC9B,QAA8C;;IAE9C,6EAA6E;IAC7E,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,kDAAkD;IAClD,MAAM,IAAI,GAAG,IAAI,OAAO,EAAe,CAAC;IACxC,4CAA4C;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAe,CAAC;IAE3C,6EAA6E;IAC7E,MAAM,aAAa,mBACjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,SAAS,EACrB,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,EAAE,EACd,IAAI,EAAE,SAAS,EACf,oBAAoB,EAAE,SAAS,IAC5B,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC,CACpB,CAAC;IAEF,6EAA6E;IAC7E,MAAM,GAAG,GAA0B,EAAE,MAAM,EAAE,CAAC;IAE9C,SAAS,MAAM;QACb,QAAQ,GAAG,IAAI,CAAC;QAChB,QAAQ,CAAC,UAAU,EAAE,CAAC;IACxB,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9E,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5C,4EAA4E;IAC5E,SAAS,eAAe,CAAC,IAAiB;QACxC,IAAI,CAAC,aAAa,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QACpE,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,cAAc,CAAC,UAAU,EAAE,CAAC;gBAC5B,aAAa,CAAC,oBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,SAAe,aAAa,CAAC,IAAiB;;YAC5C,IAAI,QAAQ;gBAAE,OAAO;YAErB,qDAAqD;YACrD,IAAI,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEjD,8DAA8D;YAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO;YAE9B,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"querySelectorLive.js","sourceRoot":"","sources":["../../../../../src/js/dom/query/querySelectorLive/querySelectorLive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name queryStegaElements
|
|
3
|
+
* @namespace js.dom.query
|
|
4
|
+
* @type Function
|
|
5
|
+
* @platform js
|
|
6
|
+
* @status stable
|
|
7
|
+
*
|
|
8
|
+
* This function queries all elements (HTMLElement) that contain stega encoded metadata
|
|
9
|
+
* either in their attributes or in their text content.
|
|
10
|
+
* Stega encodes metadata as zero-width Unicode characters interleaved in strings.
|
|
11
|
+
*
|
|
12
|
+
* @param {HTMLElement | Document} [$root = document] The root element to query stega elements in
|
|
13
|
+
* @return {TQueryStegaElementsResult[]} Array of results containing stega encoded data
|
|
14
|
+
*
|
|
15
|
+
* @setting {Boolean|String[]} [attributes=true] If true, check all attributes on the elements. If false, do not check attributes at all. If an array of string, check the corresponding attributes
|
|
16
|
+
*
|
|
17
|
+
* @snippet queryStegaElements($1)
|
|
18
|
+
*
|
|
19
|
+
* @example js
|
|
20
|
+
* import { queryStegaElements } from '@blackbyte/sugar/dom';
|
|
21
|
+
* const stegaElements = queryStegaElements();
|
|
22
|
+
*
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
25
|
+
*/
|
|
26
|
+
export type TQueryStegaElementsSettings = {
|
|
27
|
+
attributes?: boolean | string[];
|
|
28
|
+
};
|
|
29
|
+
export type TQueryStegaElementsResult = {
|
|
30
|
+
$elm: HTMLElement;
|
|
31
|
+
attr?: string;
|
|
32
|
+
stega: string;
|
|
33
|
+
decode(): any;
|
|
34
|
+
};
|
|
35
|
+
export default function queryStegaElements($root?: HTMLElement | Document, settings?: Partial<TQueryStegaElementsSettings>): TQueryStegaElementsResult[];
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { stega } from '@blackbyte/sugar/crypto';
|
|
2
|
+
const STEGA_REGEX = /[\u200B\u200C]+/g;
|
|
3
|
+
function extractStega(value) {
|
|
4
|
+
const matches = value.match(STEGA_REGEX);
|
|
5
|
+
return matches ? matches.join('') : null;
|
|
6
|
+
}
|
|
7
|
+
export default function queryStegaElements($root = document, settings) {
|
|
8
|
+
const finalSettings = Object.assign({ attributes: true }, settings);
|
|
9
|
+
const results = [];
|
|
10
|
+
const allElements = Array.from($root.querySelectorAll('*'));
|
|
11
|
+
for (const $elm of allElements) {
|
|
12
|
+
// Check text nodes for stega-encoded content
|
|
13
|
+
for (const node of Array.from($elm.childNodes)) {
|
|
14
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent) {
|
|
15
|
+
const raw = extractStega(node.textContent);
|
|
16
|
+
if (raw) {
|
|
17
|
+
results.push({
|
|
18
|
+
$elm,
|
|
19
|
+
stega: raw,
|
|
20
|
+
decode: () => stega.decrypt(raw),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Check attributes for stega-encoded content
|
|
26
|
+
if (finalSettings.attributes !== false) {
|
|
27
|
+
for (const attr of Array.from($elm.attributes)) {
|
|
28
|
+
// If attrs is an array, only check the listed attribute names
|
|
29
|
+
if (Array.isArray(finalSettings.attributes) &&
|
|
30
|
+
!finalSettings.attributes.includes(attr.name)) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const raw = extractStega(attr.value);
|
|
34
|
+
if (raw) {
|
|
35
|
+
results.push({
|
|
36
|
+
$elm,
|
|
37
|
+
attr: attr.name,
|
|
38
|
+
stega: raw,
|
|
39
|
+
decode: () => stega.decrypt(raw),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return results;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=queryStegaElements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryStegaElements.js","sourceRoot":"","sources":["../../../../../src/js/dom/query/queryStegaElements/queryStegaElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAuChD,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAEvC,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,QAAgC,QAAQ,EACxC,QAA+C;IAE/C,MAAM,aAAa,mBACjB,UAAU,EAAE,IAAI,IACb,QAAQ,CACZ,CAAC;IAEF,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAkB,CAAC;IAE7E,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,6CAA6C;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,aAAa,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,8DAA8D;gBAC9D,IACE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;oBACvC,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7C,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI;wBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { TWhenTrigger } from '@blackbyte/sugar/dom';
|
|
2
|
+
/**
|
|
3
|
+
* @name queryStegaElementsLive
|
|
4
|
+
* @namespace js.dom.query
|
|
5
|
+
* @type Function
|
|
6
|
+
* @platform js
|
|
7
|
+
* @status stable
|
|
8
|
+
*
|
|
9
|
+
* Monitor the specified rootNode element and all its descendants for stega encoded
|
|
10
|
+
* metadata, either in attributes or text content. When detected, calls the
|
|
11
|
+
* provided callback with the result. Uses a MutationObserver to react to DOM
|
|
12
|
+
* changes in real time.
|
|
13
|
+
*
|
|
14
|
+
* @feature Detects stega data in text nodes and attributes
|
|
15
|
+
* @feature Reacts to DOM mutations in real time via MutationObserver
|
|
16
|
+
* @feature Supports the "once" flag to call the callback only once per element
|
|
17
|
+
* @feature Supports a "when" trigger to defer the callback until a condition is met
|
|
18
|
+
* @feature Supports a disconnectedCallback when a detected element is cleand
|
|
19
|
+
* @feature Supports attribute filtering via the "attributes" setting
|
|
20
|
+
*
|
|
21
|
+
* @param {TQueryStegaElementsLiveCallback} cb The callback called with each detected stega element
|
|
22
|
+
* @param {Partial<TQueryStegaElementsLiveSettings>} [settings={}] Optional settings
|
|
23
|
+
* @return {TQueryStegaElementsLiveApi} API object with a cancel() method
|
|
24
|
+
*
|
|
25
|
+
* @setting {HTMLElement | Document} [rootNode=document] The root node to observe
|
|
26
|
+
* @setting {Boolean} [once=true] Only call the callback once per element
|
|
27
|
+
* @setting {TWhenTrigger} [when=undefined] Call the callback only when the trigger is fulfilled
|
|
28
|
+
* @setting {Function} [disconnectedCallback=undefined] Called when a detected element is cleand from the DOM
|
|
29
|
+
* @setting {Boolean | String[]} [attributes=true] If true, check all attributes. If false, skip attributes. If string[], check only listed attributes.
|
|
30
|
+
* @setting {Boolean} [clean=true] If true, strip the stega payload from the DOM after detection
|
|
31
|
+
*
|
|
32
|
+
* @snippetp queryStegaElementsLive($1)
|
|
33
|
+
* queryStegaElementsLive(element => {
|
|
34
|
+
* $1
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* @example js
|
|
38
|
+
* import { queryStegaElementsLive } from '@blackbyte/sugar/dom';
|
|
39
|
+
* const query = queryStegaElementsLive(element => {
|
|
40
|
+
* console.log(element.$elm, element.decode());
|
|
41
|
+
* });
|
|
42
|
+
* // stop observing when needed
|
|
43
|
+
* query.cancel();
|
|
44
|
+
*
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
47
|
+
*/
|
|
48
|
+
export type TQueryStegaElementsLiveElement = {
|
|
49
|
+
$elm: HTMLElement;
|
|
50
|
+
attr?: string;
|
|
51
|
+
stega: string;
|
|
52
|
+
data: any;
|
|
53
|
+
};
|
|
54
|
+
export type TQueryStegaElementsLiveSettings = {
|
|
55
|
+
rootNode: HTMLElement | Document;
|
|
56
|
+
once: boolean;
|
|
57
|
+
clean: boolean;
|
|
58
|
+
when?: TWhenTrigger;
|
|
59
|
+
disconnectedCallback?: (element: TQueryStegaElementsLiveElement) => void;
|
|
60
|
+
attributes: boolean | string[];
|
|
61
|
+
};
|
|
62
|
+
export type TQueryStegaElementsLiveApi = {
|
|
63
|
+
cancel: Function;
|
|
64
|
+
};
|
|
65
|
+
type TQueryStegaElementsLiveCallback = (element: TQueryStegaElementsLiveElement, api: TQueryStegaElementsLiveApi) => void;
|
|
66
|
+
export default function queryStegaElementsLive(cb: TQueryStegaElementsLiveCallback, settings?: Partial<TQueryStegaElementsLiveSettings>): TQueryStegaElementsLiveApi;
|
|
67
|
+
export {};
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { stega } from '@blackbyte/sugar/crypto';
|
|
11
|
+
import { when } from '@blackbyte/sugar/dom';
|
|
12
|
+
import { VERCEL_STEGA_REGEX, vercelStegaClean } from '@vercel/stega';
|
|
13
|
+
function extractStega(value) {
|
|
14
|
+
const matches = value.match(VERCEL_STEGA_REGEX);
|
|
15
|
+
return matches ? matches.join('') : null;
|
|
16
|
+
}
|
|
17
|
+
export default function queryStegaElementsLive(cb, settings) {
|
|
18
|
+
// ─── State ────────────────────────────────────────────────────────────────
|
|
19
|
+
let canceled = false;
|
|
20
|
+
// Unique key per (element, attr?) pair to track already-dispatched results
|
|
21
|
+
const seen = new Set();
|
|
22
|
+
let seenCounter = 0;
|
|
23
|
+
const elmIds = new WeakMap();
|
|
24
|
+
function elmId($elm) {
|
|
25
|
+
if (!elmIds.has($elm))
|
|
26
|
+
elmIds.set($elm, String(seenCounter++));
|
|
27
|
+
return elmIds.get($elm);
|
|
28
|
+
}
|
|
29
|
+
function seenKey($elm, attr) {
|
|
30
|
+
return attr ? `${elmId($elm)}|${attr}` : elmId($elm);
|
|
31
|
+
}
|
|
32
|
+
// ─── Settings ─────────────────────────────────────────────────────────────
|
|
33
|
+
const finalSettings = Object.assign({ rootNode: document, once: true, clean: true, attributes: true, when: undefined, disconnectedCallback: undefined }, (settings !== null && settings !== void 0 ? settings : {}));
|
|
34
|
+
// ─── API ──────────────────────────────────────────────────────────────────
|
|
35
|
+
const api = { cancel };
|
|
36
|
+
function cancel() {
|
|
37
|
+
canceled = true;
|
|
38
|
+
observer.disconnect();
|
|
39
|
+
disconnectObserver.disconnect();
|
|
40
|
+
}
|
|
41
|
+
// ─── disconnectedCallback watcher ─────────────────────────────────────────
|
|
42
|
+
// Maps each tracked element to its stega result so we can fire the callback
|
|
43
|
+
// when any ancestor (not just the direct parent) is removed from the DOM.
|
|
44
|
+
const trackedElements = new Map();
|
|
45
|
+
const disconnectObserver = new MutationObserver((mutations) => {
|
|
46
|
+
if (!finalSettings.disconnectedCallback || trackedElements.size === 0)
|
|
47
|
+
return;
|
|
48
|
+
for (const mutation of mutations) {
|
|
49
|
+
if (mutation.type !== 'childList')
|
|
50
|
+
continue;
|
|
51
|
+
mutation.removedNodes.forEach((removed) => {
|
|
52
|
+
// Check if the removed node itself, or any of its descendants, is tracked
|
|
53
|
+
trackedElements.forEach((result, $elm) => {
|
|
54
|
+
if (removed === $elm ||
|
|
55
|
+
(removed instanceof Element && removed.contains($elm))) {
|
|
56
|
+
trackedElements.delete($elm);
|
|
57
|
+
finalSettings.disconnectedCallback(result);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
disconnectObserver.observe(finalSettings.rootNode, {
|
|
64
|
+
childList: true,
|
|
65
|
+
subtree: true,
|
|
66
|
+
});
|
|
67
|
+
function watchDisconnect($elm, result) {
|
|
68
|
+
if (!finalSettings.disconnectedCallback)
|
|
69
|
+
return;
|
|
70
|
+
trackedElements.set($elm, result);
|
|
71
|
+
}
|
|
72
|
+
// ─── Core: handle one stega result ────────────────────────────────────────
|
|
73
|
+
function handleResult(result) {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
var _a;
|
|
76
|
+
if (canceled)
|
|
77
|
+
return;
|
|
78
|
+
const key = seenKey(result.$elm, result.attr);
|
|
79
|
+
if (finalSettings.once && seen.has(key))
|
|
80
|
+
return;
|
|
81
|
+
if (finalSettings.when) {
|
|
82
|
+
yield when(result.$elm, finalSettings.when);
|
|
83
|
+
if (canceled)
|
|
84
|
+
return;
|
|
85
|
+
if (finalSettings.once && seen.has(key))
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (finalSettings.once)
|
|
89
|
+
seen.add(key);
|
|
90
|
+
cb(result, api);
|
|
91
|
+
if (finalSettings.clean) {
|
|
92
|
+
// Pause the observer so stripping zero-width chars doesn't trigger a re-scan
|
|
93
|
+
observer.disconnect();
|
|
94
|
+
if (result.attr) {
|
|
95
|
+
result.$elm.setAttribute(result.attr, vercelStegaClean((_a = result.$elm.getAttribute(result.attr)) !== null && _a !== void 0 ? _a : ''));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
for (const node of Array.from(result.$elm.childNodes)) {
|
|
99
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent) {
|
|
100
|
+
node.textContent = vercelStegaClean(node.textContent);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
observer.observe(finalSettings.rootNode, {
|
|
105
|
+
childList: true,
|
|
106
|
+
subtree: true,
|
|
107
|
+
attributes: true,
|
|
108
|
+
characterData: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
watchDisconnect(result.$elm, result);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
// ─── Scan one element for stega data ──────────────────────────────────────
|
|
115
|
+
function scanElement($elm) {
|
|
116
|
+
if (canceled)
|
|
117
|
+
return;
|
|
118
|
+
// Check text nodes
|
|
119
|
+
for (const node of Array.from($elm.childNodes)) {
|
|
120
|
+
if (node.nodeType === Node.TEXT_NODE && node.textContent) {
|
|
121
|
+
const raw = extractStega(node.textContent);
|
|
122
|
+
if (raw) {
|
|
123
|
+
const decoded = stega.decrypt(node.textContent);
|
|
124
|
+
if (decoded == null)
|
|
125
|
+
continue;
|
|
126
|
+
handleResult({
|
|
127
|
+
$elm,
|
|
128
|
+
stega: raw,
|
|
129
|
+
data: decoded,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Check attributes
|
|
135
|
+
if (finalSettings.attributes !== false) {
|
|
136
|
+
for (const attr of Array.from($elm.attributes)) {
|
|
137
|
+
if (Array.isArray(finalSettings.attributes) &&
|
|
138
|
+
!finalSettings.attributes.includes(attr.name)) {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const raw = extractStega(attr.value);
|
|
142
|
+
if (raw) {
|
|
143
|
+
const decoded = stega.decrypt(attr.value);
|
|
144
|
+
if (decoded == null)
|
|
145
|
+
continue;
|
|
146
|
+
handleResult({
|
|
147
|
+
$elm,
|
|
148
|
+
attr: attr.name,
|
|
149
|
+
stega: raw,
|
|
150
|
+
data: decoded,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// ─── Walk a subtree ────────────────────────────────────────────────────────
|
|
157
|
+
function scan(root) {
|
|
158
|
+
if (canceled)
|
|
159
|
+
return;
|
|
160
|
+
if (root instanceof HTMLElement)
|
|
161
|
+
scanElement(root);
|
|
162
|
+
if ('querySelectorAll' in root) {
|
|
163
|
+
root
|
|
164
|
+
.querySelectorAll('*')
|
|
165
|
+
.forEach(($elm) => scanElement($elm));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ─── MutationObserver ─────────────────────────────────────────────────────
|
|
169
|
+
const observer = new MutationObserver((mutations) => {
|
|
170
|
+
if (canceled)
|
|
171
|
+
return;
|
|
172
|
+
for (const mutation of mutations) {
|
|
173
|
+
if (mutation.type === 'childList') {
|
|
174
|
+
mutation.addedNodes.forEach((node) => scan(node));
|
|
175
|
+
}
|
|
176
|
+
else if (mutation.type === 'attributes' ||
|
|
177
|
+
mutation.type === 'characterData') {
|
|
178
|
+
const target = mutation.target;
|
|
179
|
+
if (target instanceof HTMLElement) {
|
|
180
|
+
scanElement(target);
|
|
181
|
+
}
|
|
182
|
+
else if (target.nodeType === Node.TEXT_NODE && target.parentElement) {
|
|
183
|
+
scanElement(target.parentElement);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
observer.observe(finalSettings.rootNode, {
|
|
189
|
+
childList: true,
|
|
190
|
+
subtree: true,
|
|
191
|
+
attributes: true,
|
|
192
|
+
characterData: true,
|
|
193
|
+
});
|
|
194
|
+
// ─── Initial scan ─────────────────────────────────────────────────────────
|
|
195
|
+
scan(finalSettings.rootNode);
|
|
196
|
+
return api;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=queryStegaElementsLive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryStegaElementsLive.js","sourceRoot":"","sources":["../../../../../src/js/dom/query/queryStegaElementsLive/queryStegaElementsLive.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ export type TwhenSettings = {
|
|
|
55
55
|
whenInteract?: TWhenInteractSettings;
|
|
56
56
|
whenVisible?: TWhenVisibleSettings;
|
|
57
57
|
};
|
|
58
|
-
export type
|
|
58
|
+
export type TWhenTriggerUnit = 'direct' | 'directly' | 'inViewport' | 'nearViewport' | 'enterViewport' | 'outOfViewport' | 'interact' | 'visible' | 'domReady' | 'stylesheetsReady' | 'animationEnd';
|
|
59
|
+
export type TWhenTrigger = TWhenTriggerUnit | TWhenTriggerUnit[];
|
|
59
60
|
export declare const WhenTriggers: string[];
|
|
60
|
-
export default function when($elm: HTMLElement, trigger: TWhenTrigger
|
|
61
|
+
export default function when($elm: HTMLElement, trigger: TWhenTrigger, settings?: TwhenSettings): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"when.js","sourceRoot":"","sources":["../../../../../src/js/dom/when/when/when.ts"],"names":[],"mappings":"AAAA,cAAc;;;;;;;;;;AASd,OAAO,gBAAgB,MAAM,yCAAyC,CAAC;AACvE,OAAO,YAAY,MAAM,iCAAiC,CAAC;AAC3D,OAAO,kBAAkB,MAAM,6CAA6C,CAAC;AAC7E,OAAO,YAAY,MAAM,iCAAiC,CAAC;AAC3D,OAAO,cAAc,MAAM,qCAAqC,CAAC;AACjE,OAAO,gBAAgB,MAAM,yCAAyC,CAAC;AACvE,OAAO,iBAAiB,MAAM,2CAA2C,CAAC;AAC1E,OAAO,oBAAoB,MAAM,iDAAiD,CAAC;AACnF,OAAO,WAAW,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"when.js","sourceRoot":"","sources":["../../../../../src/js/dom/when/when/when.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,5 @@ import md5 from './md5/md5.js';
|
|
|
4
4
|
import object from './object/object.js';
|
|
5
5
|
import sha256 from './sha256/sha256.js';
|
|
6
6
|
import sha512 from './sha512/sha512.js';
|
|
7
|
-
|
|
7
|
+
import stega from './stega/stega.js';
|
|
8
|
+
export { aes as __aes, base64 as __base64, md5 as __md5, object as __object, sha256 as __sha256, sha512 as __sha512, stega as __stega, aes, base64, md5, object, sha256, sha512, stega, };
|
|
@@ -4,5 +4,6 @@ import md5 from './md5/md5.js';
|
|
|
4
4
|
import object from './object/object.js';
|
|
5
5
|
import sha256 from './sha256/sha256.js';
|
|
6
6
|
import sha512 from './sha512/sha512.js';
|
|
7
|
-
|
|
7
|
+
import stega from './stega/stega.js';
|
|
8
|
+
export { aes as __aes, base64 as __base64, md5 as __md5, object as __object, sha256 as __sha256, sha512 as __sha512, stega as __stega, aes, base64, md5, object, sha256, sha512, stega, };
|
|
8
9
|
//# sourceMappingURL=_exports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../src/shared/crypto/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,MAAM,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"_exports.js","sourceRoot":"","sources":["../../../src/shared/crypto/_exports.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,KAAK,MAAM,kBAAkB,CAAC;AAErC,OAAO,EACL,GAAG,IAAI,KAAK,EACZ,MAAM,IAAI,QAAQ,EAClB,GAAG,IAAI,KAAK,EACZ,MAAM,IAAI,QAAQ,EAClB,MAAM,IAAI,QAAQ,EAClB,MAAM,IAAI,QAAQ,EAClB,KAAK,IAAI,OAAO,EAChB,GAAG,EACH,MAAM,EACN,GAAG,EACH,MAAM,EACN,MAAM,EACN,MAAM,EACN,KAAK,GACN,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name stega
|
|
3
|
+
* @namespace shared.crypto
|
|
4
|
+
* @type Object
|
|
5
|
+
* @platform js
|
|
6
|
+
* @status stable
|
|
7
|
+
*
|
|
8
|
+
* Expose two functions named "encrypt" and "decrypt" to process content using the stega algorithm.
|
|
9
|
+
* Delegates to the @vercel/stega package under the hood.
|
|
10
|
+
*
|
|
11
|
+
* @snippet stega.encrypt($1)
|
|
12
|
+
*
|
|
13
|
+
* @example js
|
|
14
|
+
* import { stega } from '@blackbyte/sugar/crypto';
|
|
15
|
+
* const encoded = stega.encrypt({ source: 'cms', field: 'title' });
|
|
16
|
+
* const data = stega.decrypt(encoded);
|
|
17
|
+
*
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
20
|
+
*/
|
|
21
|
+
declare const _default: {
|
|
22
|
+
/**
|
|
23
|
+
* @name encrypt
|
|
24
|
+
* @type Function
|
|
25
|
+
*
|
|
26
|
+
* Encodes a payload into a string using the stega algorithm via @vercel/stega.
|
|
27
|
+
* Uses an empty string as the cover so the result is pure zero-width characters,
|
|
28
|
+
* preserving the original return type of this function.
|
|
29
|
+
*
|
|
30
|
+
* @param {any} payload The data to encode (will be JSON-serialized)
|
|
31
|
+
* @return {String} The stega-encoded string of zero-width characters
|
|
32
|
+
*
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
35
|
+
*/
|
|
36
|
+
encrypt: (payload: any) => string;
|
|
37
|
+
/**
|
|
38
|
+
* @name decrypt
|
|
39
|
+
* @type Function
|
|
40
|
+
*
|
|
41
|
+
* Extracts and decodes the stega payload hidden inside a string via @vercel/stega.
|
|
42
|
+
* Returns the decoded value, or null if no payload is found or decoding fails.
|
|
43
|
+
*
|
|
44
|
+
* @param {String} message The string containing a hidden stega payload
|
|
45
|
+
* @return {any} The decoded payload, or null if none found
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
49
|
+
*/
|
|
50
|
+
decrypt: (message: string) => any;
|
|
51
|
+
};
|
|
52
|
+
export default _default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name stega
|
|
3
|
+
* @namespace shared.crypto
|
|
4
|
+
* @type Object
|
|
5
|
+
* @platform js
|
|
6
|
+
* @status stable
|
|
7
|
+
*
|
|
8
|
+
* Expose two functions named "encrypt" and "decrypt" to process content using the stega algorithm.
|
|
9
|
+
* Delegates to the @vercel/stega package under the hood.
|
|
10
|
+
*
|
|
11
|
+
* @snippet stega.encrypt($1)
|
|
12
|
+
*
|
|
13
|
+
* @example js
|
|
14
|
+
* import { stega } from '@blackbyte/sugar/crypto';
|
|
15
|
+
* const encoded = stega.encrypt({ source: 'cms', field: 'title' });
|
|
16
|
+
* const data = stega.decrypt(encoded);
|
|
17
|
+
*
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
20
|
+
*/
|
|
21
|
+
import { vercelStegaEncode as _vercelStegaEncode, vercelStegaDecode, } from '@vercel/stega';
|
|
22
|
+
// The published types declare a 2-argument signature but the actual runtime
|
|
23
|
+
// implementation only takes the payload. Cast to the real signature.
|
|
24
|
+
const vercelStegaEncode = _vercelStegaEncode;
|
|
25
|
+
export default {
|
|
26
|
+
/**
|
|
27
|
+
* @name encrypt
|
|
28
|
+
* @type Function
|
|
29
|
+
*
|
|
30
|
+
* Encodes a payload into a string using the stega algorithm via @vercel/stega.
|
|
31
|
+
* Uses an empty string as the cover so the result is pure zero-width characters,
|
|
32
|
+
* preserving the original return type of this function.
|
|
33
|
+
*
|
|
34
|
+
* @param {any} payload The data to encode (will be JSON-serialized)
|
|
35
|
+
* @return {String} The stega-encoded string of zero-width characters
|
|
36
|
+
*
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
39
|
+
*/
|
|
40
|
+
encrypt: function (payload) {
|
|
41
|
+
return vercelStegaEncode(payload);
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* @name decrypt
|
|
45
|
+
* @type Function
|
|
46
|
+
*
|
|
47
|
+
* Extracts and decodes the stega payload hidden inside a string via @vercel/stega.
|
|
48
|
+
* Returns the decoded value, or null if no payload is found or decoding fails.
|
|
49
|
+
*
|
|
50
|
+
* @param {String} message The string containing a hidden stega payload
|
|
51
|
+
* @return {any} The decoded payload, or null if none found
|
|
52
|
+
*
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @author Olivier Bossel <olivier.bossel@gmail.com> (https://blackbyte.space)
|
|
55
|
+
*/
|
|
56
|
+
decrypt: function (message) {
|
|
57
|
+
var _a;
|
|
58
|
+
try {
|
|
59
|
+
return (_a = vercelStegaDecode(message)) !== null && _a !== void 0 ? _a : null;
|
|
60
|
+
}
|
|
61
|
+
catch (_b) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=stega.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stega.js","sourceRoot":"","sources":["../../../../src/shared/crypto/stega/stega.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,kBAEf,CAAC;AAEZ,eAAe;IACb;;;;;;;;;;;;;OAaG;IACH,OAAO,EAAE,UAAU,OAAY;QAC7B,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,EAAE,UAAU,OAAe;;QAChC,IAAI,CAAC;YACH,OAAO,MAAA,iBAAiB,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC;QAC5C,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blackbyte/sugar",
|
|
3
3
|
"description": "The toolkit that you missed... like a sugar in your coffee!",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.35",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript",
|
|
7
7
|
"typescript",
|
|
@@ -214,6 +214,7 @@
|
|
|
214
214
|
},
|
|
215
215
|
"dependencies": {
|
|
216
216
|
"@faker-js/faker": "^8.4.1",
|
|
217
|
+
"@vercel/stega": "^1.0.0",
|
|
217
218
|
"aggregation": "^1.2.7",
|
|
218
219
|
"chalk": "^5.3.0",
|
|
219
220
|
"change-case": "^5.4.3",
|
|
@@ -224,8 +225,10 @@
|
|
|
224
225
|
"currency-symbol-map": "^5.1.0",
|
|
225
226
|
"escape-html": "^1.0.3",
|
|
226
227
|
"fast-folder-size": "^2.2.0",
|
|
227
|
-
"fast-xml-
|
|
228
|
+
"fast-xml-builder": "^1.1.0",
|
|
229
|
+
"fast-xml-parser": "^5.5.1",
|
|
228
230
|
"fecha": "^4.2.3",
|
|
231
|
+
"figlet": "^1.11.0",
|
|
229
232
|
"filesize": "^10.1.0",
|
|
230
233
|
"find-package-json": "^1.2.0",
|
|
231
234
|
"flattenjs": "^2.1.3",
|