haori 0.13.0 → 0.13.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 (307) hide show
  1. package/README.ja.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/haori.cjs.js +10 -10
  4. package/dist/haori.es.js +191 -165
  5. package/dist/haori.iife.js +10 -10
  6. package/dist/index.d.ts +1 -1
  7. package/package.json +11 -3
  8. package/dist/haori.cjs.js.map +0 -1
  9. package/dist/haori.es.js.map +0 -1
  10. package/dist/haori.iife.js.map +0 -1
  11. package/dist/package.json +0 -70
  12. package/dist/src/builtins.d.ts +0 -100
  13. package/dist/src/builtins.d.ts.map +0 -1
  14. package/dist/src/builtins.js +0 -194
  15. package/dist/src/builtins.js.map +0 -1
  16. package/dist/src/core.d.ts +0 -505
  17. package/dist/src/core.d.ts.map +0 -1
  18. package/dist/src/core.js +0 -1817
  19. package/dist/src/core.js.map +0 -1
  20. package/dist/src/dev.d.ts +0 -35
  21. package/dist/src/dev.d.ts.map +0 -1
  22. package/dist/src/dev.js +0 -44
  23. package/dist/src/dev.js.map +0 -1
  24. package/dist/src/env.d.ts +0 -43
  25. package/dist/src/env.d.ts.map +0 -1
  26. package/dist/src/env.js +0 -108
  27. package/dist/src/env.js.map +0 -1
  28. package/dist/src/event.d.ts +0 -171
  29. package/dist/src/event.d.ts.map +0 -1
  30. package/dist/src/event.js +0 -235
  31. package/dist/src/event.js.map +0 -1
  32. package/dist/src/event_dispatcher.d.ts +0 -66
  33. package/dist/src/event_dispatcher.d.ts.map +0 -1
  34. package/dist/src/event_dispatcher.js +0 -167
  35. package/dist/src/event_dispatcher.js.map +0 -1
  36. package/dist/src/expression.d.ts +0 -260
  37. package/dist/src/expression.d.ts.map +0 -1
  38. package/dist/src/expression.js +0 -975
  39. package/dist/src/expression.js.map +0 -1
  40. package/dist/src/form.d.ts +0 -148
  41. package/dist/src/form.d.ts.map +0 -1
  42. package/dist/src/form.js +0 -428
  43. package/dist/src/form.js.map +0 -1
  44. package/dist/src/fragment.d.ts +0 -621
  45. package/dist/src/fragment.d.ts.map +0 -1
  46. package/dist/src/fragment.js +0 -1963
  47. package/dist/src/fragment.js.map +0 -1
  48. package/dist/src/haori.d.ts +0 -130
  49. package/dist/src/haori.d.ts.map +0 -1
  50. package/dist/src/haori.js +0 -215
  51. package/dist/src/haori.js.map +0 -1
  52. package/dist/src/import.d.ts +0 -19
  53. package/dist/src/import.d.ts.map +0 -1
  54. package/dist/src/import.js +0 -64
  55. package/dist/src/import.js.map +0 -1
  56. package/dist/src/index.d.ts +0 -27
  57. package/dist/src/index.d.ts.map +0 -1
  58. package/dist/src/index.js +0 -30
  59. package/dist/src/index.js.map +0 -1
  60. package/dist/src/intersect.d.ts +0 -28
  61. package/dist/src/intersect.d.ts.map +0 -1
  62. package/dist/src/intersect.js +0 -201
  63. package/dist/src/intersect.js.map +0 -1
  64. package/dist/src/log.d.ts +0 -32
  65. package/dist/src/log.d.ts.map +0 -1
  66. package/dist/src/log.js +0 -43
  67. package/dist/src/log.js.map +0 -1
  68. package/dist/src/observer.d.ts +0 -24
  69. package/dist/src/observer.d.ts.map +0 -1
  70. package/dist/src/observer.js +0 -131
  71. package/dist/src/observer.js.map +0 -1
  72. package/dist/src/procedure.d.ts +0 -447
  73. package/dist/src/procedure.d.ts.map +0 -1
  74. package/dist/src/procedure.js +0 -1921
  75. package/dist/src/procedure.js.map +0 -1
  76. package/dist/src/queue.d.ts +0 -35
  77. package/dist/src/queue.d.ts.map +0 -1
  78. package/dist/src/queue.js +0 -202
  79. package/dist/src/queue.js.map +0 -1
  80. package/dist/src/url.d.ts +0 -14
  81. package/dist/src/url.d.ts.map +0 -1
  82. package/dist/src/url.js +0 -22
  83. package/dist/src/url.js.map +0 -1
  84. package/dist/tests/bind-arg-own-binding.test.d.ts +0 -2
  85. package/dist/tests/bind-arg-own-binding.test.d.ts.map +0 -1
  86. package/dist/tests/bind-arg-own-binding.test.js +0 -63
  87. package/dist/tests/bind-arg-own-binding.test.js.map +0 -1
  88. package/dist/tests/bindcomplete-and-scope.test.d.ts +0 -2
  89. package/dist/tests/bindcomplete-and-scope.test.d.ts.map +0 -1
  90. package/dist/tests/bindcomplete-and-scope.test.js +0 -115
  91. package/dist/tests/bindcomplete-and-scope.test.js.map +0 -1
  92. package/dist/tests/builtins.test.d.ts +0 -2
  93. package/dist/tests/builtins.test.d.ts.map +0 -1
  94. package/dist/tests/builtins.test.js +0 -152
  95. package/dist/tests/builtins.test.js.map +0 -1
  96. package/dist/tests/click-attributes.test.d.ts +0 -2
  97. package/dist/tests/click-attributes.test.d.ts.map +0 -1
  98. package/dist/tests/click-attributes.test.js +0 -113
  99. package/dist/tests/click-attributes.test.js.map +0 -1
  100. package/dist/tests/click-no-disabled.test.d.ts +0 -2
  101. package/dist/tests/click-no-disabled.test.d.ts.map +0 -1
  102. package/dist/tests/click-no-disabled.test.js +0 -67
  103. package/dist/tests/click-no-disabled.test.js.map +0 -1
  104. package/dist/tests/core.test.d.ts +0 -5
  105. package/dist/tests/core.test.d.ts.map +0 -1
  106. package/dist/tests/core.test.js +0 -1056
  107. package/dist/tests/core.test.js.map +0 -1
  108. package/dist/tests/data-bind-arg-reeval.test.d.ts +0 -2
  109. package/dist/tests/data-bind-arg-reeval.test.d.ts.map +0 -1
  110. package/dist/tests/data-bind-arg-reeval.test.js +0 -119
  111. package/dist/tests/data-bind-arg-reeval.test.js.map +0 -1
  112. package/dist/tests/data-bind-merge.test.d.ts +0 -2
  113. package/dist/tests/data-bind-merge.test.d.ts.map +0 -1
  114. package/dist/tests/data-bind-merge.test.js +0 -86
  115. package/dist/tests/data-bind-merge.test.js.map +0 -1
  116. package/dist/tests/data-click-defer.test.d.ts +0 -2
  117. package/dist/tests/data-click-defer.test.d.ts.map +0 -1
  118. package/dist/tests/data-click-defer.test.js +0 -57
  119. package/dist/tests/data-click-defer.test.js.map +0 -1
  120. package/dist/tests/data-click-run.test.d.ts +0 -5
  121. package/dist/tests/data-click-run.test.d.ts.map +0 -1
  122. package/dist/tests/data-click-run.test.js +0 -109
  123. package/dist/tests/data-click-run.test.js.map +0 -1
  124. package/dist/tests/data-derive.test.d.ts +0 -2
  125. package/dist/tests/data-derive.test.d.ts.map +0 -1
  126. package/dist/tests/data-derive.test.js +0 -999
  127. package/dist/tests/data-derive.test.js.map +0 -1
  128. package/dist/tests/data-each-browserlike.test.d.ts +0 -2
  129. package/dist/tests/data-each-browserlike.test.d.ts.map +0 -1
  130. package/dist/tests/data-each-browserlike.test.js +0 -48
  131. package/dist/tests/data-each-browserlike.test.js.map +0 -1
  132. package/dist/tests/data-each-fragment-debug.test.d.ts +0 -2
  133. package/dist/tests/data-each-fragment-debug.test.d.ts.map +0 -1
  134. package/dist/tests/data-each-fragment-debug.test.js +0 -119
  135. package/dist/tests/data-each-fragment-debug.test.js.map +0 -1
  136. package/dist/tests/data-each-table.test.d.ts +0 -2
  137. package/dist/tests/data-each-table.test.d.ts.map +0 -1
  138. package/dist/tests/data-each-table.test.js +0 -131
  139. package/dist/tests/data-each-table.test.js.map +0 -1
  140. package/dist/tests/data-each-template-recovery.test.d.ts +0 -2
  141. package/dist/tests/data-each-template-recovery.test.d.ts.map +0 -1
  142. package/dist/tests/data-each-template-recovery.test.js +0 -87
  143. package/dist/tests/data-each-template-recovery.test.js.map +0 -1
  144. package/dist/tests/data-event-prevent.test.d.ts +0 -2
  145. package/dist/tests/data-event-prevent.test.d.ts.map +0 -1
  146. package/dist/tests/data-event-prevent.test.js +0 -76
  147. package/dist/tests/data-event-prevent.test.js.map +0 -1
  148. package/dist/tests/data-fetch-form-input-binding.test.d.ts +0 -2
  149. package/dist/tests/data-fetch-form-input-binding.test.d.ts.map +0 -1
  150. package/dist/tests/data-fetch-form-input-binding.test.js +0 -202
  151. package/dist/tests/data-fetch-form-input-binding.test.js.map +0 -1
  152. package/dist/tests/data-fetch-tbody-dom.test.d.ts +0 -2
  153. package/dist/tests/data-fetch-tbody-dom.test.d.ts.map +0 -1
  154. package/dist/tests/data-fetch-tbody-dom.test.js +0 -82
  155. package/dist/tests/data-fetch-tbody-dom.test.js.map +0 -1
  156. package/dist/tests/data-form-container.test.d.ts +0 -2
  157. package/dist/tests/data-form-container.test.d.ts.map +0 -1
  158. package/dist/tests/data-form-container.test.js +0 -88
  159. package/dist/tests/data-form-container.test.js.map +0 -1
  160. package/dist/tests/data-if-dev-diagnostics.test.d.ts +0 -2
  161. package/dist/tests/data-if-dev-diagnostics.test.d.ts.map +0 -1
  162. package/dist/tests/data-if-dev-diagnostics.test.js +0 -55
  163. package/dist/tests/data-if-dev-diagnostics.test.js.map +0 -1
  164. package/dist/tests/data-if-falsy.test.d.ts +0 -2
  165. package/dist/tests/data-if-falsy.test.d.ts.map +0 -1
  166. package/dist/tests/data-if-falsy.test.js +0 -73
  167. package/dist/tests/data-if-falsy.test.js.map +0 -1
  168. package/dist/tests/data-load-on-show.test.d.ts +0 -2
  169. package/dist/tests/data-load-on-show.test.d.ts.map +0 -1
  170. package/dist/tests/data-load-on-show.test.js +0 -98
  171. package/dist/tests/data-load-on-show.test.js.map +0 -1
  172. package/dist/tests/derive-each-render-wait.test.d.ts +0 -2
  173. package/dist/tests/derive-each-render-wait.test.d.ts.map +0 -1
  174. package/dist/tests/derive-each-render-wait.test.js +0 -90
  175. package/dist/tests/derive-each-render-wait.test.js.map +0 -1
  176. package/dist/tests/dev.test.d.ts +0 -2
  177. package/dist/tests/dev.test.d.ts.map +0 -1
  178. package/dist/tests/dev.test.js +0 -51
  179. package/dist/tests/dev.test.js.map +0 -1
  180. package/dist/tests/each-update-event.test.d.ts +0 -2
  181. package/dist/tests/each-update-event.test.d.ts.map +0 -1
  182. package/dist/tests/each-update-event.test.js +0 -83
  183. package/dist/tests/each-update-event.test.js.map +0 -1
  184. package/dist/tests/each_arg.test.d.ts +0 -2
  185. package/dist/tests/each_arg.test.d.ts.map +0 -1
  186. package/dist/tests/each_arg.test.js +0 -41
  187. package/dist/tests/each_arg.test.js.map +0 -1
  188. package/dist/tests/env.test.d.ts +0 -2
  189. package/dist/tests/env.test.d.ts.map +0 -1
  190. package/dist/tests/env.test.js +0 -124
  191. package/dist/tests/env.test.js.map +0 -1
  192. package/dist/tests/evaluation-profile.test.d.ts +0 -2
  193. package/dist/tests/evaluation-profile.test.d.ts.map +0 -1
  194. package/dist/tests/evaluation-profile.test.js +0 -92
  195. package/dist/tests/evaluation-profile.test.js.map +0 -1
  196. package/dist/tests/event.test.d.ts +0 -2
  197. package/dist/tests/event.test.d.ts.map +0 -1
  198. package/dist/tests/event.test.js +0 -300
  199. package/dist/tests/event.test.js.map +0 -1
  200. package/dist/tests/expression-disallowed-keyword-hint.test.d.ts +0 -2
  201. package/dist/tests/expression-disallowed-keyword-hint.test.d.ts.map +0 -1
  202. package/dist/tests/expression-disallowed-keyword-hint.test.js +0 -45
  203. package/dist/tests/expression-disallowed-keyword-hint.test.js.map +0 -1
  204. package/dist/tests/expression-forbidden-hint.test.d.ts +0 -2
  205. package/dist/tests/expression-forbidden-hint.test.d.ts.map +0 -1
  206. package/dist/tests/expression-forbidden-hint.test.js +0 -37
  207. package/dist/tests/expression-forbidden-hint.test.js.map +0 -1
  208. package/dist/tests/expression.test.d.ts +0 -2
  209. package/dist/tests/expression.test.d.ts.map +0 -1
  210. package/dist/tests/expression.test.js +0 -482
  211. package/dist/tests/expression.test.js.map +0 -1
  212. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts +0 -2
  213. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts.map +0 -1
  214. package/dist/tests/fetch-and-procedure-scenarios.test.js +0 -195
  215. package/dist/tests/fetch-and-procedure-scenarios.test.js.map +0 -1
  216. package/dist/tests/form-number-type.test.d.ts +0 -2
  217. package/dist/tests/form-number-type.test.d.ts.map +0 -1
  218. package/dist/tests/form-number-type.test.js +0 -83
  219. package/dist/tests/form-number-type.test.js.map +0 -1
  220. package/dist/tests/form.test.d.ts +0 -2
  221. package/dist/tests/form.test.d.ts.map +0 -1
  222. package/dist/tests/form.test.js +0 -636
  223. package/dist/tests/form.test.js.map +0 -1
  224. package/dist/tests/fragment.test.d.ts +0 -2
  225. package/dist/tests/fragment.test.d.ts.map +0 -1
  226. package/dist/tests/fragment.test.js +0 -284
  227. package/dist/tests/fragment.test.js.map +0 -1
  228. package/dist/tests/haori.test.d.ts +0 -2
  229. package/dist/tests/haori.test.d.ts.map +0 -1
  230. package/dist/tests/haori.test.js +0 -149
  231. package/dist/tests/haori.test.js.map +0 -1
  232. package/dist/tests/helpers/async.d.ts +0 -20
  233. package/dist/tests/helpers/async.d.ts.map +0 -1
  234. package/dist/tests/helpers/async.js +0 -35
  235. package/dist/tests/helpers/async.js.map +0 -1
  236. package/dist/tests/import.test.d.ts +0 -2
  237. package/dist/tests/import.test.d.ts.map +0 -1
  238. package/dist/tests/import.test.js +0 -148
  239. package/dist/tests/import.test.js.map +0 -1
  240. package/dist/tests/intersect.test.d.ts +0 -2
  241. package/dist/tests/intersect.test.d.ts.map +0 -1
  242. package/dist/tests/intersect.test.js +0 -173
  243. package/dist/tests/intersect.test.js.map +0 -1
  244. package/dist/tests/log.test.d.ts +0 -2
  245. package/dist/tests/log.test.d.ts.map +0 -1
  246. package/dist/tests/log.test.js +0 -58
  247. package/dist/tests/log.test.js.map +0 -1
  248. package/dist/tests/observer.test.d.ts +0 -2
  249. package/dist/tests/observer.test.d.ts.map +0 -1
  250. package/dist/tests/observer.test.js +0 -64
  251. package/dist/tests/observer.test.js.map +0 -1
  252. package/dist/tests/placeholder-resolution.test.d.ts +0 -2
  253. package/dist/tests/placeholder-resolution.test.d.ts.map +0 -1
  254. package/dist/tests/placeholder-resolution.test.js +0 -463
  255. package/dist/tests/placeholder-resolution.test.js.map +0 -1
  256. package/dist/tests/procedure-action-operations.test.d.ts +0 -2
  257. package/dist/tests/procedure-action-operations.test.d.ts.map +0 -1
  258. package/dist/tests/procedure-action-operations.test.js +0 -1140
  259. package/dist/tests/procedure-action-operations.test.js.map +0 -1
  260. package/dist/tests/procedure-bind-append.test.d.ts +0 -2
  261. package/dist/tests/procedure-bind-append.test.d.ts.map +0 -1
  262. package/dist/tests/procedure-bind-append.test.js +0 -80
  263. package/dist/tests/procedure-bind-append.test.js.map +0 -1
  264. package/dist/tests/procedure-fetch-options.test.d.ts +0 -2
  265. package/dist/tests/procedure-fetch-options.test.d.ts.map +0 -1
  266. package/dist/tests/procedure-fetch-options.test.js +0 -255
  267. package/dist/tests/procedure-fetch-options.test.js.map +0 -1
  268. package/dist/tests/procedure.test.d.ts +0 -2
  269. package/dist/tests/procedure.test.d.ts.map +0 -1
  270. package/dist/tests/procedure.test.js +0 -137
  271. package/dist/tests/procedure.test.js.map +0 -1
  272. package/dist/tests/procedure_events.test.d.ts +0 -7
  273. package/dist/tests/procedure_events.test.d.ts.map +0 -1
  274. package/dist/tests/procedure_events.test.js +0 -261
  275. package/dist/tests/procedure_events.test.js.map +0 -1
  276. package/dist/tests/render-wait.test.d.ts +0 -2
  277. package/dist/tests/render-wait.test.d.ts.map +0 -1
  278. package/dist/tests/render-wait.test.js +0 -68
  279. package/dist/tests/render-wait.test.js.map +0 -1
  280. package/dist/tests/reset_each.test.d.ts +0 -2
  281. package/dist/tests/reset_each.test.d.ts.map +0 -1
  282. package/dist/tests/reset_each.test.js +0 -215
  283. package/dist/tests/reset_each.test.js.map +0 -1
  284. package/dist/tests/row-move.test.d.ts +0 -2
  285. package/dist/tests/row-move.test.d.ts.map +0 -1
  286. package/dist/tests/row-move.test.js +0 -220
  287. package/dist/tests/row-move.test.js.map +0 -1
  288. package/dist/tests/row-operations.test.d.ts +0 -2
  289. package/dist/tests/row-operations.test.d.ts.map +0 -1
  290. package/dist/tests/row-operations.test.js +0 -259
  291. package/dist/tests/row-operations.test.js.map +0 -1
  292. package/dist/tests/scheduled-evaluate-wait.test.d.ts +0 -2
  293. package/dist/tests/scheduled-evaluate-wait.test.d.ts.map +0 -1
  294. package/dist/tests/scheduled-evaluate-wait.test.js +0 -68
  295. package/dist/tests/scheduled-evaluate-wait.test.js.map +0 -1
  296. package/dist/tests/url.test.d.ts +0 -2
  297. package/dist/tests/url.test.d.ts.map +0 -1
  298. package/dist/tests/url.test.js +0 -150
  299. package/dist/tests/url.test.js.map +0 -1
  300. package/dist/vite.config.d.ts +0 -3
  301. package/dist/vite.config.d.ts.map +0 -1
  302. package/dist/vite.config.js +0 -28
  303. package/dist/vite.config.js.map +0 -1
  304. package/dist/vitest.config.d.ts +0 -3
  305. package/dist/vitest.config.d.ts.map +0 -1
  306. package/dist/vitest.config.js +0 -19
  307. package/dist/vitest.config.js.map +0 -1
