@xyo-network/node 2.32.1 → 2.33.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/MemoryNode.d.ts +1 -1
- package/dist/cjs/MemoryNode.d.ts.map +1 -1
- package/dist/cjs/MemoryNode.js +5 -5
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/cjs/Node.d.ts +2 -2
- package/dist/cjs/Node.d.ts.map +1 -1
- package/dist/cjs/XyoNode.d.ts +4 -4
- package/dist/cjs/XyoNode.d.ts.map +1 -1
- package/dist/cjs/XyoNode.js +7 -3
- package/dist/cjs/XyoNode.js.map +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts +1 -1
- package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/cjs/XyoNodeWrapper.js +1 -1
- package/dist/cjs/XyoNodeWrapper.js.map +1 -1
- package/dist/cjs/cli/index.d.ts +2 -0
- package/dist/cjs/cli/index.d.ts.map +1 -0
- package/dist/cjs/{cli.js → cli/index.js} +7 -6
- package/dist/cjs/cli/index.js.map +1 -0
- package/dist/cjs/cli/terminal.d.ts +2 -0
- package/dist/cjs/cli/terminal.d.ts.map +1 -0
- package/dist/cjs/cli/terminal.js +111 -0
- package/dist/cjs/cli/terminal.js.map +1 -0
- package/dist/cjs/cli/xyo_logo_full_white.png +0 -0
- package/dist/docs.json +493 -504
- package/dist/esm/MemoryNode.d.ts +1 -1
- package/dist/esm/MemoryNode.d.ts.map +1 -1
- package/dist/esm/MemoryNode.js +5 -5
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/esm/Node.d.ts +2 -2
- package/dist/esm/Node.d.ts.map +1 -1
- package/dist/esm/XyoNode.d.ts +4 -4
- package/dist/esm/XyoNode.d.ts.map +1 -1
- package/dist/esm/XyoNode.js +7 -3
- package/dist/esm/XyoNode.js.map +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts +1 -1
- package/dist/esm/XyoNodeWrapper.d.ts.map +1 -1
- package/dist/esm/XyoNodeWrapper.js +1 -1
- package/dist/esm/XyoNodeWrapper.js.map +1 -1
- package/dist/esm/cli/index.d.ts +2 -0
- package/dist/esm/cli/index.d.ts.map +1 -0
- package/dist/esm/{cli.js → cli/index.js} +7 -6
- package/dist/esm/cli/index.js.map +1 -0
- package/dist/esm/cli/terminal.d.ts +2 -0
- package/dist/esm/cli/terminal.d.ts.map +1 -0
- package/dist/esm/cli/terminal.js +106 -0
- package/dist/esm/cli/terminal.js.map +1 -0
- package/dist/esm/cli/xyo_logo_full_white.png +0 -0
- package/package.json +15 -8
- package/src/MemoryNode.spec.ts +1 -1
- package/src/MemoryNode.ts +5 -5
- package/src/Node.ts +2 -2
- package/src/XyoNode.ts +9 -6
- package/src/XyoNodeWrapper.ts +1 -1
- package/src/cli/index.ts +69 -0
- package/src/cli/terminal.ts +112 -0
- package/src/cli/types/images.d.ts +5 -0
- package/src/cli/xyo_logo_full_white.png +0 -0
- package/xyo-config.js +4 -0
- package/dist/cjs/cli.d.ts +0 -2
- package/dist/cjs/cli.d.ts.map +0 -1
- package/dist/cjs/cli.js.map +0 -1
- package/dist/esm/cli.d.ts +0 -2
- package/dist/esm/cli.d.ts.map +0 -1
- package/dist/esm/cli.js.map +0 -1
- package/src/cli.ts +0 -68
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { XyoModuleConfig } from '@xyo-network/module'
|
|
2
|
+
import { readFileSync } from 'fs'
|
|
3
|
+
import path from 'path'
|
|
4
|
+
import { terminal } from 'terminal-kit'
|
|
5
|
+
|
|
6
|
+
function terminate() {
|
|
7
|
+
terminal.grabInput(false)
|
|
8
|
+
terminal.clear()
|
|
9
|
+
terminal.green('\n\nXYO Node Shutdown - Bye\n\n')
|
|
10
|
+
setTimeout(function () {
|
|
11
|
+
process.exit()
|
|
12
|
+
}, 100)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const readFileDeep = (names: string[]) => {
|
|
16
|
+
let depth = 0
|
|
17
|
+
let result: string | undefined
|
|
18
|
+
let filename
|
|
19
|
+
let resolvedPath
|
|
20
|
+
while (depth < 10 && result === undefined) {
|
|
21
|
+
names.forEach((name) => {
|
|
22
|
+
if (result === undefined) {
|
|
23
|
+
filename = name
|
|
24
|
+
for (let i = 0; i < depth; i++) {
|
|
25
|
+
filename = `../${filename}`
|
|
26
|
+
}
|
|
27
|
+
resolvedPath = path.resolve(filename)
|
|
28
|
+
try {
|
|
29
|
+
result = readFileSync(resolvedPath, { encoding: 'utf8' })
|
|
30
|
+
} catch (ex) {
|
|
31
|
+
const error = ex as NodeJS.ErrnoException
|
|
32
|
+
if (error.code !== 'ENOENT') {
|
|
33
|
+
terminal.red(`${JSON.stringify(error)}\n`)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
depth++
|
|
39
|
+
}
|
|
40
|
+
return [result, resolvedPath]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const getCommand = (): Promise<boolean> => {
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
terminal.once('key', (name: string) => {
|
|
46
|
+
if (name === 'ESCAPE') {
|
|
47
|
+
resolve(true)
|
|
48
|
+
}
|
|
49
|
+
if (name === 'CTRL_C') {
|
|
50
|
+
resolve(false)
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
const items = [
|
|
54
|
+
'Register Plugin',
|
|
55
|
+
'Unregister Plugin',
|
|
56
|
+
'List Registered Plugins',
|
|
57
|
+
'Attach Plugin',
|
|
58
|
+
'Detatch Plugin',
|
|
59
|
+
'List Attached Plugins',
|
|
60
|
+
'Show Config',
|
|
61
|
+
'Status',
|
|
62
|
+
'Exit',
|
|
63
|
+
].map((item, index) => {
|
|
64
|
+
return {
|
|
65
|
+
slug: item.toLowerCase().replaceAll(' ', '-'),
|
|
66
|
+
text: `${index + 1}. ${item}`,
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
//terminal.clear()
|
|
70
|
+
terminal.green('\nXYO Node Running\n')
|
|
71
|
+
terminal.singleColumnMenu(
|
|
72
|
+
items.map((item) => item.text),
|
|
73
|
+
async (error, response) => {
|
|
74
|
+
if (error) {
|
|
75
|
+
terminal.red(`Error: ${error}`)
|
|
76
|
+
}
|
|
77
|
+
switch (items[response.selectedIndex].slug) {
|
|
78
|
+
case 'exit':
|
|
79
|
+
resolve(false)
|
|
80
|
+
break
|
|
81
|
+
case 'register-plugin':
|
|
82
|
+
terminal.yellow('Register Plugin')
|
|
83
|
+
break
|
|
84
|
+
case 'show-config': {
|
|
85
|
+
const [config, path] = readFileDeep(['xyo-config.json', 'xyo-config.js'])
|
|
86
|
+
let configObj: XyoModuleConfig | undefined
|
|
87
|
+
terminal.yellow(`\nConfig found at: ${path}\n`)
|
|
88
|
+
if (config) {
|
|
89
|
+
if (path?.endsWith('.json')) {
|
|
90
|
+
configObj = JSON.parse(config) as XyoModuleConfig
|
|
91
|
+
} else if (path?.endsWith('.cjs') || path?.endsWith('.js')) {
|
|
92
|
+
configObj = (await import(path)) as XyoModuleConfig
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
terminal(JSON.stringify(configObj ?? {}))
|
|
96
|
+
break
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
resolve(true)
|
|
100
|
+
},
|
|
101
|
+
)
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const startTerminal = async () => {
|
|
106
|
+
let running = true
|
|
107
|
+
while (running) {
|
|
108
|
+
running = await getCommand()
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
terminate()
|
|
112
|
+
}
|
|
Binary file
|
package/xyo-config.js
ADDED
package/dist/cjs/cli.d.ts
DELETED
package/dist/cjs/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cjs/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AACA,0DAAyB;AACzB,sDAAsD;AACtD,2CAAuC;AAEvC,6CAA4C;AAE5C,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,OAAO,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,GAAG;QAEV,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAO,GAAW,EAAE,IAAa,EAAE,QAAgC,EAAsB,EAAE;IAC5G,MAAM,SAAS,GAAG,gEAAa,GAAG,GAAC,CAAA;IACnC,8DAA8D;IAC9D,MAAM,iBAAiB,GAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjE,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC9D,CAAC,CAAA,CAAA;AAED,MAAM,GAAG,GAAG,GAAG,EAAE;IACf,OAAO,YAAY,EAAE;SAClB,OAAO,CACN,MAAM,EACN,mBAAmB,EACnB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAA;IACd,CAAC,EACD,CAAO,KAAK,EAAE,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE1C,MAAM,IAAI,GAAG,IAAI,0BAAa,EAAE,CAAA;QAEhC,MAAM,QAAQ,GAA0B,CAAC,OAAe,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAO,MAAM,EAAE,EAAE;YAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAE7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC,CAAA,CAAC,CACH,CAAA;IACH,CAAC,CAAA,CACF;SACA,IAAI,EAAE,CAAC,IAAI,CAAA;AAChB,CAAC,CAAA;AAED,KAAK,GAAG,EAAE,CAAA"}
|
package/dist/esm/cli.d.ts
DELETED
package/dist/esm/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/esm/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,sDAAsD;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChC,MAAM,CAAC,SAAS,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,0BAA0B;QACvC,IAAI,EAAE,SAAS;KAChB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,KAAK,EAAE,GAAG;QAEV,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,EAAE,GAAW,EAAE,IAAa,EAAE,QAAgC,EAAsB,EAAE;IAC5G,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;IACnC,8DAA8D;IAC9D,MAAM,iBAAiB,GAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjE,OAAO,IAAI,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,GAAG,GAAG,GAAG,EAAE;IACf,OAAO,YAAY,EAAE;SAClB,OAAO,CACN,MAAM,EACN,mBAAmB,EACnB,CAAC,KAAK,EAAE,EAAE;QACR,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACzD,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE1C,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAA;QAEhC,MAAM,QAAQ,GAA0B,CAAC,OAAe,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;YACpC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC,CAAA;QAED,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAE7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CACH,CAAA;IACH,CAAC,CACF;SACA,IAAI,EAAE,CAAC,IAAI,CAAA;AAChB,CAAC,CAAA;AAED,KAAK,GAAG,EAAE,CAAA"}
|
package/src/cli.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { XyoModule, XyoModuleResolverFunc } from '@xyo-network/module'
|
|
2
|
-
import yargs from 'yargs'
|
|
3
|
-
// eslint-disable-next-line import/no-internal-modules
|
|
4
|
-
import { hideBin } from 'yargs/helpers'
|
|
5
|
-
|
|
6
|
-
import { XyoMemoryNode } from './MemoryNode'
|
|
7
|
-
|
|
8
|
-
const parseOptions = () => {
|
|
9
|
-
return yargs(hideBin(process.argv))
|
|
10
|
-
.option('verbose', {
|
|
11
|
-
alias: 'v',
|
|
12
|
-
default: false,
|
|
13
|
-
description: 'Run with verbose logging',
|
|
14
|
-
type: 'boolean',
|
|
15
|
-
})
|
|
16
|
-
.option('module', {
|
|
17
|
-
alias: 'm',
|
|
18
|
-
|
|
19
|
-
description: 'Modules to load',
|
|
20
|
-
type: 'string',
|
|
21
|
-
})
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const loadModule = async (pkg: string, name?: string, resolver?: XyoModuleResolverFunc): Promise<XyoModule> => {
|
|
25
|
-
const loadedPkg = await import(pkg)
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
-
const ModuleConstructor: any = name ? loadedPkg[name] : loadedPkg
|
|
28
|
-
return new ModuleConstructor(undefined, undefined, resolver)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const xyo = () => {
|
|
32
|
-
return parseOptions()
|
|
33
|
-
.command(
|
|
34
|
-
'node',
|
|
35
|
-
'Start an XYO Node',
|
|
36
|
-
(yargs) => {
|
|
37
|
-
return yargs
|
|
38
|
-
},
|
|
39
|
-
async (yargs) => {
|
|
40
|
-
console.log(`yargs: ${JSON.stringify(yargs, null, 2)}`)
|
|
41
|
-
const { verbose, module } = yargs
|
|
42
|
-
const modules = Array.isArray(module) ? module : [module]
|
|
43
|
-
if (verbose) console.info('Starting Node')
|
|
44
|
-
|
|
45
|
-
const node = new XyoMemoryNode()
|
|
46
|
-
|
|
47
|
-
const resolver: XyoModuleResolverFunc = (address: string) => {
|
|
48
|
-
console.log(`Resolving: ${address}`)
|
|
49
|
-
return node.resolve(address)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
await Promise.all(
|
|
53
|
-
modules.map(async (module) => {
|
|
54
|
-
const [pkg, name] = module.split('.')
|
|
55
|
-
const instance = await loadModule(pkg, name, resolver)
|
|
56
|
-
console.log(`Arg: ${instance.address}`)
|
|
57
|
-
node.register(instance)
|
|
58
|
-
node.attach(instance.address)
|
|
59
|
-
|
|
60
|
-
console.log(`Module Loaded: ${instance.address}`)
|
|
61
|
-
}),
|
|
62
|
-
)
|
|
63
|
-
},
|
|
64
|
-
)
|
|
65
|
-
.help().argv
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
void xyo()
|