termill 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AUTHORING.md ADDED
@@ -0,0 +1,140 @@
1
+ # termill Authoring Guide
2
+
3
+ A termill game is any Node.js CLI package that meets the termill package spec. Once published to npm, it becomes discoverable, installable, and launchable by any termill user.
4
+
5
+ ---
6
+
7
+ ## Package spec
8
+
9
+ ### Required `package.json` fields
10
+
11
+ | Field | Requirement | Example |
12
+ |-------|-------------|---------|
13
+ | `bin` | Must be present; points to your entry script | `{ "my-game": "./index.js" }` |
14
+ | `keywords` | Must include `"termill"` | `["termill", "puzzle"]` |
15
+ | `description` | Non-empty string | `"A two-player word game"` |
16
+ | `termill` | Metadata block — see below | see below |
17
+
18
+ ### `termill` metadata block
19
+
20
+ Add a `termill` property to your `package.json`:
21
+
22
+ ```json
23
+ {
24
+ "termill": {
25
+ "name": "My Game",
26
+ "description": "A short description shown in search results.",
27
+ "launchCommand": "my-game",
28
+ "category": "puzzle"
29
+ }
30
+ }
31
+ ```
32
+
33
+ | Field | Required | Description |
34
+ |-------|----------|-------------|
35
+ | `name` | Yes | Human-readable display name shown in termill search |
36
+ | `description` | Yes | Short description shown in search results |
37
+ | `launchCommand` | Yes | The command termill runs to launch the game (typically your `bin` key) |
38
+ | `category` | No | Category tag for discovery filtering (e.g. `puzzle`, `action`, `arcade`) |
39
+
40
+ ---
41
+
42
+ ## Entry point requirements
43
+
44
+ - The `bin` field must point to a runnable Node.js script.
45
+ - The script must start with a `#!/usr/bin/env node` shebang on line 1.
46
+
47
+ ```js
48
+ #!/usr/bin/env node
49
+ // your game code here
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Terminal lifecycle contract
55
+
56
+ termill spawns your game in a **new OS terminal window**. This means:
57
+
58
+ - Your game must call `process.exit()` when the player quits — otherwise the terminal window stays open after the game ends.
59
+ - Do not rely on stdin being attached to an existing terminal; you own the full window.
60
+
61
+ **Minimum stub:**
62
+
63
+ ```js
64
+ #!/usr/bin/env node
65
+ // your game here
66
+ process.on('SIGINT', () => process.exit(0));
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Getting started
72
+
73
+ The fastest way to create a compliant project:
74
+
75
+ ```bash
76
+ # 1. Scaffold a new project
77
+ termill init
78
+
79
+ # 2. Enter the project directory
80
+ cd my-game
81
+
82
+ # 3. Implement your game in index.js
83
+
84
+ # 4. Verify compliance
85
+ termill validate .
86
+
87
+ # 5. Publish to npm
88
+ npm publish
89
+
90
+ # 6. Verify discoverability (may take a few minutes for npm indexing)
91
+ termill
92
+ # then search for your package name
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Validating an existing package
98
+
99
+ Run `termill validate` against a local project or a published package:
100
+
101
+ ```bash
102
+ # Validate the current directory
103
+ termill validate .
104
+
105
+ # Validate a specific path
106
+ termill validate /path/to/my-game
107
+
108
+ # Validate a published npm package
109
+ termill validate my-game-package
110
+ ```
111
+
112
+ Each check prints `✓`, `✗`, or `⚠` (warning). Exit code is 0 when all required checks pass.
113
+
114
+ ---
115
+
116
+ ## Example minimal `package.json`
117
+
118
+ ```json
119
+ {
120
+ "name": "my-termill-game",
121
+ "version": "1.0.0",
122
+ "description": "A fun terminal puzzle game.",
123
+ "main": "index.js",
124
+ "bin": { "my-termill-game": "./index.js" },
125
+ "keywords": ["termill", "puzzle"],
126
+ "author": "Your Name",
127
+ "license": "MIT",
128
+ "termill": {
129
+ "name": "My Termill Game",
130
+ "description": "A fun terminal puzzle game.",
131
+ "launchCommand": "my-termill-game"
132
+ }
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Questions and support
139
+
140
+ Open an issue on the [termill GitHub repository](https://github.com/example/termill) or search npm for other termill games for inspiration.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,5 @@
1
- # v0.2.0Author Tooling
1
+ # v0.2.2README Link Fix
2
2
 
3
3
  Released: 2026-03-21
4
4
 
5
- - Added `AUTHORING.md` full termill package authoring spec covering discoverability metadata, terminal lifecycle contract, entry point requirements, and a getting-started guide for game developers
6
- - Added `termill validate` command — validates a local project or published npm package against the termill authoring spec, reporting pass/fail per check with fix instructions
7
- - Added `termill init` command — scaffolds a minimal spec-compliant terminal game project with correct `package.json`, entry point stub, `.gitignore`, and README
8
- - Uninstall games from the library — press D on a selected game to remove it from the global npm install and the local library
5
+ - `AUTHORING.md` link in README now points to unpkg so it resolves on npmjs.com
package/README.md CHANGED
@@ -54,7 +54,7 @@ Press `CTRL+C` at any time to quit.
54
54
 
55
55
  ## For Game Authors
56
56
 
57
- Want to publish a terminal game to the termill ecosystem? Use `termill init` to scaffold a compliant project in seconds, `termill validate .` to check it before publishing, then `npm publish` to make it discoverable. Full spec and getting-started guide in [AUTHORING.md](AUTHORING.md).
57
+ Want to publish a terminal game to the termill ecosystem? Use `termill init` to scaffold a compliant project in seconds, `termill validate .` to check it before publishing, then `npm publish` to make it discoverable. Full spec and getting-started guide in [AUTHORING.md](https://unpkg.com/termill/AUTHORING.md).
58
58
 
59
59
  ---
60
60
 
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const _0x1325f3=_0x3bc5;(function(_0x9bd684,_0x47b163){const _0xe74a44=_0x3bc5,_0x558614=_0x9bd684();while(!![]){try{const _0x184986=-parseInt(_0xe74a44(0x224))/0x1+parseInt(_0xe74a44(0x1a8))/0x2+parseInt(_0xe74a44(0x25e))/0x3*(parseInt(_0xe74a44(0x276))/0x4)+-parseInt(_0xe74a44(0x20f))/0x5*(-parseInt(_0xe74a44(0x251))/0x6)+-parseInt(_0xe74a44(0x234))/0x7*(parseInt(_0xe74a44(0x1c2))/0x8)+parseInt(_0xe74a44(0x26a))/0x9*(-parseInt(_0xe74a44(0x238))/0xa)+parseInt(_0xe74a44(0x26e))/0xb;if(_0x184986===_0x47b163)break;else _0x558614['push'](_0x558614['shift']());}catch(_0x207228){_0x558614['push'](_0x558614['shift']());}}}(_0x26f3,0x1a6ce));import{mkdirSync as _0x289ad9}from'node:fs';import{homedir as _0x24a0d5}from'node:os';import{join as _0x468661}from'node:path';var w=_0x468661(_0x24a0d5(),_0x1325f3(0x21d)),x=_0x468661(w,'keys'),k=_0x468661(w,_0x1325f3(0x1d5)),b=_0x468661(w,_0x1325f3(0x253)),O=[];import{generateKeyPairSync as _0x1984ce,sign as _0x1bd5e2,verify as _0xfa5d3c,createPublicKey as _0x365047}from'node:crypto';import{readFileSync as _0x920764,writeFileSync as _0x38a686,existsSync as _0x5bf2e9,mkdirSync as _0x11ffc5}from'node:fs';import{join as _0xf2cf44}from'node:path';var z=_0xf2cf44(x,_0x1325f3(0x1c7)),D=_0xf2cf44(x,'id_ed25519.pub');function Q(){const _0x1e4f73=_0x1325f3;_0x11ffc5(x,{'recursive':!0x0});let {privateKey:_0x2e38d4,publicKey:_0x42346c}=_0x1984ce(_0x1e4f73(0x26d),{'privateKeyEncoding':{'type':_0x1e4f73(0x1f1),'format':_0x1e4f73(0x278)},'publicKeyEncoding':{'type':_0x1e4f73(0x254),'format':_0x1e4f73(0x23a)}}),_0x48b97a=_0x42346c[_0x1e4f73(0x230)](-0x20)['toString'](_0x1e4f73(0x215));return _0x38a686(z,_0x2e38d4,{'encoding':'utf8','mode':0x180}),_0x38a686(D,_0x48b97a,{'encoding':_0x1e4f73(0x1b3),'mode':0x1a4}),{'publicKey':_0x48b97a};}function X(){return _0x5bf2e9(z)&&_0x5bf2e9(D);}function Z(){const _0x8b2d0b=_0x1325f3;return _0x920764(D,_0x8b2d0b(0x1b3))['trim']();}import{readFileSync as _0x4a8713,writeFileSync as _0x2285d4,existsSync as _0x2a836b,mkdirSync as _0x3581e4}from'node:fs';import{dirname as _0x19b491}from'node:path';function N(){const _0x465a71=_0x1325f3;if(!_0x2a836b(k))return[];try{return JSON[_0x465a71(0x207)](_0x4a8713(k,_0x465a71(0x1b3)));}catch{return[];}}function q(_0x4037bc){const _0x4ea162=_0x1325f3;_0x3581e4(_0x19b491(k),{'recursive':!0x0}),_0x2285d4(k,JSON[_0x4ea162(0x264)](_0x4037bc,null,0x2),_0x4ea162(0x1b3));}function ee(_0x2d2908){const _0x399ce4=_0x1325f3;let _0x3d3a93=N()[_0x399ce4(0x23c)](_0x3f3f7f=>_0x3f3f7f[_0x399ce4(0x265)]!==_0x2d2908[_0x399ce4(0x265)]);_0x3d3a93['push'](_0x2d2908),q(_0x3d3a93);}function _0x26f3(){const _0x54c4e2=['Searching…','toISOString','38169kyBOAC','```bash','resume','ed25519','1624623BcYmCo','repeat','stdin','\x0a✓\x20Project\x20scaffolded\x20at\x20./','isDirectory','```','Shebang\x20found','\x0aNext\x20steps:','76DlQQJN','npm\x20view\x20','pem','title','\x20\x20v','objects','73046sqkHTR','do\x20shell\x20script\x20\x22open\x20-a\x20Terminal\x20','check','down','\x20uninstalled.\x20Press\x20ENTER\x20to\x20continue.','termill.description\x20is\x20missing\x20or\x20empty','\x20updated\x20to\x20latest.\x20Launching…','//\x20TODO:\x20implement\x20your\x20game\x20here','flat','No\x20package.json\x20found\x20at\x20','process.stdin.once(\x27data\x27,\x20()\x20=>\x20{','utf8','\x20\x20npm\x20link\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20link\x20globally\x20for\x20local\x20testing','keywords:termill','\x0a✓\x20','keywords','termill.description:\x20\x22','\x1b[A','termill\x20metadata\x20block\x20found','termill.name\x20is\x20missing\x20or\x20empty','process.exit(','stdout','test','bin\x20file\x20not\x20found\x20at\x20path:\x20','cmd.exe','message','56QDRVOU','timeout','toLowerCase','length','bin\x20file\x20exists','id_ed25519','launchCommand','log','[7m','WARNING:\x20No\x20process.exit()\x20found.\x20termill\x20spawns\x20a\x20new\x20terminal\x20window\x20—\x20your\x20game\x20must\x20call\x20process.exit()\x20on\x20quit\x20to\x20close\x20it\x20cleanly','find','json','npm\x20list\x20-g\x20--json\x20','name','backspace','.\x20Press\x20ENTER\x20to\x20continue.','updated','right','inherit','library.json','Short\x20description:\x20','console.log(\x27Press\x20ENTER\x20to\x20quit.\x27);','Generating\x20Ed25519\x20keypair…','[1m','\x0atermill\x20init\x20—\x20scaffold\x20a\x20new\x20termill\x20game\x20project\x0a','.gitignore','xterm','error','/games','!\x27);','Package\x20name\x20(npm\x20package\x20name,\x20e.g.\x20my-termill-game):\x20','catch','\x22\x20is\x20missing\x20a\x20\x22termill\x22\x20property\x20in\x20its\x20package.json','TERM','\x1b[D','description:\x20\x22','termill','\x0aIdentity\x20created.\x20Your\x20public\x20key:','process.exit()\x20call\x20found\x20in\x20source\x20files','process.stdin.setEncoding(\x27utf8\x27);','env','Press\x20ENTER\x20to\x20generate\x20a\x20new\x20keypair\x20and\x20create\x20your\x20identity.\x0a','unknown','\x20keywords:termill','escape','index.js','isTTY','pkcs8','[2m','object','setRawMode','trim','?text=','termill\x20—\x20discover','description','bin\x20field\x20found:\x20','//\x20','argv','Discovering\x20games…','push','\x0a✗\x20Uninstall\x20failed:\x20','isArray','\x20installed.\x20Press\x20ENTER\x20to\x20continue.','\x20version\x20--json','write','Add\x20\x22termill\x22\x20to\x20the\x20keywords\x20array\x20in\x20package.json\x20for\x20discoverability','MIT','start','function','parse','stop','\x0a\x20\x20No\x20games\x20installed.\x20Press\x20H\x20to\x20discover\x20games.\x0a','\x0aWelcome\x20back!','Package\x20\x22','termill\x20—\x20identity','Missing\x20\x22termill\x22\x20block\x20in\x20package.json\x20—\x20add\x20{\x20\x22termill\x22:\x20{\x20\x22name\x22:\x20\x22...\x22,\x20\x22description\x22:\x20\x22...\x22,\x20\x22launchCommand\x22:\x20\x22...\x22\x20}\x20}','values','214910nlsRkF','termill\x20—\x20library','ignore','\x20is\x20up\x20to\x20date.\x20Launching…','README.md','##\x20License','hex','Press\x20ENTER\x20to\x20continue.','data','?\x20[Y/N]','columns','\x0aError:\x20directory\x20\x22','removeListener','bin\x20file\x20has\x20#!/usr/bin/env\x20node\x20shebang','.termill','\x0aNo\x20identity\x20found.','library','all','npm\x20uninstall\x20-g\x20','includes','description\x20is\x20non-empty','61961wynrDc','forEach','keywords\x20includes\x20\x22termill\x22','linux','floor','min','home','platform','exit','\x20\x20termill\x20validate\x20.\x20\x20\x20\x20#\x20check\x20compliance\x20before\x20publishing','join','process.stdin.resume();','slice','process.exit()\x20call\x20found\x20(warn\x20only)','./index.js','node_modules\x0a','101213FsJRdY','npm\x20install\x20-g\x20','close','1.0.0','140MHYXOe','npm\x20root\x20-g','der','dependencies','filter','bin\x20file\x20found:\x20','darwin','Missing\x20\x22bin\x22\x20field\x20in\x20package.json\x20—\x20add\x20a\x20bin\x20entry\x20pointing\x20to\x20your\x20entry\x20file','\x20—\x20entry\x20point','\x1b[C','\x0aInstalling\x20','package.json','return','\x22\x20already\x20exists\x20in\x20the\x20current\x20folder.','[termill]\x20Fatal\x20error:','\x20--json','\x0a✗\x20Install\x20failed:\x20','[↑↓]\x20navigate\x20\x20[ENTER]\x20launch\x20\x20[D]\x20uninstall\x20\x20[H/ESC]\x20home\x20\x20[CTRL+C]\x20quit','cwd','\x20is\x20missing\x20\x22#!/usr/bin/env\x20node\x22\x20on\x20line\x201','ctrl+c','Missing\x20or\x20empty\x20\x22description\x22\x20field\x20in\x20package.json','version','setEncoding','question','6jemuqZ','padEnd','peers.json','spki','termill.name:\x20\x22','init','max','\x0aSearch:\x20','startsWith','[↑↓]\x20navigate\x20\x20[ENTER]\x20install\x20\x20[L]\x20library\x20\x20[CTRL+C]\x20quit','has','termill.description\x20is\x20set','string','16356fgLDIl','Checking\x20','node_modules','\x22\x20from\x20npm','validate','map','stringify','packageName','warn\x20only','\x20\x20cd\x20'];_0x26f3=function(){return _0x54c4e2;};return _0x26f3();}function te(_0x160cfd){const _0x5d377e=_0x1325f3;return N()[_0x5d377e(0x1cc)](_0x29bb1e=>_0x29bb1e[_0x5d377e(0x265)]===_0x160cfd)??null;}function ne(_0x5b35e7){const _0x4181cb=_0x1325f3;let _0x20cb74=N()[_0x4181cb(0x23c)](_0x25ac7c=>_0x25ac7c[_0x4181cb(0x265)]!==_0x5b35e7);q(_0x20cb74);}function re(){return N();}import{execSync as _0xb103a8}from'node:child_process';import{readFileSync as _0x9e6573}from'node:fs';import{join as _0x44aba5}from'node:path';function Te(_0x4eee8b){const _0x3fbcaf=_0x1325f3;let _0x39a5a3=_0xb103a8(_0x3fbcaf(0x239),{'encoding':'utf8'})[_0x3fbcaf(0x1f5)](),_0x34ea34=_0x44aba5(_0x39a5a3,_0x4eee8b,_0x3fbcaf(0x243)),_0x22bff3=JSON['parse'](_0x9e6573(_0x34ea34,_0x3fbcaf(0x1b3)));if(!_0x22bff3['termill'])throw new Error(_0x3fbcaf(0x20b)+_0x4eee8b+_0x3fbcaf(0x1e2));return _0x22bff3[_0x3fbcaf(0x1e6)];}function Re(_0x38d06d){const _0x3a75bf=_0x1325f3;try{let _0x929e5a=JSON[_0x3a75bf(0x207)](_0xb103a8(_0x3a75bf(0x277)+_0x38d06d+_0x3a75bf(0x201),{'encoding':'utf8'}));return typeof _0x929e5a=='string'?_0x929e5a:String(_0x929e5a);}catch{return _0x3a75bf(0x1ec);}}async function _(_0x3ff5a5){const _0x4729a3=_0x1325f3;let _0x151c1d=te(_0x3ff5a5);if(_0x151c1d){let _0x1c396c=Re(_0x3ff5a5);if(_0x1c396c!==_0x4729a3(0x1ec)&&_0x1c396c===_0x151c1d[_0x4729a3(0x24e)])return{'alreadyCurrent':!0x0};}_0xb103a8(_0x4729a3(0x235)+_0x3ff5a5,{'stdio':_0x4729a3(0x1d4)});let _0x21d104=Te(_0x3ff5a5),_0x5b815a=JSON['parse'](_0xb103a8(_0x4729a3(0x1ce)+_0x3ff5a5,{'encoding':_0x4729a3(0x1b3)}))[_0x4729a3(0x23b)]?.[_0x3ff5a5]?.[_0x4729a3(0x24e)]??_0x4729a3(0x1ec);return ee({'packageName':_0x3ff5a5,'title':_0x21d104[_0x4729a3(0x1a5)]??_0x3ff5a5,'description':_0x21d104[_0x4729a3(0x1f8)]??'','version':_0x5b815a,'launchCommand':_0x21d104[_0x4729a3(0x1c8)],'installedAt':new Date()[_0x4729a3(0x269)]()}),_0x151c1d?{'updated':!0x0}:{};}async function oe(_0x415dc9){const _0x382dbb=_0x1325f3;_0xb103a8(_0x382dbb(0x221)+_0x415dc9,{'stdio':_0x382dbb(0x1d4)}),ne(_0x415dc9);}import{spawn as _0x4a2a58}from'node:child_process';function Ae(){const _0x1c9aa4=_0x1325f3;let _0x233706=process[_0x1c9aa4(0x22b)];return _0x233706==='win32'||_0x233706===_0x1c9aa4(0x23e)?_0x233706:_0x1c9aa4(0x227);}function Le(_0x4cffa3,_0x54c50d){const _0x510ef1=_0x1325f3;switch(_0x54c50d){case'win32':return{'cmd':_0x510ef1(0x1c0),'args':['/c','start',_0x510ef1(0x1c0),'/k',_0x4cffa3],'options':{'detached':!0x0,'shell':!0x1}};case _0x510ef1(0x23e):return{'cmd':'osascript','args':['-e',_0x510ef1(0x1a9)+_0x4cffa3+'\x22'],'options':{'detached':!0x0}};case _0x510ef1(0x227):default:return{'cmd':process[_0x510ef1(0x1ea)][_0x510ef1(0x1e3)]??_0x510ef1(0x1dc),'args':['-e',_0x4cffa3],'options':{'detached':!0x0}};}}function T(_0xd1ee37){const _0xe14f2d=_0x1325f3;let {cmd:_0x5d35ec,args:_0x3dfa01,options:_0x4d074b}=Le(_0xd1ee37,Ae());_0x4a2a58(_0x5d35ec,_0x3dfa01,{..._0x4d074b,'stdio':_0xe14f2d(0x211)})['unref']();}import{readFileSync as _0x31b765,writeFileSync as _0x29cfbd,existsSync as _0x36d5bc,mkdirSync as _0x25e6c3}from'node:fs';import{dirname as _0x1a40e3}from'node:path';function Je(){const _0x518ddf=_0x1325f3;if(!_0x36d5bc(b))return[...O];try{return JSON[_0x518ddf(0x207)](_0x31b765(b,_0x518ddf(0x1b3)));}catch{return[...O];}}function Ge(_0xb4439d){const _0xcd697e=_0x1325f3;_0x25e6c3(_0x1a40e3(b),{'recursive':!0x0}),_0x29cfbd(b,JSON[_0xcd697e(0x264)](_0xb4439d,null,0x2),_0xcd697e(0x1b3));}async function He(_0x53db16){const _0x2d7803=_0x1325f3;try{let _0x67cd70=await fetch(_0x53db16+_0x2d7803(0x1de),{'signal':AbortSignal[_0x2d7803(0x1c3)](0x1388)});return _0x67cd70['ok']?await _0x67cd70['json']():[];}catch{return[];}}async function Be(_0x16a54a){const _0x2583bb=_0x1325f3;try{let _0x1a6046=await fetch(_0x16a54a+'/peers',{'signal':AbortSignal[_0x2583bb(0x1c3)](0x1388)});return _0x1a6046['ok']?await _0x1a6046[_0x2583bb(0x1cd)]():[];}catch{return[];}}async function se(){const _0x2c0cb9=_0x1325f3;let _0x3e77cd=Je(),[_0x3e8acf,_0x37c082]=await Promise[_0x2c0cb9(0x220)]([Promise[_0x2c0cb9(0x220)](_0x3e77cd[_0x2c0cb9(0x263)](_0x52cbc5=>He(_0x52cbc5))),Promise['all'](_0x3e77cd[_0x2c0cb9(0x263)](_0x27f6af=>Be(_0x27f6af)))]),_0x543aff=_0x3e8acf['flat'](),_0x4f4f86=_0x37c082[_0x2c0cb9(0x1b0)](),_0x49e650=[...new Set([..._0x3e77cd,..._0x4f4f86])];return Ge(_0x49e650),{'games':_0x543aff,'peers':_0x49e650};}function _0x3bc5(_0x26a7da,_0x4ef9c0){_0x26a7da=_0x26a7da-0x1a5;const _0x26f334=_0x26f3();let _0x3bc5cf=_0x26f334[_0x26a7da];return _0x3bc5cf;}var Ye='https://registry.npmjs.org/-/v1/search';function Fe(_0x377862){const _0x4ce3c5=_0x1325f3;let _0x565453=_0x377862[_0x4ce3c5(0x1e6)]??{};return{'packageName':_0x377862['name'],'title':_0x565453[_0x4ce3c5(0x1a5)]??_0x377862[_0x4ce3c5(0x1cf)],'description':_0x565453['description']??_0x377862[_0x4ce3c5(0x1f8)]??'','version':_0x377862['version']??_0x4ce3c5(0x1ec),'keywords':_0x377862['keywords']??[]};}async function R(_0x4d6bbe=''){const _0x142b8a=_0x1325f3;let [_0x7d89d,_0x5024c1]=await Promise[_0x142b8a(0x220)]([se()[_0x142b8a(0x1e1)](()=>({'games':[]})),Ue(_0x4d6bbe)]),_0x5df081=_0x7d89d['games']??[],_0x2bf2be=new Set(_0x5df081[_0x142b8a(0x263)](_0xbeeea3=>_0xbeeea3['packageName'])),_0x259a0d=_0x5024c1[_0x142b8a(0x23c)](_0x2dd768=>!_0x2bf2be[_0x142b8a(0x25b)](_0x2dd768[_0x142b8a(0x265)])),_0x2e4780=_0x4d6bbe[_0x142b8a(0x1f5)]()[_0x142b8a(0x1c4)](),_0x39686f=_0x4b0c47=>_0x2e4780?_0x4b0c47[_0x142b8a(0x265)]['toLowerCase']()['includes'](_0x2e4780)||(_0x4b0c47[_0x142b8a(0x1a5)]??'')['toLowerCase']()['includes'](_0x2e4780)||(_0x4b0c47[_0x142b8a(0x1f8)]??'')[_0x142b8a(0x1c4)]()[_0x142b8a(0x222)](_0x2e4780):!0x0;return[..._0x5df081[_0x142b8a(0x23c)](_0x39686f),..._0x259a0d[_0x142b8a(0x23c)](_0x39686f)];}async function Ue(_0x1d410c){const _0x26f831=_0x1325f3;try{let _0x2c5e36=_0x1d410c?encodeURIComponent(_0x1d410c+_0x26f831(0x1ed)):_0x26f831(0x1b5),_0x3dc4bf=Ye+_0x26f831(0x1f6)+_0x2c5e36+'&size=20',_0x5f2081=await fetch(_0x3dc4bf,{'signal':AbortSignal['timeout'](0x1f40)});return _0x5f2081['ok']?((await _0x5f2081[_0x26f831(0x1cd)]())[_0x26f831(0x1a7)]??[])[_0x26f831(0x263)](_0x545483=>Fe(_0x545483['package'])):[];}catch{return[];}}import{stdout as _0x2332d9}from'node:process';var j='\x1b',M=j+'[0m',Ve=j+_0x1325f3(0x1ca),ze=j+_0x1325f3(0x1f2),Qe=j+_0x1325f3(0x1d9),ie=()=>_0x2332d9[_0x1325f3(0x219)]??0x50;function m(_0x547505){const _0x5670ee=_0x1325f3;let _0xb7b99f=ie(),_0x4c7436='\x20'+_0x547505+'\x20',_0x2674fa=Math[_0x5670ee(0x228)]((_0xb7b99f-_0x4c7436[_0x5670ee(0x1c5)])/0x2),_0x54a75b='─'['repeat'](Math[_0x5670ee(0x257)](0x0,_0x2674fa))+_0x4c7436+'─'[_0x5670ee(0x26f)](Math[_0x5670ee(0x257)](0x0,_0x2674fa));console[_0x5670ee(0x1c9)](Qe+_0x54a75b[_0x5670ee(0x230)](0x0,_0xb7b99f)+M);}function K(_0x1137ba,_0x1268f1){const _0x224c26=_0x1325f3;_0x1137ba[_0x224c26(0x225)]((_0x2c641a,_0x3f5abe)=>{const _0x25a7c8=_0x224c26;let _0x541ef8=(_0x3f5abe===_0x1268f1?'>\x20':'\x20\x20')+_0x2c641a;console[_0x25a7c8(0x1c9)](_0x3f5abe===_0x1268f1?Ve+_0x541ef8[_0x25a7c8(0x252)](ie())+M:_0x541ef8);});}function J(_0x2137ba){console['log'](ze+_0x2137ba+M);}function h(_0x5cbbe2){let _0x285617=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],_0xb0bcc2=0x0,_0x5282a4=null;return{'start'(){_0x5282a4=setInterval(()=>{const _0x274fc4=_0x3bc5;process['stdout'][_0x274fc4(0x202)]('\x0d'+_0x285617[_0xb0bcc2++%_0x285617['length']]+'\x20'+_0x5cbbe2);},0x50);},'stop'(){const _0x4987db=_0x3bc5;_0x5282a4&&(clearInterval(_0x5282a4),_0x5282a4=null,process[_0x4987db(0x1bd)]['write']('\x0d'+'\x20'['repeat'](_0x5cbbe2[_0x4987db(0x1c5)]+0x4)+'\x0d'));}};}function f(){const _0x396e91=_0x1325f3;process[_0x396e91(0x1bd)][_0x396e91(0x202)]('\x1b[2J\x1b[H');}function G(){return new Promise(_0x5de550=>{const _0x1e26cc=_0x3bc5;let {stdin:_0x42eed1}=process,_0x193aee=_0x42eed1['isRaw'];_0x42eed1['isTTY']&&_0x42eed1[_0x1e26cc(0x1f4)](!0x0),_0x42eed1[_0x1e26cc(0x26c)](),_0x42eed1[_0x1e26cc(0x24f)](_0x1e26cc(0x1b3));function _0x456573(_0x56f45e){const _0x14bfb9=_0x1e26cc;_0x42eed1[_0x14bfb9(0x21b)](_0x14bfb9(0x217),_0x456573),_0x42eed1['isTTY']&&!_0x193aee&&_0x42eed1[_0x14bfb9(0x1f4)](!0x1),_0x42eed1['pause']();let _0x39ab63=ae(_0x56f45e);_0x5de550({'name':_0x39ab63,'sequence':_0x56f45e,'ctrl':_0x56f45e<='\x1a'&&_0x56f45e!=='\x0d','shift':!0x1});}_0x42eed1['once'](_0x1e26cc(0x217),_0x456573);});}function H(_0x19a87c){const _0x342a77=_0x1325f3;let {stdin:_0x3ad783}=process;_0x3ad783[_0x342a77(0x1f0)]&&_0x3ad783[_0x342a77(0x1f4)](!0x0),_0x3ad783['resume'](),_0x3ad783[_0x342a77(0x24f)]('utf8');function _0xa44ee(_0x40ca33){_0x19a87c({'name':ae(_0x40ca33),'sequence':_0x40ca33});}return _0x3ad783['on']('data',_0xa44ee),function(){const _0xd34435=_0x342a77;_0x3ad783[_0xd34435(0x21b)](_0xd34435(0x217),_0xa44ee),_0x3ad783[_0xd34435(0x1f0)]&&_0x3ad783[_0xd34435(0x1f4)](!0x1),_0x3ad783['pause']();};}function ae(_0x27d60e){const _0x58e65f=_0x1325f3;return _0x27d60e==='\x0d'||_0x27d60e==='\x0a'?_0x58e65f(0x244):_0x27d60e==='\x1b'?_0x58e65f(0x1ee):_0x27d60e===_0x58e65f(0x1b9)?'up':_0x27d60e==='\x1b[B'?'down':_0x27d60e===_0x58e65f(0x241)?_0x58e65f(0x1d3):_0x27d60e===_0x58e65f(0x1e4)?'left':_0x27d60e==='\x7f'||_0x27d60e==='\x08'?_0x58e65f(0x1d0):_0x27d60e==='\x03'?_0x58e65f(0x24c):_0x27d60e;}async function ce(){const _0x12395f=_0x1325f3;if(f(),m(_0x12395f(0x20c)),X()){let _0x28b46d=Z();console['log'](_0x12395f(0x20a)),console[_0x12395f(0x1c9)]('Your\x20identity:\x20'+_0x28b46d[_0x12395f(0x230)](0x0,0x10)+'…\x0a'),console[_0x12395f(0x1c9)](_0x12395f(0x216)),await E();}else{console[_0x12395f(0x1c9)](_0x12395f(0x21e)),console[_0x12395f(0x1c9)](_0x12395f(0x1eb)),await E();let _0x727d54=h(_0x12395f(0x1d8));_0x727d54['start']();let {publicKey:_0x41ed89}=Q();_0x727d54[_0x12395f(0x208)](),console[_0x12395f(0x1c9)](_0x12395f(0x1e7)),console[_0x12395f(0x1c9)]('\x20\x20'+_0x41ed89[_0x12395f(0x230)](0x0,0x10)+'…\x0a'),console[_0x12395f(0x1c9)](_0x12395f(0x216)),await E();}}async function B(_0x1d7020=R){const _0x522c9d=_0x1325f3;f(),m(_0x522c9d(0x1f7));let _0xf1570e='',_0x1bb790=[],_0x13c7b8=0x0,_0x17d8df=()=>{const _0x2ea853=_0x522c9d;f(),m(_0x2ea853(0x1f7)),console[_0x2ea853(0x1c9)](_0x2ea853(0x258)+_0xf1570e+'_\x0a'),_0x1bb790['length']===0x0?console['log']('\x20\x20No\x20results.\x20Type\x20to\x20search\x20or\x20wait\x20for\x20peer\x20gossip.\x0a'):K(_0x1bb790[_0x2ea853(0x263)](_0x47727b=>(_0x47727b[_0x2ea853(0x1a5)]??_0x47727b[_0x2ea853(0x265)])+'\x20\x20'+(_0x47727b['version']??'')+'\x20\x20'+(_0x47727b[_0x2ea853(0x1f8)]??'')),_0x13c7b8),J(_0x2ea853(0x25a));},_0x5ec5bd=h(_0x522c9d(0x1fc));_0x5ec5bd[_0x522c9d(0x205)]();try{_0x1bb790=await _0x1d7020('');}catch{_0x1bb790=[];}return _0x5ec5bd[_0x522c9d(0x208)](),_0x17d8df(),new Promise(_0x4c516d=>{let _0x17543b=H(async({name:_0x4355ee,sequence:_0x451796})=>{const _0x525ad1=_0x3bc5;if(_0x4355ee===_0x525ad1(0x24c)&&(_0x17543b(),process[_0x525ad1(0x22c)](0x0)),_0x4355ee==='up'){_0x13c7b8=Math[_0x525ad1(0x257)](0x0,_0x13c7b8-0x1),_0x17d8df();return;}if(_0x4355ee==='down'){_0x13c7b8=Math[_0x525ad1(0x229)](_0x1bb790[_0x525ad1(0x1c5)]-0x1,_0x13c7b8+0x1),_0x17d8df();return;}if(_0x4355ee===_0x525ad1(0x244)){if(_0x1bb790[_0x525ad1(0x1c5)]===0x0)return;let _0xda48b9=_0x1bb790[_0x13c7b8];_0x17543b(),f(),m('termill\x20—\x20installing'),console[_0x525ad1(0x1c9)](_0x525ad1(0x242)+_0xda48b9[_0x525ad1(0x265)]+'…\x0a');let _0x3a8013=h(_0x525ad1(0x235)+_0xda48b9[_0x525ad1(0x265)]);_0x3a8013[_0x525ad1(0x205)]();try{await _(_0xda48b9[_0x525ad1(0x265)]),_0x3a8013[_0x525ad1(0x208)](),console['log'](_0x525ad1(0x1b6)+_0xda48b9[_0x525ad1(0x265)]+_0x525ad1(0x200));}catch(_0x267639){_0x3a8013['stop'](),console['log'](_0x525ad1(0x248)+_0x267639['message']+_0x525ad1(0x1d1));}await E(),_0x4c516d(B(_0x1d7020));return;}if(_0x4355ee['toLowerCase']()==='l'){_0x17543b(),_0x4c516d('library');return;}if(_0x4355ee===_0x525ad1(0x1d0))_0xf1570e=_0xf1570e[_0x525ad1(0x230)](0x0,-0x1);else{if(_0x451796[_0x525ad1(0x1c5)]===0x1&&_0x451796>='\x20')_0xf1570e+=_0x451796;else return;}_0x13c7b8=0x0;let _0x255281=h(_0x525ad1(0x268));_0x255281[_0x525ad1(0x205)]();try{_0x1bb790=await _0x1d7020(_0xf1570e);}catch{_0x1bb790=[];}_0x255281[_0x525ad1(0x208)](),_0x17d8df();});});}async function C(_0x2951ab=T){f(),m('termill\x20—\x20library');let _0x592073=re(),_0x1fa0ae=0x0,_0x36cec2=()=>{const _0x49493c=_0x3bc5;f(),m(_0x49493c(0x210)),_0x592073[_0x49493c(0x1c5)]===0x0?console[_0x49493c(0x1c9)](_0x49493c(0x209)):(console[_0x49493c(0x1c9)](''),K(_0x592073[_0x49493c(0x263)](_0x153515=>(_0x153515['title']??_0x153515['packageName'])+_0x49493c(0x1a6)+(_0x153515['version']??'?')),_0x1fa0ae)),J(_0x49493c(0x249));};return _0x36cec2(),new Promise(_0x190298=>{let _0x2ed45f=H(async({name:_0x390aec})=>{const _0x5bb879=_0x3bc5;if(_0x390aec==='ctrl+c'&&(_0x2ed45f(),process[_0x5bb879(0x22c)](0x0)),_0x390aec==='up'){_0x1fa0ae=Math[_0x5bb879(0x257)](0x0,_0x1fa0ae-0x1),_0x36cec2();return;}if(_0x390aec===_0x5bb879(0x1ab)){_0x1fa0ae=Math[_0x5bb879(0x229)](_0x592073[_0x5bb879(0x1c5)]-0x1,_0x1fa0ae+0x1),_0x36cec2();return;}if(_0x390aec===_0x5bb879(0x244)&&_0x592073[_0x5bb879(0x1c5)]>0x0){let _0xbbced7=_0x592073[_0x1fa0ae];_0x2ed45f(),f(),m('termill\x20—\x20library');let _0x977497=h(_0x5bb879(0x25f)+_0xbbced7[_0x5bb879(0x265)]+'\x20for\x20updates…');_0x977497['start']();let _0x29740a;try{_0x29740a=await _(_0xbbced7['packageName']);}catch{_0x29740a={'alreadyCurrent':!0x0};}_0x977497[_0x5bb879(0x208)](),_0x29740a[_0x5bb879(0x1d2)]?console[_0x5bb879(0x1c9)](_0x5bb879(0x1b6)+_0xbbced7[_0x5bb879(0x265)]+_0x5bb879(0x1ae)):console[_0x5bb879(0x1c9)]('\x0a'+(_0xbbced7[_0x5bb879(0x1a5)]??_0xbbced7[_0x5bb879(0x265)])+_0x5bb879(0x212)),_0x2951ab(_0xbbced7[_0x5bb879(0x1c8)]),_0x190298(C(_0x2951ab));return;}if(_0x390aec==='d'||_0x390aec==='D'){if(_0x592073[_0x5bb879(0x1c5)]===0x0)return;let _0x1d45b3=_0x592073[_0x1fa0ae];if(_0x2ed45f(),f(),m(_0x5bb879(0x210)),console[_0x5bb879(0x1c9)]('\x0aUninstall\x20'+(_0x1d45b3[_0x5bb879(0x1a5)]??_0x1d45b3[_0x5bb879(0x265)])+_0x5bb879(0x218)),(await G())[_0x5bb879(0x1cf)][_0x5bb879(0x1c4)]()==='y'){let _0x3479d2=h('Uninstalling\x20'+_0x1d45b3[_0x5bb879(0x265)]+'…');_0x3479d2[_0x5bb879(0x205)]();try{await oe(_0x1d45b3['packageName']),_0x3479d2[_0x5bb879(0x208)](),console[_0x5bb879(0x1c9)](_0x5bb879(0x1b6)+_0x1d45b3[_0x5bb879(0x265)]+_0x5bb879(0x1ac));}catch(_0x20afc4){_0x3479d2[_0x5bb879(0x208)](),console[_0x5bb879(0x1c9)](_0x5bb879(0x1fe)+_0x20afc4[_0x5bb879(0x1c1)]+_0x5bb879(0x1d1));}await E();}_0x190298(C(_0x2951ab));return;}if(_0x390aec==='h'||_0x390aec==='H'||_0x390aec===_0x5bb879(0x1ee)){_0x2ed45f(),_0x190298(_0x5bb879(0x22a));return;}});});}async function E(){const _0x154f83=_0x1325f3;let _0x399043;do _0x399043=await G();while(_0x399043['name']!==_0x154f83(0x244));}import{readFileSync as _0x395f8d,existsSync as _0x26e2c2,readdirSync as _0x5f3207,statSync as _0x357e4c}from'node:fs';import{join as _0x4adc9f,resolve as _0x437dea,isAbsolute as _0x500915}from'node:path';import{execSync as _0x5176f5}from'node:child_process';function tt(_0x5a9d04){const _0xd98ed0=_0x1325f3;return _0x5a9d04[_0xd98ed0(0x259)]('.')||_0x5a9d04[_0xd98ed0(0x259)]('/')||_0x500915(_0x5a9d04);}function nt(_0xca37b6){const _0x26dfe1=_0x1325f3;let _0x27e0d5=_0x4adc9f(_0x437dea(_0xca37b6),_0x26dfe1(0x243));if(!_0x26e2c2(_0x27e0d5))return null;try{return JSON[_0x26dfe1(0x207)](_0x395f8d(_0x27e0d5,'utf8'));}catch{return null;}}function rt(_0x10a910){const _0x5d0ca6=_0x1325f3;try{return JSON['parse'](_0x5176f5(_0x5d0ca6(0x277)+_0x10a910+_0x5d0ca6(0x247),{'encoding':_0x5d0ca6(0x1b3)}));}catch{return null;}}function pe(_0x45ce34,_0x5decfa=[]){const _0x82afdd=_0x1325f3;let _0x172b93=[];try{for(let _0x457a2c of _0x5f3207(_0x45ce34)){if(_0x5decfa[_0x82afdd(0x222)](_0x457a2c))continue;let _0xd8a0dd=_0x4adc9f(_0x45ce34,_0x457a2c),_0x3b6862;try{_0x3b6862=_0x357e4c(_0xd8a0dd);}catch{continue;}_0x3b6862[_0x82afdd(0x272)]()?_0x172b93[_0x82afdd(0x1fd)](...pe(_0xd8a0dd,_0x5decfa)):/\.(js|mjs|cjs)$/[_0x82afdd(0x1be)](_0x457a2c)&&_0x172b93['push'](_0xd8a0dd);}}catch{}return _0x172b93;}function ue(_0x538ec9){const _0x451d5e=_0x1325f3;let _0x7e15=tt(_0x538ec9),_0x5aa85a=_0x7e15?nt(_0x538ec9):rt(_0x538ec9),_0x4315e3=[];if(!_0x5aa85a)return _0x4315e3['push']({'check':'package.json\x20readable','passed':!0x1,'message':_0x7e15?_0x451d5e(0x1b1)+_0x538ec9:'Could\x20not\x20fetch\x20package\x20info\x20for\x20\x22'+_0x538ec9+_0x451d5e(0x261)}),_0x4315e3;let _0x14eb50=_0x5aa85a['bin'],_0x5dfca2=typeof _0x14eb50==_0x451d5e(0x25d)?_0x14eb50:_0x14eb50&&typeof _0x14eb50==_0x451d5e(0x1f3)?Object[_0x451d5e(0x20e)](_0x14eb50)[0x0]:null,_0x5deafc=!!_0x5dfca2;_0x4315e3[_0x451d5e(0x1fd)]({'check':'bin\x20field\x20present','passed':_0x5deafc,'message':_0x5deafc?_0x451d5e(0x1f9)+JSON[_0x451d5e(0x264)](_0x14eb50):_0x451d5e(0x23f)});let _0x10df33=!0x1;if(_0x7e15&&_0x5deafc&&(_0x10df33=_0x26e2c2(_0x4adc9f(_0x437dea(_0x538ec9),_0x5dfca2)),_0x4315e3['push']({'check':_0x451d5e(0x1c6),'passed':_0x10df33,'message':_0x10df33?_0x451d5e(0x23d)+_0x5dfca2:_0x451d5e(0x1bf)+_0x5dfca2})),_0x7e15&&_0x5deafc&&_0x10df33){let _0xc8dfc9=_0x4adc9f(_0x437dea(_0x538ec9),_0x5dfca2),_0xfcf707=!0x1;try{_0xfcf707=_0x395f8d(_0xc8dfc9,_0x451d5e(0x1b3))[_0x451d5e(0x259)]('#!/usr/bin/env\x20node');}catch{}_0x4315e3[_0x451d5e(0x1fd)]({'check':_0x451d5e(0x21c),'passed':_0xfcf707,'message':_0xfcf707?_0x451d5e(0x274):_0x5dfca2+_0x451d5e(0x24b)});}let _0x380596=(Array[_0x451d5e(0x1ff)](_0x5aa85a['keywords'])?_0x5aa85a[_0x451d5e(0x1b7)]:[])['includes'](_0x451d5e(0x1e6));_0x4315e3[_0x451d5e(0x1fd)]({'check':_0x451d5e(0x226),'passed':_0x380596,'message':_0x380596?_0x451d5e(0x226):_0x451d5e(0x203)});let _0x4dd5b6=typeof _0x5aa85a[_0x451d5e(0x1f8)]==_0x451d5e(0x25d)&&_0x5aa85a[_0x451d5e(0x1f8)][_0x451d5e(0x1f5)]()[_0x451d5e(0x1c5)]>0x0;_0x4315e3['push']({'check':_0x451d5e(0x223),'passed':_0x4dd5b6,'message':_0x4dd5b6?_0x451d5e(0x1e5)+_0x5aa85a[_0x451d5e(0x1f8)]+'\x22':_0x451d5e(0x24d)});let _0x11dd5a=_0x5aa85a[_0x451d5e(0x1e6)],_0xc3417f=!!_0x11dd5a&&typeof _0x11dd5a==_0x451d5e(0x1f3);if(_0x4315e3['push']({'check':'termill\x20metadata\x20block\x20present','passed':_0xc3417f,'message':_0xc3417f?_0x451d5e(0x1ba):_0x451d5e(0x20d)}),_0xc3417f){let _0x65c200=typeof _0x11dd5a[_0x451d5e(0x1cf)]==_0x451d5e(0x25d)&&_0x11dd5a[_0x451d5e(0x1cf)][_0x451d5e(0x1f5)]()[_0x451d5e(0x1c5)]>0x0,_0x2e37e8=typeof _0x11dd5a[_0x451d5e(0x1f8)]==_0x451d5e(0x25d)&&_0x11dd5a[_0x451d5e(0x1f8)]['trim']()[_0x451d5e(0x1c5)]>0x0;_0x4315e3[_0x451d5e(0x1fd)]({'check':'termill.name\x20is\x20set','passed':_0x65c200,'message':_0x65c200?_0x451d5e(0x255)+_0x11dd5a[_0x451d5e(0x1cf)]+'\x22':_0x451d5e(0x1bb)}),_0x4315e3[_0x451d5e(0x1fd)]({'check':_0x451d5e(0x25c),'passed':_0x2e37e8,'message':_0x2e37e8?_0x451d5e(0x1b8)+_0x11dd5a['description']+'\x22':_0x451d5e(0x1ad)});}if(_0x7e15){let _0x4b991b=!0x1,_0xa8fa15=pe(_0x437dea(_0x538ec9),[_0x451d5e(0x260),'.git','dist']);for(let _0x49969b of _0xa8fa15)try{if(_0x395f8d(_0x49969b,'utf8')[_0x451d5e(0x222)](_0x451d5e(0x1bc))){_0x4b991b=!0x0;break;}}catch{}_0x4315e3[_0x451d5e(0x1fd)]({'check':_0x451d5e(0x231),'passed':_0x4b991b,'message':_0x4b991b?_0x451d5e(0x1e8):_0x451d5e(0x1cb)});}return _0x4315e3;}import{mkdirSync as _0x483241,writeFileSync as _0x425ffb,existsSync as _0x4b75bd}from'node:fs';import{join as _0x45e4a7}from'node:path';import{createInterface as _0x227187}from'node:readline';function P(_0x5f3642,_0x12ecba){return new Promise(_0x4f2ee4=>{const _0x581352=_0x3bc5;_0x5f3642[_0x581352(0x250)](_0x12ecba,_0x95c04f=>_0x4f2ee4(_0x95c04f['trim']()));});}async function me(){const _0x5a7f59=_0x1325f3;let _0x4e6c6e=_0x227187({'input':process[_0x5a7f59(0x270)],'output':process[_0x5a7f59(0x1bd)]});console[_0x5a7f59(0x1c9)](_0x5a7f59(0x1da));let _0x2464d6=await P(_0x4e6c6e,_0x5a7f59(0x1e0)),_0x4dd971=await P(_0x4e6c6e,'Display\x20name\x20(e.g.\x20My\x20Termill\x20Game):\x20'),_0x5b0823=await P(_0x4e6c6e,_0x5a7f59(0x1d6)),_0x64748f=await P(_0x4e6c6e,'Author\x20(e.g.\x20Jane\x20Doe\x20<jane@example.com>):\x20'),_0x12935a=await P(_0x4e6c6e,'Category\x20(e.g.\x20puzzle,\x20action,\x20arcade)\x20[optional,\x20press\x20Enter\x20to\x20skip]:\x20');_0x4e6c6e[_0x5a7f59(0x236)](),_0x2464d6||(console[_0x5a7f59(0x1dd)]('\x0aError:\x20package\x20name\x20is\x20required.'),process['exit'](0x1));let _0x216404=_0x45e4a7(process[_0x5a7f59(0x24a)](),_0x2464d6);_0x4b75bd(_0x216404)&&(console['error'](_0x5a7f59(0x21a)+_0x2464d6+_0x5a7f59(0x245)),process['exit'](0x1)),_0x483241(_0x216404,{'recursive':!0x0});let _0x5586f4={'name':_0x2464d6,'version':_0x5a7f59(0x237),'description':_0x5b0823||'','main':'index.js','bin':{[_0x2464d6]:_0x5a7f59(0x232)},'keywords':['termill'],'author':_0x64748f||'','license':_0x5a7f59(0x204),'termill':{'name':_0x4dd971||_0x2464d6,'description':_0x5b0823||'','launchCommand':_0x2464d6,..._0x12935a?{'category':_0x12935a}:{}}};_0x425ffb(_0x45e4a7(_0x216404,_0x5a7f59(0x243)),JSON[_0x5a7f59(0x264)](_0x5586f4,null,0x2)+'\x0a',_0x5a7f59(0x1b3));let _0x1a3caa=['#!/usr/bin/env\x20node','',_0x5a7f59(0x1fa)+(_0x4dd971||_0x2464d6)+_0x5a7f59(0x240),_0x5a7f59(0x1af),'','console.log(\x27Welcome\x20to\x20'+(_0x4dd971||_0x2464d6)+_0x5a7f59(0x1df),_0x5a7f59(0x1d7),'',_0x5a7f59(0x22f),_0x5a7f59(0x1e9),_0x5a7f59(0x1b2),'\x20\x20process.exit(0);','});',''][_0x5a7f59(0x22e)]('\x0a');_0x425ffb(_0x45e4a7(_0x216404,_0x5a7f59(0x1ef)),_0x1a3caa,_0x5a7f59(0x1b3)),_0x425ffb(_0x45e4a7(_0x216404,_0x5a7f59(0x1db)),_0x5a7f59(0x233),'utf8');let _0x59764b=['#\x20'+(_0x4dd971||_0x2464d6),'',_0x5b0823||'A\x20termill\x20game.','','##\x20Play','',_0x5a7f59(0x26b),_0x5a7f59(0x235)+_0x2464d6,_0x5a7f59(0x1e6),_0x5a7f59(0x273),'','Or\x20run\x20directly:','',_0x5a7f59(0x26b),_0x2464d6,_0x5a7f59(0x273),'',_0x5a7f59(0x214),'','MIT','']['join']('\x0a');_0x425ffb(_0x45e4a7(_0x216404,_0x5a7f59(0x213)),_0x59764b,'utf8'),console[_0x5a7f59(0x1c9)](_0x5a7f59(0x271)+_0x2464d6+'/'),console['log'](_0x5a7f59(0x275)),console[_0x5a7f59(0x1c9)](_0x5a7f59(0x267)+_0x2464d6),console[_0x5a7f59(0x1c9)](_0x5a7f59(0x1b4)),console[_0x5a7f59(0x1c9)](_0x5a7f59(0x22d)),console[_0x5a7f59(0x1c9)]('\x20\x20npm\x20publish\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20publish\x20to\x20npm\x20when\x20ready'),console[_0x5a7f59(0x1c9)]('');}function at(){_0x289ad9(w,{'recursive':!0x0}),_0x289ad9(x,{'recursive':!0x0});}async function ct(){const _0xf0684=_0x1325f3;at(),await ce();let _0x66f4aa=_0xf0684(0x22a);for(;;)_0x66f4aa===_0xf0684(0x22a)?_0x66f4aa=await B(R):_0x66f4aa===_0xf0684(0x21f)?_0x66f4aa=await C(T):_0x66f4aa&&typeof _0x66f4aa['then']==_0xf0684(0x206)?_0x66f4aa=await _0x66f4aa:_0x66f4aa=_0xf0684(0x22a);}var de=process[_0x1325f3(0x1fb)][0x2];if(de===_0x1325f3(0x262)){let e=process[_0x1325f3(0x1fb)][0x3]??'.',t=ue(e),r=!0x0;for(let n of t)n['passed']?console['log']('✓\x20'+n['check']):n[_0x1325f3(0x1aa)]['includes'](_0x1325f3(0x266))?console[_0x1325f3(0x1c9)]('⚠\x20'+n[_0x1325f3(0x1aa)]+':\x20'+n[_0x1325f3(0x1c1)]):(console[_0x1325f3(0x1c9)]('✗\x20'+n['check']+':\x20'+n['message']),r=!0x1);process[_0x1325f3(0x22c)](r?0x0:0x1);}else de===_0x1325f3(0x256)?me()['catch'](_0x4e533d=>{const _0x5ce207=_0x1325f3;console[_0x5ce207(0x1dd)]('Init\x20failed:',_0x4e533d[_0x5ce207(0x1c1)]??_0x4e533d),process[_0x5ce207(0x22c)](0x1);}):ct()['catch'](_0x186bab=>{const _0x16fb79=_0x1325f3;console[_0x16fb79(0x1dd)](_0x16fb79(0x246),_0x186bab[_0x16fb79(0x1c1)]??_0x186bab),process[_0x16fb79(0x22c)](0x1);});
2
+ const _0x396004=_0x24d8;(function(_0xc9e785,_0x47e230){const _0x179e8e=_0x24d8,_0x11e79a=_0xc9e785();while(!![]){try{const _0x38b6d1=-parseInt(_0x179e8e(0x1c8))/0x1+-parseInt(_0x179e8e(0x1d7))/0x2*(-parseInt(_0x179e8e(0x19a))/0x3)+parseInt(_0x179e8e(0x19f))/0x4+parseInt(_0x179e8e(0x1dd))/0x5+-parseInt(_0x179e8e(0x1b5))/0x6*(parseInt(_0x179e8e(0x204))/0x7)+-parseInt(_0x179e8e(0x1b3))/0x8*(-parseInt(_0x179e8e(0x1e4))/0x9)+-parseInt(_0x179e8e(0x211))/0xa*(parseInt(_0x179e8e(0x1eb))/0xb);if(_0x38b6d1===_0x47e230)break;else _0x11e79a['push'](_0x11e79a['shift']());}catch(_0x503642){_0x11e79a['push'](_0x11e79a['shift']());}}}(_0x5be1,0x87774));import{mkdirSync as _0x18ada5}from'node:fs';import{homedir as _0x556349}from'node:os';import{join as _0x16adfa}from'node:path';var w=_0x16adfa(_0x556349(),_0x396004(0x1df)),x=_0x16adfa(w,_0x396004(0x1e0)),k=_0x16adfa(w,_0x396004(0x224)),b=_0x16adfa(w,_0x396004(0x1f4)),O=[];import{generateKeyPairSync as _0x40d1e4,sign as _0x1f85c6,verify as _0x2730e9,createPublicKey as _0x5c17b2}from'node:crypto';import{readFileSync as _0x580350,writeFileSync as _0x3716a9,existsSync as _0x350367,mkdirSync as _0x16dc8b}from'node:fs';import{join as _0x3a0108}from'node:path';var z=_0x3a0108(x,_0x396004(0x1cc)),D=_0x3a0108(x,_0x396004(0x1c3));function Q(){const _0x1e8b89=_0x396004;_0x16dc8b(x,{'recursive':!0x0});let {privateKey:_0x155221,publicKey:_0x3c0607}=_0x40d1e4('ed25519',{'privateKeyEncoding':{'type':_0x1e8b89(0x251),'format':'pem'},'publicKeyEncoding':{'type':_0x1e8b89(0x1ab),'format':'der'}}),_0x44fb2f=_0x3c0607[_0x1e8b89(0x212)](-0x20)[_0x1e8b89(0x25e)]('hex');return _0x3716a9(z,_0x155221,{'encoding':'utf8','mode':0x180}),_0x3716a9(D,_0x44fb2f,{'encoding':'utf8','mode':0x1a4}),{'publicKey':_0x44fb2f};}function X(){return _0x350367(z)&&_0x350367(D);}function Z(){const _0x12170b=_0x396004;return _0x580350(D,_0x12170b(0x24c))[_0x12170b(0x196)]();}import{readFileSync as _0x301c2e,writeFileSync as _0x3ab2c9,existsSync as _0x23ae4c,mkdirSync as _0x1bf9a8}from'node:fs';import{dirname as _0x1ee6d8}from'node:path';function _0x5be1(){const _0xf680cc=['\x1b[B','Display\x20name\x20(e.g.\x20My\x20Termill\x20Game):\x20','bin\x20file\x20has\x20#!/usr/bin/env\x20node\x20shebang','check','repeat','termill.name:\x20\x22','columns','env','keywords','filter','node_modules\x0a','termill.description\x20is\x20missing\x20or\x20empty','exit','\x20is\x20up\x20to\x20date.\x20Launching…','name','objects','\x0aSearch:\x20','Missing\x20or\x20empty\x20\x22description\x22\x20field\x20in\x20package.json','.git','cwd','home','setEncoding','\x0aWelcome\x20back!','keywords\x20includes\x20\x22termill\x22','Author\x20(e.g.\x20Jane\x20Doe\x20<jane@example.com>):\x20','\x0aNo\x20identity\x20found.','description\x20is\x20non-empty','A\x20termill\x20game.','toISOString','//\x20','\x20\x20cd\x20','utf8','&size=20','//\x20TODO:\x20implement\x20your\x20game\x20here','Discovering\x20games…','termill\x20—\x20discover','pkcs8','function','games','termill\x20metadata\x20block\x20present','\x20version\x20--json','\x0atermill\x20init\x20—\x20scaffold\x20a\x20new\x20termill\x20game\x20project\x0a','termill.description:\x20\x22','linux','No\x20package.json\x20found\x20at\x20','backspace','!\x27);','floor','Your\x20identity:\x20','toString','termill','error','dependencies','xterm','trim','Missing\x20\x22bin\x22\x20field\x20in\x20package.json\x20—\x20add\x20a\x20bin\x20entry\x20pointing\x20to\x20your\x20entry\x20file','\x0aInstalling\x20','\x0a\x20\x20No\x20games\x20installed.\x20Press\x20H\x20to\x20discover\x20games.\x0a','801819FEolLB','log','console.log(\x27Welcome\x20to\x20','MIT','Searching…','1980828RwVNhS','process.exit()\x20call\x20found\x20in\x20source\x20files','bin\x20field\x20present','\x20\x20No\x20results.\x20Type\x20to\x20search\x20or\x20wait\x20for\x20peer\x20gossip.\x0a','npm\x20install\x20-g\x20','bin\x20file\x20found:\x20','bin\x20file\x20exists','pause','toLowerCase','termill\x20—\x20installing','[0m','\x0aError:\x20package\x20name\x20is\x20required.','spki','argv','termill.description\x20is\x20set','version','description','```bash','\x1b[2J\x1b[H','\x20\x20process.exit(0);','2160632quljvZ','.\x20Press\x20ENTER\x20to\x20continue.','132Smshib','packageName','\x0a✓\x20','parse','Add\x20\x22termill\x22\x20to\x20the\x20keywords\x20array\x20in\x20package.json\x20for\x20discoverability','message','npm\x20uninstall\x20-g\x20','description:\x20\x22','object','validate','\x20keywords:termill','\x0aError:\x20directory\x20\x22','\x20installed.\x20Press\x20ENTER\x20to\x20continue.','Could\x20not\x20fetch\x20package\x20info\x20for\x20\x22','id_ed25519.pub','json','\x1b[A','Init\x20failed:','https://registry.npmjs.org/-/v1/search','458997oYKJmm','?text=','bin\x20field\x20found:\x20','bin','id_ed25519','flat','[termill]\x20Fatal\x20error:','includes','#!/usr/bin/env\x20node','package','start','length','all','process.stdin.resume();','termill\x20—\x20identity','6kQogeK','?\x20[Y/N]','\x20—\x20entry\x20point','stringify','\x0aNext\x20steps:','\x0a✓\x20Project\x20scaffolded\x20at\x20./','148600SkkUDd','osascript','.termill','keys','##\x20License','max','startsWith','27SBJARN','termill\x20—\x20library','timeout','data','values','Checking\x20','unknown','1386yLVELq','stop','[2m','\x22\x20already\x20exists\x20in\x20the\x20current\x20folder.','inherit','find','removeListener','question','Category\x20(e.g.\x20puzzle,\x20action,\x20arcade)\x20[optional,\x20press\x20Enter\x20to\x20skip]:\x20','peers.json','left','min','process.stdin.once(\x27data\x27,\x20()\x20=>\x20{','title','catch','map','do\x20shell\x20script\x20\x22open\x20-a\x20Terminal\x20','\x0aIdentity\x20created.\x20Your\x20public\x20key:','push','library','/games','return','escape','once','package.json','106106OrHbUK','isArray','/peers','WARNING:\x20No\x20process.exit()\x20found.\x20termill\x20spawns\x20a\x20new\x20terminal\x20window\x20—\x20your\x20game\x20must\x20call\x20process.exit()\x20on\x20quit\x20to\x20close\x20it\x20cleanly','process.exit()\x20call\x20found\x20(warn\x20only)','termill.name\x20is\x20set','launchCommand','```','./index.js','write','down','string','node_modules','62670SmthPz','slice','cmd.exe','\x20uninstalled.\x20Press\x20ENTER\x20to\x20continue.','\x20\x20npm\x20link\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20link\x20globally\x20for\x20local\x20testing','warn\x20only','stdout','index.js','\x20is\x20missing\x20\x22#!/usr/bin/env\x20node\x22\x20on\x20line\x201','keywords:termill','win32','npm\x20list\x20-g\x20--json\x20','isTTY','package.json\x20readable','\x22\x20from\x20npm','isDirectory','Press\x20ENTER\x20to\x20continue.','npm\x20view\x20','README.md','library.json','resume','bin\x20file\x20not\x20found\x20at\x20path:\x20','ctrl+c','init','\x1b[C','darwin','setRawMode','\x0a✗\x20Install\x20failed:\x20'];_0x5be1=function(){return _0xf680cc;};return _0x5be1();}function N(){const _0x48b505=_0x396004;if(!_0x23ae4c(k))return[];try{return JSON[_0x48b505(0x1b8)](_0x301c2e(k,_0x48b505(0x24c)));}catch{return[];}}function q(_0x517a70){const _0x1e307f=_0x396004;_0x1bf9a8(_0x1ee6d8(k),{'recursive':!0x0}),_0x3ab2c9(k,JSON[_0x1e307f(0x1da)](_0x517a70,null,0x2),_0x1e307f(0x24c));}function ee(_0x415f0a){const _0x243cba=_0x396004;let _0x3f92d4=N()[_0x243cba(0x236)](_0x215025=>_0x215025[_0x243cba(0x1b6)]!==_0x415f0a[_0x243cba(0x1b6)]);_0x3f92d4[_0x243cba(0x1fd)](_0x415f0a),q(_0x3f92d4);}function te(_0x4e000e){const _0x437c0a=_0x396004;return N()[_0x437c0a(0x1f0)](_0x2c1e5b=>_0x2c1e5b[_0x437c0a(0x1b6)]===_0x4e000e)??null;}function ne(_0x4cfdaa){const _0x1d6c12=_0x396004;let _0x5bcdea=N()[_0x1d6c12(0x236)](_0xf711b9=>_0xf711b9[_0x1d6c12(0x1b6)]!==_0x4cfdaa);q(_0x5bcdea);}function re(){return N();}import{execSync as _0x221e0e}from'node:child_process';import{readFileSync as _0x44f2a7}from'node:fs';import{join as _0x520f8b}from'node:path';function Te(_0x4d3b9b){const _0x19fa7d=_0x396004;let _0x3071a9=_0x221e0e('npm\x20root\x20-g',{'encoding':_0x19fa7d(0x24c)})['trim'](),_0x3853c7=_0x520f8b(_0x3071a9,_0x4d3b9b,_0x19fa7d(0x203)),_0x5b8f9a=JSON[_0x19fa7d(0x1b8)](_0x44f2a7(_0x3853c7,'utf8'));if(!_0x5b8f9a['termill'])throw new Error('Package\x20\x22'+_0x4d3b9b+'\x22\x20is\x20missing\x20a\x20\x22termill\x22\x20property\x20in\x20its\x20package.json');return _0x5b8f9a['termill'];}function Re(_0x317013){const _0x1b56c6=_0x396004;try{let _0x26b46a=JSON[_0x1b56c6(0x1b8)](_0x221e0e(_0x1b56c6(0x222)+_0x317013+_0x1b56c6(0x255),{'encoding':_0x1b56c6(0x24c)}));return typeof _0x26b46a==_0x1b56c6(0x20f)?_0x26b46a:String(_0x26b46a);}catch{return _0x1b56c6(0x1ea);}}async function _(_0x1fb051){const _0x2fc392=_0x396004;let _0x4cdec5=te(_0x1fb051);if(_0x4cdec5){let _0x5c54be=Re(_0x1fb051);if(_0x5c54be!==_0x2fc392(0x1ea)&&_0x5c54be===_0x4cdec5[_0x2fc392(0x1ae)])return{'alreadyCurrent':!0x0};}_0x221e0e(_0x2fc392(0x1a3)+_0x1fb051,{'stdio':_0x2fc392(0x1ef)});let _0x70b099=Te(_0x1fb051),_0x4d021b=JSON[_0x2fc392(0x1b8)](_0x221e0e(_0x2fc392(0x21c)+_0x1fb051,{'encoding':_0x2fc392(0x24c)}))[_0x2fc392(0x261)]?.[_0x1fb051]?.[_0x2fc392(0x1ae)]??_0x2fc392(0x1ea);return ee({'packageName':_0x1fb051,'title':_0x70b099[_0x2fc392(0x1f8)]??_0x1fb051,'description':_0x70b099['description']??'','version':_0x4d021b,'launchCommand':_0x70b099[_0x2fc392(0x20a)],'installedAt':new Date()[_0x2fc392(0x249)]()}),_0x4cdec5?{'updated':!0x0}:{};}async function oe(_0x171a19){const _0x277e02=_0x396004;_0x221e0e(_0x277e02(0x1bb)+_0x171a19,{'stdio':_0x277e02(0x1ef)}),ne(_0x171a19);}import{spawn as _0x403c19}from'node:child_process';function Ae(){const _0x1483fd=_0x396004;let _0x1ae93f=process['platform'];return _0x1ae93f==='win32'||_0x1ae93f===_0x1483fd(0x22a)?_0x1ae93f:_0x1483fd(0x258);}function Le(_0x37b965,_0xa7c98f){const _0x255d15=_0x396004;switch(_0xa7c98f){case _0x255d15(0x21b):return{'cmd':_0x255d15(0x213),'args':['/c',_0x255d15(0x1d2),_0x255d15(0x213),'/k',_0x37b965],'options':{'detached':!0x0,'shell':!0x1}};case _0x255d15(0x22a):return{'cmd':_0x255d15(0x1de),'args':['-e',_0x255d15(0x1fb)+_0x37b965+'\x22'],'options':{'detached':!0x0}};case _0x255d15(0x258):default:return{'cmd':process[_0x255d15(0x234)]['TERM']??_0x255d15(0x262),'args':['-e',_0x37b965],'options':{'detached':!0x0}};}}function T(_0x4db261){let {cmd:_0x3f9983,args:_0x15c087,options:_0x1d6f34}=Le(_0x4db261,Ae());_0x403c19(_0x3f9983,_0x15c087,{..._0x1d6f34,'stdio':'ignore'})['unref']();}import{readFileSync as _0x12d8de,writeFileSync as _0x2d9afa,existsSync as _0x4d1270,mkdirSync as _0x4bba43}from'node:fs';import{dirname as _0x16709c}from'node:path';function Je(){const _0x3993e9=_0x396004;if(!_0x4d1270(b))return[...O];try{return JSON['parse'](_0x12d8de(b,_0x3993e9(0x24c)));}catch{return[...O];}}function Ge(_0x325869){const _0x2e6487=_0x396004;_0x4bba43(_0x16709c(b),{'recursive':!0x0}),_0x2d9afa(b,JSON['stringify'](_0x325869,null,0x2),_0x2e6487(0x24c));}async function He(_0x245132){const _0x58ba65=_0x396004;try{let _0x4fe654=await fetch(_0x245132+_0x58ba65(0x1ff),{'signal':AbortSignal[_0x58ba65(0x1e6)](0x1388)});return _0x4fe654['ok']?await _0x4fe654['json']():[];}catch{return[];}}async function Be(_0x343f8e){const _0x1f577c=_0x396004;try{let _0x3dc9fe=await fetch(_0x343f8e+_0x1f577c(0x206),{'signal':AbortSignal[_0x1f577c(0x1e6)](0x1388)});return _0x3dc9fe['ok']?await _0x3dc9fe[_0x1f577c(0x1c4)]():[];}catch{return[];}}async function se(){const _0x425bb1=_0x396004;let _0x4acc42=Je(),[_0x2a7ed9,_0x5164a8]=await Promise['all']([Promise[_0x425bb1(0x1d4)](_0x4acc42[_0x425bb1(0x1fa)](_0x57ecc1=>He(_0x57ecc1))),Promise[_0x425bb1(0x1d4)](_0x4acc42['map'](_0x3c9772=>Be(_0x3c9772)))]),_0x5bc3aa=_0x2a7ed9[_0x425bb1(0x1cd)](),_0x55fffb=_0x5164a8[_0x425bb1(0x1cd)](),_0x407eec=[...new Set([..._0x4acc42,..._0x55fffb])];return Ge(_0x407eec),{'games':_0x5bc3aa,'peers':_0x407eec};}var Ye=_0x396004(0x1c7);function Fe(_0x20c90c){const _0x5528f6=_0x396004;let _0x5b8d0f=_0x20c90c['termill']??{};return{'packageName':_0x20c90c['name'],'title':_0x5b8d0f[_0x5528f6(0x1f8)]??_0x20c90c[_0x5528f6(0x23b)],'description':_0x5b8d0f['description']??_0x20c90c['description']??'','version':_0x20c90c[_0x5528f6(0x1ae)]??_0x5528f6(0x1ea),'keywords':_0x20c90c[_0x5528f6(0x235)]??[]};}async function R(_0x43b526=''){const _0xd59327=_0x396004;let [_0x1236c5,_0x3e913c]=await Promise[_0xd59327(0x1d4)]([se()['catch'](()=>({'games':[]})),Ue(_0x43b526)]),_0x1544c1=_0x1236c5[_0xd59327(0x253)]??[],_0x520a49=new Set(_0x1544c1[_0xd59327(0x1fa)](_0x534d81=>_0x534d81[_0xd59327(0x1b6)])),_0xfb8140=_0x3e913c[_0xd59327(0x236)](_0x23e1d7=>!_0x520a49['has'](_0x23e1d7[_0xd59327(0x1b6)])),_0x4b684e=_0x43b526[_0xd59327(0x196)]()[_0xd59327(0x1a7)](),_0x3a2afd=_0x4c719f=>_0x4b684e?_0x4c719f[_0xd59327(0x1b6)][_0xd59327(0x1a7)]()['includes'](_0x4b684e)||(_0x4c719f[_0xd59327(0x1f8)]??'')['toLowerCase']()[_0xd59327(0x1cf)](_0x4b684e)||(_0x4c719f[_0xd59327(0x1af)]??'')[_0xd59327(0x1a7)]()[_0xd59327(0x1cf)](_0x4b684e):!0x0;return[..._0x1544c1[_0xd59327(0x236)](_0x3a2afd),..._0xfb8140[_0xd59327(0x236)](_0x3a2afd)];}async function Ue(_0x3b4979){const _0x351020=_0x396004;try{let _0x4fd052=_0x3b4979?encodeURIComponent(_0x3b4979+_0x351020(0x1bf)):_0x351020(0x21a),_0x7a2b5d=Ye+_0x351020(0x1c9)+_0x4fd052+_0x351020(0x24d),_0x2077df=await fetch(_0x7a2b5d,{'signal':AbortSignal[_0x351020(0x1e6)](0x1f40)});return _0x2077df['ok']?((await _0x2077df[_0x351020(0x1c4)]())[_0x351020(0x23c)]??[])['map'](_0x24f1ef=>Fe(_0x24f1ef[_0x351020(0x1d1)])):[];}catch{return[];}}import{stdout as _0x492c74}from'node:process';var j='\x1b',M=j+_0x396004(0x1a9),Ve=j+'[7m',ze=j+_0x396004(0x1ed),Qe=j+'[1m',ie=()=>_0x492c74[_0x396004(0x233)]??0x50;function m(_0x39cf1f){const _0x49ca87=_0x396004;let _0x5f3659=ie(),_0x1a9bef='\x20'+_0x39cf1f+'\x20',_0x40b5a9=Math[_0x49ca87(0x25c)]((_0x5f3659-_0x1a9bef[_0x49ca87(0x1d3)])/0x2),_0x41711c='─'[_0x49ca87(0x231)](Math[_0x49ca87(0x1e2)](0x0,_0x40b5a9))+_0x1a9bef+'─'['repeat'](Math[_0x49ca87(0x1e2)](0x0,_0x40b5a9));console[_0x49ca87(0x19b)](Qe+_0x41711c['slice'](0x0,_0x5f3659)+M);}function K(_0x15434f,_0x4887c9){_0x15434f['forEach']((_0x5e5bde,_0x27cc9e)=>{const _0x1e1efd=_0x24d8;let _0x1d464b=(_0x27cc9e===_0x4887c9?'>\x20':'\x20\x20')+_0x5e5bde;console[_0x1e1efd(0x19b)](_0x27cc9e===_0x4887c9?Ve+_0x1d464b['padEnd'](ie())+M:_0x1d464b);});}function J(_0x1f6f26){const _0x378a45=_0x396004;console[_0x378a45(0x19b)](ze+_0x1f6f26+M);}function _0x24d8(_0x1140d4,_0x8d741){_0x1140d4=_0x1140d4-0x196;const _0x5be1ed=_0x5be1();let _0x24d8fc=_0x5be1ed[_0x1140d4];return _0x24d8fc;}function h(_0x27d212){let _0x5db56b=['⠋','⠙','⠹','⠸','⠼','⠴','⠦','⠧','⠇','⠏'],_0x4f7baa=0x0,_0x5ebce1=null;return{'start'(){_0x5ebce1=setInterval(()=>{const _0x1c5092=_0x24d8;process[_0x1c5092(0x217)][_0x1c5092(0x20d)]('\x0d'+_0x5db56b[_0x4f7baa++%_0x5db56b['length']]+'\x20'+_0x27d212);},0x50);},'stop'(){const _0x1b939a=_0x24d8;_0x5ebce1&&(clearInterval(_0x5ebce1),_0x5ebce1=null,process[_0x1b939a(0x217)]['write']('\x0d'+'\x20'[_0x1b939a(0x231)](_0x27d212[_0x1b939a(0x1d3)]+0x4)+'\x0d'));}};}function f(){const _0x5577ad=_0x396004;process[_0x5577ad(0x217)][_0x5577ad(0x20d)](_0x5577ad(0x1b1));}function G(){return new Promise(_0x42434c=>{const _0x1cf10e=_0x24d8;let {stdin:_0x141174}=process,_0x4f80fc=_0x141174['isRaw'];_0x141174[_0x1cf10e(0x21d)]&&_0x141174[_0x1cf10e(0x22b)](!0x0),_0x141174[_0x1cf10e(0x225)](),_0x141174['setEncoding'](_0x1cf10e(0x24c));function _0x31e144(_0x548a5c){const _0x1a9a57=_0x1cf10e;_0x141174[_0x1a9a57(0x1f1)](_0x1a9a57(0x1e7),_0x31e144),_0x141174[_0x1a9a57(0x21d)]&&!_0x4f80fc&&_0x141174[_0x1a9a57(0x22b)](!0x1),_0x141174['pause']();let _0x3fa231=ae(_0x548a5c);_0x42434c({'name':_0x3fa231,'sequence':_0x548a5c,'ctrl':_0x548a5c<='\x1a'&&_0x548a5c!=='\x0d','shift':!0x1});}_0x141174[_0x1cf10e(0x202)](_0x1cf10e(0x1e7),_0x31e144);});}function H(_0x14e2bb){const _0x3d2222=_0x396004;let {stdin:_0x44abee}=process;_0x44abee['isTTY']&&_0x44abee['setRawMode'](!0x0),_0x44abee[_0x3d2222(0x225)](),_0x44abee[_0x3d2222(0x242)](_0x3d2222(0x24c));function _0x1b0d8d(_0x4a6a12){_0x14e2bb({'name':ae(_0x4a6a12),'sequence':_0x4a6a12});}return _0x44abee['on']('data',_0x1b0d8d),function(){const _0x48884a=_0x3d2222;_0x44abee[_0x48884a(0x1f1)](_0x48884a(0x1e7),_0x1b0d8d),_0x44abee[_0x48884a(0x21d)]&&_0x44abee[_0x48884a(0x22b)](!0x1),_0x44abee[_0x48884a(0x1a6)]();};}function ae(_0x212bd1){const _0x356b13=_0x396004;return _0x212bd1==='\x0d'||_0x212bd1==='\x0a'?_0x356b13(0x200):_0x212bd1==='\x1b'?_0x356b13(0x201):_0x212bd1===_0x356b13(0x1c5)?'up':_0x212bd1===_0x356b13(0x22d)?_0x356b13(0x20e):_0x212bd1===_0x356b13(0x229)?'right':_0x212bd1==='\x1b[D'?_0x356b13(0x1f5):_0x212bd1==='\x7f'||_0x212bd1==='\x08'?_0x356b13(0x25a):_0x212bd1==='\x03'?_0x356b13(0x227):_0x212bd1;}async function ce(){const _0x35dd5f=_0x396004;if(f(),m(_0x35dd5f(0x1d6)),X()){let _0x10fc6e=Z();console[_0x35dd5f(0x19b)](_0x35dd5f(0x243)),console['log'](_0x35dd5f(0x25d)+_0x10fc6e[_0x35dd5f(0x212)](0x0,0x10)+'…\x0a'),console[_0x35dd5f(0x19b)](_0x35dd5f(0x221)),await E();}else{console[_0x35dd5f(0x19b)](_0x35dd5f(0x246)),console[_0x35dd5f(0x19b)]('Press\x20ENTER\x20to\x20generate\x20a\x20new\x20keypair\x20and\x20create\x20your\x20identity.\x0a'),await E();let _0x568659=h('Generating\x20Ed25519\x20keypair…');_0x568659[_0x35dd5f(0x1d2)]();let {publicKey:_0x18f00a}=Q();_0x568659[_0x35dd5f(0x1ec)](),console[_0x35dd5f(0x19b)](_0x35dd5f(0x1fc)),console[_0x35dd5f(0x19b)]('\x20\x20'+_0x18f00a[_0x35dd5f(0x212)](0x0,0x10)+'…\x0a'),console[_0x35dd5f(0x19b)](_0x35dd5f(0x221)),await E();}}async function B(_0x5e5bec=R){const _0x1091a0=_0x396004;f(),m(_0x1091a0(0x250));let _0x3204af='',_0x5c84ab=[],_0x29aa96=0x0,_0x38058d=()=>{const _0x1de20d=_0x1091a0;f(),m('termill\x20—\x20discover'),console[_0x1de20d(0x19b)](_0x1de20d(0x23d)+_0x3204af+'_\x0a'),_0x5c84ab[_0x1de20d(0x1d3)]===0x0?console[_0x1de20d(0x19b)](_0x1de20d(0x1a2)):K(_0x5c84ab[_0x1de20d(0x1fa)](_0x170de1=>(_0x170de1['title']??_0x170de1[_0x1de20d(0x1b6)])+'\x20\x20'+(_0x170de1[_0x1de20d(0x1ae)]??'')+'\x20\x20'+(_0x170de1['description']??'')),_0x29aa96),J('[↑↓]\x20navigate\x20\x20[ENTER]\x20install\x20\x20[L]\x20library\x20\x20[CTRL+C]\x20quit');},_0x364eb5=h(_0x1091a0(0x24f));_0x364eb5[_0x1091a0(0x1d2)]();try{_0x5c84ab=await _0x5e5bec('');}catch{_0x5c84ab=[];}return _0x364eb5[_0x1091a0(0x1ec)](),_0x38058d(),new Promise(_0x99412e=>{let _0x4df0f=H(async({name:_0x3e5506,sequence:_0x10e985})=>{const _0x576d91=_0x24d8;if(_0x3e5506===_0x576d91(0x227)&&(_0x4df0f(),process[_0x576d91(0x239)](0x0)),_0x3e5506==='up'){_0x29aa96=Math[_0x576d91(0x1e2)](0x0,_0x29aa96-0x1),_0x38058d();return;}if(_0x3e5506===_0x576d91(0x20e)){_0x29aa96=Math['min'](_0x5c84ab[_0x576d91(0x1d3)]-0x1,_0x29aa96+0x1),_0x38058d();return;}if(_0x3e5506===_0x576d91(0x200)){if(_0x5c84ab[_0x576d91(0x1d3)]===0x0)return;let _0x1637eb=_0x5c84ab[_0x29aa96];_0x4df0f(),f(),m(_0x576d91(0x1a8)),console[_0x576d91(0x19b)](_0x576d91(0x198)+_0x1637eb['packageName']+'…\x0a');let _0x310038=h(_0x576d91(0x1a3)+_0x1637eb['packageName']);_0x310038[_0x576d91(0x1d2)]();try{await _(_0x1637eb[_0x576d91(0x1b6)]),_0x310038['stop'](),console['log'](_0x576d91(0x1b7)+_0x1637eb[_0x576d91(0x1b6)]+_0x576d91(0x1c1));}catch(_0x4f673c){_0x310038['stop'](),console[_0x576d91(0x19b)](_0x576d91(0x22c)+_0x4f673c['message']+_0x576d91(0x1b4));}await E(),_0x99412e(B(_0x5e5bec));return;}if(_0x3e5506['toLowerCase']()==='l'){_0x4df0f(),_0x99412e(_0x576d91(0x1fe));return;}if(_0x3e5506===_0x576d91(0x25a))_0x3204af=_0x3204af[_0x576d91(0x212)](0x0,-0x1);else{if(_0x10e985[_0x576d91(0x1d3)]===0x1&&_0x10e985>='\x20')_0x3204af+=_0x10e985;else return;}_0x29aa96=0x0;let _0xf83075=h(_0x576d91(0x19e));_0xf83075[_0x576d91(0x1d2)]();try{_0x5c84ab=await _0x5e5bec(_0x3204af);}catch{_0x5c84ab=[];}_0xf83075[_0x576d91(0x1ec)](),_0x38058d();});});}async function C(_0xc23dec=T){f(),m('termill\x20—\x20library');let _0x29f043=re(),_0x210b29=0x0,_0x44c5b1=()=>{const _0x396c45=_0x24d8;f(),m(_0x396c45(0x1e5)),_0x29f043[_0x396c45(0x1d3)]===0x0?console['log'](_0x396c45(0x199)):(console[_0x396c45(0x19b)](''),K(_0x29f043['map'](_0x7ec1c1=>(_0x7ec1c1[_0x396c45(0x1f8)]??_0x7ec1c1[_0x396c45(0x1b6)])+'\x20\x20v'+(_0x7ec1c1[_0x396c45(0x1ae)]??'?')),_0x210b29)),J('[↑↓]\x20navigate\x20\x20[ENTER]\x20launch\x20\x20[D]\x20uninstall\x20\x20[H/ESC]\x20home\x20\x20[CTRL+C]\x20quit');};return _0x44c5b1(),new Promise(_0x6f3893=>{let _0x24a78e=H(async({name:_0x2226bd})=>{const _0xdca66=_0x24d8;if(_0x2226bd===_0xdca66(0x227)&&(_0x24a78e(),process[_0xdca66(0x239)](0x0)),_0x2226bd==='up'){_0x210b29=Math['max'](0x0,_0x210b29-0x1),_0x44c5b1();return;}if(_0x2226bd===_0xdca66(0x20e)){_0x210b29=Math[_0xdca66(0x1f6)](_0x29f043[_0xdca66(0x1d3)]-0x1,_0x210b29+0x1),_0x44c5b1();return;}if(_0x2226bd===_0xdca66(0x200)&&_0x29f043[_0xdca66(0x1d3)]>0x0){let _0x439129=_0x29f043[_0x210b29];_0x24a78e(),f(),m(_0xdca66(0x1e5));let _0x1e5d66=h(_0xdca66(0x1e9)+_0x439129[_0xdca66(0x1b6)]+'\x20for\x20updates…');_0x1e5d66[_0xdca66(0x1d2)]();let _0x3642f5;try{_0x3642f5=await _(_0x439129[_0xdca66(0x1b6)]);}catch{_0x3642f5={'alreadyCurrent':!0x0};}_0x1e5d66['stop'](),_0x3642f5['updated']?console[_0xdca66(0x19b)]('\x0a✓\x20'+_0x439129[_0xdca66(0x1b6)]+'\x20updated\x20to\x20latest.\x20Launching…'):console[_0xdca66(0x19b)]('\x0a'+(_0x439129['title']??_0x439129[_0xdca66(0x1b6)])+_0xdca66(0x23a)),_0xc23dec(_0x439129[_0xdca66(0x20a)]),_0x6f3893(C(_0xc23dec));return;}if(_0x2226bd==='d'||_0x2226bd==='D'){if(_0x29f043[_0xdca66(0x1d3)]===0x0)return;let _0x19bdb8=_0x29f043[_0x210b29];if(_0x24a78e(),f(),m(_0xdca66(0x1e5)),console['log']('\x0aUninstall\x20'+(_0x19bdb8['title']??_0x19bdb8[_0xdca66(0x1b6)])+_0xdca66(0x1d8)),(await G())[_0xdca66(0x23b)][_0xdca66(0x1a7)]()==='y'){let _0x43a8fe=h('Uninstalling\x20'+_0x19bdb8[_0xdca66(0x1b6)]+'…');_0x43a8fe[_0xdca66(0x1d2)]();try{await oe(_0x19bdb8[_0xdca66(0x1b6)]),_0x43a8fe['stop'](),console[_0xdca66(0x19b)](_0xdca66(0x1b7)+_0x19bdb8[_0xdca66(0x1b6)]+_0xdca66(0x214));}catch(_0x405769){_0x43a8fe[_0xdca66(0x1ec)](),console['log']('\x0a✗\x20Uninstall\x20failed:\x20'+_0x405769[_0xdca66(0x1ba)]+_0xdca66(0x1b4));}await E();}_0x6f3893(C(_0xc23dec));return;}if(_0x2226bd==='h'||_0x2226bd==='H'||_0x2226bd===_0xdca66(0x201)){_0x24a78e(),_0x6f3893(_0xdca66(0x241));return;}});});}async function E(){const _0x50830a=_0x396004;let _0x17ca14;do _0x17ca14=await G();while(_0x17ca14[_0x50830a(0x23b)]!=='return');}import{readFileSync as _0x4c6a4f,existsSync as _0x13d220,readdirSync as _0x524eab,statSync as _0x1fec6a}from'node:fs';import{join as _0x378be0,resolve as _0x198d35,isAbsolute as _0x5374e0}from'node:path';import{execSync as _0x175acf}from'node:child_process';function tt(_0x50e98d){const _0x57f822=_0x396004;return _0x50e98d[_0x57f822(0x1e3)]('.')||_0x50e98d[_0x57f822(0x1e3)]('/')||_0x5374e0(_0x50e98d);}function nt(_0x136193){const _0x59c809=_0x396004;let _0x3b6d71=_0x378be0(_0x198d35(_0x136193),_0x59c809(0x203));if(!_0x13d220(_0x3b6d71))return null;try{return JSON['parse'](_0x4c6a4f(_0x3b6d71,_0x59c809(0x24c)));}catch{return null;}}function rt(_0x4130f5){const _0x1834e6=_0x396004;try{return JSON[_0x1834e6(0x1b8)](_0x175acf(_0x1834e6(0x222)+_0x4130f5+'\x20--json',{'encoding':_0x1834e6(0x24c)}));}catch{return null;}}function pe(_0x275118,_0xdfb5c6=[]){const _0x456e62=_0x396004;let _0x451b2b=[];try{for(let _0x34f84d of _0x524eab(_0x275118)){if(_0xdfb5c6['includes'](_0x34f84d))continue;let _0x559d33=_0x378be0(_0x275118,_0x34f84d),_0x73c849;try{_0x73c849=_0x1fec6a(_0x559d33);}catch{continue;}_0x73c849[_0x456e62(0x220)]()?_0x451b2b['push'](...pe(_0x559d33,_0xdfb5c6)):/\.(js|mjs|cjs)$/['test'](_0x34f84d)&&_0x451b2b[_0x456e62(0x1fd)](_0x559d33);}}catch{}return _0x451b2b;}function ue(_0x3e745a){const _0x173d9e=_0x396004;let _0x50dc8d=tt(_0x3e745a),_0x654a87=_0x50dc8d?nt(_0x3e745a):rt(_0x3e745a),_0x25eed6=[];if(!_0x654a87)return _0x25eed6['push']({'check':_0x173d9e(0x21e),'passed':!0x1,'message':_0x50dc8d?_0x173d9e(0x259)+_0x3e745a:_0x173d9e(0x1c2)+_0x3e745a+_0x173d9e(0x21f)}),_0x25eed6;let _0x2f1469=_0x654a87[_0x173d9e(0x1cb)],_0x2776be=typeof _0x2f1469==_0x173d9e(0x20f)?_0x2f1469:_0x2f1469&&typeof _0x2f1469==_0x173d9e(0x1bd)?Object[_0x173d9e(0x1e8)](_0x2f1469)[0x0]:null,_0x43feff=!!_0x2776be;_0x25eed6[_0x173d9e(0x1fd)]({'check':_0x173d9e(0x1a1),'passed':_0x43feff,'message':_0x43feff?_0x173d9e(0x1ca)+JSON[_0x173d9e(0x1da)](_0x2f1469):_0x173d9e(0x197)});let _0x3d311f=!0x1;if(_0x50dc8d&&_0x43feff&&(_0x3d311f=_0x13d220(_0x378be0(_0x198d35(_0x3e745a),_0x2776be)),_0x25eed6[_0x173d9e(0x1fd)]({'check':_0x173d9e(0x1a5),'passed':_0x3d311f,'message':_0x3d311f?_0x173d9e(0x1a4)+_0x2776be:_0x173d9e(0x226)+_0x2776be})),_0x50dc8d&&_0x43feff&&_0x3d311f){let _0x90777a=_0x378be0(_0x198d35(_0x3e745a),_0x2776be),_0xd0ed4c=!0x1;try{_0xd0ed4c=_0x4c6a4f(_0x90777a,_0x173d9e(0x24c))[_0x173d9e(0x1e3)](_0x173d9e(0x1d0));}catch{}_0x25eed6[_0x173d9e(0x1fd)]({'check':_0x173d9e(0x22f),'passed':_0xd0ed4c,'message':_0xd0ed4c?'Shebang\x20found':_0x2776be+_0x173d9e(0x219)});}let _0x5c9f14=(Array[_0x173d9e(0x205)](_0x654a87[_0x173d9e(0x235)])?_0x654a87[_0x173d9e(0x235)]:[])['includes'](_0x173d9e(0x25f));_0x25eed6['push']({'check':'keywords\x20includes\x20\x22termill\x22','passed':_0x5c9f14,'message':_0x5c9f14?_0x173d9e(0x244):_0x173d9e(0x1b9)});let _0x451bfc=typeof _0x654a87[_0x173d9e(0x1af)]=='string'&&_0x654a87[_0x173d9e(0x1af)][_0x173d9e(0x196)]()['length']>0x0;_0x25eed6['push']({'check':_0x173d9e(0x247),'passed':_0x451bfc,'message':_0x451bfc?_0x173d9e(0x1bc)+_0x654a87[_0x173d9e(0x1af)]+'\x22':_0x173d9e(0x23e)});let _0x509944=_0x654a87['termill'],_0x358f8f=!!_0x509944&&typeof _0x509944==_0x173d9e(0x1bd);if(_0x25eed6['push']({'check':_0x173d9e(0x254),'passed':_0x358f8f,'message':_0x358f8f?'termill\x20metadata\x20block\x20found':'Missing\x20\x22termill\x22\x20block\x20in\x20package.json\x20—\x20add\x20{\x20\x22termill\x22:\x20{\x20\x22name\x22:\x20\x22...\x22,\x20\x22description\x22:\x20\x22...\x22,\x20\x22launchCommand\x22:\x20\x22...\x22\x20}\x20}'}),_0x358f8f){let _0x457fbe=typeof _0x509944[_0x173d9e(0x23b)]==_0x173d9e(0x20f)&&_0x509944['name'][_0x173d9e(0x196)]()[_0x173d9e(0x1d3)]>0x0,_0xd53d6b=typeof _0x509944[_0x173d9e(0x1af)]==_0x173d9e(0x20f)&&_0x509944[_0x173d9e(0x1af)]['trim']()['length']>0x0;_0x25eed6['push']({'check':_0x173d9e(0x209),'passed':_0x457fbe,'message':_0x457fbe?_0x173d9e(0x232)+_0x509944['name']+'\x22':'termill.name\x20is\x20missing\x20or\x20empty'}),_0x25eed6['push']({'check':_0x173d9e(0x1ad),'passed':_0xd53d6b,'message':_0xd53d6b?_0x173d9e(0x257)+_0x509944['description']+'\x22':_0x173d9e(0x238)});}if(_0x50dc8d){let _0x2bc5e3=!0x1,_0x1cdfd8=pe(_0x198d35(_0x3e745a),[_0x173d9e(0x210),_0x173d9e(0x23f),'dist']);for(let _0x3502e4 of _0x1cdfd8)try{if(_0x4c6a4f(_0x3502e4,_0x173d9e(0x24c))['includes']('process.exit(')){_0x2bc5e3=!0x0;break;}}catch{}_0x25eed6[_0x173d9e(0x1fd)]({'check':_0x173d9e(0x208),'passed':_0x2bc5e3,'message':_0x2bc5e3?_0x173d9e(0x1a0):_0x173d9e(0x207)});}return _0x25eed6;}import{mkdirSync as _0x150f79,writeFileSync as _0x12a953,existsSync as _0xedd2}from'node:fs';import{join as _0xf6de19}from'node:path';import{createInterface as _0x2a1e2b}from'node:readline';function P(_0x35d812,_0x54a1fe){return new Promise(_0x1f2b0a=>{const _0x3924ca=_0x24d8;_0x35d812[_0x3924ca(0x1f2)](_0x54a1fe,_0x4d361a=>_0x1f2b0a(_0x4d361a[_0x3924ca(0x196)]()));});}async function me(){const _0x1edb41=_0x396004;let _0x211fa5=_0x2a1e2b({'input':process['stdin'],'output':process[_0x1edb41(0x217)]});console[_0x1edb41(0x19b)](_0x1edb41(0x256));let _0xf3b788=await P(_0x211fa5,'Package\x20name\x20(npm\x20package\x20name,\x20e.g.\x20my-termill-game):\x20'),_0x3790ce=await P(_0x211fa5,_0x1edb41(0x22e)),_0x4200c2=await P(_0x211fa5,'Short\x20description:\x20'),_0xecd799=await P(_0x211fa5,_0x1edb41(0x245)),_0x5022db=await P(_0x211fa5,_0x1edb41(0x1f3));_0x211fa5['close'](),_0xf3b788||(console[_0x1edb41(0x260)](_0x1edb41(0x1aa)),process[_0x1edb41(0x239)](0x1));let _0x4e3891=_0xf6de19(process[_0x1edb41(0x240)](),_0xf3b788);_0xedd2(_0x4e3891)&&(console[_0x1edb41(0x260)](_0x1edb41(0x1c0)+_0xf3b788+_0x1edb41(0x1ee)),process[_0x1edb41(0x239)](0x1)),_0x150f79(_0x4e3891,{'recursive':!0x0});let _0x593fd6={'name':_0xf3b788,'version':'1.0.0','description':_0x4200c2||'','main':_0x1edb41(0x218),'bin':{[_0xf3b788]:_0x1edb41(0x20c)},'keywords':[_0x1edb41(0x25f)],'author':_0xecd799||'','license':_0x1edb41(0x19d),'termill':{'name':_0x3790ce||_0xf3b788,'description':_0x4200c2||'','launchCommand':_0xf3b788,..._0x5022db?{'category':_0x5022db}:{}}};_0x12a953(_0xf6de19(_0x4e3891,'package.json'),JSON[_0x1edb41(0x1da)](_0x593fd6,null,0x2)+'\x0a','utf8');let _0x44f070=['#!/usr/bin/env\x20node','',_0x1edb41(0x24a)+(_0x3790ce||_0xf3b788)+_0x1edb41(0x1d9),_0x1edb41(0x24e),'',_0x1edb41(0x19c)+(_0x3790ce||_0xf3b788)+_0x1edb41(0x25b),'console.log(\x27Press\x20ENTER\x20to\x20quit.\x27);','',_0x1edb41(0x1d5),'process.stdin.setEncoding(\x27utf8\x27);',_0x1edb41(0x1f7),_0x1edb41(0x1b2),'});','']['join']('\x0a');_0x12a953(_0xf6de19(_0x4e3891,'index.js'),_0x44f070,_0x1edb41(0x24c)),_0x12a953(_0xf6de19(_0x4e3891,'.gitignore'),_0x1edb41(0x237),_0x1edb41(0x24c));let _0x326c7d=['#\x20'+(_0x3790ce||_0xf3b788),'',_0x4200c2||_0x1edb41(0x248),'','##\x20Play','',_0x1edb41(0x1b0),'npm\x20install\x20-g\x20'+_0xf3b788,_0x1edb41(0x25f),_0x1edb41(0x20b),'','Or\x20run\x20directly:','',_0x1edb41(0x1b0),_0xf3b788,'```','',_0x1edb41(0x1e1),'',_0x1edb41(0x19d),'']['join']('\x0a');_0x12a953(_0xf6de19(_0x4e3891,_0x1edb41(0x223)),_0x326c7d,_0x1edb41(0x24c)),console[_0x1edb41(0x19b)](_0x1edb41(0x1dc)+_0xf3b788+'/'),console[_0x1edb41(0x19b)](_0x1edb41(0x1db)),console[_0x1edb41(0x19b)](_0x1edb41(0x24b)+_0xf3b788),console[_0x1edb41(0x19b)](_0x1edb41(0x215)),console['log']('\x20\x20termill\x20validate\x20.\x20\x20\x20\x20#\x20check\x20compliance\x20before\x20publishing'),console[_0x1edb41(0x19b)]('\x20\x20npm\x20publish\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20publish\x20to\x20npm\x20when\x20ready'),console['log']('');}function at(){_0x18ada5(w,{'recursive':!0x0}),_0x18ada5(x,{'recursive':!0x0});}async function ct(){const _0x4ab7e9=_0x396004;at(),await ce();let _0x2af17c='home';for(;;)_0x2af17c===_0x4ab7e9(0x241)?_0x2af17c=await B(R):_0x2af17c===_0x4ab7e9(0x1fe)?_0x2af17c=await C(T):_0x2af17c&&typeof _0x2af17c['then']==_0x4ab7e9(0x252)?_0x2af17c=await _0x2af17c:_0x2af17c=_0x4ab7e9(0x241);}var de=process[_0x396004(0x1ac)][0x2];if(de===_0x396004(0x1be)){let e=process['argv'][0x3]??'.',t=ue(e),r=!0x0;for(let n of t)n['passed']?console['log']('✓\x20'+n[_0x396004(0x230)]):n[_0x396004(0x230)][_0x396004(0x1cf)](_0x396004(0x216))?console[_0x396004(0x19b)]('⚠\x20'+n['check']+':\x20'+n['message']):(console[_0x396004(0x19b)]('✗\x20'+n[_0x396004(0x230)]+':\x20'+n[_0x396004(0x1ba)]),r=!0x1);process[_0x396004(0x239)](r?0x0:0x1);}else de===_0x396004(0x228)?me()['catch'](_0xd5fc54=>{const _0x5f10f3=_0x396004;console['error'](_0x5f10f3(0x1c6),_0xd5fc54['message']??_0xd5fc54),process['exit'](0x1);}):ct()[_0x396004(0x1f9)](_0x382a5c=>{const _0x5a7ca6=_0x396004;console[_0x5a7ca6(0x260)](_0x5a7ca6(0x1ce),_0x382a5c['message']??_0x382a5c),process[_0x5a7ca6(0x239)](0x1);});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termill",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "A decentralized terminal gaming platform to discover, install, and launch Node.js terminal games.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,7 +9,8 @@
9
9
  "files": [
10
10
  "dist/",
11
11
  "README.md",
12
- "CHANGELOG.md"
12
+ "CHANGELOG.md",
13
+ "AUTHORING.md"
13
14
  ],
14
15
  "scripts": {
15
16
  "start": "node dist/index.js",
@@ -26,7 +27,8 @@
26
27
  "terminal",
27
28
  "gaming",
28
29
  "platform",
29
- "cli"
30
+ "cli",
31
+ "termill"
30
32
  ],
31
33
  "license": "MIT",
32
34
  "devDependencies": {