@streamr/cli-tools 5.0.1 → 6.0.0-alpha.3

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 (169) hide show
  1. package/.eslintignore +0 -1
  2. package/CHANGELOG.md +18 -1
  3. package/README.md +42 -17
  4. package/bin/streamr-mock-data-generate.ts +38 -8
  5. package/bin/streamr-mock-data.ts +1 -1
  6. package/bin/streamr-storage-node-add-stream.ts +8 -26
  7. package/bin/streamr-storage-node-list-stream-parts.ts +18 -34
  8. package/bin/streamr-storage-node-list.ts +14 -34
  9. package/bin/streamr-storage-node-remove-stream.ts +8 -26
  10. package/bin/streamr-storage-node.ts +1 -1
  11. package/bin/streamr-stream-create.ts +17 -29
  12. package/bin/streamr-stream-grant-permission.ts +9 -66
  13. package/bin/streamr-stream-publish.ts +54 -21
  14. package/bin/streamr-stream-resend-from.ts +26 -0
  15. package/bin/streamr-stream-resend-last.ts +25 -0
  16. package/bin/streamr-stream-resend-range.ts +32 -0
  17. package/bin/streamr-stream-resend.ts +7 -92
  18. package/bin/streamr-stream-revoke-permission.ts +8 -24
  19. package/bin/streamr-stream-search.ts +17 -0
  20. package/bin/streamr-stream-show.ts +16 -16
  21. package/bin/streamr-stream-subscribe.ts +16 -16
  22. package/bin/streamr-stream.ts +2 -2
  23. package/bin/streamr.ts +1 -2
  24. package/dist/bin/streamr-mock-data-generate.d.ts +1 -1
  25. package/dist/bin/streamr-mock-data-generate.js +35 -9
  26. package/dist/bin/streamr-mock-data-generate.js.map +1 -1
  27. package/dist/bin/streamr-mock-data.js +1 -1
  28. package/dist/bin/streamr-mock-data.js.map +1 -1
  29. package/dist/bin/streamr-storage-node-add-stream.d.ts +1 -1
  30. package/dist/bin/streamr-storage-node-add-stream.js +8 -24
  31. package/dist/bin/streamr-storage-node-add-stream.js.map +1 -1
  32. package/dist/bin/streamr-storage-node-list-stream-parts.d.ts +1 -1
  33. package/dist/bin/streamr-storage-node-list-stream-parts.js +17 -28
  34. package/dist/bin/streamr-storage-node-list-stream-parts.js.map +1 -1
  35. package/dist/bin/streamr-storage-node-list.d.ts +1 -1
  36. package/dist/bin/streamr-storage-node-list.js +15 -30
  37. package/dist/bin/streamr-storage-node-list.js.map +1 -1
  38. package/dist/bin/streamr-storage-node-remove-stream.d.ts +1 -1
  39. package/dist/bin/streamr-storage-node-remove-stream.js +8 -24
  40. package/dist/bin/streamr-storage-node-remove-stream.js.map +1 -1
  41. package/dist/bin/streamr-storage-node.js +1 -1
  42. package/dist/bin/streamr-storage-node.js.map +1 -1
  43. package/dist/bin/streamr-stream-create.d.ts +1 -1
  44. package/dist/bin/streamr-stream-create.js +14 -23
  45. package/dist/bin/streamr-stream-create.js.map +1 -1
  46. package/dist/bin/streamr-stream-grant-permission.d.ts +1 -1
  47. package/dist/bin/streamr-stream-grant-permission.js +3 -63
  48. package/dist/bin/streamr-stream-grant-permission.js.map +1 -1
  49. package/dist/bin/streamr-stream-publish.d.ts +1 -1
  50. package/dist/bin/streamr-stream-publish.js +49 -23
  51. package/dist/bin/streamr-stream-publish.js.map +1 -1
  52. package/dist/bin/streamr-stream-resend-from.d.ts +2 -0
  53. package/dist/bin/streamr-stream-resend-from.js +27 -0
  54. package/dist/bin/streamr-stream-resend-from.js.map +1 -0
  55. package/dist/bin/streamr-stream-resend-last.d.ts +2 -0
  56. package/dist/bin/streamr-stream-resend-last.js +26 -0
  57. package/dist/bin/streamr-stream-resend-last.js.map +1 -0
  58. package/dist/bin/streamr-stream-resend-range.d.ts +2 -0
  59. package/dist/bin/streamr-stream-resend-range.js +33 -0
  60. package/dist/bin/streamr-stream-resend-range.js.map +1 -0
  61. package/dist/bin/streamr-stream-resend.d.ts +1 -1
  62. package/dist/bin/streamr-stream-resend.js +8 -87
  63. package/dist/bin/streamr-stream-resend.js.map +1 -1
  64. package/dist/bin/streamr-stream-revoke-permission.d.ts +1 -1
  65. package/dist/bin/streamr-stream-revoke-permission.js +3 -21
  66. package/dist/bin/streamr-stream-revoke-permission.js.map +1 -1
  67. package/dist/bin/streamr-stream-search.d.ts +2 -0
  68. package/dist/bin/streamr-stream-search.js +21 -0
  69. package/dist/bin/streamr-stream-search.js.map +1 -0
  70. package/dist/bin/streamr-stream-show.d.ts +1 -1
  71. package/dist/bin/streamr-stream-show.js +15 -15
  72. package/dist/bin/streamr-stream-show.js.map +1 -1
  73. package/dist/bin/streamr-stream-subscribe.d.ts +1 -1
  74. package/dist/bin/streamr-stream-subscribe.js +17 -20
  75. package/dist/bin/streamr-stream-subscribe.js.map +1 -1
  76. package/dist/bin/streamr-stream.js +2 -2
  77. package/dist/bin/streamr-stream.js.map +1 -1
  78. package/dist/bin/streamr.js +1 -2
  79. package/dist/bin/streamr.js.map +1 -1
  80. package/dist/package.json +18 -13
  81. package/dist/src/client.d.ts +3 -0
  82. package/dist/src/client.js +33 -0
  83. package/dist/src/client.js.map +1 -0
  84. package/dist/src/command.d.ts +8 -0
  85. package/dist/src/command.js +45 -0
  86. package/dist/src/command.js.map +1 -0
  87. package/dist/src/common.d.ts +6 -0
  88. package/dist/src/common.js +15 -0
  89. package/dist/src/common.js.map +1 -0
  90. package/dist/src/config.d.ts +6 -0
  91. package/dist/src/config.js +58 -0
  92. package/dist/src/config.js.map +1 -0
  93. package/dist/src/logLevel.d.ts +0 -0
  94. package/dist/src/logLevel.js +11 -0
  95. package/dist/src/logLevel.js.map +1 -0
  96. package/dist/src/permission.d.ts +4 -0
  97. package/dist/src/permission.js +48 -0
  98. package/dist/src/permission.js.map +1 -0
  99. package/dist/src/resend.d.ts +3 -4
  100. package/dist/src/resend.js +12 -23
  101. package/dist/src/resend.js.map +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -8525
  103. package/package.json +18 -13
  104. package/src/client.ts +32 -0
  105. package/src/command.ts +45 -0
  106. package/src/common.ts +16 -0
  107. package/src/config.ts +56 -0
  108. package/src/logLevel.ts +9 -0
  109. package/src/permission.ts +49 -0
  110. package/src/resend.ts +19 -28
  111. package/tsconfig.json +13 -5
  112. package/bin/common.ts +0 -93
  113. package/bin/streamr-misc-get-session-token.ts +0 -33
  114. package/bin/streamr-misc.ts +0 -10
  115. package/bin/streamr-stream-list.ts +0 -33
  116. package/dist/bin/common.d.ts +0 -17
  117. package/dist/bin/common.js +0 -77
  118. package/dist/bin/common.js.map +0 -1
  119. package/dist/bin/streamr-misc-get-session-token.d.ts +0 -2
  120. package/dist/bin/streamr-misc-get-session-token.js +0 -33
  121. package/dist/bin/streamr-misc-get-session-token.js.map +0 -1
  122. package/dist/bin/streamr-misc.d.ts +0 -2
  123. package/dist/bin/streamr-misc.js +0 -15
  124. package/dist/bin/streamr-misc.js.map +0 -1
  125. package/dist/bin/streamr-stream-list.d.ts +0 -2
  126. package/dist/bin/streamr-stream-list.js +0 -37
  127. package/dist/bin/streamr-stream-list.js.map +0 -1
  128. package/dist/commands/common.js +0 -76
  129. package/dist/commands/streamor.js +0 -16
  130. package/dist/commands/streamr-mock-data-generate.js +0 -20
  131. package/dist/commands/streamr-mock-data.js +0 -14
  132. package/dist/commands/streamr-storage-node-add-stream.js +0 -24
  133. package/dist/commands/streamr-storage-node-list-stream-parts.js +0 -32
  134. package/dist/commands/streamr-storage-node-list.js +0 -44
  135. package/dist/commands/streamr-storage-node-remove-stream.js +0 -24
  136. package/dist/commands/streamr-storage-node.js +0 -17
  137. package/dist/commands/streamr-stream-create.js +0 -31
  138. package/dist/commands/streamr-stream-grant-permission.js +0 -62
  139. package/dist/commands/streamr-stream-list.js +0 -33
  140. package/dist/commands/streamr-stream-publish.js +0 -32
  141. package/dist/commands/streamr-stream-resend.js +0 -101
  142. package/dist/commands/streamr-stream-revoke-permission.js +0 -24
  143. package/dist/commands/streamr-stream-show.js +0 -23
  144. package/dist/commands/streamr-stream-subscribe.js +0 -25
  145. package/dist/commands/streamr-stream.js +0 -21
  146. package/dist/src/create.d.ts +0 -2
  147. package/dist/src/create.js +0 -19
  148. package/dist/src/create.js.map +0 -1
  149. package/dist/src/generate.d.ts +0 -1
  150. package/dist/src/generate.js +0 -32
  151. package/dist/src/generate.js.map +0 -1
  152. package/dist/src/list.d.ts +0 -2
  153. package/dist/src/list.js +0 -29
  154. package/dist/src/list.js.map +0 -1
  155. package/dist/src/publish.d.ts +0 -3
  156. package/dist/src/publish.js +0 -36
  157. package/dist/src/publish.js.map +0 -1
  158. package/dist/src/show.d.ts +0 -2
  159. package/dist/src/show.js +0 -23
  160. package/dist/src/show.js.map +0 -1
  161. package/dist/src/subscribe.d.ts +0 -2
  162. package/dist/src/subscribe.js +0 -13
  163. package/dist/src/subscribe.js.map +0 -1
  164. package/src/create.ts +0 -16
  165. package/src/generate.ts +0 -33
  166. package/src/list.ts +0 -22
  167. package/src/publish.ts +0 -42
  168. package/src/show.ts +0 -23
  169. package/src/subscribe.ts +0 -9
