@cocreate/utils 1.42.0 → 1.42.2

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.
Files changed (65) hide show
  1. package/dist/cjs/ObjectId.js +54 -0
  2. package/dist/cjs/attributes.js +64 -0
  3. package/dist/cjs/checkValue.js +26 -0
  4. package/dist/cjs/clickedElement.js +48 -0
  5. package/dist/cjs/core.js +33 -0
  6. package/dist/cjs/createUpdate.js +188 -0
  7. package/dist/cjs/cssPath.js +60 -0
  8. package/dist/cjs/dataQuery.js +280 -0
  9. package/dist/cjs/dom.js +29 -0
  10. package/dist/cjs/domParser.js +44 -0
  11. package/dist/cjs/dotNotationToObject.js +103 -0
  12. package/dist/cjs/escapeHtml.js +25 -0
  13. package/dist/cjs/getRelativePath.js +39 -0
  14. package/dist/cjs/getValueFromObject.js +41 -0
  15. package/dist/cjs/index.js +112 -0
  16. package/dist/cjs/init-browser.js +4 -0
  17. package/dist/cjs/isValidDate.js +32 -0
  18. package/dist/cjs/objectToDotNotation.js +53 -0
  19. package/dist/cjs/objectToSearchParams.js +42 -0
  20. package/dist/cjs/operators copy.js +562 -0
  21. package/dist/cjs/operators.js +480 -0
  22. package/dist/cjs/parseTextToHtml.js +27 -0
  23. package/dist/cjs/queryElements.js +155 -0
  24. package/dist/cjs/safeParse.js +169 -0
  25. package/dist/cjs/uid.js +34 -0
  26. package/dist/esm/ObjectId.js +35 -0
  27. package/dist/esm/attributes.js +45 -0
  28. package/dist/esm/checkValue.js +7 -0
  29. package/dist/esm/clickedElement.js +29 -0
  30. package/dist/esm/core.js +14 -0
  31. package/dist/esm/createUpdate.js +185 -0
  32. package/dist/esm/cssPath.js +41 -0
  33. package/dist/esm/dataQuery.js +261 -0
  34. package/dist/esm/dom.js +10 -0
  35. package/dist/esm/domParser.js +25 -0
  36. package/dist/esm/dotNotationToObject.js +84 -0
  37. package/dist/esm/escapeHtml.js +6 -0
  38. package/dist/esm/getRelativePath.js +20 -0
  39. package/dist/esm/getValueFromObject.js +22 -0
  40. package/dist/esm/index.js +93 -0
  41. package/dist/esm/init-browser.js +4 -0
  42. package/dist/esm/isValidDate.js +13 -0
  43. package/dist/esm/objectToDotNotation.js +34 -0
  44. package/dist/esm/objectToSearchParams.js +23 -0
  45. package/dist/esm/operators copy.js +543 -0
  46. package/dist/esm/operators.js +461 -0
  47. package/dist/esm/package.json +3 -0
  48. package/dist/esm/parseTextToHtml.js +8 -0
  49. package/dist/esm/queryElements.js +136 -0
  50. package/dist/esm/safeParse.js +150 -0
  51. package/dist/esm/uid.js +15 -0
  52. package/package.json +9 -111
  53. package/src/index.js +3 -3
  54. package/src/operators copy.js +687 -0
  55. package/src/operators.js +407 -526
  56. package/.github/FUNDING.yml +0 -3
  57. package/.github/workflows/automated.yml +0 -44
  58. package/.github/workflows/manual.yml +0 -44
  59. package/CHANGELOG.md +0 -2075
  60. package/CoCreate.config.js +0 -23
  61. package/demo/index.html +0 -23
  62. package/docs/index.html +0 -331
  63. package/prettier.config.js +0 -16
  64. package/release.config.js +0 -22
  65. package/webpack.config.js +0 -65
