haori 0.62.2 → 0.63.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.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Enhancer as Enhancer_2 } from './enhance';
2
+ import { Handler as Handler_2 } from './handlers';
2
3
 
3
4
  /**
4
5
  * 属性評価結果の詳細です。
@@ -2941,6 +2942,23 @@ export declare class Env {
2941
2942
  private static _prefix;
2942
2943
  private static _runtime;
2943
2944
  private static _strictBind;
2945
+ private static _csp;
2946
+ /**
2947
+ * CSP モードが有効かどうかを取得します。
2948
+ *
2949
+ * 有効な場合、式は `new Function` を使わずに評価します(仕様「CSP モードの
2950
+ * 式評価」)。
2951
+ *
2952
+ * @returns CSP モードなら true。
2953
+ */
2954
+ static get csp(): boolean;
2955
+ /**
2956
+ * CSP モードを設定します。
2957
+ *
2958
+ * @param enabled 有効にする場合は true。
2959
+ * @return 戻り値はありません。
2960
+ */
2961
+ static setCsp(enabled: boolean): void;
2944
2962
  /**
2945
2963
  * 厳格バインドモードが有効かどうかを取得します。
2946
2964
  *
@@ -4395,6 +4413,28 @@ declare interface GroupItem {
4395
4413
  items: unknown[];
4396
4414
  }
4397
4415
 
4416
+ /**
4417
+ * @fileoverview 登録した関数(`Haori.handlers`)
4418
+ *
4419
+ * `data-{event}-run-handler` などで名前を指定して呼ぶ関数と、CSP モードで式として
4420
+ * 書いた `*-run` から呼ぶ関数を保持します(仕様「登録した関数(`Haori.handlers`)」)。
4421
+ */
4422
+ /**
4423
+ * 登録する関数です。`this` は宣言を書いた要素です。
4424
+ */
4425
+ export declare type Handler = (this: Element, ...args: unknown[]) => unknown;
4426
+
4427
+ /**
4428
+ * 登録した関数(`data-{event}-run-handler` など)の登録窓口です。
4429
+ *
4430
+ * iife グローバルからは `Haori.handlers.register(名前, 関数)`、ESM では
4431
+ * `import {handlers} from 'haori'` で利用できます。
4432
+ */
4433
+ export declare const handlers: {
4434
+ register(name: string, handler: Handler_2): void;
4435
+ has(name: string): boolean;
4436
+ };
4437
+
4398
4438
  /**
4399
4439
  * Haoriクラスは、アプリケーション全体で使用されるユーティリティメソッドを提供します。
4400
4440
  * 挙動を変更する場合は必要に応じてオーバライドしてください。
@@ -4413,6 +4453,49 @@ declare class Haori {
4413
4453
  * @return 戻り値はありません。
4414
4454
  */
4415
4455
  static setRuntime(runtime: string): void;
4456
+ /**
4457
+ * CSP モードかどうかを取得します。
4458
+ *
4459
+ * @return CSP モードなら true。
4460
+ */
4461
+ static get csp(): boolean;
4462
+ /**
4463
+ * CSP モードを設定します。最初の式の評価より前に呼んでください。
4464
+ *
4465
+ * CSP モードでは、式と `*-run` 系の宣言を `new Function` を使わずに評価します
4466
+ * (仕様「CSP モード」)。`<script>` に `data-csp` を書いた場合と同じです。
4467
+ *
4468
+ * @param enabled 有効にする場合は true。
4469
+ * @return 戻り値はありません。
4470
+ */
4471
+ static setCsp(enabled: boolean): void;
4472
+ /**
4473
+ * 登録した関数(`data-{event}-run-handler` などから呼ぶ関数)の登録窓口です。
4474
+ *
4475
+ * 例:
4476
+ * ```js
4477
+ * Haori.handlers.register('editRule', function (event, id) {
4478
+ * // this は宣言を書いた要素
4479
+ * });
4480
+ * ```
4481
+ */
4482
+ static readonly handlers: {
4483
+ /**
4484
+ * 関数を登録します。
4485
+ *
4486
+ * @param name 宣言に書く名前
4487
+ * @param handler 関数
4488
+ * @return 戻り値はありません。
4489
+ */
4490
+ register(name: string, handler: Handler): void;
4491
+ /**
4492
+ * 登録した関数かどうかを返します。
4493
+ *
4494
+ * @param name 名前
4495
+ * @return 登録してあれば true
4496
+ */
4497
+ has(name: string): boolean;
4498
+ };
4416
4499
  /**
4417
4500
  * 外部ライブラリ連携(`data-enhance`)の登録窓口です。
4418
4501
  *
@@ -4773,7 +4856,7 @@ declare interface PageSummary {
4773
4856
  /**
4774
4857
  * @fileoverview 汎用非同期キュー機能
4775
4858
  *
4776
- * 任意の処理を非同期でキューイングし、requestAnimationFrameを使用して順次実行します。
4859
+ * 任意の処理を非同期でキューイングし、次のタスクで順次実行します(1 回あたり 8ms で区切ります)。
4777
4860
  * 各処理はPromiseを返し、完了時の処理を記述できます。
4778
4861
  * DOM操作などの非同期処理に適しています。
4779
4862
  */
@@ -4988,7 +5071,7 @@ declare interface ValueChangeOrigin {
4988
5071
  * リリース時に `package.json` と揃えて更新します(`tests/version.test.ts` が
4989
5072
  * 一致を検査します)。
4990
5073
  */
4991
- export declare const version = "0.62.2";
5074
+ export declare const version = "0.63.0";
4992
5075
 
4993
5076
  /**
4994
5077
  * すべてのレンダリングタスク(追従投入分を含む)の完了を待ちます。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haori",
3
- "version": "0.62.2",
3
+ "version": "0.63.0",
4
4
  "description": "A lightweight HTML-first UI engine powered by declarative data bindings and expressions.",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -10,6 +10,10 @@
10
10
  "preview:demo": "vite preview --config demo/vite.config.ts",
11
11
  "test": "vitest run",
12
12
  "test:watch": "vitest",
13
+ "test:csp": "vitest run --config vitest.csp.config.ts",
14
+ "test:mutation": "stryker run",
15
+ "bench": "vitest bench --run",
16
+ "bench:browser": "node bench/run.mjs",
13
17
  "test:e2e": "playwright test",
14
18
  "test:coverage": "vitest run --coverage",
15
19
  "lint": "eslint src",
@@ -66,6 +70,8 @@
66
70
  "devDependencies": {
67
71
  "@eslint/js": "^9.31.0",
68
72
  "@playwright/test": "^1.57.0",
73
+ "@stryker-mutator/core": "^10.0.0",
74
+ "@stryker-mutator/vitest-runner": "^10.0.0",
69
75
  "@types/node": "^22.7.5",
70
76
  "@vitest/coverage-v8": "^3.2.7",
71
77
  "eslint": "^9.31.0",