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 +0,0 @@
1
- {"version":3,"file":"bindcomplete-and-scope.test.js","sourceRoot":"","sources":["../../tests/bindcomplete-and-scope.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=builtins.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtins.test.d.ts","sourceRoot":"","sources":["../../tests/builtins.test.ts"],"names":[],"mappings":""}
@@ -1,152 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview 組み込みヘルパー(haori.date / number / range / pages)の単体テストと、
4
- * 式評価エンジンへの予約名前空間 `haori` 注入の統合テストです。
5
- */
6
- import { describe, it, expect } from 'vitest';
7
- import Builtins, { date, number, range, pages } from '../src/builtins';
8
- import Expression from '../src/expression';
9
- import Haori from '../src/haori';
10
- describe('Builtins', () => {
11
- describe('date()', () => {
12
- it('既定フォーマット yyyy/MM/dd HH:mm で整形する', () => {
13
- // タイムゾーン依存を避けるため、オフセットなし ISO(ローカル時刻扱い)を使う
14
- expect(date('2024-01-05T09:05:03')).toBe('2024/01/05 09:05');
15
- });
16
- it('カスタムフォーマットのトークンを置換する', () => {
17
- expect(date('2024-01-05T09:05:03', 'yy-M-d H:mm:ss')).toBe('24-1-5 9:05:03');
18
- });
19
- it('Date オブジェクトとエポックミリ秒を受け付ける', () => {
20
- const local = new Date(2024, 0, 5, 9, 5, 3);
21
- expect(date(local, 'yyyy/MM/dd')).toBe('2024/01/05');
22
- expect(date(local.getTime(), 'yyyy/MM/dd')).toBe('2024/01/05');
23
- });
24
- it('空・null・不正な日時は空文字を返す', () => {
25
- expect(date('')).toBe('');
26
- expect(date(null)).toBe('');
27
- expect(date(undefined)).toBe('');
28
- expect(date('not-a-date')).toBe('');
29
- });
30
- });
31
- describe('number()', () => {
32
- it('桁区切りを付ける', () => {
33
- expect(number(1234567)).toBe('1,234,567');
34
- });
35
- it('小数桁を固定する', () => {
36
- expect(number(1234.5, 2)).toBe('1,234.50');
37
- });
38
- it('数値文字列を受け付け、指定桁で丸める', () => {
39
- expect(number('1234.5', 0)).toBe('1,235');
40
- });
41
- it('負数を整形する', () => {
42
- expect(number(-1234.5, 1)).toBe('-1,234.5');
43
- });
44
- it('非数値・null・空文字は空文字を返す', () => {
45
- expect(number('abc')).toBe('');
46
- expect(number(null)).toBe('');
47
- expect(number('')).toBe('');
48
- expect(number(Number.NaN)).toBe('');
49
- });
50
- });
51
- describe('range()', () => {
52
- it('range(n) は 0..n-1 を返す', () => {
53
- expect(range(5)).toEqual([0, 1, 2, 3, 4]);
54
- });
55
- it('range(start, end) は終端排他', () => {
56
- expect(range(2, 5)).toEqual([2, 3, 4]);
57
- });
58
- it('step を指定できる', () => {
59
- expect(range(1, 10, 2)).toEqual([1, 3, 5, 7, 9]);
60
- });
61
- it('負の step で降順にできる', () => {
62
- expect(range(5, 0, -1)).toEqual([5, 4, 3, 2, 1]);
63
- });
64
- it('空になるケース・step 0 は空配列', () => {
65
- expect(range(0)).toEqual([]);
66
- expect(range(3, 3)).toEqual([]);
67
- expect(range(0, 5, 0)).toEqual([]);
68
- });
69
- });
70
- describe('pages()', () => {
71
- it('総ページが少なければ省略記号なしで全ページを返す', () => {
72
- const result = pages(3, 0);
73
- expect(result.map(item => item.label)).toEqual([1, 2, 3]);
74
- expect(result.map(item => item.page)).toEqual([0, 1, 2]);
75
- expect(result[0].active).toBe(true);
76
- expect(result.some(item => item.ellipsis)).toBe(false);
77
- });
78
- it('現在ページが 0 始まり、表示ラベルは +1 になる', () => {
79
- const result = pages(5, 2);
80
- const active = result.find(item => item.active);
81
- expect(active?.page).toBe(2);
82
- expect(active?.label).toBe(3);
83
- });
84
- it('中央で両側に省略記号を挿入する', () => {
85
- const result = pages(20, 9, { window: 2 });
86
- // 先頭ページ・末尾ページ・現在周辺・省略記号2つ
87
- expect(result[0].page).toBe(0);
88
- expect(result[0].label).toBe(1);
89
- expect(result[result.length - 1].page).toBe(19);
90
- expect(result[result.length - 1].label).toBe(20);
91
- expect(result.filter(item => item.ellipsis).length).toBe(2);
92
- const active = result.find(item => item.active);
93
- expect(active?.page).toBe(9);
94
- expect(active?.label).toBe(10);
95
- });
96
- it('current は範囲内にクランプされる', () => {
97
- const result = pages(5, 99);
98
- const active = result.find(item => item.active);
99
- expect(active?.page).toBe(4);
100
- });
101
- it('totalPages が 0 以下なら空配列', () => {
102
- expect(pages(0, 0)).toEqual([]);
103
- expect(pages(-3, 0)).toEqual([]);
104
- });
105
- it('省略記号要素は page=null, label=… を持つ', () => {
106
- const ellipsis = pages(20, 9, { window: 1 }).find(item => item.ellipsis);
107
- expect(ellipsis?.page).toBeNull();
108
- expect(ellipsis?.label).toBe('…');
109
- });
110
- });
111
- describe('Haori 公開 API との共用', () => {
112
- it('Haori.date / number / range / pages が同じ実装を返す', () => {
113
- expect(Haori.date('2024-01-05T09:05:03')).toBe('2024/01/05 09:05');
114
- expect(Haori.number(1234567)).toBe('1,234,567');
115
- expect(Haori.range(3)).toEqual([0, 1, 2]);
116
- expect(Haori.pages(3, 0).length).toBe(3);
117
- });
118
- });
119
- describe('式評価への注入(予約名 haori)', () => {
120
- it('式から haori.date を呼べる', () => {
121
- const result = Expression.evaluate("haori.date(d, 'yyyy/MM/dd')", {
122
- d: '2024-01-05T09:05:03',
123
- });
124
- expect(result).toBe('2024/01/05');
125
- });
126
- it('式から haori.range を呼べる', () => {
127
- expect(Expression.evaluate('haori.range(3)', {})).toEqual([0, 1, 2]);
128
- });
129
- it('式から haori.pages を呼べる(data-each 用途)', () => {
130
- const result = Expression.evaluate('haori.pages(3, n)', { n: 0 });
131
- expect(result.length).toBe(3);
132
- expect(result[0].label).toBe(1);
133
- });
134
- it('haori はユーザーのバインド値より優先される(上書き不可)', () => {
135
- const result = Expression.evaluate('haori.range(2)', {
136
- haori: { range: () => 'overridden' },
137
- });
138
- expect(result).toEqual([0, 1]);
139
- });
140
- it('プロパティアクセス foo.haori は注入の影響を受けない', () => {
141
- const result = Expression.evaluate('foo.haori', { foo: { haori: 42 } });
142
- expect(result).toBe(42);
143
- });
144
- it('haori を参照しない式は従来どおり評価される', () => {
145
- expect(Expression.evaluate('x + 1', { x: 1 })).toBe(2);
146
- });
147
- it('Builtins は凍結されている', () => {
148
- expect(Object.isFrozen(Builtins)).toBe(true);
149
- });
150
- });
151
- });
152
- //# sourceMappingURL=builtins.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builtins.test.js","sourceRoot":"","sources":["../../tests/builtins.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=click-attributes.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"click-attributes.test.d.ts","sourceRoot":"","sources":["../../tests/click-attributes.test.ts"],"names":[],"mappings":""}
@@ -1,113 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview
4
- * クリック系属性に関する統合テストです。
5
- * ドキュメントに記載されている `data-click-confirm` と
6
- * `data-click-validate` の動作を検証します。
7
- */
8
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
9
- import Core from '../src/core';
10
- import Haori from '../src/haori';
11
- import EventDispatcher from '../src/event_dispatcher';
12
- import Procedure from '../src/procedure';
13
- describe('Click attributes integration', () => {
14
- let container;
15
- let dispatcher;
16
- beforeEach(async () => {
17
- // テスト用のコンテナを用意し、クリック委譲だけを有効にする
18
- container = document.createElement('div');
19
- document.body.appendChild(container);
20
- vi.restoreAllMocks();
21
- dispatcher = new EventDispatcher(document);
22
- dispatcher.start();
23
- });
24
- afterEach(() => {
25
- // 後片付け
26
- dispatcher.stop();
27
- document.body.removeChild(container);
28
- vi.restoreAllMocks();
29
- });
30
- it('data-click-confirm でキャンセルされたら実行されない', async () => {
31
- // 準備: data-click-confirm と data-click-fetch を持つボタン(DOM API で作成して行を短くする)
32
- const wrapper = document.createElement('div');
33
- const buttonEl = document.createElement('button');
34
- buttonEl.id = 'btn';
35
- buttonEl.textContent = '実行';
36
- const confirmMsg = '本当に実行しますか?';
37
- buttonEl.setAttribute('data-click-confirm', confirmMsg);
38
- buttonEl.setAttribute('data-click-fetch', '/api/do');
39
- wrapper.appendChild(buttonEl);
40
- container.appendChild(wrapper);
41
- // Haori.confirm をモックして false を返す
42
- const confirmSpy = vi.spyOn(Haori, 'confirm').mockResolvedValue(false);
43
- // global.fetch をスパイ(呼ばれないことを検証するため) — new Response を都度返す
44
- const fetchSpy = vi
45
- .spyOn(globalThis, 'fetch')
46
- .mockImplementation(() => {
47
- return Promise.resolve(new Response('{}', { headers: { 'Content-Type': 'application/json' } }));
48
- });
49
- await Core.scan(container);
50
- await new Promise(resolve => setTimeout(resolve, 50));
51
- const btn = container.querySelector('#btn');
52
- btn.click();
53
- await new Promise(resolve => setTimeout(resolve, 100));
54
- // confirm が呼ばれ、fetch は呼ばれない
55
- expect(confirmSpy).toHaveBeenCalled();
56
- expect(fetchSpy).not.toHaveBeenCalled();
57
- });
58
- it('data-click-* のない input は click Procedure を開始しない', async () => {
59
- const input = document.createElement('input');
60
- input.id = 'plain-input';
61
- input.type = 'text';
62
- container.appendChild(input);
63
- const runSpy = vi.spyOn(Procedure.prototype, 'run').mockResolvedValue(undefined);
64
- await Core.scan(container);
65
- await new Promise(resolve => setTimeout(resolve, 50));
66
- input.dispatchEvent(new Event('click', { bubbles: true, cancelable: true }));
67
- expect(input.hasAttribute('disabled')).toBe(false);
68
- await new Promise(resolve => setTimeout(resolve, 50));
69
- expect(runSpy).not.toHaveBeenCalled();
70
- });
71
- it('data-click-validate でバリデーション失敗時にフォーカスされる', async () => {
72
- // 準備: 必須フィールドを持つフォームと送信ボタン(DOM API で作成)
73
- const form = document.createElement('form');
74
- form.id = 'f';
75
- const input = document.createElement('input');
76
- input.id = 'inp';
77
- input.name = 'email';
78
- input.type = 'email';
79
- input.required = true;
80
- input.value = '';
81
- const submitBtn = document.createElement('button');
82
- submitBtn.id = 'submit';
83
- submitBtn.textContent = '送信';
84
- submitBtn.setAttribute('data-click-validate', '');
85
- const formSel = '#f';
86
- submitBtn.setAttribute('data-click-form', formSel);
87
- submitBtn.setAttribute('data-click-fetch', '/api/send');
88
- form.append(input, submitBtn);
89
- container.appendChild(form);
90
- // reportValidity を偽で返すようにして、focus の呼び出しを確認する
91
- const reportSpy = vi
92
- .spyOn(input, 'reportValidity')
93
- .mockReturnValue(false);
94
- const focusSpy = vi
95
- .spyOn(input, 'focus')
96
- .mockImplementation(() => { });
97
- const fetchSpy = vi
98
- .spyOn(globalThis, 'fetch')
99
- .mockImplementation(() => {
100
- return Promise.resolve(new Response('{}', { headers: { 'Content-Type': 'application/json' } }));
101
- });
102
- await Core.scan(container);
103
- await new Promise(resolve => setTimeout(resolve, 50));
104
- const submit = container.querySelector('#submit');
105
- submit.click();
106
- await new Promise(resolve => setTimeout(resolve, 100));
107
- // バリデーションが実行され、フォーカスが呼ばれ、fetch は呼ばれない
108
- expect(reportSpy).toHaveBeenCalled();
109
- expect(focusSpy).toHaveBeenCalled();
110
- expect(fetchSpy).not.toHaveBeenCalled();
111
- });
112
- });
113
- //# sourceMappingURL=click-attributes.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"click-attributes.test.js","sourceRoot":"","sources":["../../tests/click-attributes.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=click-no-disabled.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"click-no-disabled.test.d.ts","sourceRoot":"","sources":["../../tests/click-no-disabled.test.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview
4
- * 依頼4: data-click-no-disabled の検証。
5
- * 指定時は click 処理中にボタンへ native `disabled` を付与しない(Bootstrap など他の
6
- * click ハンドラ・CSS との共存のため)。内部の多重実行ガードは維持されることを確認する。
7
- *
8
- * 注意: click 手続きの実行ロックはごく短時間(同期フレーム)しか保持されないため、
9
- * disabled の有無は btn.click() 直後の同期チェックで検証する。
10
- */
11
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
12
- import Core from '../src/core';
13
- import EventDispatcher from '../src/event_dispatcher';
14
- import { waitForDomSettled } from './helpers/async';
15
- describe('data-click-no-disabled', () => {
16
- let container;
17
- let dispatcher;
18
- beforeEach(() => {
19
- vi.restoreAllMocks();
20
- container = document.createElement('div');
21
- document.body.appendChild(container);
22
- dispatcher = new EventDispatcher(document);
23
- dispatcher.start();
24
- vi.spyOn(globalThis, 'fetch').mockImplementation(() => Promise.resolve(new Response('{}', { headers: { 'Content-Type': 'application/json' } })));
25
- });
26
- afterEach(() => {
27
- dispatcher.stop();
28
- vi.restoreAllMocks();
29
- document.body.removeChild(container);
30
- });
31
- it('未指定時はクリック直後にボタンへ disabled が付与される', async () => {
32
- container.innerHTML = `
33
- <div id="t" data-bind='{}'></div>
34
- <button id="b" data-click-fetch="/x" data-click-bind="#t">実行</button>`;
35
- await Core.scan(container);
36
- await waitForDomSettled();
37
- const btn = container.querySelector('#b');
38
- btn.click();
39
- // クリック直後(同期)にロックと disabled が付与される。
40
- expect(btn.hasAttribute('disabled')).toBe(true);
41
- expect(btn.hasAttribute('data-haori-click-lock')).toBe(true);
42
- await waitForDomSettled();
43
- // 完了後は解除される。
44
- expect(btn.hasAttribute('disabled')).toBe(false);
45
- expect(btn.hasAttribute('data-haori-click-lock')).toBe(false);
46
- });
47
- it('指定時はクリック直後も disabled を付与しないが、ロックは効く', async () => {
48
- container.innerHTML = `
49
- <div id="t2" data-bind='{}'></div>
50
- <button id="b2" data-click-no-disabled data-click-fetch="/x" data-click-bind="#t2">実行</button>`;
51
- await Core.scan(container);
52
- await waitForDomSettled();
53
- const btn = container.querySelector('#b2');
54
- btn.click();
55
- // disabled は付与されないが、再入防止のロックマーカーは付く。
56
- expect(btn.hasAttribute('disabled')).toBe(false);
57
- expect(btn.hasAttribute('data-haori-click-lock')).toBe(true);
58
- // ロック中の同期再クリックは内部ガードで多重実行されない。
59
- btn.click();
60
- await waitForDomSettled();
61
- expect(globalThis.fetch).toHaveBeenCalledTimes(1);
62
- // 完了後はロックマーカーが解除され、disabled は一度も付かない。
63
- expect(btn.hasAttribute('data-haori-click-lock')).toBe(false);
64
- expect(btn.hasAttribute('disabled')).toBe(false);
65
- });
66
- });
67
- //# sourceMappingURL=click-no-disabled.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"click-no-disabled.test.js","sourceRoot":"","sources":["../../tests/click-no-disabled.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @fileoverview Coreクラスのテスト
3
- */
4
- export {};
5
- //# sourceMappingURL=core.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.test.d.ts","sourceRoot":"","sources":["../../tests/core.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}