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.
- package/README.ja.md +1 -1
- package/README.md +1 -1
- package/dist/haori.cjs.js +10 -10
- package/dist/haori.es.js +191 -165
- package/dist/haori.iife.js +10 -10
- package/dist/index.d.ts +1 -1
- package/package.json +11 -3
- package/dist/haori.cjs.js.map +0 -1
- package/dist/haori.es.js.map +0 -1
- package/dist/haori.iife.js.map +0 -1
- package/dist/package.json +0 -70
- package/dist/src/builtins.d.ts +0 -100
- package/dist/src/builtins.d.ts.map +0 -1
- package/dist/src/builtins.js +0 -194
- package/dist/src/builtins.js.map +0 -1
- package/dist/src/core.d.ts +0 -505
- package/dist/src/core.d.ts.map +0 -1
- package/dist/src/core.js +0 -1817
- package/dist/src/core.js.map +0 -1
- package/dist/src/dev.d.ts +0 -35
- package/dist/src/dev.d.ts.map +0 -1
- package/dist/src/dev.js +0 -44
- package/dist/src/dev.js.map +0 -1
- package/dist/src/env.d.ts +0 -43
- package/dist/src/env.d.ts.map +0 -1
- package/dist/src/env.js +0 -108
- package/dist/src/env.js.map +0 -1
- package/dist/src/event.d.ts +0 -171
- package/dist/src/event.d.ts.map +0 -1
- package/dist/src/event.js +0 -235
- package/dist/src/event.js.map +0 -1
- package/dist/src/event_dispatcher.d.ts +0 -66
- package/dist/src/event_dispatcher.d.ts.map +0 -1
- package/dist/src/event_dispatcher.js +0 -167
- package/dist/src/event_dispatcher.js.map +0 -1
- package/dist/src/expression.d.ts +0 -260
- package/dist/src/expression.d.ts.map +0 -1
- package/dist/src/expression.js +0 -975
- package/dist/src/expression.js.map +0 -1
- package/dist/src/form.d.ts +0 -148
- package/dist/src/form.d.ts.map +0 -1
- package/dist/src/form.js +0 -428
- package/dist/src/form.js.map +0 -1
- package/dist/src/fragment.d.ts +0 -621
- package/dist/src/fragment.d.ts.map +0 -1
- package/dist/src/fragment.js +0 -1963
- package/dist/src/fragment.js.map +0 -1
- package/dist/src/haori.d.ts +0 -130
- package/dist/src/haori.d.ts.map +0 -1
- package/dist/src/haori.js +0 -215
- package/dist/src/haori.js.map +0 -1
- package/dist/src/import.d.ts +0 -19
- package/dist/src/import.d.ts.map +0 -1
- package/dist/src/import.js +0 -64
- package/dist/src/import.js.map +0 -1
- package/dist/src/index.d.ts +0 -27
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -30
- package/dist/src/index.js.map +0 -1
- package/dist/src/intersect.d.ts +0 -28
- package/dist/src/intersect.d.ts.map +0 -1
- package/dist/src/intersect.js +0 -201
- package/dist/src/intersect.js.map +0 -1
- package/dist/src/log.d.ts +0 -32
- package/dist/src/log.d.ts.map +0 -1
- package/dist/src/log.js +0 -43
- package/dist/src/log.js.map +0 -1
- package/dist/src/observer.d.ts +0 -24
- package/dist/src/observer.d.ts.map +0 -1
- package/dist/src/observer.js +0 -131
- package/dist/src/observer.js.map +0 -1
- package/dist/src/procedure.d.ts +0 -447
- package/dist/src/procedure.d.ts.map +0 -1
- package/dist/src/procedure.js +0 -1921
- package/dist/src/procedure.js.map +0 -1
- package/dist/src/queue.d.ts +0 -35
- package/dist/src/queue.d.ts.map +0 -1
- package/dist/src/queue.js +0 -202
- package/dist/src/queue.js.map +0 -1
- package/dist/src/url.d.ts +0 -14
- package/dist/src/url.d.ts.map +0 -1
- package/dist/src/url.js +0 -22
- package/dist/src/url.js.map +0 -1
- package/dist/tests/bind-arg-own-binding.test.d.ts +0 -2
- package/dist/tests/bind-arg-own-binding.test.d.ts.map +0 -1
- package/dist/tests/bind-arg-own-binding.test.js +0 -63
- package/dist/tests/bind-arg-own-binding.test.js.map +0 -1
- package/dist/tests/bindcomplete-and-scope.test.d.ts +0 -2
- package/dist/tests/bindcomplete-and-scope.test.d.ts.map +0 -1
- package/dist/tests/bindcomplete-and-scope.test.js +0 -115
- package/dist/tests/bindcomplete-and-scope.test.js.map +0 -1
- package/dist/tests/builtins.test.d.ts +0 -2
- package/dist/tests/builtins.test.d.ts.map +0 -1
- package/dist/tests/builtins.test.js +0 -152
- package/dist/tests/builtins.test.js.map +0 -1
- package/dist/tests/click-attributes.test.d.ts +0 -2
- package/dist/tests/click-attributes.test.d.ts.map +0 -1
- package/dist/tests/click-attributes.test.js +0 -113
- package/dist/tests/click-attributes.test.js.map +0 -1
- package/dist/tests/click-no-disabled.test.d.ts +0 -2
- package/dist/tests/click-no-disabled.test.d.ts.map +0 -1
- package/dist/tests/click-no-disabled.test.js +0 -67
- package/dist/tests/click-no-disabled.test.js.map +0 -1
- package/dist/tests/core.test.d.ts +0 -5
- package/dist/tests/core.test.d.ts.map +0 -1
- package/dist/tests/core.test.js +0 -1056
- package/dist/tests/core.test.js.map +0 -1
- package/dist/tests/data-bind-arg-reeval.test.d.ts +0 -2
- package/dist/tests/data-bind-arg-reeval.test.d.ts.map +0 -1
- package/dist/tests/data-bind-arg-reeval.test.js +0 -119
- package/dist/tests/data-bind-arg-reeval.test.js.map +0 -1
- package/dist/tests/data-bind-merge.test.d.ts +0 -2
- package/dist/tests/data-bind-merge.test.d.ts.map +0 -1
- package/dist/tests/data-bind-merge.test.js +0 -86
- package/dist/tests/data-bind-merge.test.js.map +0 -1
- package/dist/tests/data-click-defer.test.d.ts +0 -2
- package/dist/tests/data-click-defer.test.d.ts.map +0 -1
- package/dist/tests/data-click-defer.test.js +0 -57
- package/dist/tests/data-click-defer.test.js.map +0 -1
- package/dist/tests/data-click-run.test.d.ts +0 -5
- package/dist/tests/data-click-run.test.d.ts.map +0 -1
- package/dist/tests/data-click-run.test.js +0 -109
- package/dist/tests/data-click-run.test.js.map +0 -1
- package/dist/tests/data-derive.test.d.ts +0 -2
- package/dist/tests/data-derive.test.d.ts.map +0 -1
- package/dist/tests/data-derive.test.js +0 -999
- package/dist/tests/data-derive.test.js.map +0 -1
- package/dist/tests/data-each-browserlike.test.d.ts +0 -2
- package/dist/tests/data-each-browserlike.test.d.ts.map +0 -1
- package/dist/tests/data-each-browserlike.test.js +0 -48
- package/dist/tests/data-each-browserlike.test.js.map +0 -1
- package/dist/tests/data-each-fragment-debug.test.d.ts +0 -2
- package/dist/tests/data-each-fragment-debug.test.d.ts.map +0 -1
- package/dist/tests/data-each-fragment-debug.test.js +0 -119
- package/dist/tests/data-each-fragment-debug.test.js.map +0 -1
- package/dist/tests/data-each-table.test.d.ts +0 -2
- package/dist/tests/data-each-table.test.d.ts.map +0 -1
- package/dist/tests/data-each-table.test.js +0 -131
- package/dist/tests/data-each-table.test.js.map +0 -1
- package/dist/tests/data-each-template-recovery.test.d.ts +0 -2
- package/dist/tests/data-each-template-recovery.test.d.ts.map +0 -1
- package/dist/tests/data-each-template-recovery.test.js +0 -87
- package/dist/tests/data-each-template-recovery.test.js.map +0 -1
- package/dist/tests/data-event-prevent.test.d.ts +0 -2
- package/dist/tests/data-event-prevent.test.d.ts.map +0 -1
- package/dist/tests/data-event-prevent.test.js +0 -76
- package/dist/tests/data-event-prevent.test.js.map +0 -1
- package/dist/tests/data-fetch-form-input-binding.test.d.ts +0 -2
- package/dist/tests/data-fetch-form-input-binding.test.d.ts.map +0 -1
- package/dist/tests/data-fetch-form-input-binding.test.js +0 -202
- package/dist/tests/data-fetch-form-input-binding.test.js.map +0 -1
- package/dist/tests/data-fetch-tbody-dom.test.d.ts +0 -2
- package/dist/tests/data-fetch-tbody-dom.test.d.ts.map +0 -1
- package/dist/tests/data-fetch-tbody-dom.test.js +0 -82
- package/dist/tests/data-fetch-tbody-dom.test.js.map +0 -1
- package/dist/tests/data-form-container.test.d.ts +0 -2
- package/dist/tests/data-form-container.test.d.ts.map +0 -1
- package/dist/tests/data-form-container.test.js +0 -88
- package/dist/tests/data-form-container.test.js.map +0 -1
- package/dist/tests/data-if-dev-diagnostics.test.d.ts +0 -2
- package/dist/tests/data-if-dev-diagnostics.test.d.ts.map +0 -1
- package/dist/tests/data-if-dev-diagnostics.test.js +0 -55
- package/dist/tests/data-if-dev-diagnostics.test.js.map +0 -1
- package/dist/tests/data-if-falsy.test.d.ts +0 -2
- package/dist/tests/data-if-falsy.test.d.ts.map +0 -1
- package/dist/tests/data-if-falsy.test.js +0 -73
- package/dist/tests/data-if-falsy.test.js.map +0 -1
- package/dist/tests/data-load-on-show.test.d.ts +0 -2
- package/dist/tests/data-load-on-show.test.d.ts.map +0 -1
- package/dist/tests/data-load-on-show.test.js +0 -98
- package/dist/tests/data-load-on-show.test.js.map +0 -1
- package/dist/tests/derive-each-render-wait.test.d.ts +0 -2
- package/dist/tests/derive-each-render-wait.test.d.ts.map +0 -1
- package/dist/tests/derive-each-render-wait.test.js +0 -90
- package/dist/tests/derive-each-render-wait.test.js.map +0 -1
- package/dist/tests/dev.test.d.ts +0 -2
- package/dist/tests/dev.test.d.ts.map +0 -1
- package/dist/tests/dev.test.js +0 -51
- package/dist/tests/dev.test.js.map +0 -1
- package/dist/tests/each-update-event.test.d.ts +0 -2
- package/dist/tests/each-update-event.test.d.ts.map +0 -1
- package/dist/tests/each-update-event.test.js +0 -83
- package/dist/tests/each-update-event.test.js.map +0 -1
- package/dist/tests/each_arg.test.d.ts +0 -2
- package/dist/tests/each_arg.test.d.ts.map +0 -1
- package/dist/tests/each_arg.test.js +0 -41
- package/dist/tests/each_arg.test.js.map +0 -1
- package/dist/tests/env.test.d.ts +0 -2
- package/dist/tests/env.test.d.ts.map +0 -1
- package/dist/tests/env.test.js +0 -124
- package/dist/tests/env.test.js.map +0 -1
- package/dist/tests/evaluation-profile.test.d.ts +0 -2
- package/dist/tests/evaluation-profile.test.d.ts.map +0 -1
- package/dist/tests/evaluation-profile.test.js +0 -92
- package/dist/tests/evaluation-profile.test.js.map +0 -1
- package/dist/tests/event.test.d.ts +0 -2
- package/dist/tests/event.test.d.ts.map +0 -1
- package/dist/tests/event.test.js +0 -300
- package/dist/tests/event.test.js.map +0 -1
- package/dist/tests/expression-disallowed-keyword-hint.test.d.ts +0 -2
- package/dist/tests/expression-disallowed-keyword-hint.test.d.ts.map +0 -1
- package/dist/tests/expression-disallowed-keyword-hint.test.js +0 -45
- package/dist/tests/expression-disallowed-keyword-hint.test.js.map +0 -1
- package/dist/tests/expression-forbidden-hint.test.d.ts +0 -2
- package/dist/tests/expression-forbidden-hint.test.d.ts.map +0 -1
- package/dist/tests/expression-forbidden-hint.test.js +0 -37
- package/dist/tests/expression-forbidden-hint.test.js.map +0 -1
- package/dist/tests/expression.test.d.ts +0 -2
- package/dist/tests/expression.test.d.ts.map +0 -1
- package/dist/tests/expression.test.js +0 -482
- package/dist/tests/expression.test.js.map +0 -1
- package/dist/tests/fetch-and-procedure-scenarios.test.d.ts +0 -2
- package/dist/tests/fetch-and-procedure-scenarios.test.d.ts.map +0 -1
- package/dist/tests/fetch-and-procedure-scenarios.test.js +0 -195
- package/dist/tests/fetch-and-procedure-scenarios.test.js.map +0 -1
- package/dist/tests/form-number-type.test.d.ts +0 -2
- package/dist/tests/form-number-type.test.d.ts.map +0 -1
- package/dist/tests/form-number-type.test.js +0 -83
- package/dist/tests/form-number-type.test.js.map +0 -1
- package/dist/tests/form.test.d.ts +0 -2
- package/dist/tests/form.test.d.ts.map +0 -1
- package/dist/tests/form.test.js +0 -636
- package/dist/tests/form.test.js.map +0 -1
- package/dist/tests/fragment.test.d.ts +0 -2
- package/dist/tests/fragment.test.d.ts.map +0 -1
- package/dist/tests/fragment.test.js +0 -284
- package/dist/tests/fragment.test.js.map +0 -1
- package/dist/tests/haori.test.d.ts +0 -2
- package/dist/tests/haori.test.d.ts.map +0 -1
- package/dist/tests/haori.test.js +0 -149
- package/dist/tests/haori.test.js.map +0 -1
- package/dist/tests/helpers/async.d.ts +0 -20
- package/dist/tests/helpers/async.d.ts.map +0 -1
- package/dist/tests/helpers/async.js +0 -35
- package/dist/tests/helpers/async.js.map +0 -1
- package/dist/tests/import.test.d.ts +0 -2
- package/dist/tests/import.test.d.ts.map +0 -1
- package/dist/tests/import.test.js +0 -148
- package/dist/tests/import.test.js.map +0 -1
- package/dist/tests/intersect.test.d.ts +0 -2
- package/dist/tests/intersect.test.d.ts.map +0 -1
- package/dist/tests/intersect.test.js +0 -173
- package/dist/tests/intersect.test.js.map +0 -1
- package/dist/tests/log.test.d.ts +0 -2
- package/dist/tests/log.test.d.ts.map +0 -1
- package/dist/tests/log.test.js +0 -58
- package/dist/tests/log.test.js.map +0 -1
- package/dist/tests/observer.test.d.ts +0 -2
- package/dist/tests/observer.test.d.ts.map +0 -1
- package/dist/tests/observer.test.js +0 -64
- package/dist/tests/observer.test.js.map +0 -1
- package/dist/tests/placeholder-resolution.test.d.ts +0 -2
- package/dist/tests/placeholder-resolution.test.d.ts.map +0 -1
- package/dist/tests/placeholder-resolution.test.js +0 -463
- package/dist/tests/placeholder-resolution.test.js.map +0 -1
- package/dist/tests/procedure-action-operations.test.d.ts +0 -2
- package/dist/tests/procedure-action-operations.test.d.ts.map +0 -1
- package/dist/tests/procedure-action-operations.test.js +0 -1140
- package/dist/tests/procedure-action-operations.test.js.map +0 -1
- package/dist/tests/procedure-bind-append.test.d.ts +0 -2
- package/dist/tests/procedure-bind-append.test.d.ts.map +0 -1
- package/dist/tests/procedure-bind-append.test.js +0 -80
- package/dist/tests/procedure-bind-append.test.js.map +0 -1
- package/dist/tests/procedure-fetch-options.test.d.ts +0 -2
- package/dist/tests/procedure-fetch-options.test.d.ts.map +0 -1
- package/dist/tests/procedure-fetch-options.test.js +0 -255
- package/dist/tests/procedure-fetch-options.test.js.map +0 -1
- package/dist/tests/procedure.test.d.ts +0 -2
- package/dist/tests/procedure.test.d.ts.map +0 -1
- package/dist/tests/procedure.test.js +0 -137
- package/dist/tests/procedure.test.js.map +0 -1
- package/dist/tests/procedure_events.test.d.ts +0 -7
- package/dist/tests/procedure_events.test.d.ts.map +0 -1
- package/dist/tests/procedure_events.test.js +0 -261
- package/dist/tests/procedure_events.test.js.map +0 -1
- package/dist/tests/render-wait.test.d.ts +0 -2
- package/dist/tests/render-wait.test.d.ts.map +0 -1
- package/dist/tests/render-wait.test.js +0 -68
- package/dist/tests/render-wait.test.js.map +0 -1
- package/dist/tests/reset_each.test.d.ts +0 -2
- package/dist/tests/reset_each.test.d.ts.map +0 -1
- package/dist/tests/reset_each.test.js +0 -215
- package/dist/tests/reset_each.test.js.map +0 -1
- package/dist/tests/row-move.test.d.ts +0 -2
- package/dist/tests/row-move.test.d.ts.map +0 -1
- package/dist/tests/row-move.test.js +0 -220
- package/dist/tests/row-move.test.js.map +0 -1
- package/dist/tests/row-operations.test.d.ts +0 -2
- package/dist/tests/row-operations.test.d.ts.map +0 -1
- package/dist/tests/row-operations.test.js +0 -259
- package/dist/tests/row-operations.test.js.map +0 -1
- package/dist/tests/scheduled-evaluate-wait.test.d.ts +0 -2
- package/dist/tests/scheduled-evaluate-wait.test.d.ts.map +0 -1
- package/dist/tests/scheduled-evaluate-wait.test.js +0 -68
- package/dist/tests/scheduled-evaluate-wait.test.js.map +0 -1
- package/dist/tests/url.test.d.ts +0 -2
- package/dist/tests/url.test.d.ts.map +0 -1
- package/dist/tests/url.test.js +0 -150
- package/dist/tests/url.test.js.map +0 -1
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.d.ts.map +0 -1
- package/dist/vite.config.js +0 -28
- package/dist/vite.config.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -19
- 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 +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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"}
|
package/dist/tests/dev.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.test.d.ts","sourceRoot":"","sources":["../../tests/dev.test.ts"],"names":[],"mappings":""}
|
package/dist/tests/dev.test.js
DELETED
|
@@ -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 +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":"AAAA,+BAA+B;AAC/B;;;;;GAKG;AACH,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAC,MAAM,QAAQ,CAAC;AACvE,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAEpE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,SAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC3E,SAAS,CAAC,SAAS,GAAG;;;;;;;;aAQb,CAAC;QACV,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAgB,CAAC;QAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAgB,CAAC;QAE9D,sCAAsC;QACtC,MAAM,SAAS,GACb,EAAE,CAAC;QACL,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,MAAM,GAAI,CAAiB,CAAC,MAAM,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,MAAM;gBACvB,SAAS,EAAE,MAAM,CAAC,KAAK,CACrB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,WAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/D;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;QAE1B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;QACzC,MAAM,gBAAgB,CACpB,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,EAAE,EACtD,EAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC,CACtD,CAAC;QAEF,sDAAsD;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC,UAAU,EAAE,CAAC;QACjE,MAAM,CAAC,SAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,SAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,SAAS,CAAC,SAAS,GAAG;;;;;aAKb,CAAC;QACV,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAgB,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAgB,CAAC;QAE9D,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC;QAE1B,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,CAAC,IAAI,CAAE,CAAiB,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC;QACtE,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,WAAW,EAAE,eAAe;SAC7B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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"}
|
package/dist/tests/env.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../tests/env.test.ts"],"names":[],"mappings":""}
|
package/dist/tests/env.test.js
DELETED
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluation-profile.test.d.ts","sourceRoot":"","sources":["../../tests/evaluation-profile.test.ts"],"names":[],"mappings":""}
|