package/package.json CHANGED
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "@streamr/cli-tools",
3
- "version": "5.0.1",
3
+ "version": "6.0.0-alpha.3",
4
4
  "description": "Command line tools for Streamr.",
5
5
  "bin": {
6
6
  "streamr": "dist/bin/streamr.js"
7
7
  },
8
8
  "scripts": {
9
- "eslint": "eslint .",
10
- "prepare": "eslint . && tsc",
11
- "build": "tsc",
9
+ "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'",
10
+ "prepare": "npm run eslint && npm run build",
11
+ "build": "tsc -b tsconfig.json",
12
12
  "test": "echo \"Error: no test specified\" && exit 1"
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "git@github.com:streamr-dev/cli-tools.git"
16
+ "url": "git+https://github.com/streamr-dev/network-monorepo.git",
17
+ "directory": "packages/cli-tools"
17
18
  },
18
19
  "keywords": [
19
20
  "streamr",
@@ -28,21 +29,25 @@
28
29
  },
29
30
  "homepage": "https://github.com/streamr-dev/cli-tools#readme",
30
31
  "dependencies": {
31
- "commander": "^7.2.0",
32
+ "commander": "^8.3.0",
32
33
  "easy-table": "^1.1.1",
33
34
  "event-stream": "^4.0.1",
34
- "streamr-client": "^5.4.2"
35
+ "lodash": "^4.17.21",
36
+ "streamr-client": "^6.0.0-alpha.24",
37
+ "streamr-client-protocol": "^11.0.0",
38
+ "streamr-test-utils": "^2.0.0"
35
39
  },
