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