@cocreate/utils 1.42.1 → 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 (63) 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 +11 -109
  53. package/.github/FUNDING.yml +0 -3
  54. package/.github/workflows/automated.yml +0 -44
  55. package/.github/workflows/manual.yml +0 -44
  56. package/CHANGELOG.md +0 -2082
  57. package/CoCreate.config.js +0 -23
  58. package/demo/index.html +0 -23
  59. package/docs/index.html +0 -331
  60. package/index.cjs +0 -3
  61. package/prettier.config.js +0 -16
  62. package/release.config.js +0 -22
  63. 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.1",
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": {
@@ -39,122 +40,23 @@
39
40
  "type": "GitHub Sponsors ❤",
40
41
  "url": "https://github.com/sponsors/CoCreate-app"
41
42
  },
42
- "main": "./dist/cjs/index.cjs",
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
- "require": "./dist/cjs/index.cjs"
48
- },
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
- "./processOperators": {
138
- "import": "./dist/esm/operators.js",
139
- "require": "./dist/cjs/operators.js"
140
- },
141
- "./processOperatorsAsync": {
142
- "import": "./dist/esm/operators.js",
143
- "require": "./dist/cjs/operators.js"
144
- },
145
- "./clickedElement": {
146
- "import": "./dist/esm/clickedElement.js",
147
- "require": "./dist/cjs/clickedElement.js"
148
- },
149
- "./init-browser": {
150
- "import": "./dist/esm/init-browser.js",
151
- "require": "./dist/cjs/init-browser.js"
54
+ "require": "./dist/cjs/index.js"
152
55
  },
153
56
  "./package.json": "./package.json"
154
57
  },
155
58
  "sideEffects": [
156
- "./dist/esm/init-browser.js",
157
- "./dist/cjs/init-browser.js",
59
+ "./src/init-browser.js",
158
60
  "./dist/CoCreate-utils.js",
159
61
  "./dist/CoCreate-utils.min.js"
160
62
  ],
@@ -1,3 +0,0 @@
1
- # These are supported funding model platforms
2
-
3
- github: CoCreate-app
@@ -1,44 +0,0 @@
1
- name: Automated Workflow
2
- on:
3
- push:
4
- branches:
5
- - master
6
- jobs:
7
- about:
8
- runs-on: ubuntu-latest
9
- steps:
10
- - name: Checkout
11
- uses: actions/checkout@v3
12
- - name: Setup Node.js
13
- uses: actions/setup-node@v3
14
- with:
15
- node-version: 16
16
- - name: Jaid/action-sync-node-meta
17
- uses: jaid/action-sync-node-meta@v1.4.0
18
- with:
19
- direction: overwrite-github
20
- githubToken: "${{ secrets.GITHUB }}"
21
- release:
22
- runs-on: ubuntu-latest
23
- steps:
24
- - name: Checkout
25
- uses: actions/checkout@v4
26
- - name: Setup Node.js
27
- uses: actions/setup-node@v4
28
- with:
29
- node-version: 22 # Required for the latest semantic-release plugins
30
- - name: Semantic Release
31
- uses: cycjimmy/semantic-release-action@v4 # Update to v4 for better Node 20+ support
32
- id: semantic
33
- with:
34
- extra_plugins: |
35
- @semantic-release/changelog
36
- @semantic-release/git
37
- @semantic-release/github
38
- env:
39
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" # Use the built-in token if possible
40
- NPM_TOKEN: "${{ secrets.NPM_TOKEN }}"
41
- outputs:
42
- new_release_published: "${{ steps.semantic.outputs.new_release_published }}"
43
- new_release_version: "${{ steps.semantic.outputs.new_release_version }}"
44
-
@@ -1,44 +0,0 @@
1
- name: Manual Workflow
2
- on:
3
- workflow_dispatch:
4
- inputs:
5
- invalidations:
6
- description: |
7
- If set to 'true', invalidates previous upload.
8
- default: "true"
9
- required: true
10
-
11
- jobs:
12
- cdn:
13
- runs-on: ubuntu-latest
14
- env:
15
- DRY_RUN: ${{ github.event.inputs.dry_run }}
16
- GITHUB_TOKEN: "${{ secrets.GITHUB }}"
17
- NPM_TOKEN: "${{ secrets.NPM_TOKEN }}"
18
-
19
- steps:
20
- - name: Checkout
21
- uses: actions/checkout@v3
22
- - name: setup nodejs
23
- uses: actions/setup-node@v3
24
- with:
25
- node-version: 16
26
- - name: yarn install
27
- run: >
28
- echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >
29
- .npmrc
30
-
31
- yarn install
32
- - name: yarn build
33
- run: yarn build
34
- - name: upload latest bundle
35
- uses: CoCreate-app/CoCreate-s3@master
36
- with:
37
- aws-key-id: "${{ secrets.AWSACCESSKEYID }}"
38
- aws-access-key: "${{ secrets.AWSSECERTACCESSKEY }}"
39
- distributionId: "${{ secrets.DISTRIBUTION_ID }}"
40
- bucket: testcrudbucket
41
- source: ./dist
42
- destination: /utils/latest
43
- acl: public-read
44
- invalidations: ${{ github.event.inputs.invalidations }}