36
40
  "devDependencies": {
37
41
  "@streamr/dev-config": "^1.0.0",
38
42
  "@types/easy-table": "0.0.32",
39
43
  "@types/event-stream": "^3.3.34",
40
- "@types/jest": "^26.0.23",
41
- "@typescript-eslint/eslint-plugin": "^4.24.0",
42
- "@typescript-eslint/parser": "^4.24.0",
43
- "eslint": "^7.26.0",
44
- "eslint-config-streamr-ts": "^3.0.1",
44
+ "@types/jest": "^27.0.2",
45
+ "@types/lodash": "^4.14.175",
46
+ "@typescript-eslint/eslint-plugin": "^5.0.0",
47
+ "@typescript-eslint/parser": "^5.0.0",
48
+ "eslint": "^7.32.0",
49
+ "eslint-config-streamr-ts": "^4.0.1",
45
50
  "eslint-plugin-promise": "^5.1.0",
46
- "typescript": "^4.2.4"
51
+ "typescript": "^4.5.2"
47
52
  }
48
53
  }
package/src/client.ts ADDED
@@ -0,0 +1,32 @@
1
+ import _ from 'lodash'
2
+ import { BrubeckClientConfig, StreamrClient, ConfigTest } from 'streamr-client'
3
+ import { GlobalCommandLineArgs } from './common'
4
+ import { getConfig } from './config'
5
+
6
+ const getClientConfig = (commandLineArgs: GlobalCommandLineArgs, overridenOptions: BrubeckClientConfig) => {
7
+ const environmentOptions = (commandLineArgs.dev !== undefined) ? _.omit(ConfigTest, 'auth') : undefined
8
+ const configFileJson = getConfig(commandLineArgs.config)?.client
9
+ const authenticationOptions = (commandLineArgs.privateKey !== undefined) ? { auth: { privateKey: commandLineArgs.privateKey } } : undefined
10
+ return _.merge(
11
+ environmentOptions,
12
+ configFileJson,
13
+ authenticationOptions,
14
+ overridenOptions
15
+ )
16
+ }
17
+
18
+ const addInterruptHandler = (client: StreamrClient) => {
19
+ process.on('SIGINT', async () => {
20
+ try {
21
+ await client.destroy()
22
+ } catch {}
23
+ process.exit()
24
+ })
25
+ }
26
+
27
+ export const createClient = (commandLineArgs: GlobalCommandLineArgs, overridenOptions: BrubeckClientConfig = {}): StreamrClient => {
28
+ const config = getClientConfig(commandLineArgs, overridenOptions)
29
+ const client = new StreamrClient(config)
30
+ addInterruptHandler(client)
31
+ return client
32
+ }
package/src/command.ts ADDED
@@ -0,0 +1,45 @@
1
+ import commander, { Command } from 'commander'
2
+ import { BrubeckClientConfig } from 'streamr-client'
3
+ import pkg from '../package.json'
4
+ import { createClient } from './client'
5
+
6
+ export const createCommand = (): commander.Command => {
7
+ return new Command()
8
+ .version(pkg.version)
9
+ .showHelpAfterError()
10
+ .allowExcessArguments(false)
11
+ }
12
+
13
+ export interface CommandOpts {
14
+ autoDestroyClient?: boolean
15
+ clientOptionsFactory?: (options: any) => BrubeckClientConfig
16
+ }
17
+
18
+ export const createClientCommand = (
19
+ action: (...handleArgs: any[]) => Promise<void>,
20
+ opts: CommandOpts = {
21
+ autoDestroyClient: true,
22
+ clientOptionsFactory: () => ({})
23
+ }
24
+ ): commander.Command => {
25
+ return createCommand()
26
+ .option('--private-key <key>', 'use an Ethereum private key to authenticate')
27
+ .option('--config <file>', 'read connection and authentication settings from a config file')
28
+ .option('--dev', 'use pre-defined development environment')
29
+ .action(async (...args: any[]) => {
30
+ const commandLineOptions = args[args.length - 1].opts()
31
+ try {
32
+ const client = createClient(commandLineOptions, opts.clientOptionsFactory!(commandLineOptions))
33
+ try {
34
+ await action(...[client].concat(args))
35
+ } finally {
36
+ if (opts.autoDestroyClient) {
37
+ await client.destroy()
38
+ }
39
+ }
40
+ } catch (e: any) {
41
+ console.error(e)
42
+ process.exit(1)
43
+ }
44
+ })
45
+ }
package/src/common.ts ADDED
@@ -0,0 +1,16 @@
1
+ export interface GlobalCommandLineArgs {
2
+ dev?: boolean
3
+ config?: string
4
+ privateKey?: string
5
+ }
6
+
7
+ export function createFnParseInt(name: string): (s: string) => number {
8
+ return (str: string) => {
9
+ const n = parseInt(str, 10)
10
+ if (isNaN(n)) {
11
+ console.error(`${name} must be an integer (was "${str}")`)
12
+ process.exit(1)
13
+ }
14
+ return n
15
+ }
16
+ }
package/src/config.ts ADDED
@@ -0,0 +1,56 @@
1
+ import path from 'path'
2
+ import os from 'os'
3
+ import { readFileSync } from 'fs'
4
+ import { BrubeckClientConfig } from 'streamr-client'
5
+
6
+ interface Config {
7
+ client: BrubeckClientConfig
8
+ }
9
+
10
+ /*
11
+ * Validate that the config contains at least one root level element: the "client" block.
12
+ * The values of the "client" blocks are validated by StreamrClient when the configuration
13
+ * is used.
14
+ *
15
+ * We don't check other root level elements. It is ok to use a Broker config file as
16
+ * a cli-tools config file. In that case the file contains e.g. "plugins" block,
17
+ * but cli-tools can just ignore that block.
18
+ */
19
+ const validateConfig = (config: any, fileName: string): void | never => {
20
+ const CLIENT_CONFIG_BLOCK = 'client'
21
+ if (config[CLIENT_CONFIG_BLOCK] === undefined) {
22
+ throw new Error(`Missing root element "${CLIENT_CONFIG_BLOCK}" in ${fileName}`)
23
+ }
24
+ }
25
+
26
+ const tryReadConfigFile = (fileName: string): Config|undefined|never => {
27
+ let content
28
+ try {
29
+ content = readFileSync(fileName, 'utf8')
30
+ } catch (e: any) {
31
+ return undefined
32
+ }
33
+ const json = JSON.parse(content)
34
+ validateConfig(json, fileName)
35
+ return json
36
+ }
37
+
38
+ export const getConfig = (id?: string): Config|undefined => {
39
+ const CONFIG_DIRECTORY = path.join(os.homedir(), '.streamr', 'config')
40
+ if (id !== undefined) {
41
+ const fileNames = [
42
+ id,
43
+ path.join(CONFIG_DIRECTORY, `${id}.json`),
44
+ ]
45
+ for (const fileName of fileNames) {
46
+ const content = tryReadConfigFile(fileName)
47
+ if (content !== undefined) {
48
+ return content
49
+ }
50
+ }
51
+ throw new Error('Config file not found')
52
+ } else {
53
+ const fileName = path.join(CONFIG_DIRECTORY, `default.json`)
54
+ return tryReadConfigFile(fileName)
55
+ }
56
+ }
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Minimal logging for NetworkNode and other users of Logger.ts in the network package.
3
+ * This file needs to be imported before any of the network package classes
4
+ * so that the environment variable is updated before any Logger instances are created.
5
+ * The import is needed for the files where network packages are used (typically
6
+ * the files which call createClientCommand()).
7
+ */
8
+
9
+ process.env.LOG_LEVEL = process.env.LOG_LEVEL ?? 'error'
@@ -0,0 +1,49 @@
1
+ import { Argument } from 'commander'
2
+ import { Stream, StreamPermission, StreamrClient } from 'streamr-client'
3
+ import { createClientCommand } from './command'
4
+
5
+ const PUBLIC_USER_ID = 'public'
6
+
7
+ const getTarget = (user: string): string|undefined => {
8
+ if (user === PUBLIC_USER_ID) {
9
+ return undefined
10
+ } else {
11
+ return user
12
+ }
13
+ }
14
+
15
+ export const PERMISSIONS = new Map<string,StreamPermission>([
16
+ ['subscribe', StreamPermission.SUBSCRIBE],
17
+ ['publish', StreamPermission.PUBLISH],
18
+ ['edit', StreamPermission.EDIT],
19
+ ['delete', StreamPermission.DELETE],
20
+ ['grant', StreamPermission.GRANT]
21
+ ])
22
+
23
+ export const getPermissionId = (permission: StreamPermission): string => {
24
+ return Array.from(PERMISSIONS.entries()).find(([_id, p]) => p === permission)![0]
25
+ }
26
+
27
+ export const runModifyPermissionsCommand = (
28
+ modifyUserPermission: (stream: Stream, permission: StreamPermission, target: string) => Promise<void>,
29
+ modifyPublicPermission: (stream: Stream, permission: StreamPermission) => Promise<void>,
30
+ modification: string,
31
+ ): void => {
32
+ createClientCommand(async (client: StreamrClient, streamId: string, user: string, permissionIds: string[]) => {
33
+ const target = getTarget(user)
34
+ const stream = await client.getStream(streamId)
35
+ for await (const permissionId of permissionIds) {
36
+ const permission = PERMISSIONS.get(permissionId)!
37
+ if (target !== undefined) {
38
+ await modifyUserPermission(stream, permission, target)
39
+ } else {
40
+ await modifyPublicPermission(stream, permission)
41
+ }
42
+ }
43
+ })
44
+ .addArgument(new Argument('<streamId>'))
45
+ .addArgument(new Argument('<user>'))
46
+ .addArgument(new Argument('<permissions...>').choices(Array.from(PERMISSIONS.keys())))
47
+ .description(`${modification} permission: use keyword "public" as a user to ${modification} a public permission`)
48
+ .parseAsync(process.argv)
49
+ }
package/src/resend.ts CHANGED
@@ -1,14 +1,23 @@
1
- import { StreamrClient, StreamrClientOptions, ResendOptions } from 'streamr-client'
1
+ import { StreamrClient, ResendOptions } from 'streamr-client'
2
+
3
+ export const assertBothOrNoneDefined = (
4
+ option1: string,
5
+ option2: string,
6
+ errorMessage: string,
7
+ commandOptions: Record<string, unknown>
8
+ ): void | never => {
9
+ if ((option1 in commandOptions && !(option2 in commandOptions)) || (option2 in commandOptions && !(option1 in commandOptions))) {
10
+ console.error(`option ${errorMessage}`)
11
+ process.exit(1)
12
+ }
13
+ }
2
14
 