@@ -1,482 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview Expression(式評価エンジン)のセキュリティテスト
4
- */
5
- import { describe, it, expect, vi } from 'vitest';
6
- import Expression from '../src/expression';
7
- describe('Expression', () => {
8
- describe('基本的な式評価', () => {
9
- it('単純な変数参照を評価できる', () => {
10
- const result = Expression.evaluate('x', { x: 10 });
11
- expect(result).toBe(10);
12
- });
13
- it('算術演算を評価できる', () => {
14
- const result = Expression.evaluate('x + y', { x: 10, y: 20 });
15
- expect(result).toBe(30);
16
- });
17
- it('文字列連結を評価できる', () => {
18
- const result = Expression.evaluate('name + "様"', { name: '田中' });
19
- expect(result).toBe('田中様');
20
- });
21
- it('プロパティアクセスを評価できる', () => {
22
- const result = Expression.evaluate('user.name', {
23
- user: { name: '田中' },
24
- });
25
- expect(result).toBe('田中');
26
- });
27
- it('配列アクセスを評価できる', () => {
28
- const result = Expression.evaluate('items[0]', { items: ['a', 'b', 'c'] });
29
- expect(result).toBe('a');
30
- });
31
- it('文字列キーのブラケットアクセスを評価できる', () => {
32
- const result = Expression.evaluate('user["name"]', {
33
- user: { name: '田中' },
34
- });
35
- expect(result).toBe('田中');
36
- });
37
- it('動的インデックスのブラケットアクセスを評価できる', () => {
38
- const result = Expression.evaluate('items[index]', {
39
- items: ['a', 'b', 'c'],
40
- index: 1,
41
- });
42
- expect(result).toBe('b');
43
- });
44
- it('式を含む動的インデックスを評価できる', () => {
45
- const result = Expression.evaluate('items[index + 1]', {
46
- items: ['a', 'b', 'c'],
47
- index: 0,
48
- });
49
- expect(result).toBe('b');
50
- });
51
- it('optional chaining を評価できる', () => {
52
- const result = Expression.evaluate('user?.name', {
53
- user: { name: '田中' },
54
- });
55
- expect(result).toBe('田中');
56
- });
57
- it('optional chaining と動的キーを組み合わせて評価できる', () => {
58
- const result = Expression.evaluate('user?.[key]', {
59
- user: { name: '田中' },
60
- key: 'name',
61
- });
62
- expect(result).toBe('田中');
63
- });
64
- it('メソッド呼び出しを評価できる', () => {
65
- const result = Expression.evaluate('name.toUpperCase()', {
66
- name: 'hello',
67
- });
68
- expect(result).toBe('HELLO');
69
- });
70
- it('三項演算子を評価できる', () => {
71
- const result = Expression.evaluate('x > 5 ? "large" : "small"', { x: 10 });
72
- expect(result).toBe('large');
73
- });
74
- it('空の式はnullを返す', () => {
75
- const result = Expression.evaluate('', {});
76
- expect(result).toBeNull();
77
- });
78
- it('空白のみの式はnullを返す', () => {
79
- const result = Expression.evaluate(' ', {});
80
- expect(result).toBeNull();
81
- });
82
- });
83
- describe('セキュリティ: 危険なパターンのブロック', () => {
84
- it('eval()パターンをブロックする', () => {
85
- const result = Expression.evaluate('eval("alert(1)")', {});
86
- expect(result).toBeNull();
87
- });
88
- it('eval()前後のスペースを含むパターンをブロックする', () => {
89
- const result = Expression.evaluate('eval ("alert(1)")', {});
90
- expect(result).toBeNull();
91
- });
92
- it('arguments[n]パターンをブロックする', () => {
93
- const result = Expression.evaluate('arguments[0]', {});
94
- expect(result).toBeNull();
95
- });
96
- it('arguments.xxxパターンをブロックする', () => {
97
- const result = Expression.evaluate('arguments.length', {});
98
- expect(result).toBeNull();
99
- });
100
- });
101
- describe('セキュリティ: 禁止識別子の上書き', () => {
102
- it('windowへのアクセスはundefinedになる', () => {
103
- const result = Expression.evaluate('window', {});
104
- expect(result).toBeUndefined();
105
- });
106
- it('window.locationへのアクセスはエラーになる', () => {
107
- const result = Expression.evaluate('window.location', {});
108
- // windowがundefinedなのでTypeError
109
- expect(result).toBeNull();
110
- });
111
- it('documentへのアクセスはundefinedになる', () => {
112
- const result = Expression.evaluate('document', {});
113
- expect(result).toBeUndefined();
114
- });
115
- it('globalThisへのアクセスはundefinedになる', () => {
116
- const result = Expression.evaluate('globalThis', {});
117
- expect(result).toBeUndefined();
118
- });
119
- it('fetchへのアクセスはundefinedになる', () => {
120
- const result = Expression.evaluate('fetch', {});
121
- expect(result).toBeUndefined();
122
- });
123
- it('Functionへのアクセスはundefinedになる', () => {
124
- const result = Expression.evaluate('Function', {});
125
- expect(result).toBeUndefined();
126
- });
127
- it('setTimeoutへのアクセスはundefinedになる', () => {
128
- const result = Expression.evaluate('setTimeout', {});
129
- expect(result).toBeUndefined();
130
- });
131
- it('setIntervalへのアクセスはundefinedになる', () => {
132
- const result = Expression.evaluate('setInterval', {});
133
- expect(result).toBeUndefined();
134
- });
135
- it('constructorへのアクセスはundefinedになる', () => {
136
- const result = Expression.evaluate('constructor', {});
137
- expect(result).toBeUndefined();
138
- });
139
- it('__proto__へのアクセスはundefinedになる', () => {
140
- const result = Expression.evaluate('__proto__', {});
141
- expect(result).toBeUndefined();
142
- });
143
- it('prototypeへのアクセスはundefinedになる', () => {
144
- const result = Expression.evaluate('prototype', {});
145
- expect(result).toBeUndefined();
146
- });
147
- it('localStorageへのアクセスはundefinedになる', () => {
148
- const result = Expression.evaluate('localStorage', {});
149
- expect(result).toBeUndefined();
150
- });
151
- it('sessionStorageへのアクセスはundefinedになる', () => {
152
- const result = Expression.evaluate('sessionStorage', {});
153
- expect(result).toBeUndefined();
154
- });
155
- it('alertへのアクセスはundefinedになる', () => {
156
- const result = Expression.evaluate('alert', {});
157
- expect(result).toBeUndefined();
158
- });
159
- it('confirmへのアクセスはundefinedになる', () => {
160
- const result = Expression.evaluate('confirm', {});
161
- expect(result).toBeUndefined();
162
- });
163
- it('promptへのアクセスはundefinedになる', () => {
164
- const result = Expression.evaluate('prompt', {});
165
- expect(result).toBeUndefined();
166
- });
167
- });
168
- describe('セキュリティ: バインド値内の禁止識別子チェック', () => {
169
- it('バインド値にwindowキーが含まれるとnullを返す', () => {
170
- const result = Expression.evaluate('x', { x: 1, window: {} });
171
- expect(result).toBeNull();
172
- });
173
- it('バインド値にdocumentキーが含まれるとnullを返す', () => {
174
- const result = Expression.evaluate('x', { x: 1, document: {} });
175
- expect(result).toBeNull();
176
- });
177
- it('バインド値にevalキーが含まれるとnullを返す', () => {
178
- const result = Expression.evaluate('x', { x: 1, eval: () => { } });
179
- expect(result).toBeNull();
180
- });
181
- it('バインド値にargumentsキーが含まれるとnullを返す', () => {
182
- const result = Expression.evaluate('x', { x: 1, arguments: [] });
183
- expect(result).toBeNull();
184
- });
185
- it('バインド値に constructor キーが含まれると null を返す', () => {
186
- const result = Expression.evaluate('x', { x: 1, constructor: {} });
187
- expect(result).toBeNull();
188
- });
189
- it('バインド値に location キーが含まれる場合は明示バインド値を利用できる', () => {
190
- const result = Expression.evaluate('location', {
191
- location: '東京都千代田区',
192
- });
193
- expect(result).toBe('東京都千代田区');
194
- });
195
- it('ネストした plain object の window キーは許可される', () => {
196
- const result = Expression.evaluate('ctx.window.label', {
197
- ctx: { window: { label: 'safe-window' } },
198
- });
199
- expect(result).toBe('safe-window');
200
- });
201
- it('ネストした window 実体は拒否する', () => {
202
- const result = Expression.evaluate('ctx.window.location.href', {
203
- ctx: { window },
204
- });
205
- expect(result).toBeNull();
206
- });
207
- it('ネストした document 実体は拒否する', () => {
208
- const result = Expression.evaluate('ctx.document.title', {
209
- ctx: { document },
210
- });
211
- expect(result).toBeNull();
212
- });
213
- it('禁止キーがないバインド値は正常に評価される', () => {
214
- const result = Expression.evaluate('user.name', {
215
- user: { name: '田中', age: 30 },
216
- });
217
- expect(result).toBe('田中');
218
- });
219
- it('ネストしたオブジェクトの location プロパティは評価できる', () => {
220
- const result = Expression.evaluate('project.location', {
221
- project: { location: '東京都千代田区' },
222
- });
223
- expect(result).toBe('東京都千代田区');
224
- });
225
- it('配列要素内の location プロパティも評価できる', () => {
226
- const result = Expression.evaluate('content[0].location', {
227
- content: [{ location: '東京都港区' }],
228
- });
229
- expect(result).toBe('東京都港区');
230
- });
231
- });
232
- describe('エラーハンドリング', () => {
233
- it('未定義変数へのアクセスはundefinedを返す', () => {
234
- const result = Expression.evaluate('undefinedVar', {});
235
- expect(result).toBeUndefined();
236
- });
237
- it('未宣言識別子を含む optional chaining 式でもフォールバックまで評価できる', () => {
238
- const result = Expression.evaluate('((detail?.results || []).find(row => row.id === (dialog?.id || id))?.contractorName) || dialog?.contractorName || contractorName || "顧客詳細"', {});
239
- expect(result).toBe('顧客詳細');
240
- });
241
- it('構文エラーのある式はnullを返す', () => {
242
- const result = Expression.evaluate('x +', { x: 1 });
243
- expect(result).toBeNull();
244
- });
245
- it('nullのプロパティアクセスはnullを返す', () => {
246
- const result = Expression.evaluate('obj.prop', { obj: null });
247
- expect(result).toBeNull();
248
- });
249
- it('undefinedのプロパティアクセスはnullを返す', () => {
250
- const result = Expression.evaluate('obj.prop', { obj: undefined });
251
- expect(result).toBeNull();
252
- });
253
- });
254
- describe('キャッシング', () => {
255
- it('同じ式を複数回評価しても正しい結果を返す', () => {
256
- const result1 = Expression.evaluate('x + y', { x: 1, y: 2 });
257
- const result2 = Expression.evaluate('x + y', { x: 10, y: 20 });
258
- expect(result1).toBe(3);
259
- expect(result2).toBe(30);
260
- });
261
- it('異なるバインドキーの式は別々にキャッシュされる', () => {
262
- const result1 = Expression.evaluate('x', { x: 1 });
263
- const result2 = Expression.evaluate('x', { x: 2, y: 3 });
264
- expect(result1).toBe(1);
265
- expect(result2).toBe(2);
266
- });
267
- it('キーの順序が異なっても同じキャッシュを使用する', () => {
268
- const result1 = Expression.evaluate('a + b', { a: 1, b: 2 });
269
- const result2 = Expression.evaluate('a + b', { b: 20, a: 10 });
270
- expect(result1).toBe(3);
271
- expect(result2).toBe(30);
272
- });
273
- it('同じバインド参照を同一 microtask 内で再評価すると危険値チェックを再帰し直さない', () => {
274
- const containsForbiddenBindingValuesSpy = vi.spyOn(Expression, 'containsForbiddenBindingValues');
275
- const bindedValues = {
276
- user: {
277
- profile: {
278
- name: '田中',
279
- },
280
- },
281
- items: [
282
- { id: 1, label: 'A' },
283
- { id: 2, label: 'B' },
284
- ],
285
- };
286
- expect(Expression.evaluate('user.profile.name', bindedValues)).toBe('田中');
287
- const firstCallCount = containsForbiddenBindingValuesSpy.mock.calls.length;
288
- expect(Expression.evaluate('items[1].label', bindedValues)).toBe('B');
289
- const secondCallCount = containsForbiddenBindingValuesSpy.mock.calls.length - firstCallCount;
290
- expect(firstCallCount).toBeGreaterThan(1);
291
- expect(secondCallCount).toBe(1);
292
- containsForbiddenBindingValuesSpy.mockRestore();
293
- });
294
- it('危険値チェックのキャッシュは次の microtask で破棄される', async () => {
295
- const bindedValues = {
296
- ctx: { label: 'safe' },
297
- };
298
- expect(Expression.evaluate('ctx.label', bindedValues)).toBe('safe');
299
- await Promise.resolve();
300
- bindedValues.ctx = { document };
301
- expect(Expression.evaluate('ctx.document.title', bindedValues)).toBeNull();
302
- });
303
- });
304
- describe('禁止識別子のフィルタリング', () => {
305
- it('location は明示バインドされていない場合は引き続きブロックされる', () => {
306
- const result = Expression.evaluate('location', {});
307
- expect(result).toBeUndefined();
308
- });
309
- });
310
- describe('複雑な式', () => {
311
- it('複数の演算子を含む式を評価できる', () => {
312
- const result = Expression.evaluate('(a + b) * c - d / e', {
313
- a: 1,
314
- b: 2,
315
- c: 3,
316
- d: 4,
317
- e: 2,
318
- });
319
- expect(result).toBe(7);
320
- });
321
- it('論理演算子を含む式を評価できる', () => {
322
- const result = Expression.evaluate('a && b || c', {
323
- a: true,
324
- b: false,
325
- c: true,
326
- });
327
- expect(result).toBe(true);
328
- });
329
- it('比較演算子を含む式を評価できる', () => {
330
- const result = Expression.evaluate('a > b && c <= d', {
331
- a: 5,
332
- b: 3,
333
- c: 2,
334
- d: 2,
335
- });
336
- expect(result).toBe(true);
337
- });
338
- it('テンプレートリテラル風の文字列連結を評価できる', () => {
339
- const result = Expression.evaluate('"Hello, " + name + "!"', {
340
- name: 'World',
341
- });
342
- expect(result).toBe('Hello, World!');
343
- });
344
- it('配列メソッドを使用できる', () => {
345
- const result = Expression.evaluate('items.length', {
346
- items: [1, 2, 3],
347
- });
348
- expect(result).toBe(3);
349
- });
350
- it('Date インスタンスのメソッド呼び出しを評価できる', () => {
351
- const when = new Date('2024-01-02T03:04:05.000Z');
352
- const result = Expression.evaluate('when.getTime()', { when });
353
- expect(result).toBe(when.getTime());
354
- });
355
- it('Map インスタンスのメソッド呼び出しを評価できる', () => {
356
- const result = Expression.evaluate('mapping.get("name")', {
357
- mapping: new Map([['name', '田中']]),
358
- });
359
- expect(result).toBe('田中');
360
- });
361
- it('配列のmapメソッドを使用できる', () => {
362
- const result = Expression.evaluate('items.map(x => x * 2)', {
363
- items: [1, 2, 3],
364
- });
365
- expect(result).toEqual([2, 4, 6]);
366
- });
367
- it('配列のfilterメソッドを使用できる', () => {
368
- const result = Expression.evaluate('items.filter(x => x > 1)', {
369
- items: [1, 2, 3],
370
- });
371
- expect(result).toEqual([2, 3]);
372
- });
373
- it('配列メソッド内でオブジェクトリテラルを返せる', () => {
374
- const result = Expression.evaluate('items.map(item => ({value: item, even: item % 2 === 0}))', {
375
- items: [1, 2, 3],
376
- });
377
- expect(result).toEqual([
378
- { value: 1, even: false },
379
- { value: 2, even: true },
380
- { value: 3, even: false },
381
- ]);
382
- });
383
- it('ページネーション向けの reduce + オブジェクトリテラル連鎖を評価できる', () => {
384
- const result = Expression.evaluate('Array(totalPages).fill(0).map((_, i) => i).filter(i => i === 0 || i === totalPages - 1 || (i >= number - 2 && i <= number + 2)).reduce((acc, page) => acc.length > 0 && page > acc[acc.length - 1] + 1 ? [...acc, -acc.length, page] : [...acc, page], []).map(page => ({page, active: page >= 0 && page === number, ellipsis: page < 0}))', {
385
- totalPages: 10,
386
- number: 4,
387
- });
388
- expect(result).toEqual([
389
- { page: 0, active: false, ellipsis: false },
390
- { page: -1, active: false, ellipsis: true },
391
- { page: 2, active: false, ellipsis: false },
392
- { page: 3, active: false, ellipsis: false },
393
- { page: 4, active: true, ellipsis: false },
394
- { page: 5, active: false, ellipsis: false },
395
- { page: 6, active: false, ellipsis: false },
396
- { page: -7, active: false, ellipsis: true },
397
- { page: 9, active: false, ellipsis: false },
398
- ]);
399
- });
400
- it('スプレッド構文を含むメソッド呼び出しを評価できる', () => {
401
- const result = Expression.evaluate('Math.max(...scores)', {
402
- scores: [10, 3, 7],
403
- });
404
- expect(result).toBe(10);
405
- });
406
- it('配列メソッド内のアロー関数とプロパティアクセスを評価できる', () => {
407
- const result = Expression.evaluate('items.filter(item => item.active).length', {
408
- items: [
409
- { active: true },
410
- { active: false },
411
- { active: true },
412
- ],
413
- });
414
- expect(result).toBe(2);
415
- });
416
- });
417
- describe('セキュリティ: constructor 経由の脱出防止', () => {
418
- it('object literal の識別子キーで constructor をブロックする', () => {
419
- const result = Expression.evaluate('({constructor: 1})', {});
420
- expect(result).toBeNull();
421
- });
422
- it('object literal の文字列キーで __proto__ をブロックする', () => {
423
- const result = Expression.evaluate('({"__proto__": {polluted: true}})', {});
424
- expect(result).toBeNull();
425
- });
426
- it('object literal の Unicode escape 文字列キーで __proto__ をブロックする', () => {
427
- const result = Expression.evaluate('({"\\u{5f}\\u{5f}proto__": {polluted: true}})', {});
428
- expect(result).toBeNull();
429
- });
430
- it('object literal の computed key をブロックする', () => {
431
- const result = Expression.evaluate('({["prototype"]: 1})', {});
432
- expect(result).toBeNull();
433
- });
434
- it('object literal の getter で __proto__ をブロックする', () => {
435
- const result = Expression.evaluate('({get __proto__(){x}})', {});
436
- expect(result).toBeNull();
437
- });
438
- it('object literal の setter で constructor をブロックする', () => {
439
- const result = Expression.evaluate('({set constructor(v){x}})', {});
440
- expect(result).toBeNull();
441
- });
442
- it('object literal の getter で prototype をブロックする', () => {
443
- const result = Expression.evaluate('({get prototype(){x}})', {});
444
- expect(result).toBeNull();
445
- });
446
- it('object literal の async method で constructor をブロックする', () => {
447
- const result = Expression.evaluate('({async constructor(){}})', {});
448
- expect(result).toBeNull();
449
- });
450
- it('ドット記法の constructor 呼び出しをブロックする', () => {
451
- const result = Expression.evaluate('[].filter.constructor(\'return this\')()', {});
452
- expect(result).toBeNull();
453
- });
454
- it('ブラケット記法の constructor 呼び出しをブロックする', () => {
455
- const result = Expression.evaluate('[]["filter"]["constructor"]("return this")()', {});
456
- expect(result).toBeNull();
457
- });
458
- it('危険なプロトタイプアクセスをブロックする', () => {
459
- expect(Expression.evaluate('user.constructor', { user: { name: '田中' } })).toBeNull();
460
- expect(Expression.evaluate('user["__proto__"]', { user: { name: '田中' } })).toBeNull();
461
- });
462
- it('変数経由の computed constructor アクセスをブロックする', () => {
463
- const result = Expression.evaluate('items.filter[key]("return this")()', {
464
- items: [1, 2, 3],
465
- key: 'constructor',
466
- });
467
- expect(result).toBeNull();
468
- });
469
- it('Reflect 経由の constructor 取得をブロックする', () => {
470
- const result = Expression.evaluate('Reflect.get(Reflect.get([], "filter"), "constructor")("return 7")()', {});
471
- expect(result).toBeNull();
472
- });
473
- it('関数戻り値経由の computed constructor アクセスをブロックする', () => {
474
- const result = Expression.evaluate('fn()[key]("return 7")()', {
475
- fn: () => ({ constructor: Function }),
476
- key: 'constructor',
477
- });
478
- expect(result).toBeNull();
479
- });
480
- });
481
- });
482
- //# sourceMappingURL=expression.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression.test.js","sourceRoot":"","sources":["../../tests/expression.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fetch-and-procedure-scenarios.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-and-procedure-scenarios.test.d.ts","sourceRoot":"","sources":["../../tests/fetch-and-procedure-scenarios.test.ts"],"names":[],"mappings":""}