@famibee/skynovel 1.65.0 → 2.0.1

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 (176) hide show
  1. package/README.md +3 -3
  2. package/dist/Button.js +131 -163
  3. package/dist/Button.js.map +1 -1
  4. package/dist/CallStack.js +19 -22
  5. package/dist/CallStack.js.map +1 -1
  6. package/dist/CmnInterface.js +91 -0
  7. package/dist/CmnInterface.js.map +1 -0
  8. package/dist/CmnLib.js +94 -0
  9. package/dist/CmnLib.js.map +1 -0
  10. package/dist/Config.js +26 -0
  11. package/dist/Config.js.map +1 -0
  12. package/dist/ConfigBase.js +152 -0
  13. package/dist/ConfigBase.js.map +1 -0
  14. package/dist/DebugMng.js +89 -102
  15. package/dist/DebugMng.js.map +1 -1
  16. package/dist/EventListenerCtn.js +21 -0
  17. package/dist/EventListenerCtn.js.map +1 -0
  18. package/dist/EventMng.js +1435 -1577
  19. package/dist/EventMng.js.map +1 -1
  20. package/dist/Grammar.js +194 -0
  21. package/dist/Grammar.js.map +1 -0
  22. package/dist/GrpLayer.js +163 -195
  23. package/dist/GrpLayer.js.map +1 -1
  24. package/dist/Layer.js +260 -0
  25. package/dist/Layer.js.map +1 -0
  26. package/dist/LayerMng.js +810 -991
  27. package/dist/LayerMng.js.map +1 -1
  28. package/dist/Main.js +144 -393
  29. package/dist/Main.js.map +1 -1
  30. package/dist/PropParser.js +936 -834
  31. package/dist/PropParser.js.map +1 -1
  32. package/dist/Reading.js +917 -786
  33. package/dist/Reading.js.map +1 -1
  34. package/dist/RubySpliter.js +59 -92
  35. package/dist/RubySpliter.js.map +1 -1
  36. package/dist/ScriptIterator.js +805 -1034
  37. package/dist/ScriptIterator.js.map +1 -1
  38. package/dist/SndBuf.js +1097 -1332
  39. package/dist/SndBuf.js.map +1 -1
  40. package/dist/SoundMng.js +124 -135
  41. package/dist/SoundMng.js.map +1 -1
  42. package/dist/SpritesMng.js +220 -232
  43. package/dist/SpritesMng.js.map +1 -1
  44. package/dist/SysBase.js +1729 -0
  45. package/dist/SysBase.js.map +1 -0
  46. package/dist/TxtLayer.js +1212 -1397
  47. package/dist/TxtLayer.js.map +1 -1
  48. package/dist/Variable.js +398 -466
  49. package/dist/Variable.js.map +1 -1
  50. package/dist/chunk.js +18 -0
  51. package/dist/gamepad.js +723 -511
  52. package/dist/gamepad.js.map +1 -1
  53. package/dist/pixi.js +13422 -0
  54. package/dist/pixi.js.map +1 -0
  55. package/dist/platform.js +424 -369
  56. package/dist/platform.js.map +1 -1
  57. package/dist/sn/AnalyzeTagArg.d.ts +1 -1
  58. package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
  59. package/dist/sn/CmnInterface.d.ts +3 -1
  60. package/dist/sn/CmnInterface.d.ts.map +1 -1
  61. package/dist/sn/CmnLib.d.ts.map +1 -1
  62. package/dist/sn/CmnTween.d.ts +3 -3
  63. package/dist/sn/CmnTween.d.ts.map +1 -1
  64. package/dist/sn/EventMng.d.ts.map +1 -1
  65. package/dist/sn/Grammar.d.ts +1 -1
  66. package/dist/sn/Grammar.d.ts.map +1 -1
  67. package/dist/sn/PropParser.d.ts +2 -2
  68. package/dist/sn/PropParser.d.ts.map +1 -1
  69. package/dist/sn/Reading.d.ts +6 -0
  70. package/dist/sn/Reading.d.ts.map +1 -1
  71. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  72. package/dist/sn/SndBuf.d.ts +27 -16
  73. package/dist/sn/SndBuf.d.ts.map +1 -1
  74. package/dist/sn/SoundMng.d.ts +4 -1
  75. package/dist/sn/SoundMng.d.ts.map +1 -1
  76. package/dist/sn/SysBase.d.ts.map +1 -1
  77. package/dist/sn/TxtStage.d.ts +2 -1
  78. package/dist/sn/TxtStage.d.ts.map +1 -1
  79. package/dist/test/ValTest.d.ts +1 -1
  80. package/dist/test/ValTest.d.ts.map +1 -1
  81. package/dist/web.js +653 -8
  82. package/dist/web.js.map +1 -1
  83. package/dist_app/Button.js +131 -163
  84. package/dist_app/Button.js.map +1 -1
  85. package/dist_app/CallStack.js +19 -22
  86. package/dist_app/CallStack.js.map +1 -1
  87. package/dist_app/CmnInterface.js +91 -0
  88. package/dist_app/CmnInterface.js.map +1 -0
  89. package/dist_app/CmnLib.js +94 -0
  90. package/dist_app/CmnLib.js.map +1 -0
  91. package/dist_app/Config.js +26 -0
  92. package/dist_app/Config.js.map +1 -0
  93. package/dist_app/ConfigBase.js +152 -0
  94. package/dist_app/ConfigBase.js.map +1 -0
  95. package/dist_app/DebugMng.js +92 -0
  96. package/dist_app/DebugMng.js.map +1 -0
  97. package/dist_app/EventListenerCtn.js +21 -0
  98. package/dist_app/EventListenerCtn.js.map +1 -0
  99. package/dist_app/EventMng.js +1435 -1577
  100. package/dist_app/EventMng.js.map +1 -1
  101. package/dist_app/Grammar.js +194 -0
  102. package/dist_app/Grammar.js.map +1 -0
  103. package/dist_app/GrpLayer.js +163 -195
  104. package/dist_app/GrpLayer.js.map +1 -1
  105. package/dist_app/Layer.js +260 -0
  106. package/dist_app/Layer.js.map +1 -0
  107. package/dist_app/LayerMng.js +810 -991
  108. package/dist_app/LayerMng.js.map +1 -1
  109. package/dist_app/Main.js +144 -392
  110. package/dist_app/Main.js.map +1 -1
  111. package/dist_app/PropParser.js +936 -834
  112. package/dist_app/PropParser.js.map +1 -1
  113. package/dist_app/Reading.js +917 -786
  114. package/dist_app/Reading.js.map +1 -1
  115. package/dist_app/RubySpliter.js +59 -92
  116. package/dist_app/RubySpliter.js.map +1 -1
  117. package/dist_app/ScriptIterator.js +805 -1033
  118. package/dist_app/ScriptIterator.js.map +1 -1
  119. package/dist_app/SndBuf.js +1097 -1332
  120. package/dist_app/SndBuf.js.map +1 -1
  121. package/dist_app/SoundMng.js +124 -135
  122. package/dist_app/SoundMng.js.map +1 -1
  123. package/dist_app/SpritesMng.js +220 -231
  124. package/dist_app/SpritesMng.js.map +1 -1
  125. package/dist_app/SysBase.js +1729 -0
  126. package/dist_app/SysBase.js.map +1 -0
  127. package/dist_app/TxtLayer.js +1212 -1396
  128. package/dist_app/TxtLayer.js.map +1 -1
  129. package/dist_app/Variable.js +398 -466
  130. package/dist_app/Variable.js.map +1 -1
  131. package/dist_app/app.js +211 -8
  132. package/dist_app/app.js.map +1 -1
  133. package/dist_app/appMain.js +20 -21
  134. package/dist_app/appMain.js.map +1 -1
  135. package/dist_app/chunk.js +18 -0
  136. package/dist_app/gamepad.js +723 -511
  137. package/dist_app/gamepad.js.map +1 -1
  138. package/dist_app/pixi.js +11181 -0
  139. package/dist_app/pixi.js.map +1 -0
  140. package/dist_app/platform.js +424 -369
  141. package/dist_app/platform.js.map +1 -1
  142. package/dist_app/preload.js +2 -2
  143. package/dist_app/preload.js.map +1 -1
  144. package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
  145. package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
  146. package/dist_app/sn/CmnInterface.d.ts +3 -1
  147. package/dist_app/sn/CmnInterface.d.ts.map +1 -1
  148. package/dist_app/sn/CmnLib.d.ts.map +1 -1
  149. package/dist_app/sn/CmnTween.d.ts +3 -3
  150. package/dist_app/sn/CmnTween.d.ts.map +1 -1
  151. package/dist_app/sn/EventMng.d.ts.map +1 -1
  152. package/dist_app/sn/Grammar.d.ts +1 -1
  153. package/dist_app/sn/Grammar.d.ts.map +1 -1
  154. package/dist_app/sn/PropParser.d.ts +2 -2
  155. package/dist_app/sn/PropParser.d.ts.map +1 -1
  156. package/dist_app/sn/Reading.d.ts +6 -0
  157. package/dist_app/sn/Reading.d.ts.map +1 -1
  158. package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
  159. package/dist_app/sn/SndBuf.d.ts +27 -16
  160. package/dist_app/sn/SndBuf.d.ts.map +1 -1
  161. package/dist_app/sn/SoundMng.d.ts +4 -1
  162. package/dist_app/sn/SoundMng.d.ts.map +1 -1
  163. package/dist_app/sn/SysBase.d.ts.map +1 -1
  164. package/dist_app/sn/TxtStage.d.ts +2 -1
  165. package/dist_app/sn/TxtStage.d.ts.map +1 -1
  166. package/dist_app/test/ValTest.d.ts +1 -1
  167. package/dist_app/test/ValTest.d.ts.map +1 -1
  168. package/package.json +23 -13
  169. package/dist/CmnTween.js +0 -1005
  170. package/dist/CmnTween.js.map +0 -1
  171. package/dist/web2.js +0 -21644
  172. package/dist/web2.js.map +0 -1
  173. package/dist_app/CmnTween.js +0 -1005
  174. package/dist_app/CmnTween.js.map +0 -1
  175. package/dist_app/app2.js +0 -18547
  176. package/dist_app/app2.js.map +0 -1