@@ -0,0 +1,150 @@
1
+ const constants = { PI: Math.PI, E: Math.E };
2
+ const functions = {
3
+ abs: Math.abs,
4
+ ceil: Math.ceil,
5
+ floor: Math.floor,
6
+ round: Math.round,
7
+ max: Math.max,
8
+ min: Math.min,
9
+ pow: Math.pow,
10
+ sqrt: Math.sqrt,
11
+ log: Math.log,
12
+ sin: Math.sin,
13
+ cos: Math.cos,
14
+ tan: Math.tan
15
+ };
16
+ function safeParse(expression, context = {}) {
17
+ if (typeof expression !== "string") {
18
+ expression = String(expression);
19
+ }
20
+ let currentExpr = expression.trim();
21
+ if (!currentExpr) return null;
22
+ const tokenizerRegex = /('[^']*'|"[^"]*"|\d+(?:\.\d+)?|>=|<=|===|!==|==|!=|&&|\|\||[a-zA-Z_][a-zA-Z0-9_\.]*|[\+\-\*\/\%\(\)\?\:\>\<\!\,\=])/g;
23
+ const tokens = currentExpr.match(tokenizerRegex) || [];
24
+ let pos = 0;
25
+ function peek() {
26
+ return tokens[pos];
27
+ }
28
+ function consume() {
29
+ return tokens[pos++];
30
+ }
31
+ function parse() {
32
+ return parseTernary();
33
+ }
34
+ function parseTernary() {
35
+ let left = parseLogical();
36
+ if (peek() === "?") {
37
+ consume();
38
+ let trueExpr = parseTernary();
39
+ if (peek() === ":") {
40
+ consume();
41
+ let falseExpr = parseTernary();
42
+ return left ? trueExpr : falseExpr;
43
+ }
44
+ }
45
+ return left;
46
+ }
47
+ function parseLogical() {
48
+ let left = parseComparison();
49
+ while (peek() === "&&" || peek() === "||") {
50
+ let op = consume();
51
+ let right = parseComparison();
52
+ if (op === "&&") left = left && right;
53
+ if (op === "||") left = left || right;
54
+ }
55
+ return left;
56
+ }
57
+ function parseComparison() {
58
+ let left = parseAdditive();
59
+ while ([">", "<", ">=", "<=", "===", "!==", "==", "!="].includes(peek())) {
60
+ let op = consume();
61
+ let right = parseAdditive();
62
+ if (op === ">") left = left > right;
63
+ if (op === "<") left = left < right;
64
+ if (op === ">=") left = left >= right;
65
+ if (op === "<=") left = left <= right;
66
+ if (op === "===") left = left === right;
67
+ if (op === "!==") left = left !== right;
68
+ if (op === "==") left = left == right;
69
+ if (op === "!=") left = left != right;
70
+ }
71
+ return left;
72
+ }
73
+ function parseAdditive() {
74
+ let left = parseMultiplicative();
75
+ while (["+", "-"].includes(peek())) {
76
+ let op = consume();
77
+ let right = parseMultiplicative();
78
+ if (op === "+") left = left + right;
79
+ if (op === "-") left = left - right;
80
+ }
81
+ return left;
82
+ }
83
+ function parseMultiplicative() {
84
+ let left = parsePrimary();
85
+ while (["*", "/", "%"].includes(peek())) {
86
+ let op = consume();
87
+ let right = parsePrimary();
88
+ if (op === "*") left = left * right;
89
+ if (op === "/") left = left / right;
90
+ if (op === "%") left = left % right;
91
+ }
92
+ return left;
93
+ }
94
+ function parsePrimary() {
95
+ let token = consume();
96
+ if (!token) return void 0;
97
+ if (/^\d/.test(token)) return parseFloat(token);
98
+ if (token.startsWith("'") || token.startsWith('"')) {
99
+ return token.slice(1, -1);
100
+ }
101
+ if (token === "true") return true;
102
+ if (token === "false") return false;
103
+ if (token === "(") {
104
+ let expr = parse();
105
+ if (peek() === ")") consume();
106
+ return expr;
107
+ }
108
+ if (token === "-") return -parsePrimary();
109
+ if (token === "!") return !parsePrimary();
110
+ if (constants.hasOwnProperty(token)) {
111
+ return constants[token];
112
+ }
113
+ if (peek() === "(" && functions.hasOwnProperty(token)) {
114
+ consume();
115
+ let args = [];
116
+ if (peek() !== ")") {
117
+ args.push(parse());
118
+ while (peek() === ",") {
119
+ consume();
120
+ args.push(parse());
121
+ }
122
+ }
123
+ if (peek() === ")") consume();
124
+ return functions[token](...args);
125
+ }
126
+ let path = token.split(".");
127
+ let val = context;
128
+ for (let part of path) {
129
+ if (val !== null && typeof val === "object" && part in val) {
130
+ val = val[part];
131
+ } else {
132
+ return void 0;
133
+ }
134
+ }
135
+ return val;
136
+ }
137
+ try {
138
+ const result = parse();
139
+ return result !== void 0 ? result : null;
140
+ } catch (error) {
141
+ console.warn(
142
+ `Unexpected parsing error: ${error.message} (Expression context: "${expression}")`,
143
+ error
144
+ );
145
+ return null;
146
+ }
147
+ }
148
+ export {
149
+ safeParse
150
+ };
@@ -0,0 +1,15 @@
1
+ function uid(length = 36) {
2
+ let pattern = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
3
+ if (length > 36) {
4
+ length = 36;
5
+ }
6
+ let uuid = pattern.replace(/[xy]/g, function(c) {
7
+ var r = Math.random() * 16 | 0;
8
+ var v = c === "x" ? r : r & 3 | 8;
9
+ return v.toString(16);
10
+ }).substring(0, length);
11
+ return uuid;
12
+ }
13
+ export {
14
+ uid
15
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocreate/utils",
3
- "version": "1.42.0",
3
+ "version": "1.42.2",
4
4
  "description": "A simple utils component in vanilla javascript. Easily configured using HTML5 attributes and/or JavaScript API.",
5
5
  "keywords": [
6
6
  "utils",
@@ -23,6 +23,7 @@
23
23
  "build:modules": "npm run build:modules:esm && npm run build:modules:cjs",
24
24
  "build": "npm run build:umd && npm run build:modules",
25
25
  "dev": "npx webpack --config webpack.config.js --watch",
26
+ "prepare": "npm run build:modules",
26
27
  "postinstall": "node -e \"const { execSync } = require('child_process'); try { execSync('coc --version', { stdio: 'ignore' }); } catch (error) { try { execSync('npm install -g @cocreate/cli', { stdio: 'inherit' }); console.log('Installed \"@cocreate/cli\" globally.'); } catch (error) { console.error('Failed to install \"@cocreate/cli\" globally:', error); } }\""
27
28
  },
28
29
  "repository": {
@@ -41,124 +42,21 @@
41
42
  },
42
43
  "main": "./dist/cjs/index.js",
43
44
  "module": "./dist/esm/index.js",
45
+ "files": [
46
+ "dist",
47
+ "src",
48
+ "README.md",
49
+ "LICENSE"
50
+ ],
44
51
  "exports": {
45
52
  ".": {
46
53
  "import": "./dist/esm/index.js",
47
54
  "require": "./dist/cjs/index.js"
48
55
  },
49
- "./getRelativePath": {
50
- "import": "./dist/esm/getRelativePath.js",
51
- "require": "./dist/cjs/getRelativePath.js"
52
- },
53
- "./ObjectId": {
54
- "import": "./dist/esm/ObjectId.js",
55
- "require": "./dist/cjs/ObjectId.js"
56
- },
57
- "./uid": {
58
- "import": "./dist/esm/uid.js",
59
- "require": "./dist/cjs/uid.js"
60
- },
61
- "./checkValue": {
62
- "import": "./dist/esm/checkValue.js",
63
- "require": "./dist/cjs/checkValue.js"
64
- },
65
- "./isValidDate": {
66
- "import": "./dist/esm/isValidDate.js",
67
- "require": "./dist/cjs/isValidDate.js"
68
- },
69
- "./objectToSearchParams": {
70
- "import": "./dist/esm/objectToSearchParams.js",
71
- "require": "./dist/cjs/objectToSearchParams.js"
72
- },
73
- "./dotNotationToObject": {
74
- "import": "./dist/esm/dotNotationToObject.js",
75
- "require": "./dist/cjs/dotNotationToObject.js"
76
- },
77
- "./objectToDotNotation": {
78
- "import": "./dist/esm/objectToDotNotation.js",
79
- "require": "./dist/cjs/objectToDotNotation.js"
80
- },
81
- "./getValueFromObject": {
82
- "import": "./dist/esm/getValueFromObject.js",
83
- "require": "./dist/cjs/getValueFromObject.js"
84
- },
85
- "./createUpdate": {
86
- "import": "./dist/esm/createUpdate.js",
87
- "require": "./dist/cjs/createUpdate.js"
88
- },
89
- "./domParser": {
90
- "import": "./dist/esm/domParser.js",
91
- "require": "./dist/cjs/domParser.js"
92
- },
93
- "./parseTextToHtml": {
94
- "import": "./dist/esm/parseTextToHtml.js",
95
- "require": "./dist/cjs/parseTextToHtml.js"
96
- },
97
- "./escapeHtml": {
98
- "import": "./dist/esm/escapeHtml.js",
99
- "require": "./dist/cjs/escapeHtml.js"
100
- },
101
- "./cssPath": {
102
- "import": "./dist/esm/cssPath.js",
103
- "require": "./dist/cjs/cssPath.js"
104
- },
105
- "./queryElements": {
106
- "import": "./dist/esm/queryElements.js",
107
- "require": "./dist/cjs/queryElements.js"
108
- },
109
- "./checkMediaQueries": {
110
- "import": "./dist/esm/queryElements.js",
111
- "require": "./dist/cjs/queryElements.js"
112
- },
113
- "./queryData": {
114
- "import": "./dist/esm/dataQuery.js",
115
- "require": "./dist/cjs/dataQuery.js"
116
- },
117
- "./searchData": {
118
- "import": "./dist/esm/dataQuery.js",
119
- "require": "./dist/cjs/dataQuery.js"
120
- },
121
- "./sortData": {
122
- "import": "./dist/esm/dataQuery.js",
123
- "require": "./dist/cjs/dataQuery.js"
124
- },
125
- "./getAttributes": {
126
- "import": "./dist/esm/attributes.js",
127
- "require": "./dist/cjs/attributes.js"
128
- },
129
- "./getAttributeNames": {
130
- "import": "./dist/esm/attributes.js",
131
- "require": "./dist/cjs/attributes.js"
132
- },
133
- "./setAttributeNames": {
134
- "import": "./dist/esm/attributes.js",
135
- "require": "./dist/cjs/attributes.js"
136
- },
137
- "./safeParse": {
138
- "import": "./dist/esm/safeParse.js",
139
- "require": "./dist/cjs/safeParse.js"
140
- },
141
- "./processOperators": {
142
- "import": "./dist/esm/operators.js",
143
- "require": "./dist/cjs/operators.js"
144
- },
145
- "./processOperatorsAsync": {
146
- "import": "./dist/esm/operators.js",
147
- "require": "./dist/cjs/operators.js"
148
- },
149
- "./clickedElement": {
150
- "import": "./dist/esm/clickedElement.js",
151
- "require": "./dist/cjs/clickedElement.js"
152
- },
153
- "./init-browser": {
154
- "import": "./dist/esm/init-browser.js",
155
- "require": "./dist/cjs/init-browser.js"
156
- },
157
56
  "./package.json": "./package.json"
158
57
  },
159
58
  "sideEffects": [
160
- "./dist/esm/init-browser.js",
161
- "./dist/cjs/init-browser.js",
59
+ "./src/init-browser.js",
162
60
  "./dist/CoCreate-utils.js",
163
61
  "./dist/CoCreate-utils.min.js"
164
62
  ],
package/src/index.js CHANGED
@@ -15,7 +15,7 @@ export { cssPath } from "./cssPath.js";
15
15
  export { queryElements, checkMediaQueries } from "./queryElements.js";
16
16
  export { queryData, searchData, sortData } from "./dataQuery.js";
17
17
  export { getAttributes, getAttributeNames, setAttributeNames } from "./attributes.js";
18
- export { safeParse } from "./safeParse.js";
18
+ // export { safeParse } from "./safeParse.js";
19
19
  export { clickedElement } from "./clickedElement.js";
20
20
  export { processOperators, processOperatorsAsync } from "./operators.js";
21
21
 
@@ -36,7 +36,7 @@ import { cssPath } from "./cssPath.js";
36
36
  import { queryElements, checkMediaQueries } from "./queryElements.js";
37
37
  import { queryData, searchData, sortData } from "./dataQuery.js";
38
38
  import { getAttributes, getAttributeNames, setAttributeNames } from "./attributes.js";
39
- import { safeParse } from "./safeParse.js";
39
+ // import { safeParse } from "./safeParse.js";
40
40
  import { processOperators, processOperatorsAsync } from "./operators.js";
41
41
 
42
42
  const utils = {
@@ -62,7 +62,7 @@ const utils = {
62
62
  getAttributes,
63
63
  setAttributeNames,
64
64
  getAttributeNames,
65
- safeParse,
65
+ // safeParse,
66
66
  processOperators,
67
67
  processOperatorsAsync
68
68
  };