3
15
  export const resend = async (
4
16
  streamId: string,
5
17
  resendOpts: ResendOptions,
6
- streamrOptions: StreamrClientOptions & { subscribe?: boolean }
18
+ client: StreamrClient,
19
+ subscribe: boolean
7
20
  ): Promise<void> => {
8
- const options = { ...streamrOptions }
9
- const client = new StreamrClient(options)
10
-
11
- let sub
12
21
  try {
13
22
  const subscribeOpts = {
14
23
  stream: streamId,
@@ -17,31 +26,13 @@ export const resend = async (
17
26
  const handler = (message: any) => {
18
27
  console.info(JSON.stringify(message))
19
28
  }
20
-
21
- if (options.subscribe) {
22
- sub = await client.subscribe(subscribeOpts, handler)
29
+ if (subscribe) {
30
+ await client.subscribe(subscribeOpts, handler)
23
31
  } else {
24
- sub = await client.resend(subscribeOpts, handler)
32
+ await client.resend(subscribeOpts, handler)
25
33
  }
26
34
  } catch (err) {
27
35
  console.error(err.message ? err.message : err)
28
36
  process.exit(1)
29
37
  }
30
-
31
- sub.on('error', (err: any) => {
32
- console.error(err)
33
- process.exit(1)
34
- })
35
-
36
- sub.on('resent', () => {
37
- if (!options.subscribe) {
38
- process.exit(0)
39
- }
40
- })
41
-
42
- sub.on('no_resend', () => {
43
- if (!options.subscribe) {
44
- process.exit(0)
45
- }
46
- })
47
- }
38
+ }
package/tsconfig.json CHANGED
@@ -1,7 +1,15 @@
1
1
  {
2
- "extends": "@streamr/dev-config/ts/tsconfig.node.json",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDirs": ["src", "bin"]
6
- }
2
+ "extends": "@streamr/dev-config/ts/tsconfig.node.json",
3
+ "compilerOptions": {
4
+ "composite": true,
5
+ "outDir": "dist"
6
+ },
7
+ "include": [
8
+ "package.json",
9
+ "src/**/*",
10
+ "bin/**/*"
11
+ ],
12
+ "references": [
13
+ { "path": "../client/tsconfig.node.json" }
14
+ ]
7
15
  }
package/bin/common.ts DELETED
@@ -1,93 +0,0 @@
1
- import * as commander from 'commander'
2
- import { StreamrClientOptions } from 'streamr-client'
3
-
4
- export interface EnvironmentOptions {
5
- dev?: boolean
6
- stg?: boolean
7
- wsUrl?: string
8
- httpUrl?: string
9
- }
10
-
11
- export interface AuthenticationOptions {
12
- privateKey?: string
13
- apiKey?: string
14
- }
15
-
16
- export function envOptions(program: commander.Command): commander.Command {
17
- return program
18
- .option('--dev', 'use pre-defined development environment')
19
- .option('--stg', 'use pre-defined staging environment')
20
- .option('--ws-url <url>', 'alternative websocket url to use')
21
- .option('--http-url <url>', 'alternative http url to use')
22
- }
23
-
24
- export function authOptions(program: commander.Command): commander.Command {
25
- return program
26
- .option('--private-key <key>', 'use an Ethereum private key to authenticate')
27
- .option('--api-key <key>', 'use an API key to authenticate (deprecated)')
28
- }
29
-
30
- export function exitWithHelpIfArgsNotBetween(program: commander.Command, min: number, max: number): void {
31
- if (program.args.length < min || program.args.length > max) {
32
- program.help()
33
- }
34
- }
35
-
36
- export function formStreamrOptionsWithEnv(
37
- { dev, stg, wsUrl, httpUrl, privateKey, apiKey }: EnvironmentOptions & AuthenticationOptions
38
- ): StreamrClientOptions {
39
- const options: StreamrClientOptions = {}
40
-
41
- if (dev && stg) {
42
- console.error('flags --dev and --stg cannot be enabled at the same time')
43
- process.exit(1)
44
- }
45
-
46
- if (dev) {
47
- options.url = 'ws://localhost/api/v1/ws'
48
- options.restUrl = 'http://localhost/api/v1'
49
- options.storageNode = {
50
- // "broker-node-storage-1" on Docker environment
51
- address: '0xde1112f631486CfC759A50196853011528bC5FA0',
52
- url: 'http://10.200.10.1:8891'
53
- }
54
- } else if (stg) {
55
- options.url = 'wss://staging.streamr.com/api/v1/ws'
56
- options.restUrl = 'https://staging.streamr.com/api/v1/'
57
- }
58
-
59
- if (wsUrl) {
60
- options.url = wsUrl
61
- }
62
- if (httpUrl) {
63
- options.restUrl = httpUrl
64
- }
65
-
66
- if (privateKey && apiKey) {
67
- console.error('flags --privateKey and --apiKey cannot be used at the same time')
68
- process.exit(1)
69
- }
70
-
71
- if (privateKey) {
72
- options.auth = {
73
- privateKey
74
- }
75
- } else if (apiKey) {
76
- options.auth = {
77
- apiKey
78
- }
79
- }
80
-
81
- return options
82
- }
83
-
84
- export function createFnParseInt(name: string): (s: string) => number {
85
- return (str: string) => {
86
- const n = parseInt(str, 10)
87
- if (isNaN(n)) {
88
- console.error(`${name} must be an integer (was "${str}")`)
89
- process.exit(1)
90
- }
91
- return n
92
- }
93
- }
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Command } from 'commander'
3
- import { StreamrClient } from 'streamr-client'
4
- import {
5
- envOptions,
6
- authOptions,
7
- exitWithHelpIfArgsNotBetween,
8
- formStreamrOptionsWithEnv,
9
- } from './common'
10
- import pkg from '../package.json'
11
-
12
- const program = new Command()
13
- program
14
- .description('get a session token for the current user')
15
- authOptions(program)
16
- envOptions(program)
17
- .version(pkg.version)
18
- .action(async (options: any) => {
19
- const client = new StreamrClient(formStreamrOptionsWithEnv(options))
20
- try {
21
- console.info(await client.session.getSessionToken())
22
- } catch (err) {
23
- console.error(err)
24
- process.exit(1)
25
- }
26
- })
27
- .parseAsync(process.argv)
28
- .catch((e) => {
29
- console.error(e)
30
- process.exit(1)
31
- })
32
-
33
- exitWithHelpIfArgsNotBetween(program, 0, 0)
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- import { program } from 'commander'
3
- import pkg from '../package.json'
4
-
5
- program
6
- .version(pkg.version)
7
- .usage('<command> [<args>]')
8
- .description('miscellaneous subcommands')
9
- .command('get-session-token', 'get a session token for the current user')
10
- .parse(process.argv)
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Command, Option } from 'commander'
3
- import { list } from '../src/list'
4
- import { envOptions, authOptions, exitWithHelpIfArgsNotBetween, formStreamrOptionsWithEnv } from './common'
5
- import pkg from '../package.json'
6
-
7
- const program = new Command()
8
- program
9
- .description('fetch a list of streams that are accessible by the authenticated user')
10
- .option('-s, --search [term]', 'search for term in name or description')
11
- // TODO could support shorter forms of operations: e.g. "publish" instead of "stream_publish",
12
- // see streamr-stream-grant-permission.ts
13
- .addOption(new Option('-o, --operation [permission]', 'filter by permission')
14
- .choices(['stream_get','stream_subscribe','stream_publish','stream_delete','stream_share'])
15
- .default('stream_get'))
16
- .option('--public-access', 'include publicly available streams')
17
- .option('--no-granted-access', 'exclude streams that user has directly granted permissions to')
18
- authOptions(program)
19
- envOptions(program)
20
- .version(pkg.version)
21
- .action((options: any) => {
22
- const query: any = {
23
- operation: options.operation,
24
- noConfig: true,
25
- publicAccess: options.publicAccess,
26
- search: options.search,
27
- grantedAccess: options.grantedAccess
28
- }
29
- list(query, formStreamrOptionsWithEnv(options))
30
- })
31
- .parse(process.argv)
32
-
33
- exitWithHelpIfArgsNotBetween(program, 0, 0)
@@ -1,17 +0,0 @@
1
- import * as commander from 'commander';
2
- import { StreamrClientOptions } from 'streamr-client';
3
- export interface EnvironmentOptions {
4
- dev?: boolean;
5
- stg?: boolean;
6
- wsUrl?: string;
7
- httpUrl?: string;
8
- }
9
- export interface AuthenticationOptions {
10
- privateKey?: string;
11
- apiKey?: string;
12
- }
13
- export declare function envOptions(program: commander.Command): commander.Command;
14
- export declare function authOptions(program: commander.Command): commander.Command;
15
- export declare function exitWithHelpIfArgsNotBetween(program: commander.Command, min: number, max: number): void;
16
- export declare function formStreamrOptionsWithEnv({ dev, stg, wsUrl, httpUrl, privateKey, apiKey }: EnvironmentOptions & AuthenticationOptions): StreamrClientOptions;
17
- export declare function createFnParseInt(name: string): (s: string) => number;
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFnParseInt = exports.formStreamrOptionsWithEnv = exports.exitWithHelpIfArgsNotBetween = exports.authOptions = exports.envOptions = void 0;
4
- function envOptions(program) {
5
- return program
6
- .option('--dev', 'use pre-defined development environment')
7
- .option('--stg', 'use pre-defined staging environment')
8
- .option('--ws-url <url>', 'alternative websocket url to use')
9
- .option('--http-url <url>', 'alternative http url to use');
10
- }
11
- exports.envOptions = envOptions;
12
- function authOptions(program) {
13
- return program
14
- .option('--private-key <key>', 'use an Ethereum private key to authenticate')
15
- .option('--api-key <key>', 'use an API key to authenticate (deprecated)');
16
- }
17
- exports.authOptions = authOptions;
18
- function exitWithHelpIfArgsNotBetween(program, min, max) {
19
- if (program.args.length < min || program.args.length > max) {
20
- program.help();
21
- }
22
- }
23
- exports.exitWithHelpIfArgsNotBetween = exitWithHelpIfArgsNotBetween;
24
- function formStreamrOptionsWithEnv({ dev, stg, wsUrl, httpUrl, privateKey, apiKey }) {
25
- const options = {};
26
- if (dev && stg) {
27
- console.error('flags --dev and --stg cannot be enabled at the same time');
28
- process.exit(1);
29
- }
30
- if (dev) {
31
- options.url = 'ws://localhost/api/v1/ws';
32
- options.restUrl = 'http://localhost/api/v1';
33
- options.storageNode = {
34
- // "broker-node-storage-1" on Docker environment
35
- address: '0xde1112f631486CfC759A50196853011528bC5FA0',
36
- url: 'http://10.200.10.1:8891'
37
- };
38
- }
39
- else if (stg) {
40
- options.url = 'wss://staging.streamr.com/api/v1/ws';
41
- options.restUrl = 'https://staging.streamr.com/api/v1/';
42
- }
43
- if (wsUrl) {
44
- options.url = wsUrl;
45
- }
46
- if (httpUrl) {
47
- options.restUrl = httpUrl;
48
- }
49
- if (privateKey && apiKey) {
50
- console.error('flags --privateKey and --apiKey cannot be used at the same time');
51
- process.exit(1);
52
- }
53
- if (privateKey) {
54
- options.auth = {
55
- privateKey
56
- };
57
- }
58
- else if (apiKey) {
59
- options.auth = {
60
- apiKey
61
- };
62
- }
63
- return options;
64
- }
65
- exports.formStreamrOptionsWithEnv = formStreamrOptionsWithEnv;
66
- function createFnParseInt(name) {
67
- return (str) => {
68
- const n = parseInt(str, 10);
69
- if (isNaN(n)) {
70
- console.error(`${name} must be an integer (was "${str}")`);
71
- process.exit(1);
72
- }
73
- return n;
74
- };
75
- }
76
- exports.createFnParseInt = createFnParseInt;
77
- //# sourceMappingURL=common.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../bin/common.ts"],"names":[],"mappings":";;;AAeA,SAAgB,UAAU,CAAC,OAA0B;IACjD,OAAO,OAAO;SACT,MAAM,CAAC,OAAO,EAAE,yCAAyC,CAAC;SAC1D,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC;SACtD,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;SAC5D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,CAAA;AAClE,CAAC;AAND,gCAMC;AAED,SAAgB,WAAW,CAAC,OAA0B;IAClD,OAAO,OAAO;SACT,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,iBAAiB,EAAE,6CAA6C,CAAC,CAAA;AACjF,CAAC;AAJD,kCAIC;AAED,SAAgB,4BAA4B,CAAC,OAA0B,EAAE,GAAW,EAAE,GAAW;IAC7F,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;QACxD,OAAO,CAAC,IAAI,EAAE,CAAA;KACjB;AACL,CAAC;AAJD,oEAIC;AAED,SAAgB,yBAAyB,CACrC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAA8C;IAE5F,MAAM,OAAO,GAAyB,EAAE,CAAA;IAExC,IAAI,GAAG,IAAI,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAA;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAClB;IAED,IAAI,GAAG,EAAE;QACL,OAAO,CAAC,GAAG,GAAG,0BAA0B,CAAA;QACxC,OAAO,CAAC,OAAO,GAAG,yBAAyB,CAAA;QAC3C,OAAO,CAAC,WAAW,GAAG;YAClB,gDAAgD;YAChD,OAAO,EAAE,4CAA4C;YACrD,GAAG,EAAE,yBAAyB;SACjC,CAAA;KACJ;SAAM,IAAI,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,GAAG,qCAAqC,CAAA;QACnD,OAAO,CAAC,OAAO,GAAG,qCAAqC,CAAA;KAC1D;IAED,IAAI,KAAK,EAAE;QACP,OAAO,CAAC,GAAG,GAAG,KAAK,CAAA;KACtB;IACD,IAAI,OAAO,EAAE;QACT,OAAO,CAAC,OAAO,GAAG,OAAO,CAAA;KAC5B;IAED,IAAI,UAAU,IAAI,MAAM,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAClB;IAED,IAAI,UAAU,EAAE;QACZ,OAAO,CAAC,IAAI,GAAG;YACX,UAAU;SACb,CAAA;KACJ;SAAM,IAAI,MAAM,EAAE;QACf,OAAO,CAAC,IAAI,GAAG;YACX,MAAM;SACT,CAAA;KACJ;IAED,OAAO,OAAO,CAAA;AAClB,CAAC;AA9CD,8DA8CC;AAED,SAAgB,gBAAgB,CAAC,IAAY;IACzC,OAAO,CAAC,GAAW,EAAE,EAAE;QACnB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC3B,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,6BAA6B,GAAG,IAAI,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SAClB;QACD,OAAO,CAAC,CAAA;IACZ,CAAC,CAAA;AACL,CAAC;AATD,4CASC"}
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const commander_1 = require("commander");
8
- const streamr_client_1 = require("streamr-client");
9
- const common_1 = require("./common");
10
- const package_json_1 = __importDefault(require("../package.json"));
11
- const program = new commander_1.Command();
12
- program
13
- .description('get a session token for the current user');
14
- common_1.authOptions(program);
15
- common_1.envOptions(program)
16
- .version(package_json_1.default.version)
17
- .action(async (options) => {
18
- const client = new streamr_client_1.StreamrClient(common_1.formStreamrOptionsWithEnv(options));
19
- try {
20
- console.info(await client.session.getSessionToken());
21
- }
22
- catch (err) {
23
- console.error(err);
24
- process.exit(1);
25
- }
26
- })
27
- .parseAsync(process.argv)
28
- .catch((e) => {
29
- console.error(e);
30
- process.exit(1);
31
- });
32
- common_1.exitWithHelpIfArgsNotBetween(program, 0, 0);
33
- //# sourceMappingURL=streamr-misc-get-session-token.js.map