haori 0.1.2 → 0.1.3

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 (38) hide show
  1. package/LICENSE +21 -21
  2. package/README.ja.md +182 -167
  3. package/README.md +184 -169
  4. package/dist/haori.cjs.js +10 -9
  5. package/dist/haori.cjs.js.map +1 -1
  6. package/dist/haori.es.js +666 -569
  7. package/dist/haori.es.js.map +1 -1
  8. package/dist/haori.iife.js +10 -9
  9. package/dist/haori.iife.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/package.json +1 -1
  12. package/dist/src/expression.d.ts +27 -3
  13. package/dist/src/expression.d.ts.map +1 -1
  14. package/dist/src/expression.js +97 -24
  15. package/dist/src/expression.js.map +1 -1
  16. package/dist/src/form.d.ts.map +1 -1
  17. package/dist/src/form.js +17 -3
  18. package/dist/src/form.js.map +1 -1
  19. package/dist/src/index.d.ts +1 -1
  20. package/dist/src/index.js +1 -1
  21. package/dist/src/procedure.d.ts.map +1 -1
  22. package/dist/src/procedure.js +37 -16
  23. package/dist/src/procedure.js.map +1 -1
  24. package/dist/tests/core.test.js +46 -46
  25. package/dist/tests/data-each-browserlike.test.js +10 -10
  26. package/dist/tests/data-each-fragment-debug.test.js +36 -36
  27. package/dist/tests/data-each-table.test.js +93 -10
  28. package/dist/tests/data-each-table.test.js.map +1 -1
  29. package/dist/tests/data-fetch-tbody-dom.test.js +12 -12
  30. package/dist/tests/expression.test.js +37 -21
  31. package/dist/tests/expression.test.js.map +1 -1
  32. package/dist/tests/form.test.js +241 -241
  33. package/dist/tests/import.test.js +34 -34
  34. package/dist/tests/procedure-action-operations.test.js +85 -0
  35. package/dist/tests/procedure-action-operations.test.js.map +1 -1
  36. package/dist/tests/row-move.test.js +67 -67
  37. package/dist/tests/row-operations.test.js +84 -84
  38. package/package.json +70 -70
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Kazuyuki Nishijima
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Kazuyuki Nishijima
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ja.md CHANGED
@@ -1,168 +1,183 @@
1
- # Haori.js(日本語ドキュメント)
2
-
3
- Haori.js は、HTML 属性を中心にして動的な UI を実現する軽量なライブラリです。JavaScript をほとんど書かずに、データバインディング、条件分岐、繰り返し処理、フォームの双方向バインディング、サーバー通信などを HTML 属性で宣言できます。
4
-
5
- バージョン: 0.1.2
6
-
7
- ---
8
-
9
- **目次**
10
-
11
- - 概要
12
- - インストール
13
- - クイックスタート
14
- - よく使う属性(概要)
15
- - 公開・ビルド手順
16
- - ライセンス・貢献
17
- - 詳細ドキュメント
18
-
19
- ---
20
-
21
- ## 概要
22
-
23
- - 設計思想: HTML-First(HTML 属性のみで UI を宣言)
24
- - 主な特徴:
25
- - データバインディング(`data-bind`)
26
- - 条件表示(`data-if`)
27
- - 繰り返し表示(`data-each`)
28
- - フォーム双方向バインディング(`name` 属性による自動バインド)
29
- - サーバー通信(`data-fetch`)
30
- - HTML インポート(`data-import`)
31
- - ゼロ依存(ブラウザネイティブのみ)
32
-
33
- ## インストール
34
-
35
- npm:
36
-
37
- ```bash
38
- npm install haori
39
- ```
40
-
41
- CDN:
42
-
43
- ```html
44
- <script src="https://cdn.jsdelivr.net/npm/haori/dist/haori.iife.js"></script>
45
- ```
46
-
47
- この CDN URL は npm に公開済みの最新バージョンを参照します。
48
-
49
- ES Module:
50
-
51
- ```js
52
- import Haori from 'haori'
53
- ```
54
-
55
- ---
56
-
57
- ## クイックスタート
58
-
59
- HTML だけで簡単に使えます。以下は最小の例です。
60
-
61
- ```html
62
- <!DOCTYPE html>
63
- <html lang="ja">
64
- <head>
65
- <meta charset="utf-8">
66
- <title>Haori サンプル</title>
67
- <script src="https://cdn.jsdelivr.net/npm/haori/dist/haori.iife.js"></script>
68
- </head>
69
- <body>
70
- <div data-bind='{"name":"太郎"}'>
71
- <p>こんにちは、{{name}} さん</p>
72
- </div>
73
- </body>
74
- </html>
75
- ```
76
-
77
- JavaScript からマウントする例:
78
-
79
- ```js
80
- import Haori from 'haori'
81
-
82
- Haori.mount(document.body, { items: [ { name: 'りんご' }, { name: 'みかん' } ] })
83
- ```
84
-
85
- ---
86
-
87
- ## よく使う属性(概要)
88
-
89
- - `data-bind` — 要素にバインディングデータを設定(JSON またはパラメータ形式)
90
- - `{{ ... }}` — テンプレート式(式評価により挿入)
91
- - `data-if` — 条件に応じて要素を表示 / 非表示
92
- - `data-each` — 配列を繰り返し表示(`data-each-key`, `data-each-arg`, `data-each-index` など)
93
- - `data-fetch` — サーバーからデータを取得してバインド
94
- - `data-import` — 外部 HTML を読み込んで挿入
95
- - `data-url-param` — URL のクエリパラメータをバインディングに取り込む
96
-
97
- テンプレート式では、プロパティアクセス、動的インデックスを含むブラケットアクセス、optional chaining、三項演算子、配列 `map` / `filter` のアロー関数、spread を伴う呼び出しなどの安全な構文を利用できます。一方で、グローバルオブジェクト、`eval` や `arguments`、`constructor`、`__proto__`、`prototype`、`Reflect` などの脱出経路は使用できません。
98
-
99
- 詳しい使い方や多数のサンプルについては、公式ドキュメントを参照してください。
100
-
101
- ---
102
-
103
- ## 公開・ビルド手順(パッケージ作成)
104
-
105
- ローカル確認とリリース準備の基本手順を示します。
106
-
107
- 1. 依存インストール
108
-
109
- ```bash
110
- npm install
111
- ```
112
-
113
- 2. 型チェックとテスト
114
-
115
- ```bash
116
- npm run compile
117
- npm run test
118
- ```
119
-
120
- 3. 配布物のビルド
121
-
122
- ```bash
123
- npm run build
124
- ```
125
-
126
- 4. バージョン更新
127
-
128
- ```bash
129
- npm version patch
130
- ```
131
-
132
- 5. 版数更新を push し、対象タグから GitHub Release を公開
133
-
134
- このリポジトリの npm 公開は GitHub Actions で行います。現在の workflow は `release.published` を契機に起動し、パッケージをビルドしたうえで `NPM_TOKEN` を使って npm へ公開し、あわせて `dist.zip` を GitHub Release のアーティファクトとして添付します。
135
-
136
- 必要な前提条件:
137
-
138
- - GitHub リポジトリの Secrets に `NPM_TOKEN` が設定されていること
139
- - 対象バージョンのタグから Release を `published` 状態で公開すること
140
-
141
- 公開前の推奨確認:
142
-
143
- - `npm run test`
144
- - `npm run build`
145
- - `npm pack --dry-run`
146
-
147
- 注意: `package.json` `name`, `version`, `description`, `repository`, `license` が正しいことを確認してください。公開対象ファイルは `files` フィールドに従います。
148
-
149
- ---
150
-
151
- ## ライセンス・貢献
152
-
153
- - ライセンス: MIT(リポジトリの `LICENSE` を参照)
154
-
155
- 貢献歓迎: バグ報告、改善提案、プルリクエストは GitHub リポジトリへお願いします。
156
-
157
- ---
158
-
159
- ## 詳細ドキュメント
160
-
161
- より詳しい使い方、属性仕様、内部設計については以下のドキュメントを参照してください。
162
-
163
- - `docs/ja/guide.md` — 利用ガイド(サンプル多数)
164
- - `docs/ja/specs.md` — 技術仕様書(内部設計・API など)
165
-
166
- ---
167
-
1
+ # Haori.js(日本語ドキュメント)
2
+
3
+ Haori.js は、HTML 属性を中心にして動的な UI を実現する軽量なライブラリです。JavaScript をほとんど書かずに、データバインディング、条件分岐、繰り返し処理、フォームの双方向バインディング、サーバー通信などを HTML 属性で宣言できます。
4
+
5
+ バージョン: 0.1.3
6
+
7
+ ---
8
+
9
+ **目次**
10
+
11
+ - 概要
12
+ - インストール
13
+ - クイックスタート
14
+ - よく使う属性(概要)
15
+ - 公開・ビルド手順
16
+ - ライセンス・貢献
17
+ - 詳細ドキュメント
18
+
19
+ ---
20
+
21
+ ## 概要
22
+
23
+ - 設計思想: HTML-First(HTML 属性のみで UI を宣言)
24
+ - 主な特徴:
25
+ - データバインディング(`data-bind`)
26
+ - 条件表示(`data-if`)
27
+ - 繰り返し表示(`data-each`)
28
+ - フォーム双方向バインディング(`name` 属性による自動バインド)
29
+ - サーバー通信(`data-fetch`)
30
+ - HTML インポート(`data-import`)
31
+ - ゼロ依存(ブラウザネイティブのみ)
32
+
33
+ ## インストール
34
+
35
+ npm:
36
+
37
+ ```bash
38
+ npm install haori
39
+ ```
40
+
41
+ CDN:
42
+
43
+ ```html
44
+ <script src="https://cdn.jsdelivr.net/npm/haori/dist/haori.iife.js"></script>
45
+ ```
46
+
47
+ この CDN URL は npm に公開済みの最新バージョンを参照します。
48
+
49
+ ES Module:
50
+
51
+ ```js
52
+ import Haori from 'haori'
53
+ ```
54
+
55
+ ---
56
+
57
+ ## クイックスタート
58
+
59
+ HTML だけで簡単に使えます。以下は最小の例です。
60
+
61
+ ```html
62
+ <!DOCTYPE html>
63
+ <html lang="ja">
64
+ <head>
65
+ <meta charset="utf-8">
66
+ <title>Haori サンプル</title>
67
+ <script src="https://cdn.jsdelivr.net/npm/haori/dist/haori.iife.js"></script>
68
+ </head>
69
+ <body>
70
+ <div data-bind='{"name":"太郎"}'>
71
+ <p>こんにちは、{{name}} さん</p>
72
+ </div>
73
+ </body>
74
+ </html>
75
+ ```
76
+
77
+ JavaScript からマウントする例:
78
+
79
+ ```js
80
+ import Haori from 'haori'
81
+
82
+ Haori.mount(document.body, { items: [ { name: 'りんご' }, { name: 'みかん' } ] })
83
+ ```
84
+
85
+ ---
86
+
87
+ ## よく使う属性(概要)
88
+
89
+ - `data-bind` — 要素にバインディングデータを設定(JSON またはパラメータ形式)
90
+ - `{{ ... }}` — テンプレート式(式評価により挿入)
91
+ - `data-if` — 条件に応じて要素を表示 / 非表示
92
+ - `data-each` — 配列を繰り返し表示(`data-each-key`, `data-each-arg`, `data-each-index` など)
93
+ - `data-fetch` — サーバーからデータを取得してバインド
94
+ - `data-import` — 外部 HTML を読み込んで挿入
95
+ - `data-url-param` — URL のクエリパラメータをバインディングに取り込む
96
+
97
+ テンプレート式では、プロパティアクセス、動的インデックスを含むブラケットアクセス、optional chaining、三項演算子、配列 `map` / `filter` のアロー関数、spread を伴う呼び出しなどの安全な構文を利用できます。一方で、グローバルオブジェクト、`eval` や `arguments`、`constructor`、`__proto__`、`prototype`、`Reflect` などの脱出経路は使用できません。
98
+
99
+ 詳しい使い方や多数のサンプルについては、公式ドキュメントを参照してください。
100
+
101
+ ---
102
+
103
+ ## 公開・ビルド手順(パッケージ作成)
104
+
105
+ ローカル確認とリリース準備の基本手順を示します。
106
+
107
+ 公開運用メモ:
108
+
109
+ 1. `npm run test`、`npm run build`、`npm pack --dry-run` を実行する
110
+ 2. `npm version patch` などで公開する版数に更新する
111
+ 3. `git push origin main` と `git push origin --tags` を実行する
112
+ 4. 新しい版数タグから GitHub Release を公開する
113
+ 5. npm、jsDelivr、GitHub Release の assets が新しい版数を指すことを確認する
114
+
115
+ 1. 依存インストール
116
+
117
+ ```bash
118
+ npm install
119
+ ```
120
+
121
+ 2. 型チェックとテスト
122
+
123
+ ```bash
124
+ npm run compile
125
+ npm run test
126
+ ```
127
+
128
+ 3. 配布物のビルド
129
+
130
+ ```bash
131
+ npm run build
132
+ ```
133
+
134
+ 4. バージョン更新
135
+
136
+ ```bash
137
+ npm version patch
138
+ ```
139
+
140
+ 5. 版数更新のコミットとタグを push
141
+
142
+ ```bash
143
+ git push origin main
144
+ git push origin --tags
145
+ ```
146
+
147
+ 6. 新しいタグから GitHub Release を公開
148
+
149
+ このリポジトリの npm 公開は GitHub Actions で行います。現在の workflow は `release.published` を契機に起動し、パッケージをビルドしたうえで、対象 version が未公開のときだけ `NPM_TOKEN` を使って npm へ公開し、あわせて `dist.zip` を GitHub Release のアセットとして添付します。
150
+
151
+ 必要な前提条件:
152
+
153
+ - GitHub Actions の repository secrets に `NPM_TOKEN` が設定されていること
154
+ - 対象バージョンのタグから Release を `published` 状態で公開すること
155
+
156
+ 公開前の推奨確認:
157
+
158
+ - `npm run test`
159
+ - `npm run build`
160
+ - `npm pack --dry-run`
161
+
162
+ 注意: `package.json` の `name`, `version`, `description`, `repository`, `license` が正しいことを確認してください。公開対象ファイルは `files` フィールドに従います。
163
+
164
+ ---
165
+
166
+ ## ライセンス・貢献
167
+
168
+ - ライセンス: MIT(リポジトリの `LICENSE` を参照)
169
+
170
+ 貢献歓迎: バグ報告、改善提案、プルリクエストは GitHub リポジトリへお願いします。
171
+
172
+ ---
173
+
174
+ ## 詳細ドキュメント
175
+
176
+ より詳しい使い方、属性仕様、内部設計については以下のドキュメントを参照してください。
177
+
178
+ - `docs/ja/guide.md` — 利用ガイド(サンプル多数)
179
+ - `docs/ja/specs.md` — 技術仕様書(内部設計・API など)
180
+
181
+ ---
182
+
168
183
  README の作成にあたって追加してほしい項目(API 参照、図、例など)があれば教えてください。