haori 0.1.0

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +157 -0
  3. package/README.md +158 -0
  4. package/dist/haori.cjs.js +13 -0
  5. package/dist/haori.cjs.js.map +1 -0
  6. package/dist/haori.es.js +2929 -0
  7. package/dist/haori.es.js.map +1 -0
  8. package/dist/haori.iife.js +13 -0
  9. package/dist/haori.iife.js.map +1 -0
  10. package/dist/index.d.ts +824 -0
  11. package/dist/src/core.d.ts +144 -0
  12. package/dist/src/core.d.ts.map +1 -0
  13. package/dist/src/core.js +605 -0
  14. package/dist/src/core.js.map +1 -0
  15. package/dist/src/dev.d.ts +35 -0
  16. package/dist/src/dev.d.ts.map +1 -0
  17. package/dist/src/dev.js +44 -0
  18. package/dist/src/dev.js.map +1 -0
  19. package/dist/src/env.d.ts +25 -0
  20. package/dist/src/env.d.ts.map +1 -0
  21. package/dist/src/env.js +64 -0
  22. package/dist/src/env.js.map +1 -0
  23. package/dist/src/event.d.ts +144 -0
  24. package/dist/src/event.d.ts.map +1 -0
  25. package/dist/src/event.js +221 -0
  26. package/dist/src/event.js.map +1 -0
  27. package/dist/src/event_dispatcher.d.ts +50 -0
  28. package/dist/src/event_dispatcher.d.ts.map +1 -0
  29. package/dist/src/event_dispatcher.js +99 -0
  30. package/dist/src/event_dispatcher.js.map +1 -0
  31. package/dist/src/expression.d.ts +39 -0
  32. package/dist/src/expression.d.ts.map +1 -0
  33. package/dist/src/expression.js +148 -0
  34. package/dist/src/expression.js.map +1 -0
  35. package/dist/src/form.d.ts +113 -0
  36. package/dist/src/form.d.ts.map +1 -0
  37. package/dist/src/form.js +361 -0
  38. package/dist/src/form.js.map +1 -0
  39. package/dist/src/fragment.d.ts +427 -0
  40. package/dist/src/fragment.d.ts.map +1 -0
  41. package/dist/src/fragment.js +1168 -0
  42. package/dist/src/fragment.js.map +1 -0
  43. package/dist/src/haori.d.ts +54 -0
  44. package/dist/src/haori.d.ts.map +1 -0
  45. package/dist/src/haori.js +120 -0
  46. package/dist/src/haori.js.map +1 -0
  47. package/dist/src/import.d.ts +19 -0
  48. package/dist/src/import.d.ts.map +1 -0
  49. package/dist/src/import.js +64 -0
  50. package/dist/src/import.js.map +1 -0
  51. package/dist/src/index.d.ts +17 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/index.js +21 -0
  54. package/dist/src/index.js.map +1 -0
  55. package/dist/src/log.d.ts +32 -0
  56. package/dist/src/log.d.ts.map +1 -0
  57. package/dist/src/log.js +43 -0
  58. package/dist/src/log.js.map +1 -0
  59. package/dist/src/observer.d.ts +17 -0
  60. package/dist/src/observer.d.ts.map +1 -0
  61. package/dist/src/observer.js +102 -0
  62. package/dist/src/observer.js.map +1 -0
  63. package/dist/src/procedure.d.ts +203 -0
  64. package/dist/src/procedure.d.ts.map +1 -0
  65. package/dist/src/procedure.js +1040 -0
  66. package/dist/src/procedure.js.map +1 -0
  67. package/dist/src/queue.d.ts +28 -0
  68. package/dist/src/queue.d.ts.map +1 -0
  69. package/dist/src/queue.js +150 -0
  70. package/dist/src/queue.js.map +1 -0
  71. package/dist/src/url.d.ts +14 -0
  72. package/dist/src/url.d.ts.map +1 -0
  73. package/dist/src/url.js +22 -0
  74. package/dist/src/url.js.map +1 -0
  75. package/dist/tests/click-attributes.test.d.ts +2 -0
  76. package/dist/tests/click-attributes.test.d.ts.map +1 -0
  77. package/dist/tests/click-attributes.test.js +95 -0
  78. package/dist/tests/click-attributes.test.js.map +1 -0
  79. package/dist/tests/core.test.d.ts +5 -0
  80. package/dist/tests/core.test.d.ts.map +1 -0
  81. package/dist/tests/core.test.js +158 -0
  82. package/dist/tests/core.test.js.map +1 -0
  83. package/dist/tests/data-each-browserlike.test.d.ts +2 -0
  84. package/dist/tests/data-each-browserlike.test.d.ts.map +1 -0
  85. package/dist/tests/data-each-browserlike.test.js +48 -0
  86. package/dist/tests/data-each-browserlike.test.js.map +1 -0
  87. package/dist/tests/data-each-fragment-debug.test.d.ts +2 -0
  88. package/dist/tests/data-each-fragment-debug.test.d.ts.map +1 -0
  89. package/dist/tests/data-each-fragment-debug.test.js +119 -0
  90. package/dist/tests/data-each-fragment-debug.test.js.map +1 -0
  91. package/dist/tests/data-each-table.test.d.ts +2 -0
  92. package/dist/tests/data-each-table.test.d.ts.map +1 -0
  93. package/dist/tests/data-each-table.test.js +63 -0
  94. package/dist/tests/data-each-table.test.js.map +1 -0
  95. package/dist/tests/dev.test.d.ts +2 -0
  96. package/dist/tests/dev.test.d.ts.map +1 -0
  97. package/dist/tests/dev.test.js +51 -0
  98. package/dist/tests/dev.test.js.map +1 -0
  99. package/dist/tests/each_arg.test.d.ts +2 -0
  100. package/dist/tests/each_arg.test.d.ts.map +1 -0
  101. package/dist/tests/each_arg.test.js +41 -0
  102. package/dist/tests/each_arg.test.js.map +1 -0
  103. package/dist/tests/env.test.d.ts +2 -0
  104. package/dist/tests/env.test.d.ts.map +1 -0
  105. package/dist/tests/env.test.js +96 -0
  106. package/dist/tests/env.test.js.map +1 -0
  107. package/dist/tests/event.test.d.ts +2 -0
  108. package/dist/tests/event.test.d.ts.map +1 -0
  109. package/dist/tests/event.test.js +287 -0
  110. package/dist/tests/event.test.js.map +1 -0
  111. package/dist/tests/expression.test.d.ts +2 -0
  112. package/dist/tests/expression.test.d.ts.map +1 -0
  113. package/dist/tests/expression.test.js +281 -0
  114. package/dist/tests/expression.test.js.map +1 -0
  115. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts +2 -0
  116. package/dist/tests/fetch-and-procedure-scenarios.test.d.ts.map +1 -0
  117. package/dist/tests/fetch-and-procedure-scenarios.test.js +133 -0
  118. package/dist/tests/fetch-and-procedure-scenarios.test.js.map +1 -0
  119. package/dist/tests/form.test.d.ts +2 -0
  120. package/dist/tests/form.test.d.ts.map +1 -0
  121. package/dist/tests/form.test.js +607 -0
  122. package/dist/tests/form.test.js.map +1 -0
  123. package/dist/tests/fragment.test.d.ts +2 -0
  124. package/dist/tests/fragment.test.d.ts.map +1 -0
  125. package/dist/tests/fragment.test.js +164 -0
  126. package/dist/tests/fragment.test.js.map +1 -0
  127. package/dist/tests/import.test.d.ts +2 -0
  128. package/dist/tests/import.test.d.ts.map +1 -0
  129. package/dist/tests/import.test.js +148 -0
  130. package/dist/tests/import.test.js.map +1 -0
  131. package/dist/tests/log.test.d.ts +2 -0
  132. package/dist/tests/log.test.d.ts.map +1 -0
  133. package/dist/tests/log.test.js +58 -0
  134. package/dist/tests/log.test.js.map +1 -0
  135. package/dist/tests/procedure-action-operations.test.d.ts +2 -0
  136. package/dist/tests/procedure-action-operations.test.d.ts.map +1 -0
  137. package/dist/tests/procedure-action-operations.test.js +148 -0
  138. package/dist/tests/procedure-action-operations.test.js.map +1 -0
  139. package/dist/tests/procedure-fetch-options.test.d.ts +2 -0
  140. package/dist/tests/procedure-fetch-options.test.d.ts.map +1 -0
  141. package/dist/tests/procedure-fetch-options.test.js +131 -0
  142. package/dist/tests/procedure-fetch-options.test.js.map +1 -0
  143. package/dist/tests/procedure.test.d.ts +2 -0
  144. package/dist/tests/procedure.test.d.ts.map +1 -0
  145. package/dist/tests/procedure.test.js +136 -0
  146. package/dist/tests/procedure.test.js.map +1 -0
  147. package/dist/tests/procedure_events.test.d.ts +7 -0
  148. package/dist/tests/procedure_events.test.d.ts.map +1 -0
  149. package/dist/tests/procedure_events.test.js +96 -0
  150. package/dist/tests/procedure_events.test.js.map +1 -0
  151. package/dist/tests/reset_each.test.d.ts +2 -0
  152. package/dist/tests/reset_each.test.d.ts.map +1 -0
  153. package/dist/tests/reset_each.test.js +215 -0
  154. package/dist/tests/reset_each.test.js.map +1 -0
  155. package/dist/tests/row-move.test.d.ts +2 -0
  156. package/dist/tests/row-move.test.d.ts.map +1 -0
  157. package/dist/tests/row-move.test.js +197 -0
  158. package/dist/tests/row-move.test.js.map +1 -0
  159. package/dist/tests/row-operations.test.d.ts +2 -0
  160. package/dist/tests/row-operations.test.d.ts.map +1 -0
  161. package/dist/tests/row-operations.test.js +238 -0
  162. package/dist/tests/row-operations.test.js.map +1 -0
  163. package/dist/tests/url.test.d.ts +2 -0
  164. package/dist/tests/url.test.d.ts.map +1 -0
  165. package/dist/tests/url.test.js +150 -0
  166. package/dist/tests/url.test.js.map +1 -0
  167. package/dist/vite.config.d.ts +3 -0
  168. package/dist/vite.config.d.ts.map +1 -0
  169. package/dist/vite.config.js +28 -0
  170. package/dist/vite.config.js.map +1 -0
  171. package/dist/vitest.config.d.ts +3 -0
  172. package/dist/vitest.config.d.ts.map +1 -0
  173. package/dist/vitest.config.js +19 -0
  174. package/dist/vitest.config.js.map +1 -0
  175. package/package.json +68 -0