package/dist/CmnLib.js ADDED
@@ -0,0 +1,94 @@
1
+ import { r as __toDynamicImportESM } from "./chunk.js";
2
+ function int(e) {
3
+ return parseInt(String(e), 10);
4
+ }
5
+ function uint(e) {
6
+ let g = parseInt(String(e), 10);
7
+ return g < 0 ? -g : g;
8
+ }
9
+ function getDateStr(e = "/", g = " ", _ = ":", v = "") {
10
+ let y = /* @__PURE__ */ new Date();
11
+ return String(y.getFullYear()) + e + String(100 + y.getMonth() + 1).slice(1, 3) + e + String(100 + y.getDate()).slice(1, 3) + g + String(100 + y.getHours()).slice(1, 3) + _ + String(100 + y.getMinutes()).slice(1, 3) + (v === "" ? "" : v + String(y.getMilliseconds()));
12
+ }
13
+ var css_key4del = "/* SKYNovel */";
14
+ function initStyle() {
15
+ let e = document.getElementsByTagName("head")[0], g = e.children.length;
16
+ for (let _ = g - 1; _ >= 0; --_) {
17
+ let g = e.children[_];
18
+ g instanceof HTMLStyleElement && g.innerText.startsWith(css_key4del) && e.removeChild(g);
19
+ }
20
+ }
21
+ function addStyle(e) {
22
+ let g = document.createElement("style");
23
+ g.innerHTML = css_key4del + e, document.getElementsByTagName("head")[0].appendChild(g);
24
+ }
25
+ const EVNM_BUTTON = "pointerdown", EVNM_CLICK = "pointerdown", EVNM_KEY = "keydown", RPN_COMP_CHIN = "compChIn";
26
+ function argChk_Num(e, g, _) {
27
+ let v = e[g];
28
+ if (!(g in e)) {
29
+ if (isNaN(_)) throw `[${e[":タグ名"] ?? ""}]属性 ${g} は必須です`;
30
+ return e[g] = _, _;
31
+ }
32
+ let y = String(v).startsWith("0x") ? parseInt(v) : parseFloat(v);
33
+ if (isNaN(y)) throw `[${e[":タグ名"] ?? ""}]属性 ${g} の値【${String(v)}】が数値ではありません`;
34
+ return e[g] = y, y;
35
+ }
36
+ function argChk_Boolean(e, g, _) {
37
+ if (!(g in e)) return e[g] = _, _;
38
+ let v = e[g];
39
+ if (v === null) return !1;
40
+ let y = String(v);
41
+ return e[g] = y === "false" ? !1 : !!y;
42
+ }
43
+ function parseColor(e) {
44
+ if (e.startsWith("#")) return parseInt(e.slice(1), 16);
45
+ let g = Number(e);
46
+ if (!isNaN(g)) return g;
47
+ if (e === "black") return 0;
48
+ CmnLib.cc4ColorName.fillStyle = e;
49
+ let _ = CmnLib.cc4ColorName.fillStyle;
50
+ if (_ === "#000000") throw `色名前 ${e} が異常です`;
51
+ return parseInt(_.slice(1), 16);
52
+ }
53
+ function argChk_Color(e, g, _) {
54
+ let v = e[g];
55
+ return v ? e[g] = parseColor(String(v)) : (e[g] = _, _);
56
+ }
57
+ var REG_ERRMES_JSON = /JSON at position (\d+)$/;
58
+ function mesErrJSON(e, g = "", _ = "") {
59
+ let v = (REG_ERRMES_JSON.exec(_) ?? ["", ""])[1];
60
+ return `[${e[":タグ名"] ?? ""}] ${g} 属性の解析エラー : ${_}
61
+ ${String(e[g])}${v ? `
62
+ ${"^".padStart(Number(v))}` : ""}`;
63
+ }
64
+ var REG_FN = /^[^/.]+$|[^/]+(?=\.)/;
65
+ function getFn(e) {
66
+ return (REG_FN.exec(e) ?? [""])[0];
67
+ }
68
+ var CmnLib = class g {
69
+ static async init() {
70
+ let g = await import("./platform.js").then(__toDynamicImportESM());
71
+ this.platform = JSON.stringify(g), this.plat_desc = g.description ?? "", this.isSafari = g.name === "Safari", this.isFirefox = g.name === "Firefox", this.isMac = (g.os?.family ?? "").includes("OS X"), this.isMobile = !/(Windows|OS X)/.test(g.os?.family ?? "");
72
+ }
73
+ static stageW = 0;
74
+ static stageH = 0;
75
+ static debugLog = !1;
76
+ static platform;
77
+ static plat_desc;
78
+ static isSafari;
79
+ static isFirefox;
80
+ static isMac;
81
+ static isMobile;
82
+ static hDip = {};
83
+ static isDbg = !1;
84
+ static isPackaged = !1;
85
+ static needClick2Play() {
86
+ return "AudioContext" in globalThis ? (g.#e = new globalThis.AudioContext(), g.needClick2Play = () => g.#e.state === "suspended") : g.needClick2Play = () => !1, g.needClick2Play();
87
+ }
88
+ static #e;
89
+ static isDarkMode = !1;
90
+ static cc4ColorName;
91
+ };
92
+ export { RPN_COMP_CHIN as a, argChk_Color as c, getFn as d, initStyle as f, uint as g, parseColor as h, EVNM_KEY as i, argChk_Num as l, mesErrJSON as m, EVNM_BUTTON as n, addStyle as o, int as p, EVNM_CLICK as r, argChk_Boolean as s, CmnLib as t, getDateStr as u };
93
+
94
+ //# sourceMappingURL=CmnLib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmnLib.js","names":["#ac"],"sources":["../src/sn/CmnLib.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 type {TArg} from './Grammar';\n\n// =============== Global\nexport function int(o: unknown): number {return parseInt(String(o), 10)}\nexport function uint(o: unknown): number {\n\tconst v = parseInt(String(o), 10);\n\treturn v < 0 ? -v : v;\n}\n\nexport function getDateStr(spl_dd = '/', spl_dt = ' ', spl_tt = ':', spl_ms = ''): string {\n\tconst now = new Date;\n\treturn String(now.getFullYear())\n\t\t+ spl_dd+ String(100 +now.getMonth() +1).slice(1, 3)\n\t\t+ spl_dd+ String(100 +now.getDate()).slice(1, 3)\n\t\t+ spl_dt+ String(100 +now.getHours()).slice(1, 3)\n\t\t+ spl_tt+ String(100 +now.getMinutes()).slice(1, 3)\n\t\t+ (spl_ms === '' ?'' :spl_ms+ String(now.getMilliseconds()));\n}\n\n\nconst\tcss_key4del\t= '/* SKYNovel */';\nexport function initStyle() {\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tconst he = document.getElementsByTagName('head')[0]!;\n\tconst len = he.children.length;\n\tfor (let i=len -1; i>=0; --i) {\n\t\tconst v = he.children[i];\n\t\tif (! (v instanceof HTMLStyleElement)) continue;\n\t\tif (! v.innerText.startsWith(css_key4del)) continue;\n\t\the.removeChild(v);\n\t}\n}\nexport function addStyle(style: string) {\n\tconst gs = document.createElement('style');\n\tgs.innerHTML = css_key4del + style;\n\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\tdocument.getElementsByTagName('head')[0]!.appendChild(gs);\n}\n\n\n\n// =============== EventMng\nexport const EVNM_BUTTON= 'pointerdown';\nexport const EVNM_CLICK\t= 'pointerdown';\nexport const EVNM_KEY\t= 'keydown';\n\nimport type {Container} from 'pixi.js';\nexport type IEvtMng = {\n\tbutton(hArg: TArg, ctnBtn: Container, normal: ()=> void, hover: ()=> boolean, clicked: ()=> void): void;\n\tunButton(em: Container): void;\n\tget\tisSkipping(): boolean;\n\thideHint(): void;\n\tcvsResize(): void;\n\n\tresvFlameEvent(body: HTMLBodyElement): void;\n}\n\n\n\n// =============== ScriptIterator\nexport\tconst\tRPN_COMP_CHIN = 'compChIn';\n\n\n\ntype T_HASH_Arg = {\n\t':タグ名'?\t: string;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t[name: string]: any;\n};\n\nexport\tfunction argChk_Num(hash: T_HASH_Arg, name: string, def: number): number {\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tconst v = hash[name];\n\tif (! (name in hash)) {\n\t\tif (isNaN(def)) throw `[${hash[':タグ名'] ?? ''}]属性 ${name} は必須です`;\n\n\t\thash[name] = def;\n\t\treturn def;\n\t}\n\n\tconst n = String(v).startsWith('0x')\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t? parseInt(v)\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\t\t: parseFloat(v);\n\tif (isNaN(n)) throw `[${hash[':タグ名'] ?? ''}]属性 ${name} の値【${String(v)}】が数値ではありません`;\n\n\thash[name] = n;\n\treturn n;\n}\n\n/*\n\tそれぞれの型を Boolean 型に変換した場合の値は以下のようになります。\n\n\tUndefiend \tfalse\n\tNull \t\tfalse\n\tBoolean \t変換前のオブジェクトと同じ\n\tNumber \t\t0 または NaN は false それ以外の値は true\n\tString \t\t空文字列は false それ以外の値は true\n\tObject \t\ttrue\n*/\nexport\tfunction argChk_Boolean(hash: T_HASH_Arg, name: string, def: boolean): boolean {\n\t//\tt-r-a-c-e(Boolean(null),Boolean(\"\"),Boolean(undefined),Boolean(\"0\"),Boolean(\"1\"),Boolean(\"true\"),Boolean(\"false\"),Boolean(\"あい\"));\n\t//\t[exec] false false false true true true true true\n\t/*console.log('%o %o %o %o %o %o %o %o',\n\t\tBoolean(null), Boolean(\"\"), Boolean(undefined), Boolean(\"0\"), Boolean(\"1\"),\n\t\tBoolean(\"true\"), Boolean(\"false\"), Boolean(\"あい\"));\n\t*/\n\n\t//if (! hArg[name]) return hArg[name] = def;\n\tif (! (name in hash)) {hash[name] = def; return def;}\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tconst v = hash[name];\n\tif (v === null) return false;\n\n\tconst v2 = String(v);\n\tconst ret = hash[name] = v2 === 'false'? false : Boolean(v2);\n\treturn ret;\n}\n\n\nexport function parseColor(v: string): number {\n\tif (v.startsWith('#')) return parseInt(v.slice(1), 16);\n\tconst n = Number(v);\n\tif (! isNaN(n)) return n;\t// 0, 0xffffff\n\n\tif (v === 'black') return 0;\n\tCmnLib.cc4ColorName.fillStyle = v;\n\tconst cc = CmnLib.cc4ColorName.fillStyle;\n\tif (cc === '#000000') throw `色名前 ${v} が異常です`;\n\n\treturn parseInt(cc.slice(1), 16);\n}\nexport\tfunction argChk_Color(hash: T_HASH_Arg, name: string, def: number): number {\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tconst v = hash[name];\n\tif (! v) {hash[name] = def; return def;}\n\n\tconst ret = hash[name] = parseColor(String(v));\n\treturn ret;\n}\n\n\nconst REG_ERRMES_JSON = /JSON at position (\\d+)$/;\n\t// Unexpected number in JSON at position\nexport\tfunction mesErrJSON(hArg: TArg, nm = '', mes = ''): string {\n\tconst col = (REG_ERRMES_JSON.exec(mes) ?? ['',''])[1];\n\treturn `[${hArg[':タグ名'] ?? ''}] ${nm} 属性の解析エラー : ${mes}\n${\n\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\tString(hArg[<keyof TArg>nm])\n}${col ?`\n${'^'.padStart(Number(col))}` :''}`;\n}\n\n\nconst REG_FN\t= /^[^/.]+$|[^/]+(?=\\.)/;\n\t// https://regex101.com/r/8sltIm/1\nexport\tfunction getFn(p: string) {return (REG_FN.exec(p) ?? [''])[0]}\n\nexport type T_DIP = {[name: string]: string};\n\n//import {isMobile} from 'pixi.js';\t\t// 使い物にならないことを確認済み\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class CmnLib {\n\tstatic\tasync\tinit() {\n\t\tconst p = await import('platform');\n\t\tthis.platform\t= JSON.stringify(p);\n\t\tthis.plat_desc\t= p.description ?? '';\n\t\tthis.isSafari\t= p.name === 'Safari';\n\t\tthis.isFirefox\t= p.name === 'Firefox';\n\t\tthis.isMac\t\t= (p.os?.family ?? '').includes('OS X');\n\t\tthis.isMobile\t= ! /(Windows|OS X)/.test(p.os?.family ?? '');\n\t}\n\n\tstatic\tstageW\t\t= 0;\n\tstatic\tstageH\t\t= 0;\n\tstatic\tdebugLog\t= false;\n\tstatic\tplatform\t: string;\n\tstatic\tplat_desc\t: string;\n\tstatic\tisSafari\t: boolean;\n\tstatic\tisFirefox\t: boolean;\n\tstatic\tisMac\t\t: boolean;\n\tstatic\tisMobile\t: boolean;\n\tstatic\thDip\t\t: T_DIP\t= {};\n\tstatic\tisDbg\t\t= false;\n\tstatic\tisPackaged\t= false;\n\n\tstatic\tneedClick2Play(): boolean {\n\t\tif ('AudioContext' in globalThis) {\n\t\t\tCmnLib.#ac = new globalThis.AudioContext;\n\t\t\tCmnLib.needClick2Play = ()=> CmnLib.#ac.state === 'suspended';\n\t\t}\n\t\telse CmnLib.needClick2Play = ()=> false;\n\n\t\treturn CmnLib.needClick2Play();\n\t}\n\tstatic\t#ac: AudioContext;\n\n\tstatic\tisDarkMode\t= false;\n\n\tstatic\tcc4ColorName: CanvasRenderingContext2D;\n\n}\n"],"mappings":"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"}
package/dist/Config.js ADDED
@@ -0,0 +1,26 @@
1
+ import { t as CmnLib } from "./CmnLib.js";
2
+ import { n as SEARCH_PATH_ARG_EXT, t as ConfigBase } from "./ConfigBase.js";
3
+ const PROTOCOL_USERDATA = "userdata:/", PROTOCOL_DL = "downloads:/";
4
+ var Config = class r extends ConfigBase {
5
+ static async generate(e) {
6
+ let t = new r(e), n = e.arg.cur + "prj.json", i = await e.fetch(n);
7
+ if (!i.ok) throw Error(i.statusText);
8
+ let a = await e.dec(n, await i.text());
9
+ return await t.load(JSON.parse(a)), t;
10
+ }
11
+ constructor(e) {
12
+ super(e), this.sys = e;
13
+ }
14
+ async load(t) {
15
+ return t.window ??= {
16
+ width: 300,
17
+ height: 300
18
+ }, CmnLib.stageW = t.window.width, CmnLib.stageH = t.window.height, CmnLib.debugLog = t.debug.debugLog, await CmnLib.init(), super.load(t);
19
+ }
20
+ searchPath(e, n = SEARCH_PATH_ARG_EXT.DEFAULT) {
21
+ return e.startsWith("downloads:/") ? this.sys.path_downloads + e.slice(11) : e.startsWith("userdata:/") ? this.sys.path_userdata + "storage/" + e.slice(10) : super.searchPath(e, n);
22
+ }
23
+ };
24
+ export { PROTOCOL_DL as n, PROTOCOL_USERDATA as r, Config as t };
25
+
26
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","names":["sys: SysBase"],"sources":["../src/sn/Config.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} from './CmnLib';\nimport type {SysBase} from './SysBase';\nimport {ConfigBase, SEARCH_PATH_ARG_EXT, type T_CFG_RAW} from './ConfigBase';\n\nexport const PROTOCOL_USERDATA\t= 'userdata:/';\nexport const PROTOCOL_DL\t\t= 'downloads:/';\n\n\nexport class Config extends ConfigBase {\n\tstatic\tasync\tgenerate(sys: SysBase) {\n\t\tconst c = new Config(sys);\n\t\tconst fn = sys.arg.cur +'prj.json';\n\t\tconst res = await sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst dec = await sys.dec(fn, await res.text());\n\t\tawait c.load(<T_CFG_RAW>JSON.parse(dec));\n\t\treturn c;\n\t}\n\n\tprotected\tconstructor(override readonly sys: SysBase) {super(sys)}\n\n\tprotected\toverride\tasync load(oCfg: T_CFG_RAW) {\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tCmnLib.stageW = oCfg.window.width;\n\t\tCmnLib.stageH = oCfg.window.height;\n\t\tCmnLib.debugLog = oCfg.debug.debugLog;\n\t\tawait CmnLib.init();\n\n\t\treturn super.load(oCfg);\n\t}\n\n\toverride\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (fn.startsWith(PROTOCOL_DL)) {\n\t\t\treturn this.sys.path_downloads + fn.slice(11);\n\t\t}\n\t\tif (fn.startsWith(PROTOCOL_USERDATA)) {\n\t\t\treturn this.sys.path_userdata + 'storage/'+ fn.slice(10);\n\t\t}\n\n\t\treturn super.searchPath(fn, extptn);\n\t}\n\n}\n"],"mappings":";;AAWA,MAAa,oBAAoB,cACpB,cAAe;AAG5B,IAAa,SAAb,MAAa,UAAe,WAAW;CACtC,aAAa,SAAS,GAAc;EACnC,IAAM,IAAI,IAAI,EAAO,EAAI,EACnB,IAAK,EAAI,IAAI,MAAK,YAClB,IAAM,MAAM,EAAI,MAAM,EAAG;AAC/B,MAAI,CAAE,EAAI,GAAI,OAAM,MAAM,EAAI,WAAW;EAEzC,IAAM,IAAM,MAAM,EAAI,IAAI,GAAI,MAAM,EAAI,MAAM,CAAC;AAE/C,SADA,MAAM,EAAE,KAAgB,KAAK,MAAM,EAAI,CAAC,EACjC;;CAGR,YAAsB,GAAgC;AAAd,EAAe,MAAM,EAAI,EAAzB,KAAA,MAAA;;CAExC,MAAyB,KAAK,GAAiB;AAO9C,SANA,EAAK,WAAW;GAAC,OAAO;GAAK,QAAQ;GAAI,EACzC,OAAO,SAAS,EAAK,OAAO,OAC5B,OAAO,SAAS,EAAK,OAAO,QAC5B,OAAO,WAAW,EAAK,MAAM,UAC7B,MAAM,OAAO,MAAM,EAEZ,MAAM,KAAK,EAAK;;CAGxB,WAAoB,GAAY,IAA8B,oBAAoB,SAAiB;AAQlG,SAPI,EAAG,WAAA,cAAuB,GACtB,KAAK,IAAI,iBAAiB,EAAG,MAAM,GAAG,GAE1C,EAAG,WAAA,aAA6B,GAC5B,KAAK,IAAI,gBAAgB,aAAY,EAAG,MAAM,GAAG,GAGlD,MAAM,WAAW,GAAI,EAAO"}
@@ -0,0 +1,152 @@
1
+ import { p as int } from "./CmnLib.js";
2
+ let SEARCH_PATH_ARG_EXT = /* @__PURE__ */ function(e) {
3
+ return e.DEFAULT = "", e.SP_GSM = "png|jpg|jpeg|json|svg|webp|mp4|webm", e.SCRIPT = "sn|ssn", e.FONT = "woff2|woff|otf|ttf", e.SOUND = "mp3|m4a|ogg|aac|flac|wav", e.HTML = "htm|html", e.CSS = "css", e.SN = "sn", e.TST_PNGPNG_ = "png|png_", e.TST_HH = "hh", e.TST_EEE = "eee", e.TST_GGG = "ggg", e.TST_PNGXML = "png|xml", e;
4
+ }({});
5
+ function creCFG() {
6
+ return {
7
+ save_ns: "",
8
+ window: {
9
+ width: 300,
10
+ height: 300
11
+ },
12
+ book: {
13
+ title: "",
14
+ creator: "",
15
+ cre_url: "",
16
+ publisher: "",
17
+ pub_url: "",
18
+ detail: "",
19
+ version: "1.0"
20
+ },
21
+ log: { max_len: 64 },
22
+ init: {
23
+ bg_color: "#000000",
24
+ tagch_msecwait: 10,
25
+ auto_msecpagewait: 3500,
26
+ escape: ""
27
+ },
28
+ debug: {
29
+ devtool: !1,
30
+ dumpHtm: !1,
31
+ token: !1,
32
+ tag: !1,
33
+ putCh: !1,
34
+ debugLog: !1,
35
+ baseTx: !1,
36
+ masume: !1,
37
+ variable: !1
38
+ },
39
+ code: {},
40
+ debuger_token: ""
41
+ };
42
+ }
43
+ var ConfigBase = class {
44
+ oCfg = creCFG();
45
+ userFnTail = "";
46
+ hPathFn2Exts = {};
47
+ constructor(e) {
48
+ this.sys = e;
49
+ }
50
+ async load(e) {
51
+ this.oCfg.save_ns = e.save_ns ?? this.oCfg.save_ns, e.window ??= {
52
+ width: 300,
53
+ height: 300
54
+ }, this.oCfg.window.width = e.window.width, this.oCfg.window.height = e.window.height, this.oCfg.book = {
55
+ ...this.oCfg.book,
56
+ ...e.book
57
+ }, this.oCfg.log.max_len = e.log?.max_len ?? this.oCfg.log.max_len, this.oCfg.init = {
58
+ ...this.oCfg.init,
59
+ ...e.init
60
+ }, this.oCfg.debug = {
61
+ ...this.oCfg.debug,
62
+ ...e.debug
63
+ }, this.oCfg.debuger_token = e.debuger_token;
64
+ let n = this.sys.arg.cur + "path.json", r = await this.sys.fetch(n);
65
+ if (!r.ok) throw Error(r.statusText);
66
+ let i = await r.text(), a = JSON.parse(await this.sys.dec(n, i));
67
+ for (let [e, t] of Object.entries(a)) {
68
+ let n = this.hPathFn2Exts[e] = t;
69
+ for (let [e, t] of Object.entries(n)) e !== ":cnt" && (n[e] = this.sys.arg.cur + t);
70
+ }
71
+ this.#e = this.matchPath("^breakline$", SEARCH_PATH_ARG_EXT.SP_GSM).length > 0, this.#t = this.matchPath("^breakpage$", SEARCH_PATH_ARG_EXT.SP_GSM).length > 0;
72
+ let o = {};
73
+ if (this.sys.arg.crypto) for (let [e, t] of Object.entries(this.hPathFn2Exts)) for (let [n, r] of Object.entries(t)) {
74
+ if (!n.startsWith(":")) {
75
+ o[e] = n;
76
+ continue;
77
+ }
78
+ if (!n.endsWith(":id")) continue;
79
+ let i = r.slice(r.lastIndexOf("/") + 1), a = t[n.slice(0, -10)] ?? "", s = await (await this.sys.fetch(a)).text();
80
+ if (i !== this.sys.hash(s)) throw `ファイル改竄エラーです fn:${a}`;
81
+ }
82
+ }
83
+ #e = !1;
84
+ get existsBreakline() {
85
+ return this.#e;
86
+ }
87
+ #t = !1;
88
+ get existsBreakpage() {
89
+ return this.#t;
90
+ }
91
+ get headNs() {
92
+ return `skynovel.${this.oCfg.save_ns} - `;
93
+ }
94
+ #n = /([^/\s]+)\.([^\d]\w+)/;
95
+ searchPath(n, r = SEARCH_PATH_ARG_EXT.DEFAULT) {
96
+ if (!n) throw "[searchPath] fnが空です";
97
+ if (n.startsWith("http://")) return n;
98
+ let i = n.match(this.#n), a = i ? i[1] ?? "" : n, o = i ? i[2] : "";
99
+ if (this.userFnTail) {
100
+ let e = a + "@@" + this.userFnTail;
101
+ if (e in this.hPathFn2Exts) {
102
+ if (r === SEARCH_PATH_ARG_EXT.DEFAULT) a = e;
103
+ else for (let t of Object.keys(this.hPathFn2Exts[e] ?? {})) if (`|${r}|`.includes(`|${t}|`)) {
104
+ a = e;
105
+ break;
106
+ }
107
+ }
108
+ }
109
+ let s = this.hPathFn2Exts[a];
110
+ if (!s) throw `サーチパスに存在しないファイル【${n}】です`;
111
+ if (!o) {
112
+ let i = int(s[":cnt"]);
113
+ if (r === SEARCH_PATH_ARG_EXT.DEFAULT) {
114
+ if (i > 1) throw `指定ファイル【${n}】が複数マッチします。サーチ対象拡張子群【${r}】で絞り込むか、ファイル名を個別にして下さい。`;
115
+ return n;
116
+ }
117
+ let a = `|${r}|`;
118
+ if (i > 1) {
119
+ let e = 0;
120
+ for (let t of Object.keys(s)) if (a.includes(`|${t}|`) && ++e > 1) throw `指定ファイル【${n}】が複数マッチします。サーチ対象拡張子群【${r}】で絞り込むか、ファイル名を個別にして下さい。`;
121
+ }
122
+ for (let [e, t] of Object.entries(s)) if (a.includes(`|${e}|`)) return t;
123
+ throw `サーチ対象拡張子群【${r}】にマッチするファイルがサーチパスに存在しません。探索ファイル名=【${n}】`;
124
+ }
125
+ if (r !== SEARCH_PATH_ARG_EXT.DEFAULT && !`|${r}|`.includes(`|${o}|`)) throw `指定ファイルの拡張子【${o}】は、サーチ対象拡張子群【${r}】にマッチしません。探索ファイル名=【${n}】`;
126
+ let c = s[o];
127
+ if (!c) throw `サーチパスに存在しない拡張子【${o}】です。探索ファイル名=【${n}】、サーチ対象拡張子群【${r}】`;
128
+ return c;
129
+ }
130
+ matchPath(e, n = SEARCH_PATH_ARG_EXT.DEFAULT) {
131
+ let r = [], i = new RegExp(e), a = new RegExp(n);
132
+ for (let [e, o] of Object.entries(this.hPathFn2Exts)) {
133
+ if (e.search(i) === -1) continue;
134
+ if (n === SEARCH_PATH_ARG_EXT.DEFAULT) {
135
+ r.push(o);
136
+ continue;
137
+ }
138
+ let s = {}, c = !1;
139
+ for (let t of Object.keys(o)) t.search(a) !== -1 && (s[t] = e, c = !0);
140
+ c && r.push(s);
141
+ }
142
+ return r;
143
+ }
144
+ addPath(e, t) {
145
+ let n = {};
146
+ for (let [e, r] of Object.entries(t)) n[e] = (e.startsWith(":") ? "" : this.sys.arg.cur) + String(r);
147
+ this.hPathFn2Exts[e] = n;
148
+ }
149
+ };
150
+ export { SEARCH_PATH_ARG_EXT as n, ConfigBase as t };
151
+
152
+ //# sourceMappingURL=ConfigBase.js.map
@@ -0,0 +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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"}
package/dist/DebugMng.js CHANGED
@@ -1,105 +1,92 @@
1
- import { a as c, f as o } from "./web2.js";
2
- class t {
3
- constructor(a, e, s) {
4
- this.sys = a, t.#s = s, t.#e = e, t.#r = e.title, t.myTrace = t.#i, e.log = (r) => this.#c(r), e.trace = (r) => this.#o(r), t.#t = document.createElement("span"), t.#t.hidden = !0, t.#t.textContent = "", t.#t.style.cssText = ` z-index: ${String(Number.MAX_SAFE_INTEGER)};
1
+ import { t as CmnLib, u as getDateStr } from "./CmnLib.js";
2
+ var DebugMng = class n {
3
+ static #e;
4
+ static #t;
5
+ static #n;
6
+ static #r;
7
+ constructor(e, t, r) {
8
+ this.sys = e, n.#e = r, n.#t = t, n.#n = t.title, n.myTrace = n.#s, t.log = (e) => this.#a(e), t.trace = (e) => this.#o(e), n.#r = document.createElement("span"), n.#r.hidden = !0, n.#r.textContent = "", n.#r.style.cssText = ` z-index: ${String(2 ** 53 - 1)};
5
9
  position: absolute; left: 0; top: 0;
6
10
  color: black;
7
- background-color: rgba(255, 255, 255, 0.7);`, document.body.appendChild(t.#t);
8
- }
9
- static #s;
10
- static #e;
11
- static #r;
12
- static #t;
13
- destroy() {
14
- t.#r = () => !1, document.body.removeChild(t.#t), t.myTrace = t.trace_beforeNew;
15
- }
16
- // ログ出力
17
- #a = !0;
18
- #c(a) {
19
- let e = "";
20
- return this.#a && (this.#a = !1, e = `== ${c.plat_desc} ==
21
- `), this.sys.appendFile(
22
- this.sys.path_downloads + "log.txt",
23
- `${e}--- ${o("-", "_", "")} [fn:${t.#s.scriptFn} line:${String(t.#s.lineNum)}] prj:${this.sys.arg.cur}
24
- ${a.text || `(text is ${String(a.text)})`}
25
- `
26
- ), !1;
27
- }
28
- #o(a) {
29
- return t.myTrace(a.text || `(text is ${String(a.text)})`, "I"), !1;
30
- }
31
- // private禁止、galleryでエラーになる
32
- static trace_beforeNew = (a, e = "E") => {
33
- let s = `{${e}} ` + a, r = "";
34
- switch (e) {
35
- case "D":
36
- r = `color:#${c.isDarkMode ? "49F" : "05A"};`;
37
- break;
38
- case "W":
39
- r = "color:#FF8800;";
40
- break;
41
- case "F":
42
- r = "color:#BB0000;";
43
- break;
44
- case "ET":
45
- throw s;
46
- case "E":
47
- console.error("%c" + s, "color:#FF3300;");
48
- return;
49
- default:
50
- r = "color:black;", s = " " + s;
51
- }
52
- console.info("%c" + s, r);
53
- };
54
- static myTrace = t.trace_beforeNew;
55
- static strPos = () => t.#s.lineNum > 0 ? `(fn:${t.#s.scriptFn} line:${String(t.#s.lineNum)}) ` : "";
56
- static #i = (a, e = "E") => {
57
- let s = `{${e}} ` + t.strPos() + a;
58
- t.#l(s, e);
59
- let r = "";
60
- switch (e) {
61
- case "D":
62
- r = `color:#${c.isDarkMode ? "49F" : "05A"};`;
63
- break;
64
- case "W":
65
- r = "color:#F80;";
66
- break;
67
- case "F":
68
- r = "color:#B00;";
69
- break;
70
- case "ET":
71
- case "E":
72
- if (t.#r({ text: a }), this.#e.dump_lay({}), this.#e.dump_val({}), t.#s.dumpErrForeLine(), this.#e.dump_stack({}), e === "ET") throw s;
73
- console.error("%c" + s, "color:#F30;");
74
- return;
75
- default:
76
- r = "", s = " " + s;
77
- }
78
- console.info("%c" + s, r);
79
- };
80
- static #l = (a, e) => {
81
- let s = "";
82
- switch (e) {
83
- case "D":
84
- s = "color:#05A;";
85
- break;
86
- case "W":
87
- s = "color:#F80;";
88
- break;
89
- case "F":
90
- s = "color:#B00;";
91
- break;
92
- case "ET":
93
- case "E":
94
- s = "color:#F30;";
95
- break;
96
- default:
97
- s = "";
98
- }
99
- t.#t.innerHTML += `<span style='${s}'>${a}</span><br/>`, t.#t.hidden = !1;
100
- };
101
- }
102
- export {
103
- t as D
11
+ background-color: rgba(255, 255, 255, 0.7);`, document.body.appendChild(n.#r);
12
+ }
13
+ destroy() {
14
+ n.#n = () => !1, document.body.removeChild(n.#r), n.myTrace = n.trace_beforeNew;
15
+ }
16
+ #i = !0;
17
+ #a(r) {
18
+ 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;
20
+ }
21
+ #o(e) {
22
+ return n.myTrace(e.text || `(text is ${String(e.text)})`, "I"), !1;
23
+ }
24
+ static trace_beforeNew = (t, n = "E") => {
25
+ let r = `{${n}} ` + t, i = "";
26
+ switch (n) {
27
+ case "D":
28
+ i = `color:#${CmnLib.isDarkMode ? "49F" : "05A"};`;
29
+ break;
30
+ case "W":
31
+ i = "color:#FF8800;";
32
+ break;
33
+ case "F":
34
+ i = "color:#BB0000;";
35
+ break;
36
+ case "ET": throw r;
37
+ case "E":
38
+ console.error("%c" + r, "color:#FF3300;");
39
+ return;
40
+ default: i = "color:black;", r = " " + r;
41
+ }
42
+ console.info("%c" + r, i);
43
+ };
44
+ static myTrace = n.trace_beforeNew;
45
+ static strPos = () => n.#e.lineNum > 0 ? `(fn:${n.#e.scriptFn} line:${String(n.#e.lineNum)}) ` : "";
46
+ static #s = (t, r = "E") => {
47
+ let i = `{${r}} ` + n.strPos() + t;
48
+ n.#c(i, r);
49
+ let a = "";
50
+ switch (r) {
51
+ case "D":
52
+ a = `color:#${CmnLib.isDarkMode ? "49F" : "05A"};`;
53
+ break;
54
+ case "W":
55
+ a = "color:#F80;";
56
+ break;
57
+ case "F":
58
+ a = "color:#B00;";
59
+ break;
60
+ case "ET":
61
+ case "E":
62
+ if (n.#n({ text: t }), this.#t.dump_lay({}), this.#t.dump_val({}), n.#e.dumpErrForeLine(), this.#t.dump_stack({}), r === "ET") throw i;
63
+ console.error("%c" + i, "color:#F30;");
64
+ return;
65
+ default: a = "", i = " " + i;
66
+ }
67
+ console.info("%c" + i, a);
68
+ };
69
+ static #c = (e, t) => {
70
+ let r = "";
71
+ switch (t) {
72
+ case "D":
73
+ r = "color:#05A;";
74
+ break;
75
+ case "W":
76
+ r = "color:#F80;";
77
+ break;
78
+ case "F":
79
+ r = "color:#B00;";
80
+ break;
81
+ case "ET":
82
+ case "E":
83
+ r = "color:#F30;";
84
+ break;
85
+ default: r = "";
86
+ }
87
+ n.#r.innerHTML += `<span style='${r}'>${e}</span><br/>`, n.#r.hidden = !1;
88
+ };
104
89
  };
