dlsjs 0.1.10 → 0.1.16

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/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "林川",
4
4
  "license": "MIT",
5
5
  "private": false,
6
- "version": "0.1.10",
6
+ "version": "0.1.16",
7
7
  "description": "domain-language for js",
8
8
  "main": "dist/dlsjs.esm.js",
9
9
  "module": "dist/dlsjs.esm.js",
@@ -7,3 +7,18 @@ export class DLS {
7
7
  this.treeFind = treeFind
8
8
  }
9
9
  }
10
+
11
+ export function generateRandomId() {
12
+ const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
13
+ let result = '';
14
+
15
+ // 使用Web Crypto API获取安全的随机值
16
+ const randomValues = new Uint8Array(8);
17
+ crypto.getRandomValues(randomValues);
18
+
19
+ for (let i = 0; i < 8; i++) {
20
+ result += chars[randomValues[i] % chars.length];
21
+ }
22
+
23
+ return result;
24
+ }
@@ -32,7 +32,7 @@ export function deepConvert(data, scope, convertFunc, isTerminator) {
32
32
  container[key] = deepConvert(data[key], scope, convertFunc, isTerminator)
33
33
  }else {
34
34
  let tempResult = deepConvert(data[key], scope, convertFunc, isTerminator)
35
- if(tempResult !== undefined) container.push(deepConvert(data[key], scope, convertFunc, isTerminator))
35
+ if(tempResult !== undefined) container.push(tempResult)
36
36
  }
37
37
  }
38
38
  return container
@@ -40,9 +40,13 @@ function transValue(data, params, {reservedDeepProperty, reservedKey, reservedPr
40
40
  * 终止符判断。防止翻译器无法停止,这里设置终止条件,返回值为ture时视作当前分支终结。
41
41
  * @param data
42
42
  * @param params
43
+ * @param reservedDeepProperty
44
+ * @param reservedKey
45
+ * @param reservedProperty
46
+ * @param reservedWord
43
47
  * @returns {boolean}
44
48
  */
45
- function isTerminator(data, params) {
49
+ function isTerminator(data, params, {reservedDeepProperty, reservedKey, reservedProperty, reservedWord}) {
46
50
  // 键名匹配成功时,翻译键值后不再继续遍历
47
51
  if(reservedKey.hasOwnProperty(params.key)) {
48
52
  return true
@@ -92,7 +96,13 @@ export function createMyTrans(rules = {}) {
92
96
  reservedProperty: Object.assign({}, reservedProperty, rules.reservedProperty),
93
97
  reservedWord: Object.assign({}, reservedWord, rules.reservedWord),
94
98
  })
95
- return (jsonObj, scope) => deepConvert(jsonObj, scope, myTransFunc , isTerminator)
99
+ const myIsTerminator = (data, params) => isTerminator(data, params, {
100
+ reservedDeepProperty: Object.assign({}, reservedDeepProperty, rules.reservedDeepProperty),
101
+ reservedKey: Object.assign({}, reservedKey, rules.reservedKey),
102
+ reservedProperty: Object.assign({}, reservedProperty, rules.reservedProperty),
103
+ reservedWord: Object.assign({}, reservedWord, rules.reservedWord),
104
+ })
105
+ return (jsonObj, scope) => deepConvert(jsonObj, scope, myTransFunc , myIsTerminator)
96
106
  }
97
107
 
98
108