@@ -0,0 +1,133 @@
1
+ /* @vitest-environment jsdom */
2
+ /**
3
+ * @fileoverview
4
+ * fetch / Procedure に関する代表的なシナリオの統合テストです。
5
+ * - `data-fetch-bind-params` による特定フィールドのみのバインド
6
+ * - `afterCallback` によるレスポンス上書きと bind の動作
7
+ * - dialog / toast の呼び出し
8
+ * - POST の場合に JSON ボディが作成されること
9
+ */
10
+ import { describe, it, beforeEach, afterEach, expect, vi } from 'vitest';
11
+ import Core from '../src/core';
12
+ // Procedure/Fragment を直接参照せず属性駆動でテストを行うため、
13
+ // 未使用のインポートは削除しています。
14
+ describe('Fetch and Procedure scenarios', () => {
15
+ beforeEach(async () => {
16
+ // 各テスト前にモック状態をリセット
17
+ vi.restoreAllMocks();
18
+ // Observer を読み込んで初期化を確実に行う(MutationObserver / EventDispatcher を開始)
19
+ await import('../src/observer');
20
+ });
21
+ afterEach(() => {
22
+ // 各テスト後の後片付け
23
+ vi.restoreAllMocks();
24
+ });
25
+ it('data-fetch-bind-params binds specified fields only', async () => {
26
+ // attribute ベースで要素を作成し、Observer/MutationObserver 経由で自動実行されることを検証
27
+ const container = document.createElement('div');
28
+ document.body.appendChild(container);
29
+ const target = document.createElement('div');
30
+ target.id = 'target';
31
+ const source = document.createElement('div');
32
+ // 非イベント fetch 属性と bind 指定(属性だけで動作する)
33
+ source.setAttribute('data-fetch', 'http://example.test/api');
34
+ source.setAttribute('data-fetch-bind', '#target');
35
+ source.setAttribute('data-fetch-bind-params', 'name&email');
36
+ container.append(target, source);
37
+ // mock fetch: サーバーは name, email, age を返す
38
+ vi.spyOn(globalThis, 'fetch').mockImplementation(() => {
39
+ return Promise.resolve(new Response(JSON.stringify({
40
+ name: 'Taro',
41
+ email: 'taro@example.com',
42
+ age: 40,
43
+ }), { headers: { 'Content-Type': 'application/json' } }));
44
+ });
45
+ // spy Core.setBindingData
46
+ const sbd = vi
47
+ .spyOn(Core, 'setBindingData')
48
+ .mockResolvedValue(undefined);
49
+ // MutationObserver と EventDispatcher が非同期で処理するため少し待つ
50
+ await new Promise(resolve => setTimeout(resolve, 50));
51
+ expect(sbd).toHaveBeenCalled();
52
+ const calls = sbd.mock.calls;
53
+ const last = calls[calls.length - 1];
54
+ expect(last[0].id).toBe('target');
55
+ const bound = last[1];
56
+ expect(bound).toHaveProperty('name');
57
+ expect(bound).toHaveProperty('email');
58
+ expect(bound).not.toHaveProperty('age');
59
+ container.remove();
60
+ });
61
+ it('afterCallback overrides response (click)', async () => {
62
+ // data-click-* 属性を使用して、クリックイベント経由で Procedure が実行されるパスを検証
63
+ const container = document.createElement('div');
64
+ document.body.appendChild(container);
65
+ const target = document.createElement('div');
66
+ target.id = 'target2';
67
+ const button = document.createElement('button');
68
+ // event ベースで fetch を実行し、after-run スクリプトで Response を上書き
69
+ button.setAttribute('data-click-fetch', 'http://example.test/after');
70
+ button.setAttribute('data-click-bind', '#target2');
71
+ // after-run に Response を返すスクリプトを記述
72
+ const afterRunScript = 'return {response: new Response(JSON.stringify({"overridden":true}), ' +
73
+ '{headers:{"Content-Type":"application/json"}})}';
74
+ button.setAttribute('data-click-after-run', afterRunScript);
75
+ container.append(target, button);
76
+ // mock fetch returns initial payload (will be overridden by after-run)
77
+ vi.spyOn(globalThis, 'fetch').mockImplementation(() => {
78
+ return Promise.resolve(new Response(JSON.stringify({ x: 1 }), {
79
+ headers: { 'Content-Type': 'application/json' },
80
+ }));
81
+ });
82
+ const sbd = vi
83
+ .spyOn(Core, 'setBindingData')
84
+ .mockResolvedValue(undefined);
85
+ // click を発火すると EventDispatcher が Procedure を呼び出す
86
+ button.click();
87
+ await new Promise(resolve => setTimeout(resolve, 50));
88
+ expect(sbd).toHaveBeenCalled();
89
+ const calls = sbd.mock.calls;
90
+ const last = calls[calls.length - 1];
91
+ const bound = last[1];
92
+ expect(bound).toHaveProperty('overridden');
93
+ container.remove();
94
+ });
95
+ it('dialog and toast called on click', async () => {
96
+ const Haori = await import('../src/haori');
97
+ const dialogSpy = vi
98
+ .spyOn(Haori.default, 'dialog')
99
+ .mockResolvedValue(undefined);
100
+ const toastSpy = vi
101
+ .spyOn(Haori.default, 'toast')
102
+ .mockResolvedValue(undefined);
103
+ const btn = document.createElement('button');
104
+ btn.setAttribute('data-click-dialog', 'Done');
105
+ btn.setAttribute('data-click-toast', 'Saved');
106
+ document.body.appendChild(btn);
107
+ btn.click();
108
+ await new Promise(resolve => setTimeout(resolve, 50));
109
+ expect(dialogSpy).toHaveBeenCalledWith('Done');
110
+ expect(toastSpy).toHaveBeenCalledWith('Saved', 'info');
111
+ btn.remove();
112
+ });
113
+ it('POST sends JSON body when payload exists', async () => {
114
+ const container = document.createElement('div');
115
+ document.body.appendChild(container);
116
+ const source = document.createElement('div');
117
+ source.setAttribute('data-fetch', 'http://api.test/submit');
118
+ source.setAttribute('data-fetch-method', 'POST');
119
+ // fetch-data は URLSearchParams 形式でも動作する
120
+ source.setAttribute('data-fetch-data', 'a=1&b=two');
121
+ container.appendChild(source);
122
+ const fetchSpy = vi
123
+ .spyOn(globalThis, 'fetch')
124
+ .mockImplementation(() => {
125
+ return Promise.resolve(new Response('{}', { headers: { 'Content-Type': 'application/json' } }));
126
+ });
127
+ await new Promise(resolve => setTimeout(resolve, 50));
128
+ // fetch が呼び出されたことを検証(body の扱いは実行タイミングに依存するため寛容に)
129
+ expect(fetchSpy).toHaveBeenCalled();
130
+ container.remove();
131
+ });
132
+ });
133
+ //# sourceMappingURL=fetch-and-procedure-scenarios.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-and-procedure-scenarios.test.js","sourceRoot":"","sources":["../../tests/fetch-and-procedure-scenarios.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=form.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.test.d.ts","sourceRoot":"","sources":["../../tests/form.test.ts"],"names":[],"mappings":""}