105
- //# sourceMappingURL=DebugMng.js.map
90
+ export { DebugMng as t };
91
+
92
+ //# sourceMappingURL=DebugMng.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DebugMng.js","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"],"names":["DebugMng","sys","hTag","scrItr","#scrItr","#hTag","#title","#st_trace","o","#log","#trace","#spnDbg","#first","hArg","dat","CmnLib","getDateStr","txt","lvl","mes","sty","#dspDbg"],"mappings":"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"}
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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"}
@@ -0,0 +1,21 @@
1
+ import { v as import_eventemitter3 } from "./pixi.js";
2
+ var EventListenerCtn = class {
3
+ #e = [];
4
+ add(t, n, r, i = {}) {
5
+ if (t instanceof import_eventemitter3.default) {
6
+ t.on(n, r, i), this.#e.push(() => t.off(n, r, i));
7
+ return;
8
+ }
9
+ t.addEventListener(n, r, i), this.#e.push(() => t.removeEventListener(n, r, { capture: i.capture ?? !1 }));
10
+ }
11
+ clear() {
12
+ for (let e of this.#e) e();
13
+ this.#e = [];
14
+ }
15
+ get isEmpty() {
16
+ return this.#e.length === 0;
17
+ }
18
+ };
19
+ export { EventListenerCtn as t };
20
+
21
+ //# sourceMappingURL=EventListenerCtn.js.map
@@ -0,0 +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"}