@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.
Files changed (65) hide show
  1. package/dist/cjs/MemoryNode.d.ts +1 -1
  2. package/dist/cjs/MemoryNode.d.ts.map +1 -1
  3. package/dist/cjs/MemoryNode.js +5 -5
  4. package/dist/cjs/MemoryNode.js.map +1 -1
  5. package/dist/cjs/Node.d.ts +2 -2
  6. package/dist/cjs/Node.d.ts.map +1 -1
  7. package/dist/cjs/XyoNode.d.ts +4 -4
  8. package/dist/cjs/XyoNode.d.ts.map +1 -1
  9. package/dist/cjs/XyoNode.js +7 -3
  10. package/dist/cjs/XyoNode.js.map +1 -1
  11. package/dist/cjs/XyoNodeWrapper.d.ts +1 -1
  12. package/dist/cjs/XyoNodeWrapper.d.ts.map +1 -1
  13. package/dist/cjs/XyoNodeWrapper.js +1 -1
  14. package/dist/cjs/XyoNodeWrapper.js.map +1 -1
  15. package/dist/cjs/cli/index.d.ts +2 -0
  16. package/dist/cjs/cli/index.d.ts.map +1 -0
  17. package/dist/cjs/{cli.js → cli/index.js} +7 -6
  18. package/dist/cjs/cli/index.js.map +1 -0
  19. package/dist/cjs/cli/terminal.d.ts +2 -0
  20. package/dist/cjs/cli/terminal.d.ts.map +1 -0
  21. package/dist/cjs/cli/terminal.js +111 -0
  22. package/dist/cjs/cli/terminal.js.map +1 -0
  23. package/dist/cjs/cli/xyo_logo_full_white.png +0 -0
  24. package/dist/docs.json +493 -504
  25. package/dist/esm/MemoryNode.d.ts +1 -1
  26. package/dist/esm/MemoryNode.d.ts.map +1 -1
  27. package/dist/esm/MemoryNode.js +5 -5
  28. package/dist/esm/MemoryNode.js.map +1 -1
  29. package/dist/esm/Node.d.ts +2 -2
  30. package/dist/esm/Node.d.ts.map +1 -1
  31. package/dist/esm/XyoNode.d.ts +4 -4
  32. package/dist/esm/XyoNode.d.ts.map +1 -1
  33. package/dist/esm/XyoNode.js +7 -3
  34. package/dist/esm/XyoNode.js.map +1 -1
  35. package/dist/esm/XyoNodeWrapper.d.ts +1 -1
  36. package/dist/esm/XyoNodeWrapper.d.ts.map +1 -1
  37. package/dist/esm/XyoNodeWrapper.js +1 -1
  38. package/dist/esm/XyoNodeWrapper.js.map +1 -1
  39. package/dist/esm/cli/index.d.ts +2 -0
  40. package/dist/esm/cli/index.d.ts.map +1 -0
  41. package/dist/esm/{cli.js → cli/index.js} +7 -6
  42. package/dist/esm/cli/index.js.map +1 -0
  43. package/dist/esm/cli/terminal.d.ts +2 -0
  44. package/dist/esm/cli/terminal.d.ts.map +1 -0
  45. package/dist/esm/cli/terminal.js +106 -0
  46. package/dist/esm/cli/terminal.js.map +1 -0
  47. package/dist/esm/cli/xyo_logo_full_white.png +0 -0
  48. package/package.json +15 -8
  49. package/src/MemoryNode.spec.ts +1 -1
  50. package/src/MemoryNode.ts +5 -5
  51. package/src/Node.ts +2 -2
  52. package/src/XyoNode.ts +9 -6
  53. package/src/XyoNodeWrapper.ts +1 -1
  54. package/src/cli/index.ts +69 -0
  55. package/src/cli/terminal.ts +112 -0
  56. package/src/cli/types/images.d.ts +5 -0
  57. package/src/cli/xyo_logo_full_white.png +0 -0
  58. package/xyo-config.js +4 -0
  59. package/dist/cjs/cli.d.ts +0 -2
  60. package/dist/cjs/cli.d.ts.map +0 -1
  61. package/dist/cjs/cli.js.map +0 -1
  62. package/dist/esm/cli.d.ts +0 -2
  63. package/dist/esm/cli.d.ts.map +0 -1
  64. package/dist/esm/cli.js.map +0 -1
  65. 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
+ }
@@ -0,0 +1,5 @@
1
+ declare module '*.png'
2
+ declare module '*.jpg'
3
+ declare module '*.svg'
4
+ declare module '*.gif'
5
+ declare module '*.webp'
Binary file
package/xyo-config.js ADDED
@@ -0,0 +1,4 @@
1
+ // eslint-disable-next-line no-undef
2
+ module.exports = {
3
+ version: 1,
4
+ }
package/dist/cjs/cli.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
@@ -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()