@cloudpss/template 0.6.23 → 0.6.25

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.
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGpE,YAAY;AACZ,MAAM,MAAM,QAAQ,GACd,MAAM,GACN;IACI,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;CACnB,CAAC;AAER,cAAc;AACd,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAC;AA2BvD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CASxD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIpE,YAAY;AACZ,MAAM,MAAM,QAAQ,GACd,MAAM,GACN;IACI,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC;CACnB,CAAC;AAER,cAAc;AACd,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAC;AAsCvD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CASxD"}
package/dist/parser.js CHANGED
@@ -1,11 +1,24 @@
1
1
  import { compileSync } from '@mirascript/mirascript';
2
+ import { wrapScript } from '@mirascript/mirascript/subtle';
2
3
  import { LRUCache } from 'lru-cache';
3
4
  const CACHE_SIZE = 100;
4
5
  const formula = new LRUCache({
5
6
  max: CACHE_SIZE,
6
7
  memoMethod: (template) => {
7
8
  const formula = template.slice(1);
8
- const value = compileSync(formula, { input_mode: 'Script' });
9
+ let value;
10
+ try {
11
+ value = compileSync(formula, { input_mode: 'Script' });
12
+ }
13
+ catch (error) {
14
+ // 兼容简单的公式形式,例如 `=foo`,直接访问全局变量 `foo`
15
+ // 支持错误的标识符,例如 `=foo-bar`,直接访问全局变量 `foo-bar`
16
+ const match = /^[-_/.\p{XID_Continue}]+$/u.test(formula);
17
+ if (!match) {
18
+ throw error;
19
+ }
20
+ value = wrapScript(formula, 'Script', (global) => global?.get(formula) ?? null);
21
+ }
9
22
  return {
10
23
  type: 'formula',
11
24
  value: value,
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAarC,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAyC;IACjE,GAAG,EAAE,UAAU;IACf,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,OAAO;YACH,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK;SACf,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,IAAI,QAAQ,CAA+C;IAC7E,GAAG,EAAE,UAAU;IACf,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK;SACf,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAarC,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAyC;IACjE,GAAG,EAAE,UAAU;IACf,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACD,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,qCAAqC;YACrC,4CAA4C;YAC5C,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QACpF,CAAC;QACD,OAAO;YACH,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,KAAK;SACf,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,IAAI,QAAQ,CAA+C;IAC7E,GAAG,EAAE,UAAU;IACf,UAAU,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,KAAK;SACf,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudpss/template",
3
- "version": "0.6.23",
3
+ "version": "0.6.25",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -14,7 +14,7 @@
14
14
  "types": "dist/index.d.ts",
15
15
  "exports": "./dist/index.js",
16
16
  "dependencies": {
17
- "@mirascript/mirascript": "^0.1.56",
17
+ "@mirascript/mirascript": "^0.1.57",
18
18
  "lru-cache": "^11.2.7"
19
19
  },
20
20
  "scripts": {
package/src/parser.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { compileSync, type VmScript } from '@mirascript/mirascript';
2
+ import { wrapScript } from '@mirascript/mirascript/subtle';
2
3
  import { LRUCache } from 'lru-cache';
3
4
 
4
5
  /** 字符串模板 */
@@ -18,7 +19,18 @@ const formula = new LRUCache<string, Template & { type: 'formula' }>({
18
19
  max: CACHE_SIZE,
19
20
  memoMethod: (template: string) => {
20
21
  const formula = template.slice(1);
21
- const value = compileSync(formula, { input_mode: 'Script' });
22
+ let value;
23
+ try {
24
+ value = compileSync(formula, { input_mode: 'Script' });
25
+ } catch (error) {
26
+ // 兼容简单的公式形式,例如 `=foo`,直接访问全局变量 `foo`
27
+ // 支持错误的标识符,例如 `=foo-bar`,直接访问全局变量 `foo-bar`
28
+ const match = /^[-_/.\p{XID_Continue}]+$/u.test(formula);
29
+ if (!match) {
30
+ throw error;
31
+ }
32
+ value = wrapScript(formula, 'Script', (global) => global?.get(formula) ?? null);
33
+ }
22
34
  return {
23
35
  type: 'formula',
24
36
  value: value,