@design-edito/tools 0.1.38 → 0.1.39

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. package/agnostic/css/index.js +11 -11
  2. package/agnostic/errors/index.js +2 -2
  3. package/agnostic/html/hyper-json/cast/index.js +2 -2
  4. package/agnostic/html/hyper-json/index.js +3 -3
  5. package/agnostic/html/hyper-json/transformers/append/index.js +2 -2
  6. package/agnostic/html/hyper-json/transformers/classList/index.js +2 -2
  7. package/agnostic/html/hyper-json/transformers/index.js +2 -2
  8. package/agnostic/html/hyper-json/transformers/join/index.js +2 -2
  9. package/agnostic/html/hyper-json/transformers/length/index.js +2 -2
  10. package/agnostic/html/hyper-json/transformers/print/index.js +2 -2
  11. package/agnostic/html/hyper-json/transformers/push/index.js +2 -2
  12. package/agnostic/html/hyper-json/transformers/querySelector/index.js +2 -2
  13. package/agnostic/html/hyper-json/transformers/ref/index.js +2 -2
  14. package/agnostic/html/hyper-json/transformers/replace/index.js +2 -2
  15. package/agnostic/html/hyper-json/transformers/split/index.js +2 -2
  16. package/agnostic/html/hyper-json/transformers/toArray/index.js +2 -2
  17. package/agnostic/html/hyper-json/transformers/toBoolean/index.js +2 -2
  18. package/agnostic/html/hyper-json/transformers/toElement/index.js +2 -2
  19. package/agnostic/html/hyper-json/transformers/toNodeList/index.js +2 -2
  20. package/agnostic/html/hyper-json/transformers/toNull/index.js +2 -2
  21. package/agnostic/html/hyper-json/transformers/toNumber/index.js +2 -2
  22. package/agnostic/html/hyper-json/transformers/toRecord/index.js +2 -2
  23. package/agnostic/html/hyper-json/transformers/toRef/index.js +2 -2
  24. package/agnostic/html/hyper-json/transformers/toString/index.js +2 -2
  25. package/agnostic/html/hyper-json/transformers/toText/index.js +2 -2
  26. package/agnostic/html/hyper-json/transformers/toTransformer/index.js +2 -2
  27. package/agnostic/html/hyper-json/transformers/transformSelected/index.js +2 -2
  28. package/agnostic/html/hyper-json/transformers/trim/index.js +2 -2
  29. package/agnostic/html/hyper-json/tree/index.js +2 -2
  30. package/agnostic/html/hyper-json/utils/index.js +2 -2
  31. package/agnostic/html/index.js +17 -17
  32. package/agnostic/html/sanitize/index.js +6 -6
  33. package/agnostic/html/selector-to-element/index.js +6 -6
  34. package/agnostic/html/string-to-nodes/index.js +7 -7
  35. package/agnostic/misc/crossenv/index.js +2 -2
  36. package/agnostic/misc/index.js +12 -12
  37. package/agnostic/misc/logs/index.js +2 -2
  38. package/agnostic/misc/lorem-ipsum/index.js +4 -4
  39. package/agnostic/numbers/index.js +7 -7
  40. package/agnostic/objects/index.js +7 -7
  41. package/agnostic/optim/index.js +3 -3
  42. package/agnostic/random/index.js +2 -2
  43. package/agnostic/strings/index.js +9 -9
  44. package/agnostic/strings/replace-all/index.d.ts +1 -1
  45. package/agnostic/strings/replace-all/index.js +1 -1
  46. package/agnostic/time/index.js +4 -4
  47. package/chunks/chunk-GB4UQS6V.js +35 -0
  48. package/chunks/chunk-LOFELEU3.js +1108 -0
  49. package/chunks/chunk-LVXK54LL.js +27 -0
  50. package/chunks/chunk-PPHUIOHO.js +28 -0
  51. package/chunks/chunk-QHGZBCFZ.js +1108 -0
  52. package/chunks/chunk-QN3UAKIU.js +21 -0
  53. package/chunks/chunk-RHV7UOXD.js +211 -0
  54. package/chunks/chunk-S7MJLTCR.js +211 -0
  55. package/chunks/chunk-U6YRINXJ.js +22 -0
  56. package/chunks/chunk-YO5KOEJF.js +27 -0
  57. package/chunks/chunk-Z352MSRL.js +127 -0
  58. package/chunks/chunk-ZTDVUXPR.js +16 -0
  59. package/node/files/index.js +3 -3
  60. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ import {
2
+ styles
3
+ } from "./chunk-L3OCRR3V.js";
4
+ import {
5
+ Logger
6
+ } from "./chunk-RASMASS4.js";
7
+ import {
8
+ makeTextBlock
9
+ } from "./chunk-H4PP6AHP.js";
10
+
11
+ // src/agnostic/misc/logs/index.ts
12
+ var Logs;
13
+ ((Logs2) => {
14
+ Logs2.makeTextBlock = makeTextBlock;
15
+ Logs2.styles = styles;
16
+ Logs2.Logger = Logger;
17
+ })(Logs || (Logs = {}));
18
+
19
+ export {
20
+ Logs
21
+ };
@@ -0,0 +1,211 @@
1
+ import {
2
+ isArrayOf
3
+ } from "./chunk-6RGDWX4A.js";
4
+ import {
5
+ make
6
+ } from "./chunk-RLAZR3NL.js";
7
+ import {
8
+ findDuplicates
9
+ } from "./chunk-YS6WMSWC.js";
10
+ import {
11
+ RANDOM_PICK_ERR_SYMBOL,
12
+ randomPick
13
+ } from "./chunk-FCU6IHKD.js";
14
+ import {
15
+ Random
16
+ } from "./chunk-OVG5RGI3.js";
17
+
18
+ // src/agnostic/arrays/index.tsx
19
+ var Arrays;
20
+ ((Arrays2) => {
21
+ Arrays2.findDuplicates = findDuplicates;
22
+ Arrays2.isArrayOf = isArrayOf;
23
+ Arrays2.make = make;
24
+ Arrays2.RANDOM_PICK_ERR_SYMBOL = RANDOM_PICK_ERR_SYMBOL;
25
+ Arrays2.randomPick = randomPick;
26
+ })(Arrays || (Arrays = {}));
27
+
28
+ // src/agnostic/misc/lorem-ipsum/index.ts
29
+ var LoremIpsum;
30
+ ((LoremIpsum2) => {
31
+ LoremIpsum2.words = [
32
+ "a",
33
+ "ac",
34
+ "accumsan",
35
+ "adipiscing",
36
+ "aenean",
37
+ "aliquam",
38
+ "aliquet",
39
+ "amet",
40
+ "ante",
41
+ "arcu",
42
+ "at",
43
+ "auctor",
44
+ "augue",
45
+ "bibendum",
46
+ "blandit",
47
+ "condimentum",
48
+ "consectetur",
49
+ "consequat",
50
+ "convallis",
51
+ "cras",
52
+ "curabitur",
53
+ "cursus",
54
+ "dapibus",
55
+ "diam",
56
+ "dictum",
57
+ "dictumst",
58
+ "dignissim",
59
+ "dolor",
60
+ "donec",
61
+ "dui",
62
+ "duis",
63
+ "efficitur",
64
+ "egestas",
65
+ "eget",
66
+ "eleifend",
67
+ "elementum",
68
+ "elit",
69
+ "enim",
70
+ "erat",
71
+ "eros",
72
+ "est",
73
+ "et",
74
+ "eu",
75
+ "euismod",
76
+ "ex",
77
+ "facilisis",
78
+ "faucibus",
79
+ "felis",
80
+ "feugiat",
81
+ "finibus",
82
+ "fringilla",
83
+ "fusce",
84
+ "gravida",
85
+ "habitasse",
86
+ "hac",
87
+ "hendrerit",
88
+ "iaculis",
89
+ "id",
90
+ "imperdiet",
91
+ "in",
92
+ "integer",
93
+ "interdum",
94
+ "ipsum",
95
+ "justo",
96
+ "lacinia",
97
+ "lacus",
98
+ "laoreet",
99
+ "lectus",
100
+ "leo",
101
+ "libero",
102
+ "ligula",
103
+ "lobortis",
104
+ "lorem",
105
+ "luctus",
106
+ "maecenas",
107
+ "magna",
108
+ "malesuada",
109
+ "massa",
110
+ "mattis",
111
+ "mauris",
112
+ "maximus",
113
+ "metus",
114
+ "mi",
115
+ "molestie",
116
+ "mollis",
117
+ "morbi",
118
+ "nam",
119
+ "nec",
120
+ "neque",
121
+ "nibh",
122
+ "nisi",
123
+ "nisl",
124
+ "non",
125
+ "nulla",
126
+ "nullam",
127
+ "nunc",
128
+ "odio",
129
+ "orci",
130
+ "ornare",
131
+ "pellentesque",
132
+ "pharetra",
133
+ "phasellus",
134
+ "placerat",
135
+ "platea",
136
+ "porta",
137
+ "porttitor",
138
+ "posuere",
139
+ "praesent",
140
+ "pulvinar",
141
+ "purus",
142
+ "quam",
143
+ "quis",
144
+ "quisque",
145
+ "risus",
146
+ "rutrum",
147
+ "sagittis",
148
+ "sapien",
149
+ "sed",
150
+ "sem",
151
+ "semper",
152
+ "sit",
153
+ "sodales",
154
+ "sollicitudin",
155
+ "suscipit",
156
+ "suspendisse",
157
+ "tellus",
158
+ "tempor",
159
+ "tempus",
160
+ "tincidunt",
161
+ "tortor",
162
+ "tristique",
163
+ "turpis",
164
+ "ultrices",
165
+ "ultricies",
166
+ "urna",
167
+ "ut",
168
+ "vehicula",
169
+ "vel",
170
+ "velit",
171
+ "venenatis",
172
+ "vestibulum",
173
+ "vitae",
174
+ "vivamus",
175
+ "viverra",
176
+ "volutpat",
177
+ "vulputate"
178
+ ];
179
+ LoremIpsum2.generateSentence = (wordCount) => {
180
+ const resultArr = [];
181
+ let currentWordCound = wordCount;
182
+ for (let i = 0; i < currentWordCound; i++) {
183
+ const picked = Arrays.randomPick(LoremIpsum2.words);
184
+ if (typeof picked === "string") resultArr.push(picked);
185
+ else {
186
+ currentWordCound += 1;
187
+ }
188
+ }
189
+ const [firstWord, ...otherWords] = resultArr;
190
+ if (firstWord === void 0) return "";
191
+ const capFirstLetter = firstWord?.charAt(0).toUpperCase();
192
+ const restOfFirstWord = firstWord?.slice(1);
193
+ const sentence = [
194
+ `${capFirstLetter}${restOfFirstWord}`,
195
+ ...otherWords
196
+ ].join(" ");
197
+ return `${sentence}.`;
198
+ };
199
+ LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
200
+ const sentences = [];
201
+ for (let i = 0; i < sentencesCount; i++) {
202
+ const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
203
+ sentences.push((0, LoremIpsum2.generateSentence)(length));
204
+ }
205
+ return sentences;
206
+ };
207
+ })(LoremIpsum || (LoremIpsum = {}));
208
+
209
+ export {
210
+ LoremIpsum
211
+ };
@@ -0,0 +1,211 @@
1
+ import {
2
+ make
3
+ } from "./chunk-RLAZR3NL.js";
4
+ import {
5
+ isArrayOf
6
+ } from "./chunk-6RGDWX4A.js";
7
+ import {
8
+ findDuplicates
9
+ } from "./chunk-YS6WMSWC.js";
10
+ import {
11
+ RANDOM_PICK_ERR_SYMBOL,
12
+ randomPick
13
+ } from "./chunk-FCU6IHKD.js";
14
+ import {
15
+ Random
16
+ } from "./chunk-S32K7POB.js";
17
+
18
+ // src/agnostic/arrays/index.tsx
19
+ var Arrays;
20
+ ((Arrays2) => {
21
+ Arrays2.findDuplicates = findDuplicates;
22
+ Arrays2.isArrayOf = isArrayOf;
23
+ Arrays2.make = make;
24
+ Arrays2.RANDOM_PICK_ERR_SYMBOL = RANDOM_PICK_ERR_SYMBOL;
25
+ Arrays2.randomPick = randomPick;
26
+ })(Arrays || (Arrays = {}));
27
+
28
+ // src/agnostic/misc/lorem-ipsum/index.ts
29
+ var LoremIpsum;
30
+ ((LoremIpsum2) => {
31
+ LoremIpsum2.words = [
32
+ "a",
33
+ "ac",
34
+ "accumsan",
35
+ "adipiscing",
36
+ "aenean",
37
+ "aliquam",
38
+ "aliquet",
39
+ "amet",
40
+ "ante",
41
+ "arcu",
42
+ "at",
43
+ "auctor",
44
+ "augue",
45
+ "bibendum",
46
+ "blandit",
47
+ "condimentum",
48
+ "consectetur",
49
+ "consequat",
50
+ "convallis",
51
+ "cras",
52
+ "curabitur",
53
+ "cursus",
54
+ "dapibus",
55
+ "diam",
56
+ "dictum",
57
+ "dictumst",
58
+ "dignissim",
59
+ "dolor",
60
+ "donec",
61
+ "dui",
62
+ "duis",
63
+ "efficitur",
64
+ "egestas",
65
+ "eget",
66
+ "eleifend",
67
+ "elementum",
68
+ "elit",
69
+ "enim",
70
+ "erat",
71
+ "eros",
72
+ "est",
73
+ "et",
74
+ "eu",
75
+ "euismod",
76
+ "ex",
77
+ "facilisis",
78
+ "faucibus",
79
+ "felis",
80
+ "feugiat",
81
+ "finibus",
82
+ "fringilla",
83
+ "fusce",
84
+ "gravida",
85
+ "habitasse",
86
+ "hac",
87
+ "hendrerit",
88
+ "iaculis",
89
+ "id",
90
+ "imperdiet",
91
+ "in",
92
+ "integer",
93
+ "interdum",
94
+ "ipsum",
95
+ "justo",
96
+ "lacinia",
97
+ "lacus",
98
+ "laoreet",
99
+ "lectus",
100
+ "leo",
101
+ "libero",
102
+ "ligula",
103
+ "lobortis",
104
+ "lorem",
105
+ "luctus",
106
+ "maecenas",
107
+ "magna",
108
+ "malesuada",
109
+ "massa",
110
+ "mattis",
111
+ "mauris",
112
+ "maximus",
113
+ "metus",
114
+ "mi",
115
+ "molestie",
116
+ "mollis",
117
+ "morbi",
118
+ "nam",
119
+ "nec",
120
+ "neque",
121
+ "nibh",
122
+ "nisi",
123
+ "nisl",
124
+ "non",
125
+ "nulla",
126
+ "nullam",
127
+ "nunc",
128
+ "odio",
129
+ "orci",
130
+ "ornare",
131
+ "pellentesque",
132
+ "pharetra",
133
+ "phasellus",
134
+ "placerat",
135
+ "platea",
136
+ "porta",
137
+ "porttitor",
138
+ "posuere",
139
+ "praesent",
140
+ "pulvinar",
141
+ "purus",
142
+ "quam",
143
+ "quis",
144
+ "quisque",
145
+ "risus",
146
+ "rutrum",
147
+ "sagittis",
148
+ "sapien",
149
+ "sed",
150
+ "sem",
151
+ "semper",
152
+ "sit",
153
+ "sodales",
154
+ "sollicitudin",
155
+ "suscipit",
156
+ "suspendisse",
157
+ "tellus",
158
+ "tempor",
159
+ "tempus",
160
+ "tincidunt",
161
+ "tortor",
162
+ "tristique",
163
+ "turpis",
164
+ "ultrices",
165
+ "ultricies",
166
+ "urna",
167
+ "ut",
168
+ "vehicula",
169
+ "vel",
170
+ "velit",
171
+ "venenatis",
172
+ "vestibulum",
173
+ "vitae",
174
+ "vivamus",
175
+ "viverra",
176
+ "volutpat",
177
+ "vulputate"
178
+ ];
179
+ LoremIpsum2.generateSentence = (wordCount) => {
180
+ const resultArr = [];
181
+ let currentWordCound = wordCount;
182
+ for (let i = 0; i < currentWordCound; i++) {
183
+ const picked = Arrays.randomPick(LoremIpsum2.words);
184
+ if (typeof picked === "string") resultArr.push(picked);
185
+ else {
186
+ currentWordCound += 1;
187
+ }
188
+ }
189
+ const [firstWord, ...otherWords] = resultArr;
190
+ if (firstWord === void 0) return "";
191
+ const capFirstLetter = firstWord?.charAt(0).toUpperCase();
192
+ const restOfFirstWord = firstWord?.slice(1);
193
+ const sentence = [
194
+ `${capFirstLetter}${restOfFirstWord}`,
195
+ ...otherWords
196
+ ].join(" ");
197
+ return `${sentence}.`;
198
+ };
199
+ LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
200
+ const sentences = [];
201
+ for (let i = 0; i < sentencesCount; i++) {
202
+ const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
203
+ sentences.push((0, LoremIpsum2.generateSentence)(length));
204
+ }
205
+ return sentences;
206
+ };
207
+ })(LoremIpsum || (LoremIpsum = {}));
208
+
209
+ export {
210
+ LoremIpsum
211
+ };
@@ -0,0 +1,22 @@
1
+ import {
2
+ Crossenv
3
+ } from "./chunk-UFKH5WD2.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
+ });
19
+
20
+ export {
21
+ register
22
+ };
@@ -0,0 +1,27 @@
1
+ import {
2
+ Cast,
3
+ Transformers,
4
+ Tree,
5
+ Utils
6
+ } from "./chunk-QHGZBCFZ.js";
7
+ import {
8
+ Serialize
9
+ } from "./chunk-ZCPGE7H7.js";
10
+ import {
11
+ Types
12
+ } from "./chunk-5GI5G45R.js";
13
+
14
+ // src/agnostic/html/hyper-json/index.ts
15
+ var HyperJson;
16
+ ((HyperJson2) => {
17
+ HyperJson2.Cast = Cast;
18
+ HyperJson2.Serialize = Serialize;
19
+ HyperJson2.Transformers = Transformers;
20
+ HyperJson2.Tree = Tree;
21
+ HyperJson2.Types = Types;
22
+ HyperJson2.Utils = Utils;
23
+ })(HyperJson || (HyperJson = {}));
24
+
25
+ export {
26
+ HyperJson
27
+ };
@@ -0,0 +1,127 @@
1
+ import {
2
+ register
3
+ } from "./chunk-U6YRINXJ.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,16 @@
1
+ // src/agnostic/strings/replace-all/index.ts
2
+ function replaceAll(input, pattern, replacer) {
3
+ const found = Array.from(input.match(pattern) ?? []);
4
+ const foundReplaced = typeof replacer === "string" ? found.map(() => replacer) : found.map((e) => replacer(e));
5
+ const splitted = input.split(pattern);
6
+ const replaced = splitted.map((chunk, chunkPos) => {
7
+ const isLast = chunkPos === splitted.length - 1;
8
+ if (isLast) return [chunk];
9
+ return [chunk, foundReplaced[chunkPos] ?? ""];
10
+ }).flat().join("");
11
+ return replaced;
12
+ }
13
+
14
+ export {
15
+ replaceAll
16
+ };
@@ -1,12 +1,12 @@
1
+ import {
2
+ isInDirectory
3
+ } from "../../chunks/chunk-NRITRUZW.js";
1
4
  import {
2
5
  Subpaths
3
6
  } from "../../chunks/chunk-HGCG2J77.js";
4
7
  import {
5
8
  readWrite
6
9
  } from "../../chunks/chunk-7DBNMU6N.js";
7
- import {
8
- isInDirectory
9
- } from "../../chunks/chunk-NRITRUZW.js";
10
10
  import "../../chunks/chunk-LQFKUNVQ.js";
11
11
 
12
12
  // src/node/files/index.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design-edito/tools",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "",
5
5
  "author": "Maxime Fabas",
6
6
  "license": "ISC",