@design-edito/tools 0.1.43 → 0.1.44

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/agnostic/arrays/index.d.ts +2 -2
  2. package/agnostic/arrays/is-array-of/index.d.ts +3 -3
  3. package/agnostic/arrays/random-pick/index.d.ts +2 -2
  4. package/agnostic/arrays/random-pick/index.js +13 -5
  5. package/agnostic/css/index.d.ts +2 -2
  6. package/agnostic/css/index.js +15 -15
  7. package/agnostic/errors/index.js +2 -2
  8. package/agnostic/html/hyper-json/cast/index.js +4 -4
  9. package/agnostic/html/hyper-json/index.js +5 -5
  10. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +4 -4
  11. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +4 -4
  12. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +4 -4
  13. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +4 -4
  14. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +4 -4
  15. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +4 -4
  16. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +4 -4
  17. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +4 -4
  18. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +4 -4
  19. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +4 -4
  20. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +4 -4
  21. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +4 -4
  22. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +4 -4
  23. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +4 -4
  24. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +4 -4
  25. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +4 -4
  26. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +4 -4
  27. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +4 -4
  28. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +4 -4
  29. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +4 -4
  30. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +4 -4
  31. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +4 -4
  32. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +4 -4
  33. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +4 -4
  34. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +4 -4
  35. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +4 -4
  36. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +4 -4
  37. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +4 -4
  38. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +4 -4
  39. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +4 -4
  40. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +4 -4
  41. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +4 -4
  42. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +4 -4
  43. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -4
  44. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +4 -4
  45. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +4 -4
  46. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +4 -4
  47. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +4 -4
  48. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +4 -4
  49. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +4 -4
  50. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +4 -4
  51. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +4 -4
  52. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +4 -4
  53. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +4 -4
  54. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +4 -4
  55. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +4 -4
  56. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +4 -4
  57. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +4 -4
  58. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +4 -4
  59. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +4 -4
  60. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +4 -4
  61. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +4 -4
  62. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +4 -4
  63. package/agnostic/html/hyper-json/smart-tags/isolated/global/index.js +4 -4
  64. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +4 -4
  65. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +4 -4
  66. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +4 -4
  67. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +4 -4
  68. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +4 -4
  69. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +4 -4
  70. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +4 -4
  71. package/agnostic/html/hyper-json/tree/index.js +4 -4
  72. package/agnostic/html/hyper-json/utils/index.js +4 -4
  73. package/agnostic/html/index.js +23 -23
  74. package/agnostic/html/sanitize/index.js +6 -6
  75. package/agnostic/html/selector-to-element/index.js +6 -6
  76. package/agnostic/html/string-to-nodes/index.js +7 -7
  77. package/agnostic/misc/assert/index.d.ts +4 -2
  78. package/agnostic/misc/assert/index.js +5 -1
  79. package/agnostic/misc/crossenv/index.js +2 -2
  80. package/agnostic/misc/index.d.ts +0 -2
  81. package/agnostic/misc/index.js +27 -25
  82. package/agnostic/misc/is-constructor-function/index.d.ts +1 -1
  83. package/agnostic/misc/lorem-ipsum/index.js +12 -4
  84. package/agnostic/numbers/index.js +5 -5
  85. package/agnostic/objects/index.js +7 -7
  86. package/agnostic/random/index.js +2 -2
  87. package/agnostic/strings/index.d.ts +3 -0
  88. package/agnostic/strings/index.js +11 -5
  89. package/agnostic/strings/trim/index.d.ts +2 -0
  90. package/agnostic/strings/trim/index.js +8 -0
  91. package/agnostic/time/index.js +3 -3
  92. package/chunks/chunk-2HU2AWWJ.js +35 -0
  93. package/chunks/chunk-36CTYZYA.js +28 -0
  94. package/chunks/chunk-65YZMVWZ.js +35 -0
  95. package/chunks/chunk-6XL25OZX.js +12 -0
  96. package/chunks/chunk-6Z6GDMOR.js +28 -0
  97. package/chunks/chunk-72NLUT3X.js +29 -0
  98. package/chunks/chunk-72U4TDEB.js +127 -0
  99. package/chunks/chunk-7K2EL46G.js +2391 -0
  100. package/chunks/chunk-B446JIN3.js +29 -0
  101. package/chunks/chunk-C7SRAQMW.js +29 -0
  102. package/chunks/chunk-CHUOCTRP.js +26 -0
  103. package/chunks/chunk-CQEDNACN.js +28 -0
  104. package/chunks/chunk-CRGUZBZX.js +37 -0
  105. package/chunks/chunk-E4FJHD5R.js +67 -0
  106. package/chunks/chunk-GGT2PUZH.js +21 -0
  107. package/chunks/chunk-HNB6B4FO.js +37 -0
  108. package/chunks/chunk-HP722G2E.js +211 -0
  109. package/chunks/chunk-HQACEDCF.js +37 -0
  110. package/chunks/chunk-IECKIGM7.js +2391 -0
  111. package/chunks/chunk-JJK5733Z.js +211 -0
  112. package/chunks/chunk-JWF5EKM2.js +127 -0
  113. package/chunks/chunk-JYW5L62E.js +211 -0
  114. package/chunks/chunk-LLGU4W6F.js +37 -0
  115. package/chunks/chunk-MTT7TVR3.js +127 -0
  116. package/chunks/chunk-MW3KNVTG.js +29 -0
  117. package/chunks/chunk-N37FT2RW.js +2391 -0
  118. package/chunks/chunk-NHQVXC4Y.js +2391 -0
  119. package/chunks/chunk-P2H6PV4O.js +26 -0
  120. package/chunks/chunk-PIIE3634.js +37 -0
  121. package/chunks/chunk-RDQJSWRC.js +127 -0
  122. package/chunks/chunk-SA2IY5LN.js +35 -0
  123. package/chunks/chunk-SJLH36CH.js +26 -0
  124. package/chunks/chunk-TL3JMADI.js +2391 -0
  125. package/chunks/chunk-WAMSK4A3.js +67 -0
  126. package/chunks/chunk-WC2LQPQP.js +26 -0
  127. package/chunks/chunk-X5HMM3LD.js +35 -0
  128. package/chunks/chunk-XWU7O5KD.js +211 -0
  129. package/chunks/chunk-YVHJ7TUJ.js +211 -0
  130. package/chunks/chunk-ZNPRJEP5.js +28 -0
  131. package/node/files/index.js +3 -3
  132. package/package.json +1 -1
  133. package/shared/errors/index.d.ts +38 -1
