@famibee/skynovel 2.0.2 → 2.0.4

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 (121) hide show
  1. package/dist/Button.js +36 -34
  2. package/dist/Button.js.map +1 -1
  3. package/dist/CallStack.js +11 -6
  4. package/dist/CallStack.js.map +1 -1
  5. package/dist/CmnInterface.js +13 -11
  6. package/dist/CmnInterface.js.map +1 -1
  7. package/dist/CmnLib.js +58 -56
  8. package/dist/CmnLib.js.map +1 -1
  9. package/dist/Config.js +9 -7
  10. package/dist/Config.js.map +1 -1
  11. package/dist/ConfigBase.js +52 -49
  12. package/dist/ConfigBase.js.map +1 -1
  13. package/dist/DebugMng.js +9 -6
  14. package/dist/DebugMng.js.map +1 -1
  15. package/dist/EventListenerCtn.js +6 -4
  16. package/dist/EventListenerCtn.js.map +1 -1
  17. package/dist/EventMng.js +522 -417
  18. package/dist/EventMng.js.map +1 -1
  19. package/dist/Grammar.js +22 -20
  20. package/dist/Grammar.js.map +1 -1
  21. package/dist/GrpLayer.js +58 -57
  22. package/dist/GrpLayer.js.map +1 -1
  23. package/dist/Layer.js +66 -64
  24. package/dist/Layer.js.map +1 -1
  25. package/dist/LayerMng.js +461 -441
  26. package/dist/LayerMng.js.map +1 -1
  27. package/dist/Main.js +69 -67
  28. package/dist/Main.js.map +1 -1
  29. package/dist/PropParser.js +23 -19
  30. package/dist/PropParser.js.map +1 -1
  31. package/dist/Reading.js +422 -418
  32. package/dist/Reading.js.map +1 -1
  33. package/dist/RubySpliter.js +4 -2
  34. package/dist/RubySpliter.js.map +1 -1
  35. package/dist/ScriptIterator.js +374 -370
  36. package/dist/ScriptIterator.js.map +1 -1
  37. package/dist/SndBuf.js +643 -622
  38. package/dist/SndBuf.js.map +1 -1
  39. package/dist/SoundMng.js +59 -60
  40. package/dist/SoundMng.js.map +1 -1
  41. package/dist/SpritesMng.js +135 -129
  42. package/dist/SpritesMng.js.map +1 -1
  43. package/dist/SysBase.js +1019 -955
  44. package/dist/SysBase.js.map +1 -1
  45. package/dist/TxtLayer.js +558 -551
  46. package/dist/TxtLayer.js.map +1 -1
  47. package/dist/Variable.js +47 -45
  48. package/dist/Variable.js.map +1 -1
  49. package/dist/chunk.js +11 -9
  50. package/dist/gamepad.js +396 -660
  51. package/dist/gamepad.js.map +1 -1
  52. package/dist/pixi.js +3044 -3648
  53. package/dist/pixi.js.map +1 -1
  54. package/dist/platform.js +6 -4
  55. package/dist/platform.js.map +1 -1
  56. package/dist/rolldown-runtime.js +20 -0
  57. package/dist/web.js +106 -590
  58. package/dist/web.js.map +1 -1
  59. package/dist_app/Button.js +36 -34
  60. package/dist_app/Button.js.map +1 -1
  61. package/dist_app/CallStack.js +11 -6
  62. package/dist_app/CallStack.js.map +1 -1
  63. package/dist_app/CmnInterface.js +13 -11
  64. package/dist_app/CmnInterface.js.map +1 -1
  65. package/dist_app/CmnLib.js +58 -56
  66. package/dist_app/CmnLib.js.map +1 -1
  67. package/dist_app/Config.js +9 -7
  68. package/dist_app/Config.js.map +1 -1
  69. package/dist_app/ConfigBase.js +52 -49
  70. package/dist_app/ConfigBase.js.map +1 -1
  71. package/dist_app/DebugMng.js +9 -6
  72. package/dist_app/DebugMng.js.map +1 -1
  73. package/dist_app/EventListenerCtn.js +6 -4
  74. package/dist_app/EventListenerCtn.js.map +1 -1
  75. package/dist_app/EventMng.js +522 -417
  76. package/dist_app/EventMng.js.map +1 -1
  77. package/dist_app/Grammar.js +22 -20
  78. package/dist_app/Grammar.js.map +1 -1
  79. package/dist_app/GrpLayer.js +58 -57
  80. package/dist_app/GrpLayer.js.map +1 -1
  81. package/dist_app/Layer.js +66 -64
  82. package/dist_app/Layer.js.map +1 -1
  83. package/dist_app/LayerMng.js +461 -441
  84. package/dist_app/LayerMng.js.map +1 -1
  85. package/dist_app/Main.js +69 -67
  86. package/dist_app/Main.js.map +1 -1
  87. package/dist_app/PropParser.js +23 -19
  88. package/dist_app/PropParser.js.map +1 -1
  89. package/dist_app/Reading.js +422 -418
  90. package/dist_app/Reading.js.map +1 -1
  91. package/dist_app/RubySpliter.js +4 -2
  92. package/dist_app/RubySpliter.js.map +1 -1
  93. package/dist_app/ScriptIterator.js +374 -370
  94. package/dist_app/ScriptIterator.js.map +1 -1
  95. package/dist_app/SndBuf.js +643 -622
  96. package/dist_app/SndBuf.js.map +1 -1
  97. package/dist_app/SoundMng.js +59 -60
  98. package/dist_app/SoundMng.js.map +1 -1
  99. package/dist_app/SpritesMng.js +135 -129
  100. package/dist_app/SpritesMng.js.map +1 -1
  101. package/dist_app/SysBase.js +1019 -955
  102. package/dist_app/SysBase.js.map +1 -1
  103. package/dist_app/TxtLayer.js +558 -551
  104. package/dist_app/TxtLayer.js.map +1 -1
  105. package/dist_app/Variable.js +47 -45
  106. package/dist_app/Variable.js.map +1 -1
  107. package/dist_app/app.js +62 -63
  108. package/dist_app/app.js.map +1 -1
  109. package/dist_app/appMain.js +1 -21
  110. package/dist_app/appMain.js.map +1 -1
  111. package/dist_app/chunk.js +11 -9
  112. package/dist_app/gamepad.js +396 -660
  113. package/dist_app/gamepad.js.map +1 -1
  114. package/dist_app/pixi.js +2028 -1990
  115. package/dist_app/pixi.js.map +1 -1
  116. package/dist_app/platform.js +6 -4
  117. package/dist_app/platform.js.map +1 -1
  118. package/dist_app/preload.js +1 -1
  119. package/dist_app/preload.js.map +1 -1
  120. package/dist_app/rolldown-runtime.js +20 -0
  121. package/package.json +20 -47
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigBase.js","names":["sys: T_SysRoots","#existsBreakline","#existsBreakpage","hFn2Ext: {[fn: string]: string}","#REG_PATH","aRet :T_Exts[]","o :T_Exts","o: T_Exts"],"sources":["../src/sn/ConfigBase.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2022-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {int} from './CmnLib';\n\nexport const enum SEARCH_PATH_ARG_EXT {\t// #searchPath 使用時、第二引数用\n\tDEFAULT\t= '',\n\tSP_GSM\t= 'png|jpg|jpeg|json|svg|webp|mp4|webm',\n\tSCRIPT\t= 'sn|ssn',\n\tFONT\t= 'woff2|woff|otf|ttf',\n\tSOUND\t= 'mp3|m4a|ogg|aac|flac|wav',\n\tHTML\t= 'htm|html',\n\tCSS\t\t=\t'css',\n\tSN\t\t=\t'sn',\n\n\tTST_PNGPNG_\t= 'png|png_',\n\tTST_HH\t\t= 'hh',\n\tTST_EEE\t\t= 'eee',\n\tTST_GGG\t\t= 'ggg',\n\tTST_PNGXML\t= 'png|xml',\n}\n\n\nexport type T_CFG_RAW = {\n\tbook\t: {\n\t\ttitle\t\t: string,\t// 作品タイトル\n\t\tcreator\t\t: string,\t// 著作者\n\t\tcre_url\t\t: string,\t// 連絡先URL\n\t\tpublisher\t: string,\t// 出版者\n\t\tpub_url\t\t: string,\t// 出版社URL\n\t\tdetail\t\t: string,\t// 内容紹介\n\t\tversion\t\t: string,\t// version\n\t},\n\tsave_ns?\t: string,\n\twindow?\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: number,\n\t\theight\t: number,\n\t},\n\tlog?\t: {max_len: number},\t// プレイヤーが読んだ文章を読み返せる履歴の長さ\n\tinit\t: {\n\t\tbg_color\t\t\t: string | number,\t// 背景色\n\t\ttagch_msecwait\t\t: number,\t// 通常文字表示待ち時間(未読/既読)\n\t\tauto_msecpagewait\t: number,\t// 自動文字表示、行待ち時間(未読/既読)\n\t\tescape\t\t\t\t: string,\t// エスケープ文字\n\t},\n\tdebug\t: {\t// デバッグ情報\n\t\tdevtool\t\t: boolean,\n\t\tdumpHtm\t\t: boolean,\t// テキストレイヤ:HTML部分をファイル出力するか\n\t\ttoken\t\t: boolean,\n\t\ttag\t\t\t: boolean,\n\t\tputCh\t\t: boolean,\n\t\tdebugLog\t: boolean,\n\t\tbaseTx\t\t: boolean,\n\t\tmasume\t\t: boolean,\t// テキストレイヤ:ガイドマス目を表示するか\n\t\tvariable\t: boolean,\n\t},\n\tcode\t: {[fold_nm: string]: boolean,},\t// 暗号化しないフォルダ\n\tdebuger_token\t: string,\t// デバッガとの接続トークン\n}\nexport type T_CFG = T_CFG_RAW & {\n\tsave_ns\t\t: string,\n\twindow\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: number,\n\t\theight\t: number,\n\t},\n\tlog\t\t: {max_len: number},\t// プレイヤーが読んだ文章を読み返せる履歴の長さ\n}\n\nexport function creCFG(): T_CFG {return {\n\tsave_ns\t\t: '',\t\t// 扱うセーブデータを一意に識別するキーワード文字列\n\twindow\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: 300,\n\t\theight\t: 300,\n\t},\n\tbook\t: {\t\t// プロジェクトの詳細情報です\n\t\ttitle\t\t: '',\t//作品タイトル\n\t\tcreator\t\t: '',\t//著作者。同人ならペンネーム\n\t\tcre_url\t\t: '',\t//著作者URL。ツイッターやメール、サイトなど\n\t\tpublisher\t: '',\t//出版社。同人ならサークル名\n\t\tpub_url\t\t: '',\t//出版社URL。無ければ省略します\n\t\tdetail\t\t: '',\t// 内容紹介。端的に記入\n\t\tversion\t\t: '1.0',\n\t},\n\tlog\t\t: {max_len: 64},\t// プレイヤーが読んだ文章を読み返せる履歴のページ数\n\tinit\t: {\n\t\tbg_color\t\t\t: '#000000',\t// 背景色\n\t\ttagch_msecwait\t\t: 10,\t// 通常文字表示待ち時間(未読/既読)\n\t\tauto_msecpagewait\t: 3500,\t// 自動文字表示、行クリック待ち時間(未読/既読)\n\t\tescape\t\t\t\t: '',\t// エスケープ文字\n\t},\n\tdebug\t: {\n\t\tdevtool\t\t: false,\n\t\tdumpHtm\t\t: false,\n\t\ttoken\t\t: false,\n\t\ttag\t\t\t: false,\n\t\tputCh\t\t: false,\n\t\tdebugLog\t: false,\n\t\tbaseTx\t\t: false,\n\t\tmasume\t\t: false,\t// テキストレイヤ:ガイドマス目を表示するか\n\t\tvariable\t: false,\n\t},\n\tcode\t: {},\t// 暗号化しないフォルダ\n\tdebuger_token\t: '',\t\t// デバッガとの接続トークン\n}}\n\n\nexport type T_Exts = {\n\t':cnt'?\t\t\t: number;\n} & {\n\t[ext: string]\t: string;\t// pp\n};\nexport type T_Fn2Path = { [fn: string]: T_Exts; };\n\nexport type T_SEARCHPATH = (fn: string, extptn?: SEARCH_PATH_ARG_EXT)=> string;\nexport type T_Config = {\n\toCfg\t\t: T_CFG;\n\theadNs\t\t: string;\n\tsearchPath\t: T_SEARCHPATH;\n\tmatchPath\t: (fnptn: string, extptn?: SEARCH_PATH_ARG_EXT)=> readonly T_Exts[];\n\taddPath\t\t: (fn: string, h_exts: T_Exts)=> void;\n}\n\nexport type T_SysRoots = {\n\tdec(ext: string, tx: string): Promise<string>;\n\tdecAB(ab: ArrayBuffer): Promise<HTMLImageElement | HTMLVideoElement | ArrayBuffer>;\n\n\targ: T_HSysBaseArg;\n\tfetch(url: string): Promise<Response>;\t// ハッシュ値作成ロード用\n\thash(str: string): string;\n}\nexport type T_HSysBaseArg = {\n\tcur\t\t: string;\n\tcrypto\t: boolean;\n\tdip?\t: string;\n}\n\n\nexport class ConfigBase implements T_Config {\n\toCfg\t= creCFG();\n\n\t\t\t\tuserFnTail\t\t= '';\t// 4tst public\n\tprotected\thPathFn2Exts\t: T_Fn2Path\t= {};\n\n\tprotected\tconstructor(readonly sys: T_SysRoots) {}\n\n\t//\tMain.generate() -> Config.generate() -> Config.load() ->\n\tprotected\tasync load(oCfg: T_CFG_RAW) {\n\t\t// this.oCfg = {...this.oCfg, ...oCfg};\t// 一階層目でコピーしてしまう\n\t\tthis.oCfg.save_ns = oCfg.save_ns ?? this.oCfg.save_ns;\n\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tthis.oCfg.window.width = oCfg.window.width;\n\t\tthis.oCfg.window.height = oCfg.window.height;\n\n\t\tthis.oCfg.book = {...this.oCfg.book, ...oCfg.book};\n\n\t\tthis.oCfg.log.max_len = oCfg.log?.max_len ?? this.oCfg.log.max_len;\n\n\t\tthis.oCfg.init = {...this.oCfg.init, ...oCfg.init};\n\n\t\tthis.oCfg.debug = {...this.oCfg.debug, ...oCfg.debug};\n\n\t\tthis.oCfg.debuger_token = oCfg.debuger_token;\n\n\n\t\t// path.json ロード\n\t\tconst fn = this.sys.arg.cur +'path.json';\n\t\tconst res = await this.sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst src = await res.text();\n\t\tconst oJs = <T_Fn2Path>JSON.parse(await this.sys.dec(fn, src));\n\t\tfor (const [nm, v] of Object.entries(oJs)) {\n\t\t\tconst h = this.hPathFn2Exts[nm] = v;\n\t\t\tfor (const [ext, w] of Object.entries(h)) {\n\t\t\t\tif (ext !== ':cnt') h[ext] = this.sys.arg.cur + <string>w;\n\t\t\t}\n\t\t}\n\n\t\tthis.#existsBreakline = this.matchPath('^breakline$', SEARCH_PATH_ARG_EXT.SP_GSM).length > 0;\n\t\tthis.#existsBreakpage = this.matchPath('^breakpage$', SEARCH_PATH_ARG_EXT.SP_GSM).length > 0;\n\n\t\t// ファイル改竄チェック\n\t\tconst hFn2Ext: {[fn: string]: string}\t= {};\n\t\tif (this.sys.arg.crypto)\n\t\tfor (const [fn0, hExts] of Object.entries(this.hPathFn2Exts)) {\n\t\t\tfor (const [ext, pp] of Object.entries(hExts)) {\n\t\t\t\tif (! ext.startsWith(':')) {hFn2Ext[fn0] = ext; continue}\n\t\t\t\tif (! ext.endsWith(':id')) continue;\n\n\t\t\t\tconst hp = (<string>pp).slice((<string>pp).lastIndexOf('/') +1);\n\t\t\t\tconst fn = hExts[ext.slice(0, -10)] ?? '';\n\t\t\t\tconst res = await this.sys.fetch(fn);\n\t\t\t\tconst src = await res.text();\n\t\t\t\tconst hf = this.sys.hash(src);\n\t\t\t\tif (hp !== hf) throw `ファイル改竄エラーです fn:${fn}`;\n\t\t\t}\n\t\t}\n\t\t// 出力・副作用なしなのでコメントアウト\n\t\t// else for (const [fn0, hExts] of Object.entries(this.hPathFn2Exts)) {\n\t\t// \tfor (const ext of Object.keys(hExts)) {\n\t\t// \t\tif (! ext.startsWith(':')) hFn2Ext[fn0] = ext;\n\t\t// \t}\n\t\t// }\n\t}\n\t#existsBreakline = false;\n\tget existsBreakline(): boolean {return this.#existsBreakline}\n\t#existsBreakpage = false;\n\tget existsBreakpage(): boolean {return this.#existsBreakpage}\n\n\tget headNs() {return `skynovel.${this.oCfg.save_ns} - `}\n\n\treadonly\t#REG_PATH = /([^/\\s]+)\\.([^\\d]\\w+)/;\n\t\t// 4 match 498 step(~1ms) https://regex101.com/r/tpVgmI/1\n\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (! fn) throw '[searchPath] fnが空です';\n\t\tif (fn.startsWith('http://')) return fn;\n\n\t\tconst a = fn.match(this.#REG_PATH);\n\t\tlet fn0 = a ?a[1] ?? '' :fn;\n\t\tconst ext = a ?a[2] :'';\n\t\tif (this.userFnTail) {\n\t\t\tconst utn = fn0 +'@@'+ this.userFnTail;\n\t\t\tif (utn in this.hPathFn2Exts) {\n\t\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) fn0 = utn;\n\t\t\t\telse for (const e3 of Object.keys(this.hPathFn2Exts[utn] ?? {})) {\n\t\t\t\t\tif (`|${extptn}|`.includes(`|${e3}|`)) {fn0 = utn; break}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst h_exts = this.hPathFn2Exts[fn0];\n\t\tif (! h_exts) throw `サーチパスに存在しないファイル【${fn}】です`;\n\n\t\tif (! ext) {\t// fnに拡張子が含まれていない\n\t\t\t//\textのどれかでサーチ(ファイル名サーチ→拡張子群にextが含まれるか)\n\t\t\tconst hcnt = int(h_exts[':cnt']);\n\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) {\n\t\t\t\tif (hcnt > 1) throw `指定ファイル【${fn}】が複数マッチします。サーチ対象拡張子群【${extptn}】で絞り込むか、ファイル名を個別にして下さい。`;\n\n\t\t\t\treturn fn;\n\t\t\t}\n\n\t\t\tconst search_exts = `|${extptn}|`;\n\t\t\tif (hcnt > 1) {\n\t\t\t\tlet cnt = 0;\n\t\t\t\tfor (const e2 of Object.keys(h_exts)) {\n\t\t\t\t\tif (! search_exts.includes(`|${e2}|`)) continue;\n\t\t\t\t\tif (++cnt > 1) throw `指定ファイル【${fn}】が複数マッチします。サーチ対象拡張子群【${extptn}】で絞り込むか、ファイル名を個別にして下さい。`;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const [ext, pp] of Object.entries(h_exts)) {\n\t\t\t\tif (search_exts.includes(`|${ext}|`)) return <string>pp;\n\t\t\t}\n\t\t\tthrow `サーチ対象拡張子群【${extptn}】にマッチするファイルがサーチパスに存在しません。探索ファイル名=【${fn}】`;\n\t\t}\n\n\t\t// fnに拡張子xが含まれている\n\t\t//\tファイル名サーチ→拡張子群にxが含まれるか\n\t\tif (extptn !== SEARCH_PATH_ARG_EXT.DEFAULT && ! `|${extptn}|`.includes(`|${ext}|`)) {\n\t\t\tthrow `指定ファイルの拡張子【${ext}】は、サーチ対象拡張子群【${extptn}】にマッチしません。探索ファイル名=【${fn}】`;\n\t\t}\n\n\t\tconst ret = h_exts[ext];\n\t\tif (! ret) throw `サーチパスに存在しない拡張子【${ext}】です。探索ファイル名=【${fn}】、サーチ対象拡張子群【${extptn}】`;\n\n\t\treturn ret;\n\t}\n\n\tmatchPath(fnptn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): readonly T_Exts[] {\n\t\tconst aRet :T_Exts[] = [];\n\t\tconst regPtn = new RegExp(fnptn);\n\t\tconst regExt = new RegExp(extptn);\n\t\tfor (const [fn, h_exts] of Object.entries(this.hPathFn2Exts)) {\n\t\t\tif (fn.search(regPtn) === -1) continue;\n\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) {aRet.push(h_exts); continue}\n\n\t\t\tconst o :T_Exts = {};\n\t\t\tlet isa = false;\n\t\t\tfor (const ext of Object.keys(h_exts)) {\n\t\t\t\tif (ext.search(regExt) === -1) continue;\n\n\t\t\t\to[ext] = fn;\n\t\t\t\tisa = true;\n\t\t\t}\n\t\t\tif (isa) aRet.push(o);\n\t\t}\n\t\treturn aRet;\n\t}\n\n\taddPath(fn: string, h_exts: T_Exts) {\n\t\tconst o: T_Exts = {};\n\t\tfor (const [ext, v] of Object.entries(h_exts)) {\n\t\t\to[ext] = (ext.startsWith(':') ?'' :this.sys.arg.cur) + String(v);\n\t\t}\n\t\tthis.hPathFn2Exts[fn] = o;\n\t}\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ConfigBase.js","names":["#existsBreakline","#existsBreakpage","#REG_PATH"],"sources":["../src/sn/ConfigBase.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2022-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {int} from './CmnLib';\n\nexport const enum SEARCH_PATH_ARG_EXT {\t// #searchPath 使用時、第二引数用\n\tDEFAULT\t= '',\n\tSP_GSM\t= 'png|jpg|jpeg|json|svg|webp|mp4|webm',\n\tSCRIPT\t= 'sn|ssn',\n\tFONT\t= 'woff2|woff|otf|ttf',\n\tSOUND\t= 'mp3|m4a|ogg|aac|flac|wav',\n\tHTML\t= 'htm|html',\n\tCSS\t\t=\t'css',\n\tSN\t\t=\t'sn',\n\n\tTST_PNGPNG_\t= 'png|png_',\n\tTST_HH\t\t= 'hh',\n\tTST_EEE\t\t= 'eee',\n\tTST_GGG\t\t= 'ggg',\n\tTST_PNGXML\t= 'png|xml',\n}\n\n\nexport type T_CFG_RAW = {\n\tbook\t: {\n\t\ttitle\t\t: string,\t// 作品タイトル\n\t\tcreator\t\t: string,\t// 著作者\n\t\tcre_url\t\t: string,\t// 連絡先URL\n\t\tpublisher\t: string,\t// 出版者\n\t\tpub_url\t\t: string,\t// 出版社URL\n\t\tdetail\t\t: string,\t// 内容紹介\n\t\tversion\t\t: string,\t// version\n\t},\n\tsave_ns?\t: string,\n\twindow?\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: number,\n\t\theight\t: number,\n\t},\n\tlog?\t: {max_len: number},\t// プレイヤーが読んだ文章を読み返せる履歴の長さ\n\tinit\t: {\n\t\tbg_color\t\t\t: string | number,\t// 背景色\n\t\ttagch_msecwait\t\t: number,\t// 通常文字表示待ち時間(未読/既読)\n\t\tauto_msecpagewait\t: number,\t// 自動文字表示、行待ち時間(未読/既読)\n\t\tescape\t\t\t\t: string,\t// エスケープ文字\n\t},\n\tdebug\t: {\t// デバッグ情報\n\t\tdevtool\t\t: boolean,\n\t\tdumpHtm\t\t: boolean,\t// テキストレイヤ:HTML部分をファイル出力するか\n\t\ttoken\t\t: boolean,\n\t\ttag\t\t\t: boolean,\n\t\tputCh\t\t: boolean,\n\t\tdebugLog\t: boolean,\n\t\tbaseTx\t\t: boolean,\n\t\tmasume\t\t: boolean,\t// テキストレイヤ:ガイドマス目を表示するか\n\t\tvariable\t: boolean,\n\t},\n\tcode\t: {[fold_nm: string]: boolean,},\t// 暗号化しないフォルダ\n\tdebuger_token\t: string,\t// デバッガとの接続トークン\n}\nexport type T_CFG = T_CFG_RAW & {\n\tsave_ns\t\t: string,\n\twindow\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: number,\n\t\theight\t: number,\n\t},\n\tlog\t\t: {max_len: number},\t// プレイヤーが読んだ文章を読み返せる履歴の長さ\n}\n\nexport function creCFG(): T_CFG {return {\n\tsave_ns\t\t: '',\t\t// 扱うセーブデータを一意に識別するキーワード文字列\n\twindow\t: {\t\t// アプリケーションウインドウサイズ\n\t\twidth\t: 300,\n\t\theight\t: 300,\n\t},\n\tbook\t: {\t\t// プロジェクトの詳細情報です\n\t\ttitle\t\t: '',\t//作品タイトル\n\t\tcreator\t\t: '',\t//著作者。同人ならペンネーム\n\t\tcre_url\t\t: '',\t//著作者URL。ツイッターやメール、サイトなど\n\t\tpublisher\t: '',\t//出版社。同人ならサークル名\n\t\tpub_url\t\t: '',\t//出版社URL。無ければ省略します\n\t\tdetail\t\t: '',\t// 内容紹介。端的に記入\n\t\tversion\t\t: '1.0',\n\t},\n\tlog\t\t: {max_len: 64},\t// プレイヤーが読んだ文章を読み返せる履歴のページ数\n\tinit\t: {\n\t\tbg_color\t\t\t: '#000000',\t// 背景色\n\t\ttagch_msecwait\t\t: 10,\t// 通常文字表示待ち時間(未読/既読)\n\t\tauto_msecpagewait\t: 3500,\t// 自動文字表示、行クリック待ち時間(未読/既読)\n\t\tescape\t\t\t\t: '',\t// エスケープ文字\n\t},\n\tdebug\t: {\n\t\tdevtool\t\t: false,\n\t\tdumpHtm\t\t: false,\n\t\ttoken\t\t: false,\n\t\ttag\t\t\t: false,\n\t\tputCh\t\t: false,\n\t\tdebugLog\t: false,\n\t\tbaseTx\t\t: false,\n\t\tmasume\t\t: false,\t// テキストレイヤ:ガイドマス目を表示するか\n\t\tvariable\t: false,\n\t},\n\tcode\t: {},\t// 暗号化しないフォルダ\n\tdebuger_token\t: '',\t\t// デバッガとの接続トークン\n}}\n\n\nexport type T_Exts = {\n\t':cnt'?\t\t\t: number;\n} & {\n\t[ext: string]\t: string;\t// pp\n};\nexport type T_Fn2Path = { [fn: string]: T_Exts; };\n\nexport type T_SEARCHPATH = (fn: string, extptn?: SEARCH_PATH_ARG_EXT)=> string;\nexport type T_Config = {\n\toCfg\t\t: T_CFG;\n\theadNs\t\t: string;\n\tsearchPath\t: T_SEARCHPATH;\n\tmatchPath\t: (fnptn: string, extptn?: SEARCH_PATH_ARG_EXT)=> readonly T_Exts[];\n\taddPath\t\t: (fn: string, h_exts: T_Exts)=> void;\n}\n\nexport type T_SysRoots = {\n\tdec(ext: string, tx: string): Promise<string>;\n\tdecAB(ab: ArrayBuffer): Promise<HTMLImageElement | HTMLVideoElement | ArrayBuffer>;\n\n\targ: T_HSysBaseArg;\n\tfetch(url: string): Promise<Response>;\t// ハッシュ値作成ロード用\n\thash(str: string): string;\n}\nexport type T_HSysBaseArg = {\n\tcur\t\t: string;\n\tcrypto\t: boolean;\n\tdip?\t: string;\n}\n\n\nexport class ConfigBase implements T_Config {\n\toCfg\t= creCFG();\n\n\t\t\t\tuserFnTail\t\t= '';\t// 4tst public\n\tprotected\thPathFn2Exts\t: T_Fn2Path\t= {};\n\n\tprotected\tconstructor(readonly sys: T_SysRoots) {}\n\n\t//\tMain.generate() -> Config.generate() -> Config.load() ->\n\tprotected\tasync load(oCfg: T_CFG_RAW) {\n\t\t// this.oCfg = {...this.oCfg, ...oCfg};\t// 一階層目でコピーしてしまう\n\t\tthis.oCfg.save_ns = oCfg.save_ns ?? this.oCfg.save_ns;\n\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tthis.oCfg.window.width = oCfg.window.width;\n\t\tthis.oCfg.window.height = oCfg.window.height;\n\n\t\tthis.oCfg.book = {...this.oCfg.book, ...oCfg.book};\n\n\t\tthis.oCfg.log.max_len = oCfg.log?.max_len ?? this.oCfg.log.max_len;\n\n\t\tthis.oCfg.init = {...this.oCfg.init, ...oCfg.init};\n\n\t\tthis.oCfg.debug = {...this.oCfg.debug, ...oCfg.debug};\n\n\t\tthis.oCfg.debuger_token = oCfg.debuger_token;\n\n\n\t\t// path.json ロード\n\t\tconst fn = this.sys.arg.cur +'path.json';\n\t\tconst res = await this.sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst src = await res.text();\n\t\tconst oJs = <T_Fn2Path>JSON.parse(await this.sys.dec(fn, src));\n\t\tfor (const [nm, v] of Object.entries(oJs)) {\n\t\t\tconst h = this.hPathFn2Exts[nm] = v;\n\t\t\tfor (const [ext, w] of Object.entries(h)) {\n\t\t\t\tif (ext !== ':cnt') h[ext] = this.sys.arg.cur + <string>w;\n\t\t\t}\n\t\t}\n\n\t\tthis.#existsBreakline = this.matchPath('^breakline$', SEARCH_PATH_ARG_EXT.SP_GSM).length > 0;\n\t\tthis.#existsBreakpage = this.matchPath('^breakpage$', SEARCH_PATH_ARG_EXT.SP_GSM).length > 0;\n\n\t\t// ファイル改竄チェック\n\t\tconst hFn2Ext: {[fn: string]: string}\t= {};\n\t\tif (this.sys.arg.crypto)\n\t\tfor (const [fn0, hExts] of Object.entries(this.hPathFn2Exts)) {\n\t\t\tfor (const [ext, pp] of Object.entries(hExts)) {\n\t\t\t\tif (! ext.startsWith(':')) {hFn2Ext[fn0] = ext; continue}\n\t\t\t\tif (! ext.endsWith(':id')) continue;\n\n\t\t\t\tconst hp = (<string>pp).slice((<string>pp).lastIndexOf('/') +1);\n\t\t\t\tconst fn = hExts[ext.slice(0, -10)] ?? '';\n\t\t\t\tconst res = await this.sys.fetch(fn);\n\t\t\t\tconst src = await res.text();\n\t\t\t\tconst hf = this.sys.hash(src);\n\t\t\t\tif (hp !== hf) throw `ファイル改竄エラーです fn:${fn}`;\n\t\t\t}\n\t\t}\n\t\t// 出力・副作用なしなのでコメントアウト\n\t\t// else for (const [fn0, hExts] of Object.entries(this.hPathFn2Exts)) {\n\t\t// \tfor (const ext of Object.keys(hExts)) {\n\t\t// \t\tif (! ext.startsWith(':')) hFn2Ext[fn0] = ext;\n\t\t// \t}\n\t\t// }\n\t}\n\t#existsBreakline = false;\n\tget existsBreakline(): boolean {return this.#existsBreakline}\n\t#existsBreakpage = false;\n\tget existsBreakpage(): boolean {return this.#existsBreakpage}\n\n\tget headNs() {return `skynovel.${this.oCfg.save_ns} - `}\n\n\treadonly\t#REG_PATH = /([^/\\s]+)\\.([^\\d]\\w+)/;\n\t\t// 4 match 498 step(~1ms) https://regex101.com/r/tpVgmI/1\n\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (! fn) throw '[searchPath] fnが空です';\n\t\tif (fn.startsWith('http://')) return fn;\n\n\t\tconst a = fn.match(this.#REG_PATH);\n\t\tlet fn0 = a ?a[1] ?? '' :fn;\n\t\tconst ext = a ?a[2] :'';\n\t\tif (this.userFnTail) {\n\t\t\tconst utn = fn0 +'@@'+ this.userFnTail;\n\t\t\tif (utn in this.hPathFn2Exts) {\n\t\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) fn0 = utn;\n\t\t\t\telse for (const e3 of Object.keys(this.hPathFn2Exts[utn] ?? {})) {\n\t\t\t\t\tif (`|${extptn}|`.includes(`|${e3}|`)) {fn0 = utn; break}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst h_exts = this.hPathFn2Exts[fn0];\n\t\tif (! h_exts) throw `サーチパスに存在しないファイル【${fn}】です`;\n\n\t\tif (! ext) {\t// fnに拡張子が含まれていない\n\t\t\t//\textのどれかでサーチ(ファイル名サーチ→拡張子群にextが含まれるか)\n\t\t\tconst hcnt = int(h_exts[':cnt']);\n\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) {\n\t\t\t\tif (hcnt > 1) throw `指定ファイル【${fn}】が複数マッチします。サーチ対象拡張子群【${extptn}】で絞り込むか、ファイル名を個別にして下さい。`;\n\n\t\t\t\treturn fn;\n\t\t\t}\n\n\t\t\tconst search_exts = `|${extptn}|`;\n\t\t\tif (hcnt > 1) {\n\t\t\t\tlet cnt = 0;\n\t\t\t\tfor (const e2 of Object.keys(h_exts)) {\n\t\t\t\t\tif (! search_exts.includes(`|${e2}|`)) continue;\n\t\t\t\t\tif (++cnt > 1) throw `指定ファイル【${fn}】が複数マッチします。サーチ対象拡張子群【${extptn}】で絞り込むか、ファイル名を個別にして下さい。`;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const [ext, pp] of Object.entries(h_exts)) {\n\t\t\t\tif (search_exts.includes(`|${ext}|`)) return <string>pp;\n\t\t\t}\n\t\t\tthrow `サーチ対象拡張子群【${extptn}】にマッチするファイルがサーチパスに存在しません。探索ファイル名=【${fn}】`;\n\t\t}\n\n\t\t// fnに拡張子xが含まれている\n\t\t//\tファイル名サーチ→拡張子群にxが含まれるか\n\t\tif (extptn !== SEARCH_PATH_ARG_EXT.DEFAULT && ! `|${extptn}|`.includes(`|${ext}|`)) {\n\t\t\tthrow `指定ファイルの拡張子【${ext}】は、サーチ対象拡張子群【${extptn}】にマッチしません。探索ファイル名=【${fn}】`;\n\t\t}\n\n\t\tconst ret = h_exts[ext];\n\t\tif (! ret) throw `サーチパスに存在しない拡張子【${ext}】です。探索ファイル名=【${fn}】、サーチ対象拡張子群【${extptn}】`;\n\n\t\treturn ret;\n\t}\n\n\tmatchPath(fnptn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): readonly T_Exts[] {\n\t\tconst aRet :T_Exts[] = [];\n\t\tconst regPtn = new RegExp(fnptn);\n\t\tconst regExt = new RegExp(extptn);\n\t\tfor (const [fn, h_exts] of Object.entries(this.hPathFn2Exts)) {\n\t\t\tif (fn.search(regPtn) === -1) continue;\n\t\t\tif (extptn === SEARCH_PATH_ARG_EXT.DEFAULT) {aRet.push(h_exts); continue}\n\n\t\t\tconst o :T_Exts = {};\n\t\t\tlet isa = false;\n\t\t\tfor (const ext of Object.keys(h_exts)) {\n\t\t\t\tif (ext.search(regExt) === -1) continue;\n\n\t\t\t\to[ext] = fn;\n\t\t\t\tisa = true;\n\t\t\t}\n\t\t\tif (isa) aRet.push(o);\n\t\t}\n\t\treturn aRet;\n\t}\n\n\taddPath(fn: string, h_exts: T_Exts) {\n\t\tconst o: T_Exts = {};\n\t\tfor (const [ext, v] of Object.entries(h_exts)) {\n\t\t\to[ext] = (ext.startsWith(':') ?'' :this.sys.arg.cur) + String(v);\n\t\t}\n\t\tthis.hPathFn2Exts[fn] = o;\n\t}\n\n}\n"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- import { t as CmnLib, u as getDateStr } from "./CmnLib.js";
2
- var DebugMng = class n {
1
+ import { t as e, u as t } from "./CmnLib.js";
2
+ //#region src/sn/DebugMng.ts
3
+ var n = class n {
4
+ sys;
3
5
  static #e;
4
6
  static #t;
5
7
  static #n;
@@ -16,7 +18,7 @@ var DebugMng = class n {
16
18
  #i = !0;
17
19
  #a(r) {
18
20
  let i = "";
19
- return this.#i && (this.#i = !1, i = `== ${CmnLib.plat_desc} ==\n`), this.sys.appendFile(this.sys.path_downloads + "log.txt", `${i}--- ${getDateStr("-", "_", "")} [fn:${n.#e.scriptFn} line:${String(n.#e.lineNum)}] prj:${this.sys.arg.cur}\n${r.text || `(text is ${String(r.text)})`}\n`), !1;
21
+ return this.#i && (this.#i = !1, i = `== ${e.plat_desc} ==\n`), this.sys.appendFile(this.sys.path_downloads + "log.txt", `${i}--- ${t("-", "_", "")} [fn:${n.#e.scriptFn} line:${String(n.#e.lineNum)}] prj:${this.sys.arg.cur}\n${r.text || `(text is ${String(r.text)})`}\n`), !1;
20
22
  }
21
23
  #o(e) {
22
24
  return n.myTrace(e.text || `(text is ${String(e.text)})`, "I"), !1;
@@ -25,7 +27,7 @@ var DebugMng = class n {
25
27
  let r = `{${n}} ` + t, i = "";
26
28
  switch (n) {
27
29
  case "D":
28
- i = `color:#${CmnLib.isDarkMode ? "49F" : "05A"};`;
30
+ i = `color:#${e.isDarkMode ? "49F" : "05A"};`;
29
31
  break;
30
32
  case "W":
31
33
  i = "color:#FF8800;";
@@ -49,7 +51,7 @@ var DebugMng = class n {
49
51
  let a = "";
50
52
  switch (r) {
51
53
  case "D":
52
- a = `color:#${CmnLib.isDarkMode ? "49F" : "05A"};`;
54
+ a = `color:#${e.isDarkMode ? "49F" : "05A"};`;
53
55
  break;
54
56
  case "W":
55
57
  a = "color:#F80;";
@@ -87,6 +89,7 @@ var DebugMng = class n {
87
89
  n.#r.innerHTML += `<span style='${r}'>${e}</span><br/>`, n.#r.hidden = !1;
88
90
  };
89
91
  };
90
- export { DebugMng as t };
92
+ //#endregion
93
+ export { n as t };
91
94
 
92
95
  //# sourceMappingURL=DebugMng.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DebugMng.js","names":["#scrItr","#hTag","#title","#spnDbg","sys: SysBase","#st_trace","#log","#trace","#first","#dspDbg"],"sources":["../src/sn/DebugMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr} from './CmnLib';\nimport type {TArg, TTag, T_HTag} from './Grammar';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\n\nexport type T_TRACE = (txt: string, lvl?: 'D'|'W'|'F'|'E'|'I'|'ET')=> void;\n\n\nexport class DebugMng {\n\tstatic\t#scrItr\t: ScriptIterator;\n\tstatic\t#hTag\t: T_HTag;\n\tstatic\t#title\t: TTag;\n\tstatic\t#spnDbg\t: HTMLSpanElement;\n\n\tconstructor(private readonly sys: SysBase, hTag: T_HTag, scrItr: ScriptIterator) {\n\t\tDebugMng.#scrItr = scrItr;\n\t\tDebugMng.#hTag = hTag;\n\t\tDebugMng.#title = hTag.title;\n\t\tDebugMng.myTrace = DebugMng.#st_trace;\n\n\t\t//\tデバッグ・その他\n\t\t//hTag.clearsysvar\t// Variableで定義\t\t\t\t// システム変数の全消去\n\t\t//hTag.clearvar\t\t// Variableで定義\t\t\t\t// ゲーム変数の全消去\n\t\t//hTag.dump_lay\t\t// LayerMngで定義\t\t\t\t// レイヤのダンプ\n\t\t//hTag.dump_val\t\t// Variableで定義\t\t\t\t// 変数のダンプ\n\t\t//hTag.dump_stack\t// ScriptIteratorで定義\t\t\t// スタックのダンプ\n\t\thTag.log\t\t\t= o=> this.#log(o);\t\t\t\t// ログ出力\n\t\t//hTag.reload_script// ScriptIterator.ts内で定義\t// スクリプト再読込\n\t\thTag.trace\t\t\t= o=> this.#trace(o);\t\t\t// デバッグ表示へ出力\n\n\t\tDebugMng.#spnDbg = document.createElement('span');\n\t\tDebugMng.#spnDbg.hidden = true;\n\t\tDebugMng.#spnDbg.textContent = '';\n\t\tDebugMng.#spnDbg.style.cssText =\n\t\t`\tz-index: ${String(Number.MAX_SAFE_INTEGER)};\n\t\t\tposition: absolute; left: 0; top: 0;\n\t\t\tcolor: black;\n\t\t\tbackground-color: rgba(255, 255, 255, 0.7);`\n\t\tdocument.body.appendChild(DebugMng.#spnDbg);\n\t}\n\tdestroy() {\n\t\tDebugMng.#title = ()=> false;\n\t\tdocument.body.removeChild(DebugMng.#spnDbg);\n\n\t\tDebugMng.myTrace = DebugMng.trace_beforeNew;\n\t}\n\n\t// ログ出力\n\t#first = true;\n\t#log(hArg: TArg) {\n\t\tlet dat = '';\n\t\tif (this.#first) {\n\t\t\tthis.#first = false;\n\t\t\tdat = `== ${CmnLib.plat_desc} ==\\n`;\n\t\t}\n\t\tvoid this.sys.appendFile(\n\t\t\tthis.sys.path_downloads +'log.txt',\n\t\t\t`${dat}--- ${getDateStr('-', '_', '')\n\t\t\t} [fn:${DebugMng.#scrItr.scriptFn} line:${String(DebugMng.#scrItr.lineNum)\n\t\t\t}] prj:${this.sys.arg.cur\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\t}\\n${hArg.text || `(text is ${String(hArg.text)})`}\\n`,\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t#trace(hArg: TArg) {\n\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\tDebugMng.myTrace(hArg.text || `(text is ${String(hArg.text)})`, 'I');\n\n\t\treturn false;\n\t}\n\n\t// private禁止、galleryでエラーになる\n\tstatic readonly trace_beforeNew: T_TRACE = (txt, lvl = 'E')=> {\n\t\tlet mes = `{${lvl}} `+ txt;\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`;\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#FF8800;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#BB0000;';\tbreak;\n\t\t\tcase 'ET':\tthrow mes;\n\t\t\tcase 'E':\tconsole.error('%c'+ mes, 'color:#FF3300;');\treturn;\n\t\t\tdefault:\tsty = 'color:black;';\tmes = ' '+ mes;\n\t\t}\n\t\tconsole.info('%c'+ mes, sty);\n\t}\n\tstatic myTrace = DebugMng.trace_beforeNew;\n\tstatic strPos = ()=> DebugMng.#scrItr.lineNum > 0\n\t\t? `(fn:${DebugMng.#scrItr.scriptFn} line:${String(DebugMng.#scrItr.lineNum)}) `\n\t\t: '';\n\tstatic readonly\t#st_trace: T_TRACE = (txt, lvl = 'E')=> {\n\t\tlet mes = `{${lvl}} `+ DebugMng.strPos() + txt;\n\t\tDebugMng.#dspDbg(mes, lvl);\n\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`;\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#F80;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#B00;';\tbreak;\n\t\t\tcase 'ET':\n\t\t\tcase 'E':\tDebugMng.#title({text: txt});\n\t\t\t\t/*if (CmnLib.osName === \"AND\") {\n\t\t\t\t\tconst buf = \"mailto:foo@hoge.co.jp\"\n\t\t\t\t\t\t+ \"?subject=AIRNovel_ERR&body=\"\n\t\t\t\t\t\t+ CmnLib.escapeZenkaku(mes) + \"\\n\"\n\t\t\t\t\t\t+ \"※一部記号は全角表示しています。\";\n\t\t\t\t\tflash.net.navigateToURL(new URLRequest(buf));\n\t\t\t\t}*/\n\t\t\t\tthis.#hTag.dump_lay({});\n\t\t\t\tthis.#hTag.dump_val({});\n\t\t\t\tDebugMng.#scrItr.dumpErrForeLine();\n\t\t\t\tthis.#hTag.dump_stack({});\n\n\t\t\t\tif (lvl === 'ET') throw mes;\n\t\t\t\tconsole.error('%c'+ mes, 'color:#F30;');\treturn;\n\t\t\tdefault:\tsty = '';\tmes = ' '+ mes;\n\t\t}\n\t\tconsole.info('%c'+ mes, sty);\n\t}\n\n\tstatic readonly\t#dspDbg: T_TRACE = (mes, lvl)=> {\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = 'color:#05A;';\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#F80;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#B00;';\tbreak;\n\t\t\tcase 'ET':\n\t\t\tcase 'E':\tsty = 'color:#F30;';\tbreak;\n\t\t\tdefault:\tsty = '';\n\t\t}\n\t\tDebugMng.#spnDbg.innerHTML += `<span style='${sty}'>${mes}</span><br/>`;\n\t\tDebugMng.#spnDbg.hidden = false;\n\t};\n\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DebugMng.js","names":["#scrItr","#hTag","#title","#spnDbg","#st_trace","#log","#trace","#first","#dspDbg"],"sources":["../src/sn/DebugMng.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, getDateStr} from './CmnLib';\nimport type {TArg, TTag, T_HTag} from './Grammar';\nimport type {SysBase} from './SysBase';\nimport type {ScriptIterator} from './ScriptIterator';\n\nexport type T_TRACE = (txt: string, lvl?: 'D'|'W'|'F'|'E'|'I'|'ET')=> void;\n\n\nexport class DebugMng {\n\tstatic\t#scrItr\t: ScriptIterator;\n\tstatic\t#hTag\t: T_HTag;\n\tstatic\t#title\t: TTag;\n\tstatic\t#spnDbg\t: HTMLSpanElement;\n\n\tconstructor(private readonly sys: SysBase, hTag: T_HTag, scrItr: ScriptIterator) {\n\t\tDebugMng.#scrItr = scrItr;\n\t\tDebugMng.#hTag = hTag;\n\t\tDebugMng.#title = hTag.title;\n\t\tDebugMng.myTrace = DebugMng.#st_trace;\n\n\t\t//\tデバッグ・その他\n\t\t//hTag.clearsysvar\t// Variableで定義\t\t\t\t// システム変数の全消去\n\t\t//hTag.clearvar\t\t// Variableで定義\t\t\t\t// ゲーム変数の全消去\n\t\t//hTag.dump_lay\t\t// LayerMngで定義\t\t\t\t// レイヤのダンプ\n\t\t//hTag.dump_val\t\t// Variableで定義\t\t\t\t// 変数のダンプ\n\t\t//hTag.dump_stack\t// ScriptIteratorで定義\t\t\t// スタックのダンプ\n\t\thTag.log\t\t\t= o=> this.#log(o);\t\t\t\t// ログ出力\n\t\t//hTag.reload_script// ScriptIterator.ts内で定義\t// スクリプト再読込\n\t\thTag.trace\t\t\t= o=> this.#trace(o);\t\t\t// デバッグ表示へ出力\n\n\t\tDebugMng.#spnDbg = document.createElement('span');\n\t\tDebugMng.#spnDbg.hidden = true;\n\t\tDebugMng.#spnDbg.textContent = '';\n\t\tDebugMng.#spnDbg.style.cssText =\n\t\t`\tz-index: ${String(Number.MAX_SAFE_INTEGER)};\n\t\t\tposition: absolute; left: 0; top: 0;\n\t\t\tcolor: black;\n\t\t\tbackground-color: rgba(255, 255, 255, 0.7);`\n\t\tdocument.body.appendChild(DebugMng.#spnDbg);\n\t}\n\tdestroy() {\n\t\tDebugMng.#title = ()=> false;\n\t\tdocument.body.removeChild(DebugMng.#spnDbg);\n\n\t\tDebugMng.myTrace = DebugMng.trace_beforeNew;\n\t}\n\n\t// ログ出力\n\t#first = true;\n\t#log(hArg: TArg) {\n\t\tlet dat = '';\n\t\tif (this.#first) {\n\t\t\tthis.#first = false;\n\t\t\tdat = `== ${CmnLib.plat_desc} ==\\n`;\n\t\t}\n\t\tvoid this.sys.appendFile(\n\t\t\tthis.sys.path_downloads +'log.txt',\n\t\t\t`${dat}--- ${getDateStr('-', '_', '')\n\t\t\t} [fn:${DebugMng.#scrItr.scriptFn} line:${String(DebugMng.#scrItr.lineNum)\n\t\t\t}] prj:${this.sys.arg.cur\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\t}\\n${hArg.text || `(text is ${String(hArg.text)})`}\\n`,\n\t\t);\n\n\t\treturn false;\n\t}\n\n\t#trace(hArg: TArg) {\n\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\tDebugMng.myTrace(hArg.text || `(text is ${String(hArg.text)})`, 'I');\n\n\t\treturn false;\n\t}\n\n\t// private禁止、galleryでエラーになる\n\tstatic readonly trace_beforeNew: T_TRACE = (txt, lvl = 'E')=> {\n\t\tlet mes = `{${lvl}} `+ txt;\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`;\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#FF8800;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#BB0000;';\tbreak;\n\t\t\tcase 'ET':\tthrow mes;\n\t\t\tcase 'E':\tconsole.error('%c'+ mes, 'color:#FF3300;');\treturn;\n\t\t\tdefault:\tsty = 'color:black;';\tmes = ' '+ mes;\n\t\t}\n\t\tconsole.info('%c'+ mes, sty);\n\t}\n\tstatic myTrace = DebugMng.trace_beforeNew;\n\tstatic strPos = ()=> DebugMng.#scrItr.lineNum > 0\n\t\t? `(fn:${DebugMng.#scrItr.scriptFn} line:${String(DebugMng.#scrItr.lineNum)}) `\n\t\t: '';\n\tstatic readonly\t#st_trace: T_TRACE = (txt, lvl = 'E')=> {\n\t\tlet mes = `{${lvl}} `+ DebugMng.strPos() + txt;\n\t\tDebugMng.#dspDbg(mes, lvl);\n\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = `color:#${CmnLib.isDarkMode ?'49F' :'05A'};`;\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#F80;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#B00;';\tbreak;\n\t\t\tcase 'ET':\n\t\t\tcase 'E':\tDebugMng.#title({text: txt});\n\t\t\t\t/*if (CmnLib.osName === \"AND\") {\n\t\t\t\t\tconst buf = \"mailto:foo@hoge.co.jp\"\n\t\t\t\t\t\t+ \"?subject=AIRNovel_ERR&body=\"\n\t\t\t\t\t\t+ CmnLib.escapeZenkaku(mes) + \"\\n\"\n\t\t\t\t\t\t+ \"※一部記号は全角表示しています。\";\n\t\t\t\t\tflash.net.navigateToURL(new URLRequest(buf));\n\t\t\t\t}*/\n\t\t\t\tthis.#hTag.dump_lay({});\n\t\t\t\tthis.#hTag.dump_val({});\n\t\t\t\tDebugMng.#scrItr.dumpErrForeLine();\n\t\t\t\tthis.#hTag.dump_stack({});\n\n\t\t\t\tif (lvl === 'ET') throw mes;\n\t\t\t\tconsole.error('%c'+ mes, 'color:#F30;');\treturn;\n\t\t\tdefault:\tsty = '';\tmes = ' '+ mes;\n\t\t}\n\t\tconsole.info('%c'+ mes, sty);\n\t}\n\n\tstatic readonly\t#dspDbg: T_TRACE = (mes, lvl)=> {\n\t\tlet sty = '';\n\t\tswitch (lvl) {\n\t\t\tcase 'D':\tsty = 'color:#05A;';\tbreak;\n\t\t\tcase 'W':\tsty = 'color:#F80;';\tbreak;\n\t\t\tcase 'F':\tsty = 'color:#B00;';\tbreak;\n\t\t\tcase 'ET':\n\t\t\tcase 'E':\tsty = 'color:#F30;';\tbreak;\n\t\t\tdefault:\tsty = '';\n\t\t}\n\t\tDebugMng.#spnDbg.innerHTML += `<span style='${sty}'>${mes}</span><br/>`;\n\t\tDebugMng.#spnDbg.hidden = false;\n\t};\n\n}\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { v as import_eventemitter3 } from "./pixi.js";
2
- var EventListenerCtn = class {
1
+ import { v as e } from "./pixi.js";
2
+ //#region src/sn/EventListenerCtn.ts
3
+ var t = class {
3
4
  #e = [];
4
5
  add(t, n, r, i = {}) {
5
- if (t instanceof import_eventemitter3.default) {
6
+ if (t instanceof e.default) {
6
7
  t.on(n, r, i), this.#e.push(() => t.off(n, r, i));
7
8
  return;
8
9
  }
@@ -16,6 +17,7 @@ var EventListenerCtn = class {
16
17
  return this.#e.length === 0;
17
18
  }
18
19
  };
19
- export { EventListenerCtn as t };
20
+ //#endregion
21
+ export { t };
20
22
 
21
23
  //# sourceMappingURL=EventListenerCtn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventListenerCtn.js","names":["#aOffEvt"],"sources":["../src/sn/EventListenerCtn.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {utils} from 'pixi.js';\n\ntype IEmitter = utils.EventEmitter | {\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n\nexport class EventListenerCtn {\t// リソースリーク対策\n\t#aOffEvt: (()=> void)[]\t= [];\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tadd(ed: IEmitter, type: string, fnc: (e: any)=> void, ctx: AddEventListenerOptions = {}): void {\n\t\tif (ed instanceof utils.EventEmitter) {\n\t\t\ted.on(type, fnc, ctx);\n\t\t\tthis.#aOffEvt.push(()=> ed.off(type, fnc, ctx));\n\t\t\treturn;\n\t\t}\n\t\ted.addEventListener(type, fnc, ctx);\n\t\tthis.#aOffEvt.push(()=> ed.removeEventListener(type, fnc, {capture: ctx.capture ?? false}));\n\t}\n\n\tclear(): void {\n\t\tfor (const f of this.#aOffEvt) f();\n\t\tthis.#aOffEvt = [];\n\t}\n\n\tget\tisEmpty() {return this.#aOffEvt.length === 0}\n\n}\n"],"mappings":";AAeA,IAAa,mBAAb,MAA8B;CAC7B,KAA0B,EAAE;CAG5B,IAAI,GAAc,GAAc,GAAsB,IAA+B,EAAE,EAAQ;AAC9F,MAAI,aAAA,qBAAA,SAAkC;AAErC,GADA,EAAG,GAAG,GAAM,GAAK,EAAI,EACrB,MAAA,EAAc,WAAU,EAAG,IAAI,GAAM,GAAK,EAAI,CAAC;AAC/C;;AAGD,EADA,EAAG,iBAAiB,GAAM,GAAK,EAAI,EACnC,MAAA,EAAc,WAAU,EAAG,oBAAoB,GAAM,GAAK,EAAC,SAAS,EAAI,WAAW,IAAM,CAAC,CAAC;;CAG5F,QAAc;AACb,OAAK,IAAM,KAAK,MAAA,EAAe,IAAG;AAClC,QAAA,IAAgB,EAAE;;CAGnB,IAAI,UAAU;AAAC,SAAO,MAAA,EAAc,WAAW"}
1
+ {"version":3,"file":"EventListenerCtn.js","names":["#aOffEvt"],"sources":["../src/sn/EventListenerCtn.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {utils} from 'pixi.js';\n\ntype IEmitter = utils.EventEmitter | {\n\taddEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n\tremoveEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n\nexport class EventListenerCtn {\t// リソースリーク対策\n\t#aOffEvt: (()=> void)[]\t= [];\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tadd(ed: IEmitter, type: string, fnc: (e: any)=> void, ctx: AddEventListenerOptions = {}): void {\n\t\tif (ed instanceof utils.EventEmitter) {\n\t\t\ted.on(type, fnc, ctx);\n\t\t\tthis.#aOffEvt.push(()=> ed.off(type, fnc, ctx));\n\t\t\treturn;\n\t\t}\n\t\ted.addEventListener(type, fnc, ctx);\n\t\tthis.#aOffEvt.push(()=> ed.removeEventListener(type, fnc, {capture: ctx.capture ?? false}));\n\t}\n\n\tclear(): void {\n\t\tfor (const f of this.#aOffEvt) f();\n\t\tthis.#aOffEvt = [];\n\t}\n\n\tget\tisEmpty() {return this.#aOffEvt.length === 0}\n\n}\n"],"mappings":";;AAeA,IAAa,IAAb,MAA8B;CAC7B,KAA0B,CAAC;CAG3B,IAAI,GAAc,GAAc,GAAsB,IAA+B,CAAC,GAAS;EAC9F,IAAI,aAAA,EAAA,SAAkC;GAErC,AADA,EAAG,GAAG,GAAM,GAAK,CAAG,GACpB,KAAKA,GAAS,WAAU,EAAG,IAAI,GAAM,GAAK,CAAG,CAAC;GAC9C;EACD;EAEA,AADA,EAAG,iBAAiB,GAAM,GAAK,CAAG,GAClC,KAAKA,GAAS,WAAU,EAAG,oBAAoB,GAAM,GAAK,EAAC,SAAS,EAAI,WAAW,GAAK,CAAC,CAAC;CAC3F;CAEA,QAAc;EACb,KAAK,IAAM,KAAK,KAAKA,IAAU,EAAE;EACjC,KAAKA,KAAW,CAAC;CAClB;CAEA,IAAI,UAAU;EAAC,OAAO,KAAKA,GAAS,WAAW;CAAC;AAEjD"}