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,98 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview
4
- * data-if による表示(haori:show)を契機に data-load-* が発火することを検証する
5
- * 統合テストです。ボタンなどネイティブの load イベントが発生しない要素でも、
6
- * 非表示→表示への遷移時に data-load-* 手続きが1回だけ実行されることを確認します。
7
- */
8
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
9
- import Core from '../src/core';
10
- import Procedure from '../src/procedure';
11
- import { waitForCondition, waitForDomSettled } from './helpers/async';
12
- describe('data-load-* の data-if 表示連動発火', () => {
13
- let container;
14
- beforeEach(() => {
15
- vi.restoreAllMocks();
16
- container = document.createElement('div');
17
- document.body.appendChild(container);
18
- });
19
- afterEach(() => {
20
- vi.restoreAllMocks();
21
- document.body.removeChild(container);
22
- });
23
- it('非表示の data-if 要素が表示に遷移したとき data-load-* が発火する', async () => {
24
- // #result は data-load-* の出力先。#state の items が読み込まれて
25
- // ボタンが表示されたタイミングで data-load-* が発火し、#result へ反映される。
26
- container.innerHTML = `
27
- <div id="result" data-bind='{"picked":null}'></div>
28
- <div id="state" data-bind='{"items":[]}'>
29
- <button
30
- id="auto"
31
- type="button"
32
- data-if="items.length > 0"
33
- data-load-data="picked={{items[0]?.id}}"
34
- data-load-bind="#result"
35
- >自動選択</button>
36
- </div>
37
- `;
38
- const state = container.querySelector('#state');
39
- const result = container.querySelector('#result');
40
- const button = container.querySelector('#auto');
41
- await Core.scan(container);
42
- await waitForDomSettled();
43
- // items が空なので data-if は false。要素は非表示で data-load-* は未発火。
44
- expect(button.hasAttribute('data-if-false')).toBe(true);
45
- expect(JSON.parse(result.getAttribute('data-bind')).picked).toBe(null);
46
- // 後から items を投入する(reactive な data-bind 更新)。
47
- await Core.setBindingData(state, { items: [{ id: 1 }, { id: 2 }] });
48
- // 非表示→表示への遷移で data-load-* が発火し、#result へ picked が反映される。
49
- await waitForCondition(() => {
50
- const bind = result.getAttribute('data-bind');
51
- return bind !== null && JSON.parse(bind).picked != null;
52
- }, { description: 'data-load-* が #result へ picked を反映する' });
53
- expect(button.hasAttribute('data-if-false')).toBe(false);
54
- const bind = JSON.parse(result.getAttribute('data-bind'));
55
- expect(String(bind.picked)).toBe('1');
56
- });
57
- it('表示状態のまま再評価しても data-load-* を再発火しない', async () => {
58
- container.innerHTML = `
59
- <div id="result2" data-bind='{"count":0}'></div>
60
- <div id="state2" data-bind='{"items":[{"id":1}],"tick":0}'>
61
- <button
62
- id="auto2"
63
- type="button"
64
- data-if="items.length > 0"
65
- data-load-data="hit=1"
66
- data-load-bind="#result2"
67
- >x</button>
68
- </div>
69
- `;
70
- const state = container.querySelector('#state2');
71
- await Core.scan(container);
72
- await waitForDomSettled();
73
- const runSpy = vi.spyOn(Procedure.prototype, 'run');
74
- // 表示状態を保ったまま無関係な値だけを更新して再評価を促す。
75
- await Core.setBindingData(state, { items: [{ id: 1 }], tick: 1 });
76
- await waitForDomSettled();
77
- await Core.setBindingData(state, { items: [{ id: 1 }], tick: 2 });
78
- await waitForDomSettled();
79
- // すでに表示済み(遷移なし)のため load Procedure は再発火しない。
80
- expect(runSpy).not.toHaveBeenCalled();
81
- });
82
- it('data-load-* を持たない data-if 要素では load Procedure を起動しない', async () => {
83
- container.innerHTML = `
84
- <div id="state3" data-bind='{"flag":false}'>
85
- <span id="plain" data-if="flag">表示</span>
86
- </div>
87
- `;
88
- const state = container.querySelector('#state3');
89
- await Core.scan(container);
90
- await waitForDomSettled();
91
- const runSpy = vi.spyOn(Procedure.prototype, 'run');
92
- await Core.setBindingData(state, { flag: true });
93
- await waitForDomSettled();
94
- // data-load-* を持たないため load 種別の Procedure は1件も起動されない。
95
- expect(runSpy).not.toHaveBeenCalled();
96
- });
97
- });
98
- //# sourceMappingURL=data-load-on-show.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-load-on-show.test.js","sourceRoot":"","sources":["../../tests/data-load-on-show.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=derive-each-render-wait.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derive-each-render-wait.test.d.ts","sourceRoot":"","sources":["../../tests/derive-each-render-wait.test.ts"],"names":[],"mappings":""}
@@ -1,90 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview
4
- * 報告調査: data-derive → data-each 連鎖のテーブル行描画が、外部テスト
5
- * (waitForRenders 待機)で 0 行になり得るかを検証する。
6
- * - Q1: 明示的オブジェクトリテラル {key: val} が式評価を通過するか。
7
- * - Q2: Haori.waitForRenders() が data-derive → data-each の連鎖全体を待機するか。
8
- * - Q3: 0 件時の data-each-done の付与(0 件完了と n 件完了の区別可否)。
9
- */
10
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
11
- import Core from '../src/core';
12
- import Expression from '../src/expression';
13
- import Haori from '../src/haori';
14
- import { waitForCondition, waitForDomSettled } from './helpers/async';
15
- describe('data-derive → data-each 連鎖の描画待機(報告調査)', () => {
16
- let container;
17
- beforeEach(() => {
18
- vi.restoreAllMocks();
19
- container = document.createElement('div');
20
- document.body.appendChild(container);
21
- });
22
- afterEach(() => {
23
- vi.restoreAllMocks();
24
- document.body.removeChild(container);
25
- });
26
- it('Q1: 明示的オブジェクトリテラル {key: val} を含む式が評価される', () => {
27
- const result = Expression.evaluate('(items ?? []).map(x => ({id: x.id, label: x.name}))', { items: [{ id: 1, name: 'A' }, { id: 2, name: 'B' }] });
28
- expect(result).toEqual([
29
- { id: 1, label: 'A' },
30
- { id: 2, label: 'B' },
31
- ]);
32
- });
33
- it('Q1: トップレベルのオブジェクトリテラルも評価される', () => {
34
- const result = Expression.evaluate('{a: 1, b: total + 1}', { total: 9 });
35
- expect(result).toEqual({ a: 1, b: 10 });
36
- });
37
- it('Q2: waitForRenders() で derive→each 連鎖の行描画まで待機できる', async () => {
38
- // demandRows を data-derive で配列に整形し、data-each で行描画する連鎖。
39
- container.innerHTML = `
40
- <div id="state" data-bind='{"response":{"content":[]}}'>
41
- <div data-derive="(response?.content ?? []).map(r => ({id: r.id, label: r.label}))" data-derive-name="demandRows">
42
- <table><tbody data-each="demandRows" data-each-key="id" data-each-arg="row">
43
- <tr><td class="cell">{{row.label}}</td></tr>
44
- </tbody></table>
45
- </div>
46
- </div>`;
47
- const state = container.querySelector('#state');
48
- await Core.scan(container);
49
- await waitForDomSettled();
50
- // bind-arg 相当: API レスポンスを state にバインド(Promise を待たず外部テスト相当)。
51
- void Core.setBindingData(state, {
52
- response: {
53
- content: [
54
- { id: 1, label: '行1' },
55
- { id: 2, label: '行2' },
56
- { id: 3, label: '行3' },
57
- ],
58
- },
59
- });
60
- await Haori.waitForRenders();
61
- const cells = Array.from(container.querySelectorAll('.cell'));
62
- expect(cells.map(c => c.textContent)).toEqual(['行1', '行2', '行3']);
63
- });
64
- it('Q3: 0 件の derive→each でも data-each-done が付与される', async () => {
65
- container.innerHTML = `
66
- <div id="state3" data-bind='{"response":{"content":[{"id":1,"label":"x"}]}}'>
67
- <div data-derive="(response?.content ?? []).map(r => ({id: r.id, label: r.label}))" data-derive-name="rows3">
68
- <table><tbody id="tb3" data-each="rows3" data-each-key="id" data-each-arg="row">
69
- <tr><td class="cell3">{{row.label}}</td></tr>
70
- </tbody></table>
71
- </div>
72
- </div>`;
73
- const state = container.querySelector('#state3');
74
- const tbody = container.querySelector('#tb3');
75
- await Core.scan(container);
76
- await waitForCondition(() => tbody.hasAttribute('data-each-done'), {
77
- description: '初期 1 件で each-done',
78
- maxAttempts: 60,
79
- delayMs: 50,
80
- });
81
- expect(container.querySelectorAll('.cell3').length).toBe(1);
82
- // 0 件に更新 → each-done は一旦外れ、0 件描画完了後に再付与されるはず。
83
- void Core.setBindingData(state, { response: { content: [] } });
84
- await Haori.waitForRenders();
85
- expect(container.querySelectorAll('.cell3').length).toBe(0);
86
- // 0 件でも完了マーカーは付く(n 件完了と同じマーカー=件数では区別不可)。
87
- expect(tbody.hasAttribute('data-each-done')).toBe(true);
88
- });
89
- });
90
- //# sourceMappingURL=derive-each-render-wait.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"derive-each-render-wait.test.js","sourceRoot":"","sources":["../../tests/derive-each-render-wait.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dev.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.test.d.ts","sourceRoot":"","sources":["../../tests/dev.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import Dev from '../src/dev';
3
- describe('Dev', () => {
4
- beforeEach(() => {
5
- // 各テスト前に開発モードを確実に無効化
6
- Dev.disable();
7
- });
8
- afterEach(() => {
9
- // 各テスト後にも状態をクリーンアップ
10
- Dev.disable();
11
- });
12
- describe('isEnabled', () => {
13
- it('初期状態では無効になっている', () => {
14
- expect(Dev.isEnabled()).toBe(false);
15
- });
16
- it('有効化後は true を返す', () => {
17
- expect(Dev.isEnabled()).toBe(false); // 初期状態確認
18
- Dev.enable();
19
- expect(Dev.isEnabled()).toBe(true);
20
- });
21
- });
22
- describe('enable', () => {
23
- it('開発モードを有効化する', () => {
24
- expect(Dev.isEnabled()).toBe(false); // 初期状態確認
25
- Dev.enable();
26
- expect(Dev.isEnabled()).toBe(true);
27
- });
28
- });
29
- describe('disable', () => {
30
- it('開発モードを無効化する', () => {
31
- Dev.enable();
32
- expect(Dev.isEnabled()).toBe(true); // 有効化確認
33
- Dev.disable();
34
- expect(Dev.isEnabled()).toBe(false);
35
- });
36
- });
37
- describe('set', () => {
38
- it('true を渡すと有効化される', () => {
39
- expect(Dev.isEnabled()).toBe(false); // 初期状態確認
40
- Dev.set(true);
41
- expect(Dev.isEnabled()).toBe(true);
42
- });
43
- it('false を渡すと無効化される', () => {
44
- Dev.enable(); // 一度有効化
45
- expect(Dev.isEnabled()).toBe(true); // 有効化確認
46
- Dev.set(false);
47
- expect(Dev.isEnabled()).toBe(false);
48
- });
49
- });
50
- });
51
- //# sourceMappingURL=dev.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.test.js","sourceRoot":"","sources":["../../tests/dev.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,QAAQ,CAAC;AACnE,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,UAAU,CAAC,GAAG,EAAE;QACd,qBAAqB;QACrB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,oBAAoB;QACpB,GAAG,CAAC,OAAO,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9C,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9C,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YACrB,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YAC5C,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ;YACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YAC5C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=each-update-event.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"each-update-event.test.d.ts","sourceRoot":"","sources":["../../tests/each-update-event.test.ts"],"names":[],"mappings":""}
@@ -1,83 +0,0 @@
1
- /* @vitest-environment jsdom */
2
- /**
3
- * @fileoverview
4
- * haori:eachupdate イベントが「data-each の全行の描画完了後」に発火することを保証する
5
- * 回帰テストです。イベント発火時点で全行が DOM に存在し、{{...}} が補間済みであることを
6
- * 確認します。外部からの描画完了検知の契約として固定します。
7
- */
8
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
9
- import Core from '../src/core';
10
- import { waitForCondition, waitForDomSettled } from './helpers/async';
11
- describe('haori:eachupdate 発火タイミングの保証', () => {
12
- let container;
13
- beforeEach(() => {
14
- vi.restoreAllMocks();
15
- container = document.createElement('div');
16
- document.body.appendChild(container);
17
- });
18
- afterEach(() => {
19
- vi.restoreAllMocks();
20
- document.body.removeChild(container);
21
- });
22
- it('eachupdate 発火時点で全行が DOM に存在し補間済みである(25行)', async () => {
23
- const rows = Array.from({ length: 25 }, (_, i) => ({ id: i, label: `M${i}` }));
24
- container.innerHTML = `
25
- <div id="state" data-bind='{"rows":[]}'>
26
- <table><tbody>
27
- <tr data-each="rows" data-each-key="id" data-each-arg="row">
28
- <td class="lbl">{{row.label}}</td>
29
- <td><input name="value" type="number"></td>
30
- </tr>
31
- </tbody></table>
32
- </div>`;
33
- const state = container.querySelector('#state');
34
- const tbody = container.querySelector('tbody');
35
- // eachupdate 発火時点の DOM スナップショットを記録する。
36
- const snapshots = [];
37
- tbody.addEventListener('haori:eachupdate', (e) => {
38
- const detail = e.detail;
39
- const labels = Array.from(container.querySelectorAll('.lbl'));
40
- snapshots.push({
41
- total: detail.total,
42
- rendered: labels.length,
43
- allFilled: labels.every(el => el.textContent !== '' && !el.textContent.includes('{{')),
44
- });
45
- });
46
- await Core.scan(container);
47
- await waitForDomSettled();
48
- await Core.setBindingData(state, { rows });
49
- await waitForCondition(() => container.querySelectorAll('.lbl').length === 25, { description: '25 行描画', maxAttempts: 40, delayMs: 50 });
50
- // total=25 の eachupdate が発火し、その時点で 25 行すべてが補間済みであること。
51
- const completed = snapshots.find(s => s.total === 25);
52
- expect(completed, 'total=25 の eachupdate が発火していない').toBeTruthy();
53
- expect(completed.rendered).toBe(25);
54
- expect(completed.allFilled).toBe(true);
55
- });
56
- it('eachupdate の detail は added / removed / order / total を提供する', async () => {
57
- container.innerHTML = `
58
- <div id="state2" data-bind='{"rows":[{"id":1},{"id":2}]}'>
59
- <table><tbody>
60
- <tr data-each="rows" data-each-key="id" data-each-arg="r" class="row"><td>{{r.id}}</td></tr>
61
- </tbody></table>
62
- </div>`;
63
- const state = container.querySelector('#state2');
64
- const tbody = container.querySelector('tbody');
65
- await Core.scan(container);
66
- await waitForDomSettled();
67
- const events = [];
68
- tbody.addEventListener('haori:eachupdate', (e) => {
69
- events.push(e.detail);
70
- });
71
- // 1 を削除し 3, 4 を追加する。
72
- await Core.setBindingData(state, { rows: [{ id: 2 }, { id: 3 }, { id: 4 }] });
73
- await waitForCondition(() => events.length > 0, {
74
- description: 'eachupdate 発火',
75
- });
76
- const detail = events[events.length - 1];
77
- expect(detail.total).toBe(3);
78
- expect(detail.order).toEqual(['2', '3', '4']);
79
- expect(detail.added).toEqual(['3', '4']);
80
- expect(detail.removed).toEqual(['1']);
81
- });
82
- });
83
- //# sourceMappingURL=each-update-event.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"each-update-event.test.js","sourceRoot":"","sources":["../../tests/each-update-event.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=each_arg.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"each_arg.test.d.ts","sourceRoot":"","sources":["../../tests/each_arg.test.ts"],"names":[],"mappings":""}
@@ -1,41 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import Core from '../src/core';
3
- import Queue from '../src/queue';
4
- import Fragment from '../src/fragment';
5
- describe('data-each-arg の適用(プリミティブ配列のバインディング)', () => {
6
- const markMounted = (f) => {
7
- f.setMounted(true);
8
- f.getChildElementFragments().forEach(child => markMounted(child));
9
- };
10
- it('プリミティブ配列 + each-arg で {{item}} が展開される', async () => {
11
- const container = document.createElement('div');
12
- document.body.appendChild(container);
13
- const each = document.createElement('div');
14
- each.setAttribute('data-each', '["A","B"]');
15
- each.setAttribute('data-each-arg', 'item');
16
- const child = document.createElement('span');
17
- child.textContent = '{{item}}';
18
- each.appendChild(child);
19
- container.appendChild(each);
20
- const frag = Fragment.get(each);
21
- markMounted(frag);
22
- await Core.evaluateAll(frag);
23
- // キューに積まれたDOM更新が完了するまで待機
24
- await Queue.wait();
25
- // 念のためポーリングで最終状態を確認
26
- for (let i = 0; i < 10; i++) {
27
- const count = each.querySelectorAll('span').length;
28
- if (count === 2) {
29
- break;
30
- }
31
- await new Promise(resolve => setTimeout(resolve, 5));
32
- }
33
- const spans = Array.from(each.querySelectorAll('span'));
34
- // 2つのクローン(テンプレート以外)が存在し、テキストが A, B に評価される
35
- expect(spans.length).toBe(2);
36
- expect(spans[0].textContent).toBe('A');
37
- expect(spans[1].textContent).toBe('B');
38
- container.remove();
39
- });
40
- });
41
- //# sourceMappingURL=each_arg.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"each_arg.test.js","sourceRoot":"","sources":["../../tests/each_arg.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,QAA2B,MAAM,iBAAiB,CAAC;AAE1D,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;QACzC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAoB,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,CAAC;QAElB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC7B,yBAAyB;QACzB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,oBAAoB;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YACnD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CACT,CAAC;QACvB,0CAA0C;QAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvC,SAAS,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=env.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../tests/env.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- import Dev from '../src/dev';
2
- import Env from '../src/env';
3
- import Haori from '../src/haori';
4
- describe('環境から開発モードを検出します', () => {
5
- beforeEach(() => {
6
- Dev.set(false);
7
- Env.setRuntime('embedded');
8
- document.querySelectorAll('script').forEach(script => script.remove());
9
- Object.defineProperty(window, 'location', {
10
- value: new URL('http://test.com'),
11
- writable: true,
12
- });
13
- });
14
- it('runtime の既定値は embedded です', () => {
15
- expect(Env.runtime).toBe('embedded');
16
- });
17
- it('runtime を demo に設定できます', () => {
18
- Env.setRuntime('demo');
19
- expect(Env.runtime).toBe('demo');
20
- });
21
- it('Haori.runtime は Env.runtime を参照します', () => {
22
- Env.setRuntime('demo');
23
- expect(Haori.runtime).toBe('demo');
24
- });
25
- it('Haori.setRuntime で Env.runtime を更新できます', () => {
26
- Haori.setRuntime('demo');
27
- expect(Env.runtime).toBe('demo');
28
- });
29
- it('data-runtime="demo"属性がある場合', () => {
30
- mockScriptWithAttribute('data-runtime', 'haori.js', 'demo');
31
- Env.detect();
32
- expect(Env.runtime).toBe('demo');
33
- });
34
- it('無効な data-runtime 属性は embedded に正規化される', () => {
35
- Env.setRuntime('demo');
36
- mockScriptWithAttribute('data-runtime', 'haori.js', 'invalid');
37
- Env.detect();
38
- expect(Env.runtime).toBe('embedded');
39
- });
40
- /**
41
- * scriptタグを追加します。
42
- *
43
- * @param attr scriptタグに設定する属性名
44
- * @param src scriptタグのsrc属性
45
- * @param value 属性の値(省略可能)
46
- */
47
- function mockScriptWithAttribute(attr, src, value) {
48
- const script = document.createElement('script');
49
- if (value !== undefined) {
50
- script.setAttribute(attr, value);
51
- }
52
- else {
53
- script.setAttribute(attr, '');
54
- }
55
- script.src = src;
56
- document.body.appendChild(script);
57
- }
58
- /**
59
- * ホスト名をモックします。
60
- *
61
- * @param hostname モックするホスト名
62
- */
63
- function mockHostname(hostname) {
64
- Object.defineProperty(window, 'location', {
65
- value: { hostname: hostname, href: `http://${hostname}` },
66
- writable: true,
67
- });
68
- }
69
- it('data-dev属性がある場合', () => {
70
- mockScriptWithAttribute('data-dev', 'haori.js');
71
- Env.detect();
72
- expect(Dev.isEnabled()).toBe(true);
73
- });
74
- it('data-prefix="hor"属性がある場合', () => {
75
- const script = document.createElement('script');
76
- script.setAttribute('data-prefix', 'hor');
77
- script.setAttribute('hor-dev', '');
78
- script.src = 'haori.js';
79
- document.body.appendChild(script);
80
- Env.detect();
81
- expect(Dev.isEnabled()).toBe(true);
82
- });
83
- it('hor-dev属性がある場合', () => {
84
- mockScriptWithAttribute('hor-dev', 'haori.js');
85
- Env.detect();
86
- expect(Dev.isEnabled()).toBe(true);
87
- });
88
- it('localhostの場合', () => {
89
- mockHostname('localhost');
90
- Env.detect();
91
- expect(Dev.isEnabled()).toBe(true);
92
- });
93
- it('127.0.0.1の場合', () => {
94
- mockHostname('127.0.0.1');
95
- Env.detect();
96
- expect(Dev.isEnabled()).toBe(true);
97
- });
98
- it('::1の場合', () => {
99
- mockHostname('::1');
100
- Env.detect();
101
- expect(Dev.isEnabled()).toBe(true);
102
- });
103
- it('*.localの場合', () => {
104
- mockHostname('test.local');
105
- Env.detect();
106
- expect(Dev.isEnabled()).toBe(true);
107
- });
108
- it('*.localhostの場合', () => {
109
- mockHostname('test.localhost');
110
- Env.detect();
111
- expect(Dev.isEnabled()).toBe(true);
112
- });
113
- it('ローカルでないホスト名の場合', () => {
114
- mockHostname('test.app');
115
- Env.detect();
116
- expect(Dev.isEnabled()).toBe(false);
117
- });
118
- it('無関係なスクリプトの場合', () => {
119
- mockScriptWithAttribute('data-dev', 'other.js');
120
- Env.detect();
121
- expect(Dev.isEnabled()).toBe(false);
122
- });
123
- });
124
- //# sourceMappingURL=env.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../tests/env.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=evaluation-profile.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluation-profile.test.d.ts","sourceRoot":"","sources":["../../tests/evaluation-profile.test.ts"],"names":[],"mappings":""}