diff --git a/DEMO_README.md b/DEMO_README.md
new file mode 100644
index 0000000..f88d7bc
--- /dev/null
+++ b/DEMO_README.md
@@ -0,0 +1,70 @@
+# callタグ機能デモ
+
+このHTMLファイルは、callタグの修正が正しく動作していることを確認するためのスタンドアロンデモです。
+
+## 使用方法
+
+### オプション1: ファイルを直接開く
+1. `demo_call_tag_fix.html` をブラウザで直接開いてください(ダブルクリック)
+2. デモが自動的に実行され、結果が表示されます
+
+### オプション2: ローカルサーバーで開く
+```bash
+# リポジトリのルートディレクトリで実行
+python3 -m http.server 8080
+
+# ブラウザで以下のURLを開く
+# http://localhost:8080/demo_call_tag_fix.html
+```
+
+### オプション3: GitHub Pagesで公開
+このファイルをGitHub Pagesにデプロイすることで、オンラインでデモを確認できます。
+
+## デモ内容
+
+このデモは以下の4つのテストセクションで構成されています:
+
+### ■テスト1: 値の代入
+- `hoge = 1` の実行
+- 変数値の表示と条件分岐の確認
+
+### ■テスト2: 値の変更
+- `hoge = 2` の実行
+- 変数値の更新確認
+
+### ■テスト3: 計算式
+- `count = count + 1` の実行(2回)
+- インクリメント操作の確認
+
+### ■テスト4: 複雑な式
+- `result = hoge * count` の実行
+- 複数の変数を使った計算の確認
+
+## 修正内容
+
+**修正前:**
+```javascript
+const context = { ...this.sceneFile }
+const func = new Function(...Object.keys(context), code)
+return func.apply(null, Object.values(context))
+```
+
+**修正後:**
+```javascript
+const context = new Proxy(this.sceneFile, {
+ get: (target, key) => target[key],
+ set: (target, key, value) => {
+ target[key] = value
+ return true
+ }
+})
+const func = new Function('context', `with(context) { ${code} }`)
+return func.call(null, context)
+```
+
+この修正により、callタグで変数に代入した値が正しくsceneFileのプロパティを更新するようになり、if属性や{{変数}}展開が正しく動作するようになりました。
+
+## 期待される結果
+
+すべてのテストで緑色の「✓」マークが表示されれば、修正が正しく動作しています。
+赤色の「✗」マークは表示されないはずです。
diff --git a/DockerFile b/DockerFile
new file mode 100644
index 0000000..9efe75b
--- /dev/null
+++ b/DockerFile
@@ -0,0 +1,7 @@
+FROM node:20
+WORKDIR /app
+COPY package*.json ./
+COPY . .
+RUN npm run setup
+EXPOSE 8080
+CMD ["npm", "--prefix", "example", "run", "dev", "--", "--host", "0.0.0.0", "--port", "8080"]
\ No newline at end of file
diff --git a/TESTING_EXAMPLE.md b/TESTING_EXAMPLE.md
new file mode 100644
index 0000000..1ec66c6
--- /dev/null
+++ b/TESTING_EXAMPLE.md
@@ -0,0 +1,87 @@
+# Example ifテストの動作確認方法
+
+## 問題
+exampleのif_testを実行しても変数の値が変わらない問題を修正しました。
+
+## 原因
+- `example/src/index.js`が`webtalekit-alpha/src/core/`をインポートしていましたが、パッケージには`dist`ディレクトリのビルド済みファイルのみが含まれています
+- exampleは親ディレクトリのwebtalekit-alphaパッケージを正しく参照できていませんでした
+
+## 修正内容
+1. インポートパスを`webtalekit-alpha/dist/src/core/`に変更
+2. webtalekit-alphaをローカルパッケージとしてインストール
+3. webpack設定の正規表現エスケープを修正
+
+## 動作確認手順
+
+### ステップ1: パッケージのビルド
+```bash
+cd /home/runner/work/webTaleKit/webTaleKit
+npm install
+npm run build
+npm pack
+```
+
+### ステップ2: Exampleへのインストール
+```bash
+cd example
+npm install
+npm install ../webtalekit-alpha-0.2.12.tgz
+```
+
+### ステップ3: 開発サーバーの起動
+```bash
+npm run dev
+```
+
+### ステップ4: ブラウザで確認
+ブラウザで以下のURLを開きます:
+```
+http://localhost:8080?scene=if_test
+```
+
+## 期待される動作
+
+if_testシーンを開くと、以下のような動作が確認できます:
+
+1. **初期状態**
+ - 変数hogeの初期値: 2
+ - 変数countの初期値: 0
+
+2. **テスト1: 値の代入**
+ - ``実行後
+ - hogeの値が1に変更される
+ - ✓ hoge==1の条件で文章が表示される
+
+3. **テスト2: 値の変更**
+ - ``実行後
+ - hogeの値が2に変更される
+ - ✓ hoge==2の条件で文章が表示される
+
+4. **テスト3: 計算式**
+ - ``を2回実行
+ - countが0→1→2と増加する
+ - 各段階で正しい条件分岐が機能する
+
+5. **テスト4: 複雑な式**
+ - ``実行
+ - result = 2 × 2 = 4が計算される
+ - ✓ result==4の条件で文章が表示される
+
+## トラブルシューティング
+
+### webpack compilation failed
+- `npm install`が正しく実行されているか確認
+- `node_modules/webtalekit-alpha`が存在するか確認
+
+### 変数値が変わらない
+- ブラウザのキャッシュをクリア(Ctrl+Shift+R または Cmd+Shift+R)
+- `npm run dev`で開発サーバーを再起動
+
+### Cannot find module 'webtalekit-alpha/dist/src/core/'
+- 親ディレクトリで`npm pack`を実行
+- exampleディレクトリで`npm install ../webtalekit-alpha-0.2.12.tgz`を再実行
+
+## 備考
+- この修正により、callタグによる変数代入がProxyを使って正しくsceneFileのプロパティを更新するようになりました
+- if属性や{{変数}}展開も正常に動作します
diff --git a/demo_call_tag_fix.html b/demo_call_tag_fix.html
new file mode 100644
index 0000000..b0ac68e
--- /dev/null
+++ b/demo_call_tag_fix.html
@@ -0,0 +1,379 @@
+
+
+
+
+
+ callタグ機能デモ - webTaleKit
+
+
+
+
+
+
+
+
+ 🔧 修正内容: executeCode関数をProxy方式に変更し、変数への代入が正しくsceneFileプロパティを更新するように修正しました。
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/package-lock.json b/example/package-lock.json
index 2285737..0ffeb32 100644
--- a/example/package-lock.json
+++ b/example/package-lock.json
@@ -10,7 +10,8 @@
"dependencies": {
"console-browserify": "^1.2.0",
"html-webpack-plugin": "^5.6.0",
- "storejs": "^2.1.0"
+ "storejs": "^2.1.0",
+ "webtalekit-alpha": "file:../webtalekit-alpha-0.2.12.tgz"
},
"devDependencies": {
"filemanager-webpack-plugin": "^8.0.0",
@@ -570,6 +571,15 @@
}
}
},
+ "node_modules/@xmldom/xmldom": {
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz",
+ "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -1291,8 +1301,7 @@
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/crc-32": {
"version": "1.2.2",
@@ -1359,6 +1368,15 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/cssauron": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz",
+ "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==",
+ "license": "MIT",
+ "dependencies": {
+ "through": "X.X.X"
+ }
+ },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -1561,6 +1579,39 @@
"tslib": "^2.0.3"
}
},
+ "node_modules/duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
+ "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==",
+ "license": "BSD",
+ "dependencies": {
+ "readable-stream": "~1.1.9"
+ }
+ },
+ "node_modules/duplexer2/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/duplexer2/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/duplexer2/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -1636,6 +1687,15 @@
"node": ">=4"
}
},
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
@@ -2306,6 +2366,41 @@
}
]
},
+ "node_modules/html-inline": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/html-inline/-/html-inline-1.2.0.tgz",
+ "integrity": "sha512-7W6IV2bQVesdyJkrrZyu2Wk8jPQ1FyCa2y9xDURqHrCrI1HkJK85D1jzCuBTJhal6rQB+t3YBAqcDgSnohTzTw==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "~1.1.0",
+ "through2": "~0.6.3",
+ "trumpet": "~1.7.0"
+ },
+ "bin": {
+ "html-inline": "bin/cmd.js"
+ }
+ },
+ "node_modules/html-minifier": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz",
+ "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==",
+ "license": "MIT",
+ "dependencies": {
+ "camel-case": "^3.0.0",
+ "clean-css": "^4.2.1",
+ "commander": "^2.19.0",
+ "he": "^1.2.0",
+ "param-case": "^2.1.1",
+ "relateurl": "^0.2.7",
+ "uglify-js": "^3.5.1"
+ },
+ "bin": {
+ "html-minifier": "cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/html-minifier-terser": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
@@ -2326,6 +2421,192 @@
"node": ">=12"
}
},
+ "node_modules/html-minifier/node_modules/camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "node_modules/html-minifier/node_modules/clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "license": "MIT",
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/html-minifier/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-minifier/node_modules/lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+ "license": "MIT"
+ },
+ "node_modules/html-minifier/node_modules/no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "license": "MIT",
+ "dependencies": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node_modules/html-minifier/node_modules/param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "node_modules/html-select": {
+ "version": "2.3.24",
+ "resolved": "https://registry.npmjs.org/html-select/-/html-select-2.3.24.tgz",
+ "integrity": "sha512-kQ+YZoVQ8Aux6bUqMVc0iufcZOv03+xYZ4J5v2beT5wkNrW/e2roZ8pnU4LunVOVBGFkbodFKR0TvuMkTdyrJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cssauron": "^1.1.0",
+ "duplexer2": "~0.0.2",
+ "inherits": "^2.0.1",
+ "minimist": "~0.0.8",
+ "readable-stream": "^1.0.27-1",
+ "split": "~0.3.0",
+ "stream-splicer": "^1.2.0",
+ "through2": "^1.0.0"
+ },
+ "bin": {
+ "html-select": "bin/cmd.js"
+ }
+ },
+ "node_modules/html-select/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-select/node_modules/minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==",
+ "license": "MIT"
+ },
+ "node_modules/html-select/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/html-select/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-select/node_modules/through2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
+ "integrity": "sha512-zEbpaeSMHxczpTzO1KkMHjBC1enTA68ojeaZGG4toqdASpb9t4xUZaYFBq2/9OHo5nTGFVSYd4c910OR+6wxbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": ">=1.1.13-1 <1.2.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
+ "node_modules/html-to-json-parser": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-to-json-parser/-/html-to-json-parser-2.0.1.tgz",
+ "integrity": "sha512-M5m9PnTRbIQCSpj13mecIUThKgWnxDhjEYCjo2PgadXUbYhvJsjY/tyf5AeJDnw0/UPRVAh85VzCxH1bXEX9rw==",
+ "license": "MIT",
+ "dependencies": {
+ "@xmldom/xmldom": "^0.8.10"
+ }
+ },
+ "node_modules/html-tokenize": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/html-tokenize/-/html-tokenize-1.2.5.tgz",
+ "integrity": "sha512-7sCme3w9Hiv/kfL6sO6ePTGAV5fY6P7WDZyOs0zfXXU8vsS1ps1CQfGe0J1yuAdcCnOJ9h66RLYX/e9Cife8yw==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "~2.0.1",
+ "minimist": "~0.0.8",
+ "readable-stream": "~1.0.27-1",
+ "through2": "~0.4.1"
+ },
+ "bin": {
+ "html-tokenize": "bin/cmd.js"
+ }
+ },
+ "node_modules/html-tokenize/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-tokenize/node_modules/minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==",
+ "license": "MIT"
+ },
+ "node_modules/html-tokenize/node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/html-tokenize/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-tokenize/node_modules/through2": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
+ "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "~1.0.17",
+ "xtend": "~2.1.1"
+ }
+ },
+ "node_modules/html-tokenize/node_modules/xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==",
+ "dependencies": {
+ "object-keys": "~0.4.0"
+ },
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/html-webpack-plugin": {
"version": "5.6.0",
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz",
@@ -2519,6 +2800,11 @@
"node": ">=8"
}
},
+ "node_modules/indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="
+ },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -2533,8 +2819,7 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/interpret": {
"version": "3.1.1",
@@ -3048,11 +3333,17 @@
"node": "*"
}
},
+ "node_modules/minimist": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
+ "integrity": "sha512-2RbeLaM/Hbo9vJ1+iRrxzfDnX9108qb2m923U+s+Ot2eMey0IYGdSjzHmvtg2XsxoCuMnzOMw7qc573RvnLgwg==",
+ "license": "MIT"
+ },
"node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -3159,6 +3450,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==",
+ "license": "MIT"
+ },
"node_modules/obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
@@ -3292,10 +3589,10 @@
}
},
"node_modules/package-json-from-dist": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
- "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
- "dev": true
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "license": "BlueOak-1.0.0"
},
"node_modules/param-case": {
"version": "3.0.4",
@@ -3555,6 +3852,39 @@
"node": ">= 6"
}
},
+ "node_modules/readable-wrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/readable-wrap/-/readable-wrap-1.0.0.tgz",
+ "integrity": "sha512-/8n0Mr10S+HGKFygQ42Z40JIXwafPH3A72pwmlNClThgsImV5LJJiCue5Je1asxwY082sYxq/+kTxH6nTn0w3g==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^1.1.13-1"
+ }
+ },
+ "node_modules/readable-wrap/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/readable-wrap/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/readable-wrap/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
"node_modules/readdir-glob": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
@@ -4187,6 +4517,63 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
+ "node_modules/split": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
+ "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==",
+ "license": "MIT",
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/stack-generator": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "license": "MIT"
+ },
+ "node_modules/stacktrace-gps": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz",
+ "integrity": "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "source-map": "0.5.6",
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/stacktrace-gps/node_modules/source-map": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
+ "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stacktrace-js": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz",
+ "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==",
+ "license": "MIT",
+ "dependencies": {
+ "error-stack-parser": "^2.0.6",
+ "stack-generator": "^2.0.5",
+ "stacktrace-gps": "^3.0.4"
+ }
+ },
"node_modules/statuses": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@@ -4204,6 +4591,54 @@
"url": "https://jaywcjlove.github.io/#/sponsor"
}
},
+ "node_modules/stream-splicer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-1.3.2.tgz",
+ "integrity": "sha512-nmUMEbdm/sZYqe9dZs7mqJvTYpunsDbIWI5FiBCMc/hMVd6vwzy+ITmo7C3gcLYqrn+uQ1w+EJwooWvJ997JAA==",
+ "license": "MIT",
+ "dependencies": {
+ "indexof": "0.0.1",
+ "inherits": "^2.0.1",
+ "isarray": "~0.0.1",
+ "readable-stream": "^1.1.13-1",
+ "readable-wrap": "^1.0.0",
+ "through2": "^1.0.0"
+ }
+ },
+ "node_modules/stream-splicer/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/stream-splicer/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/stream-splicer/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
+ "node_modules/stream-splicer/node_modules/through2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
+ "integrity": "sha512-zEbpaeSMHxczpTzO1KkMHjBC1enTA68ojeaZGG4toqdASpb9t4xUZaYFBq2/9OHo5nTGFVSYd4c910OR+6wxbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": ">=1.1.13-1 <1.2.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -4465,6 +4900,46 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
+ },
+ "node_modules/through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
+ "node_modules/through2/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/through2/node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/through2/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -4492,6 +4967,54 @@
"node": ">=0.6"
}
},
+ "node_modules/trumpet": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/trumpet/-/trumpet-1.7.2.tgz",
+ "integrity": "sha512-hqVDLz5yp+vhRGjAvbomuo4+pjzQIbXe9JE/HPm9s4iEuf2Ew5jzgwQf+2HLpqFXZpRD8VgKPOYM8wyKmqIklg==",
+ "license": "MIT",
+ "dependencies": {
+ "duplexer2": "~0.0.2",
+ "html-select": "^2.3.5",
+ "html-tokenize": "^1.1.1",
+ "inherits": "^2.0.0",
+ "readable-stream": "^1.0.27-1",
+ "through2": "^1.0.0"
+ }
+ },
+ "node_modules/trumpet/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
+ },
+ "node_modules/trumpet/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/trumpet/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
+ },
+ "node_modules/trumpet/node_modules/through2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz",
+ "integrity": "sha512-zEbpaeSMHxczpTzO1KkMHjBC1enTA68ojeaZGG4toqdASpb9t4xUZaYFBq2/9OHo5nTGFVSYd4c910OR+6wxbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": ">=1.1.13-1 <1.2.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
"node_modules/ts-loader": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
@@ -4553,6 +5076,18 @@
"node": ">=14.17"
}
},
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/undici-types": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
@@ -4607,6 +5142,12 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+ "license": "MIT"
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -4972,6 +5513,120 @@
"node": ">=0.8.0"
}
},
+ "node_modules/webtalekit-alpha": {
+ "version": "0.2.12",
+ "resolved": "file:../webtalekit-alpha-0.2.12.tgz",
+ "integrity": "sha512-G+YzIPyisLDFz8u9mMQRopc9ElMAzm/6FzjYAiw0d25u5ma4jeXeJqslL4qCrnJGnLAFOVK0K1iDhxrl2kuxzA==",
+ "license": "MIT",
+ "dependencies": {
+ "html-inline": "^1.2.0",
+ "html-minifier": "^4.0.0",
+ "html-to-json-parser": "^2.0.1",
+ "rimraf": "^6.0.1",
+ "stacktrace-js": "^2.0.2",
+ "storejs": "^2.1.0"
+ },
+ "bin": {
+ "wtc": "parser/cli.js"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/lru-cache": {
+ "version": "11.2.7",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
+ "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/webtalekit-alpha/node_modules/rimraf": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
+ "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "glob": "^13.0.3",
+ "package-json-from-dist": "^1.0.1"
+ },
+ "bin": {
+ "rimraf": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -5114,6 +5769,15 @@
}
}
},
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/zip-stream": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz",
diff --git a/example/package.json b/example/package.json
index 0b758e2..649652f 100644
--- a/example/package.json
+++ b/example/package.json
@@ -12,7 +12,8 @@
"dependencies": {
"console-browserify": "^1.2.0",
"html-webpack-plugin": "^5.6.0",
- "storejs": "^2.1.0"
+ "storejs": "^2.1.0",
+ "webtalekit-alpha": "file:../webtalekit-alpha-0.2.12.tgz"
},
"devDependencies": {
"filemanager-webpack-plugin": "^8.0.0",
diff --git a/example/src/index.js b/example/src/index.js
index f2c4184..72c9525 100644
--- a/example/src/index.js
+++ b/example/src/index.js
@@ -1,4 +1,4 @@
-import { Core } from 'webtalekit-alpha/src/core/'
+import { Core } from 'webtalekit-alpha/dist/src/core/'
import engineConfig from '../engineConfig.json'
const game = new Core()
diff --git a/example/src/scene/if_test.scene b/example/src/scene/if_test.scene
index 2485592..fc54b5e 100644
--- a/example/src/scene/if_test.scene
+++ b/example/src/scene/if_test.scene
@@ -1,25 +1,52 @@
- ifグローバル属性のテストです。
- 変数hogeの値を設定します。
+ 【callタグ機能テスト】
+ callタグとifグローバル属性の動作を確認します。
-
-
- 現在のhogeの値: {{hoge}}
-
- この文章はhoge==1の場合に表示されます。
- この文章はhoge==2の場合に表示されます。
+ ―――――――――――――――――――――
+ ■初期状態
+ 変数hogeの初期値: {{hoge}}
+ 変数countの初期値: {{count}}
- hogeの値を2に変更します。
+ ―――――――――――――――――――――
+ ■テスト1: 値の代入
+ callタグで hoge = 1 を実行します。
+
+ 実行後のhogeの値: {{hoge}}
+ ✓ hoge==1 の条件で表示(正常)
+ ✗ hoge==2 の条件で表示(エラー:表示されてはいけません)
+ ―――――――――――――――――――――
+ ■テスト2: 値の変更
+ callタグで hoge = 2 を実行します。
+ 実行後のhogeの値: {{hoge}}
+ ✗ hoge==1 の条件で表示(エラー:表示されてはいけません)
+ ✓ hoge==2 の条件で表示(正常)
+
+ ―――――――――――――――――――――
+ ■テスト3: 計算式
+ callタグで count = count + 1 を実行します。
+
+ 実行後のcountの値: {{count}}
+ ✓ count==1 の条件で表示(正常)
- 現在のhogeの値: {{hoge}}
+ もう一度実行します。
+
+ 実行後のcountの値: {{count}}
+ ✓ count==2 の条件で表示(正常)
- この文章はhoge==1の場合に表示されます。
- この文章はhoge==2の場合に表示されます。
+ ―――――――――――――――――――――
+ ■テスト4: 複雑な式
+ callタグで result = hoge * count を実行します。
+
+ 実行後のresultの値: {{result}}
+ ({{hoge}} × {{count}} = {{result}})
+ ✓ result==4 の条件で表示(正常)
- ifグローバル属性のテストが完了しました。
+ ―――――――――――――――――――――
+ 【テスト完了】
+ callタグとifグローバル属性が正常に動作しています!
@@ -33,5 +60,7 @@
}
export let hoge = 2;
+ export let count = 0;
+ export let result = 0;
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 03fa74d..2c9bd0f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -217,7 +217,6 @@
"integrity": "sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@algolia/client-common": "5.46.0",
"@algolia/requester-browser-xhr": "5.46.0",
@@ -367,7 +366,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz",
"integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==",
"dev": true,
- "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.2",
@@ -3015,7 +3013,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.28.tgz",
"integrity": "sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==",
"dev": true,
- "peer": true,
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -3654,7 +3651,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
"dev": true,
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3685,7 +3681,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -3751,7 +3746,6 @@
"integrity": "sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@algolia/abtesting": "1.12.0",
"@algolia/client-abtesting": "5.46.0",
@@ -4507,7 +4501,6 @@
"url": "https://github.com/sponsors/ai"
}
],
- "peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001669",
"electron-to-chromium": "^1.5.41",
@@ -6354,7 +6347,6 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -6529,7 +6521,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
"integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
"dev": true,
- "peer": true,
"dependencies": {
"array-includes": "^3.1.7",
"array.prototype.findlastindex": "^1.2.3",
@@ -6591,7 +6582,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
"integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"builtins": "^5.0.1",
@@ -6668,7 +6658,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
"dev": true,
- "peer": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -7295,7 +7284,6 @@
"integrity": "sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"tabbable": "^6.3.0"
}
@@ -9235,7 +9223,6 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
- "peer": true,
"dependencies": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -11841,7 +11828,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -14263,7 +14249,6 @@
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
- "peer": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -14483,7 +14468,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
"integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==",
"dev": true,
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -14756,7 +14740,6 @@
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
@@ -14859,7 +14842,6 @@
"integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.25",
"@vue/compiler-sfc": "3.5.25",
@@ -14912,7 +14894,6 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz",
"integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==",
"dev": true,
- "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
@@ -14960,7 +14941,6 @@
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
"integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
- "peer": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.1.1",
@@ -15102,7 +15082,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -15215,7 +15194,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -15717,7 +15695,6 @@
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.0.tgz",
"integrity": "sha512-22SHEEVNjZfFWkFks3P6HilkR3rS7a6GjnCIqR22Zz4HNxdfT0FG+RE7efTcFVfLUkTTMQQybvaUcwMrHXYa7Q==",
"dev": true,
- "peer": true,
"requires": {
"@algolia/client-common": "5.46.0",
"@algolia/requester-browser-xhr": "5.46.0",
@@ -15825,7 +15802,6 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz",
"integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==",
"dev": true,
- "peer": true,
"requires": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.24.2",
@@ -17688,7 +17664,6 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.28.tgz",
"integrity": "sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==",
"dev": true,
- "peer": true,
"requires": {
"undici-types": "~5.26.4"
},
@@ -18202,8 +18177,7 @@
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
- "peer": true
+ "dev": true
},
"acorn-import-assertions": {
"version": "1.9.0",
@@ -18224,7 +18198,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "peer": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -18273,7 +18246,6 @@
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.0.tgz",
"integrity": "sha512-7ML6fa2K93FIfifG3GMWhDEwT5qQzPTmoHKCTvhzGEwdbQ4n0yYUWZlLYT75WllTGJCJtNUI0C1ybN4BCegqvg==",
"dev": true,
- "peer": true,
"requires": {
"@algolia/abtesting": "1.12.0",
"@algolia/client-abtesting": "5.46.0",
@@ -18852,7 +18824,6 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
"integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
"dev": true,
- "peer": true,
"requires": {
"caniuse-lite": "^1.0.30001669",
"electron-to-chromium": "^1.5.41",
@@ -20280,7 +20251,6 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"dev": true,
- "peer": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -20517,7 +20487,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
"integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
"dev": true,
- "peer": true,
"requires": {
"array-includes": "^3.1.7",
"array.prototype.findlastindex": "^1.2.3",
@@ -20569,7 +20538,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz",
"integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==",
"dev": true,
- "peer": true,
"requires": {
"@eslint-community/eslint-utils": "^4.4.0",
"builtins": "^5.0.1",
@@ -20624,7 +20592,6 @@
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
"integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
"dev": true,
- "peer": true,
"requires": {}
},
"eslint-scope": {
@@ -20986,7 +20953,6 @@
"resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.6.tgz",
"integrity": "sha512-v/Z8bvMCajtx4mEXmOo7QEsIzlIOqRXTIwgUfsFOF9gEsespdbD0AkPIka1bSXZ8Y8oZ+2IVDQZePkTfEHZl7Q==",
"dev": true,
- "peer": true,
"requires": {
"tabbable": "^6.3.0"
}
@@ -22417,7 +22383,6 @@
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true,
- "peer": true,
"requires": {
"@jest/core": "^29.7.0",
"@jest/types": "^29.6.3",
@@ -24381,7 +24346,6 @@
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"dev": true,
- "peer": true,
"requires": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -26163,7 +26127,6 @@
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true,
- "peer": true,
"requires": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -26319,8 +26282,7 @@
"version": "5.4.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.2.tgz",
"integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==",
- "dev": true,
- "peer": true
+ "dev": true
},
"uglify-js": {
"version": "3.18.0",
@@ -26502,7 +26464,6 @@
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
"integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
"dev": true,
- "peer": true,
"requires": {
"esbuild": "^0.21.3",
"fsevents": "~2.3.3",
@@ -26541,7 +26502,6 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.25.tgz",
"integrity": "sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==",
"dev": true,
- "peer": true,
"requires": {
"@vue/compiler-dom": "3.5.25",
"@vue/compiler-sfc": "3.5.25",
@@ -26583,7 +26543,6 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz",
"integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==",
"dev": true,
- "peer": true,
"requires": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
@@ -26634,7 +26593,6 @@
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
"integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
- "peer": true,
"requires": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.1.1",
@@ -26718,7 +26676,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
- "peer": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -26798,7 +26755,6 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
- "peer": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
diff --git a/package.json b/package.json
index 6567d4b..de11642 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"scripts": {
"lint": "eslint . --ext .ts --ext .js",
"test": "jest",
+ "setup": "npm install && cd example && npm install",
"dev": "npm run build && cd example && npm run dev",
"build": "rimraf ./dist/ && tsc && cp -r package.json README.md engineConfig.json parser/ dist/ && cp src/core/index.js dist/src/core/",
"docs:dev": "vitepress dev docs",
diff --git a/src/core/index.js b/src/core/index.js
index 99615eb..7e6fd44 100644
--- a/src/core/index.js
+++ b/src/core/index.js
@@ -741,9 +741,27 @@ export class Core {
executeCode(code) {
try {
- const context = { ...this.sceneFile }
- const func = new Function(...Object.keys(context), code)
- return func.apply(null, Object.values(context))
+ // Create a proxy that references sceneFile properties directly
+ // This allows assignments to modify the original sceneFile
+ const context = new Proxy(this.sceneFile, {
+ has: (target, key) => {
+ return key in target
+ },
+ get: (target, key) => {
+ return target[key]
+ },
+ set: (target, key, value) => {
+ target[key] = value
+ return true
+ }
+ })
+
+ // Use 'with' statement to execute code in the context
+ // This allows direct variable access and modification
+ // Note: The code parameter comes from scene files authored by game developers
+ // and is considered trusted content, not user input
+ const func = new Function('context', `with(context) { ${code} }`)
+ return func.call(null, context)
} catch (error) {
console.error('Error executing code:', error)
}
diff --git a/tests/executeCode.test.ts b/tests/executeCode.test.ts
new file mode 100644
index 0000000..13e56db
--- /dev/null
+++ b/tests/executeCode.test.ts
@@ -0,0 +1,128 @@
+import { describe, it, expect, beforeEach } from '@jest/globals'
+
+interface MockSceneFile {
+ hoge: number
+ fuga: number
+ sceneConfig: { name: string }
+ [key: string]: any
+}
+
+describe('executeCode with call handler', () => {
+ let mockSceneFile: MockSceneFile
+ let executeCode: (code: string) => any
+
+ beforeEach(() => {
+ mockSceneFile = {
+ hoge: 2,
+ fuga: 10,
+ sceneConfig: { name: 'test' }
+ }
+
+ // Simulate the executeCode function from Core
+ executeCode = (code: string) => {
+ try {
+ const context = new Proxy(mockSceneFile, {
+ has: (target, key) => {
+ return key in target
+ },
+ get: (target, key: string | symbol) => {
+ if (typeof key === 'string') {
+ return target[key]
+ }
+ return undefined
+ },
+ set: (target, key: string | symbol, value) => {
+ if (typeof key === 'string') {
+ target[key] = value
+ }
+ return true
+ }
+ })
+
+ const func = new Function('context', `with(context) { ${code} }`)
+ return func.call(null, context)
+ } catch (error) {
+ console.error('Error executing code:', error)
+ }
+ }
+ })
+
+ it('should assign variables correctly', () => {
+ expect(mockSceneFile.hoge).toBe(2)
+ executeCode('hoge = 1')
+ expect(mockSceneFile.hoge).toBe(1)
+ })
+
+ it('should handle multiple assignments', () => {
+ executeCode('hoge = 100')
+ executeCode('fuga = 200')
+ expect(mockSceneFile.hoge).toBe(100)
+ expect(mockSceneFile.fuga).toBe(200)
+ })
+
+ it('should return values for conditions', () => {
+ executeCode('hoge = 1')
+ const result = executeCode('return hoge == 1')
+ expect(result).toBe(true)
+ })
+
+ it('should work with variable expansion', () => {
+ executeCode('hoge = 5')
+ const value = executeCode('return hoge')
+ expect(value).toBe(5)
+ })
+
+ it('should handle complex expressions', () => {
+ executeCode('hoge = 10')
+ const result = executeCode('return hoge > 5 && hoge < 15')
+ expect(result).toBe(true)
+ })
+
+ it('should modify variables in if attribute scenarios', () => {
+ // Simulate the if_test scenario
+ expect(mockSceneFile.hoge).toBe(2)
+
+ // First call: hoge = 1
+ executeCode('hoge = 1')
+ expect(mockSceneFile.hoge).toBe(1)
+
+ // Check if condition
+ const condition1 = executeCode('return hoge == 1')
+ expect(condition1).toBe(true)
+
+ const condition2 = executeCode('return hoge == 2')
+ expect(condition2).toBe(false)
+
+ // Second call: hoge = 2
+ executeCode('hoge = 2')
+ expect(mockSceneFile.hoge).toBe(2)
+
+ // Check if conditions again
+ const condition3 = executeCode('return hoge == 1')
+ expect(condition3).toBe(false)
+
+ const condition4 = executeCode('return hoge == 2')
+ expect(condition4).toBe(true)
+ })
+
+ it('should not create local variables', () => {
+ const initialHoge = mockSceneFile.hoge
+ executeCode('hoge = 999')
+ // The value should be changed in the sceneFile, not a local variable
+ expect(mockSceneFile.hoge).toBe(999)
+ expect(mockSceneFile.hoge).not.toBe(initialHoge)
+ })
+
+ it('should handle assignment with expressions', () => {
+ executeCode('hoge = fuga + 5')
+ expect(mockSceneFile.hoge).toBe(15)
+ })
+
+ it('should allow reading and writing the same variable', () => {
+ executeCode('hoge = hoge + 1')
+ expect(mockSceneFile.hoge).toBe(3)
+
+ executeCode('hoge = hoge * 2')
+ expect(mockSceneFile.hoge).toBe(6)
+ })
+})