@@ -0,0 +1,26 @@
1
+ import {
2
+ Crossenv
3
+ } from "./chunk-FR5H2OCV.js";
4
+ import {
5
+ Errors
6
+ } from "./chunk-2KT7AKRW.js";
7
+
8
+ // src/shared/errors/index.ts
9
+ var register = Errors.Register.from({
10
+ ["no-window-document-on-runtime" /* NO_DOCUMENT */]: {
11
+ message: `Runtime '${Crossenv.detectRuntime()}' does not provide a Document object, cannot complete.`,
12
+ detailsMaker: () => void 0
13
+ },
14
+ ["no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */]: {
15
+ message: `Please provide a Document object since none are found on runtime '${Crossenv.detectRuntime()}'`,
16
+ detailsMaker: (tips) => tips
17
+ },
18
+ ["impossible-to-pick-in-array" /* IMPOSSIBLE_TO_PICK_IN_ARRAY */]: {
19
+ message: "Impossible to pick",
20
+ detailsMaker: (array) => array.length === 0 ? "Array cannot be empty" : "Too many exclusions"
21
+ }
22
+ });
23
+
24
+ export {
25
+ register
26
+ };
@@ -0,0 +1,37 @@
1
+ import {
2
+ Cast,
3
+ Tree,
4
+ Utils
5
+ } from "./chunk-TL3JMADI.js";
6
+ import {
7
+ Types
8
+ } from "./chunk-XEQ2PBT2.js";
9
+ import {
10
+ SmartTags
11
+ } from "./chunk-UT2J62LH.js";
12
+ import {
13
+ Serialize
14
+ } from "./chunk-SXRWMH3U.js";
15
+ import {
16
+ Transformer
17
+ } from "./chunk-BKO7GLC2.js";
18
+ import {
19
+ Method
20
+ } from "./chunk-RW7VAKJW.js";
21
+
22
+ // src/agnostic/html/hyper-json/index.ts
23
+ var HyperJson;
24
+ ((HyperJson2) => {
25
+ HyperJson2.Cast = Cast;
26
+ HyperJson2.Method = Method;
27
+ HyperJson2.Serialize = Serialize;
28
+ HyperJson2.SmartTags = SmartTags;
29
+ HyperJson2.Transformer = Transformer;
30
+ HyperJson2.Tree = Tree;
31
+ HyperJson2.Types = Types;
32
+ HyperJson2.Utils = Utils;
33
+ })(HyperJson || (HyperJson = {}));
34
+
35
+ export {
36
+ HyperJson
37
+ };
@@ -0,0 +1,127 @@
1
+ import {
2
+ register
3
+ } from "./chunk-P2H6PV4O.js";
4
+
5
+ // src/agnostic/html/sanitize/index.ts
6
+ var Sanitize;
7
+ ((Sanitize2) => {
8
+ Sanitize2.defaultOptions = { depth: 20 };
9
+ function sanitize(inputStr, options = Sanitize2.defaultOptions) {
10
+ const actualDocument = options.documentObj ?? window.document;
11
+ if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "See documentObj in the options object");
12
+ const wrapperDiv = actualDocument.createElement("div");
13
+ const { inputFreeTransform } = options;
14
+ wrapperDiv.innerHTML = inputFreeTransform !== void 0 ? inputFreeTransform(inputStr) : inputStr;
15
+ const sanitizedWrapper = sanitizeElement(wrapperDiv, options);
16
+ const returned = sanitizedWrapper?.innerHTML;
17
+ return returned ?? "";
18
+ }
19
+ Sanitize2.sanitize = sanitize;
20
+ function sanitizeElement(element, options = Sanitize2.defaultOptions) {
21
+ const actualDocument = options.documentObj ?? window.document;
22
+ if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "See documentObj in the options object");
23
+ const { tagName, attributes, childNodes } = element;
24
+ const {
25
+ allowedTags = [],
26
+ allowedAttributes = {},
27
+ forbiddenTags = [],
28
+ forbiddenAttributes = {},
29
+ depth = 20,
30
+ verbose = false
31
+ } = options;
32
+ if (depth <= 0) {
33
+ console.warn("Max depth reached");
34
+ return null;
35
+ }
36
+ const normalizedTagName = tagName.toLowerCase().trim();
37
+ const tagIsInForbidden = forbiddenTags.includes("*") || forbiddenTags.includes(normalizedTagName);
38
+ if (tagIsInForbidden) {
39
+ if (verbose === true) console.warn(tagName, "tag is forbidden");
40
+ return null;
41
+ }
42
+ const tagIsInAllowed = allowedTags.includes("*") || allowedTags.includes(normalizedTagName);
43
+ if (!tagIsInAllowed) {
44
+ if (verbose === true) console.warn(tagName, "tag is not allowed");
45
+ return null;
46
+ }
47
+ const returnedElement = actualDocument.createElement(tagName);
48
+ const returnedAttributes = Array.from(attributes).filter(({ name: attributeName, value: attributeValue }) => {
49
+ const allTagsForbiddenAttributes = forbiddenAttributes["*"] ?? [];
50
+ const thisTagForbiddenAttributes = forbiddenAttributes[normalizedTagName] ?? [];
51
+ const mergedForbiddenAttributes = [...allTagsForbiddenAttributes, ...thisTagForbiddenAttributes];
52
+ const isInForbidden = mergedForbiddenAttributes.some(({
53
+ attributeName: nameTester,
54
+ attributeValues: valTesters
55
+ }) => {
56
+ if (typeof nameTester === "string" && nameTester !== "*" && attributeName !== nameTester) return false;
57
+ if (typeof nameTester !== "string" && !nameTester.test(attributeName)) return false;
58
+ if (valTesters === void 0) {
59
+ if (verbose === true) console.warn(attributeName, "attribute on", tagName, "tag is forbidden");
60
+ return true;
61
+ }
62
+ if (valTesters.includes("*")) {
63
+ if (verbose === true) console.warn(attributeName, "attribute on", tagName, "tag is forbidden");
64
+ return true;
65
+ }
66
+ return valTesters.some((valTester) => {
67
+ if (typeof valTester === "string" && attributeValue === valTester) {
68
+ if (verbose === true) console.warn(attributeValue, "value for", attributeName, "attribute on", tagName, "tag is forbidden. Rule:", valTester);
69
+ return true;
70
+ }
71
+ if (typeof valTester !== "string" && valTester.test(attributeValue)) {
72
+ if (verbose === true) console.warn(attributeValue, "value for", attributeName, "attribute on", tagName, "tag is forbidden. Rule:", valTester);
73
+ return true;
74
+ }
75
+ return false;
76
+ });
77
+ });
78
+ if (isInForbidden) return false;
79
+ const allTagsAllowedAttributes = allowedAttributes["*"] ?? [];
80
+ const thisTagAllowedAttributes = allowedAttributes[normalizedTagName] ?? [];
81
+ const mergedAllowedAttributes = [...allTagsAllowedAttributes, ...thisTagAllowedAttributes];
82
+ let latestNotAllowedReason = [tagName, "has no allowed attributes"];
83
+ const isInAllowed = mergedAllowedAttributes.some(({
84
+ attributeName: nameTester,
85
+ attributeValues: valTesters
86
+ }) => {
87
+ if (typeof nameTester === "string" && nameTester !== "*" && attributeName !== nameTester) {
88
+ latestNotAllowedReason = [attributeName, "attribute on", tagName, "tag is not allowed"];
89
+ return false;
90
+ }
91
+ if (typeof nameTester !== "string" && !nameTester.test(attributeName)) {
92
+ latestNotAllowedReason = [attributeName, "attribute on", tagName, "tag is not allowed"];
93
+ return false;
94
+ }
95
+ if (valTesters === void 0) return true;
96
+ if (valTesters.includes("*")) return true;
97
+ return valTesters.some((valTester) => {
98
+ if (typeof valTester === "string" && attributeValue === valTester) return true;
99
+ if (typeof valTester !== "string" && valTester.test(attributeValue)) return true;
100
+ latestNotAllowedReason = [attributeValue, "value for", attributeName, "attribute on", tagName, "tag is not allowed"];
101
+ return false;
102
+ });
103
+ });
104
+ if (!isInAllowed) {
105
+ if (verbose === true) console.warn(...latestNotAllowedReason);
106
+ return false;
107
+ }
108
+ return true;
109
+ });
110
+ returnedAttributes.forEach(({ name, value }) => {
111
+ returnedElement.setAttribute(name, value);
112
+ });
113
+ const sanitizedChildNodes = Array.from(childNodes).map((node) => {
114
+ if (node.nodeType === Node.ELEMENT_NODE) return sanitizeElement(node, { ...options, depth: depth - 1 });
115
+ else if (node.nodeType === Node.TEXT_NODE) return node;
116
+ else if (options.keepComments === true && node.nodeType === Node.COMMENT_NODE) return node;
117
+ return null;
118
+ }).filter((elt) => elt !== null);
119
+ returnedElement.replaceChildren(...sanitizedChildNodes);
120
+ return returnedElement;
121
+ }
122
+ Sanitize2.sanitizeElement = sanitizeElement;
123
+ })(Sanitize || (Sanitize = {}));
124
+
125
+ export {
126
+ Sanitize
127
+ };
@@ -0,0 +1,35 @@
1
+ import {
2
+ register
3
+ } from "./chunk-CHUOCTRP.js";
4
+
5
+ // src/agnostic/html/selector-to-element/index.ts
6
+ function selectorToElement(selector, documentObj) {
7
+ const actualDocument = documentObj ?? window.document;
8
+ if (actualDocument === null) throw register.getError("no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */, "The optional second parameter expects a Document object");
9
+ const tagRegexp = /^[A-Za-z]+/;
10
+ const idRegexp = /#[A-Za-z]+[\w\-\:]*/;
11
+ const classRegexp = /\.[A-Za-z]+[\w\-]*/;
12
+ const attributeRegexp = /\[[A-Za-z]+[\w\-]*(="[\w\-]+")?\]/;
13
+ const matchedTags = selector.match(tagRegexp) ?? [];
14
+ const matchedIds = selector.match(idRegexp) ?? [];
15
+ const matchedClasses = selector.match(classRegexp) ?? [];
16
+ const matchedAttrs = selector.match(attributeRegexp) ?? [];
17
+ const tag = matchedTags[matchedTags.length - 1] ?? "div";
18
+ const id = matchedIds[matchedIds.length - 1] ?? null;
19
+ const classes = matchedClasses.map((matchedClass) => matchedClass.replace(/^\./, ""));
20
+ const attributes = matchedAttrs.map((matchedAttr) => matchedAttr.replace(/^\[/, "").replace(/\]$/, "").split("="));
21
+ const element = actualDocument.createElement(tag);
22
+ if (id !== null) {
23
+ element.id = id;
24
+ }
25
+ element.classList.add(...classes);
26
+ attributes.forEach(([name, value = ""]) => {
27
+ if (name === void 0) return;
28
+ element.setAttribute(name, value);
29
+ });
30
+ return element;
31
+ }
32
+
33
+ export {
34
+ selectorToElement
35
+ };
@@ -0,0 +1,26 @@
1
+ import {
2
+ Crossenv
3
+ } from "./chunk-GGT2PUZH.js";
4
+ import {
5
+ Errors
6
+ } from "./chunk-WH6BPDAC.js";
7
+
8
+ // src/shared/errors/index.ts
9
+ var register = Errors.Register.from({
10
+ ["no-window-document-on-runtime" /* NO_DOCUMENT */]: {
11
+ message: `Runtime '${Crossenv.detectRuntime()}' does not provide a Document object, cannot complete.`,
12
+ detailsMaker: () => void 0
13
+ },
14
+ ["no-window-document-on-runtime-please-provide" /* NO_DOCUMENT_PLEASE_PROVIDE */]: {
15
+ message: `Please provide a Document object since none are found on runtime '${Crossenv.detectRuntime()}'`,
16
+ detailsMaker: (tips) => tips
17
+ },
18
+ ["impossible-to-pick-in-array" /* IMPOSSIBLE_TO_PICK_IN_ARRAY */]: {
19
+ message: "Impossible to pick",
20
+ detailsMaker: (array) => array.length === 0 ? "Array cannot be empty" : "Too many exclusions"
21
+ }
22
+ });
23
+
24
+ export {
25
+ register
26
+ };