@streamr/cli-tools 101.1.2 → 102.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +1 -1
  2. package/bin/streamr-internal-node-info.ts +81 -0
  3. package/bin/streamr-internal-operator-delegate.ts +18 -0
  4. package/bin/streamr-internal-operator-stake.ts +18 -0
  5. package/bin/streamr-internal-operator-undelegate.ts +17 -0
  6. package/bin/streamr-internal-operator-unstake.ts +16 -0
  7. package/bin/streamr-internal-show-sdk-config.ts +11 -0
  8. package/bin/streamr-internal-sponsorship-sponsor.ts +18 -0
  9. package/bin/streamr-internal-visualize-topology.ts +1 -1
  10. package/bin/streamr-internal.ts +7 -0
  11. package/bin/streamr-mock-data-generate.ts +26 -13
  12. package/bin/streamr-mock-data.ts +1 -1
  13. package/bin/streamr-storage-node-add-stream.ts +1 -0
  14. package/bin/streamr-storage-node-list-streams.ts +4 -3
  15. package/bin/streamr-storage-node-list.ts +1 -0
  16. package/bin/streamr-storage-node-remove-stream.ts +1 -0
  17. package/bin/streamr-stream-create.ts +2 -1
  18. package/bin/streamr-stream-grant-permission.ts +1 -0
  19. package/bin/streamr-stream-publish.ts +24 -12
  20. package/bin/streamr-stream-resend-from.ts +1 -0
  21. package/bin/streamr-stream-resend-last.ts +1 -0
  22. package/bin/streamr-stream-resend-range.ts +1 -0
  23. package/bin/streamr-stream-resend.ts +1 -0
  24. package/bin/streamr-stream-revoke-permission.ts +1 -0
  25. package/bin/streamr-stream-search.ts +3 -2
  26. package/bin/streamr-stream-show.ts +11 -2
  27. package/bin/streamr-stream-subscribe.ts +2 -1
  28. package/bin/streamr-wallet-whoami.ts +2 -1
  29. package/dist/bin/streamr-internal-node-info.d.ts +5 -0
  30. package/dist/bin/streamr-internal-node-info.js +75 -0
  31. package/dist/bin/streamr-internal-node-info.js.map +1 -0
  32. package/dist/bin/streamr-internal-operator-delegate.d.ts +2 -0
  33. package/dist/bin/streamr-internal-operator-delegate.js +14 -0
  34. package/dist/bin/streamr-internal-operator-delegate.js.map +1 -0
  35. package/dist/bin/streamr-internal-operator-stake.d.ts +2 -0
  36. package/dist/bin/streamr-internal-operator-stake.js +15 -0
  37. package/dist/bin/streamr-internal-operator-stake.js.map +1 -0
  38. package/dist/bin/streamr-internal-operator-undelegate.d.ts +2 -0
  39. package/dist/bin/streamr-internal-operator-undelegate.js +14 -0
  40. package/dist/bin/streamr-internal-operator-undelegate.js.map +1 -0
  41. package/dist/bin/streamr-internal-operator-unstake.d.ts +2 -0
  42. package/dist/bin/streamr-internal-operator-unstake.js +14 -0
  43. package/dist/bin/streamr-internal-operator-unstake.js.map +1 -0
  44. package/dist/bin/streamr-internal-show-sdk-config.d.ts +2 -0
  45. package/dist/bin/streamr-internal-show-sdk-config.js +11 -0
  46. package/dist/bin/streamr-internal-show-sdk-config.js.map +1 -0
  47. package/dist/bin/streamr-internal-sponsorship-sponsor.d.ts +2 -0
  48. package/dist/bin/streamr-internal-sponsorship-sponsor.js +14 -0
  49. package/dist/bin/streamr-internal-sponsorship-sponsor.js.map +1 -0
  50. package/dist/bin/streamr-internal-visualize-topology.js +1 -1
  51. package/dist/bin/streamr-internal-visualize-topology.js.map +1 -1
  52. package/dist/bin/streamr-internal.js +7 -0
  53. package/dist/bin/streamr-internal.js.map +1 -1
  54. package/dist/bin/streamr-mock-data-generate.d.ts +10 -1
  55. package/dist/bin/streamr-mock-data-generate.js +29 -15
  56. package/dist/bin/streamr-mock-data-generate.js.map +1 -1
  57. package/dist/bin/streamr-mock-data.js +1 -1
  58. package/dist/bin/streamr-mock-data.js.map +1 -1
  59. package/dist/bin/streamr-storage-node-add-stream.js.map +1 -1
  60. package/dist/bin/streamr-storage-node-list-streams.js +3 -3
  61. package/dist/bin/streamr-storage-node-list-streams.js.map +1 -1
  62. package/dist/bin/streamr-storage-node-list.js.map +1 -1
  63. package/dist/bin/streamr-storage-node-remove-stream.js.map +1 -1
  64. package/dist/bin/streamr-stream-create.js +1 -1
  65. package/dist/bin/streamr-stream-create.js.map +1 -1
  66. package/dist/bin/streamr-stream-grant-permission.js.map +1 -1
  67. package/dist/bin/streamr-stream-publish.js +22 -11
  68. package/dist/bin/streamr-stream-publish.js.map +1 -1
  69. package/dist/bin/streamr-stream-resend-from.js.map +1 -1
  70. package/dist/bin/streamr-stream-resend-last.js.map +1 -1
  71. package/dist/bin/streamr-stream-resend-range.js.map +1 -1
  72. package/dist/bin/streamr-stream-resend.js.map +1 -1
  73. package/dist/bin/streamr-stream-revoke-permission.js.map +1 -1
  74. package/dist/bin/streamr-stream-search.js +2 -2
  75. package/dist/bin/streamr-stream-search.js.map +1 -1
  76. package/dist/bin/streamr-stream-show.js +9 -2
  77. package/dist/bin/streamr-stream-show.js.map +1 -1
  78. package/dist/bin/streamr-stream-subscribe.js +1 -1
  79. package/dist/bin/streamr-stream-subscribe.js.map +1 -1
  80. package/dist/bin/streamr-wallet-whoami.js +1 -1
  81. package/dist/bin/streamr-wallet-whoami.js.map +1 -1
  82. package/dist/package.json +13 -9
  83. package/dist/src/client.d.ts +1 -1
  84. package/dist/src/client.js +3 -4
  85. package/dist/src/client.js.map +1 -1
  86. package/dist/src/command.d.ts +3 -3
  87. package/dist/src/command.js +3 -1
  88. package/dist/src/command.js.map +1 -1
  89. package/dist/src/common.d.ts +3 -0
  90. package/dist/src/common.js +20 -2
  91. package/dist/src/common.js.map +1 -1
  92. package/dist/src/permission.js +1 -1
  93. package/dist/src/permission.js.map +1 -1
  94. package/jest.config.ts +1 -0
  95. package/package.json +13 -9
  96. package/src/client.ts +3 -4
  97. package/src/command.ts +5 -3
  98. package/src/common.ts +18 -0
  99. package/src/permission.ts +1 -1
  100. package/test/environment.test.ts +32 -0
  101. package/test/internal-operator.test.ts +57 -0
  102. package/test/internal-sponsorship-sponsor.test.ts +28 -0
  103. package/test/mock-data.test.ts +14 -0
  104. package/test/storage-node.test.ts +3 -3
  105. package/test/stream-create.test.ts +1 -1
  106. package/test/stream-permission.test.ts +3 -3
  107. package/test/stream-publish-subscribe.test.ts +1 -1
  108. package/test/stream-resend.test.ts +1 -1
  109. package/test/utils.ts +5 -5
  110. package/tsconfig.json +1 -14
  111. package/tsconfig.node.json +16 -0
  112. package/.eslintignore +0 -2
  113. package/.eslintrc +0 -6
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/cli-tools",
3
- "version": "101.1.2",
3
+ "version": "102.0.0-beta.1",
4
4
  "description": "Command line tools for Streamr",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,8 +11,8 @@
11
11
  "streamr": "dist/bin/streamr.js"
12
12
  },
13
13
  "scripts": {
14
- "build": "tsc -b tsconfig.json",
15
- "check": "tsc -p ./tsconfig.json --noEmit",
14
+ "build": "tsc -b tsconfig.node.json",
15
+ "check": "tsc -p ./tsconfig.jest.json",
16
16
  "clean": "jest --clearCache || true; rm -rf dist *.tsbuildinfo node_modules/.cache || true",
17
17
  "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'",
18
18
  "test": "npm run build && jest --bail --forceExit"
@@ -26,19 +26,23 @@
26
26
  "author": "Streamr Network AG <contact@streamr.com>",
27
27
  "license": "AGPL-3.0",
28
28
  "dependencies": {
29
- "@streamr/sdk": "101.1.2",
30
- "@streamr/utils": "101.1.2",
31
- "commander": "^12.1.0",
29
+ "@streamr/dht": "102.0.0-beta.1",
30
+ "@streamr/sdk": "102.0.0-beta.1",
31
+ "@streamr/trackerless-network": "102.0.0-beta.1",
32
+ "@streamr/utils": "102.0.0-beta.1",
33
+ "commander": "^13.1.0",
32
34
  "easy-table": "^1.1.1",
33
35
  "ethers": "^6.13.0",
34
36
  "event-stream": "^4.0.1",
35
- "lodash": "^4.17.21"
37
+ "lodash": "^4.17.21",
38
+ "semver": "^7.6.3"
36
39
  },
37
40
  "devDependencies": {
38
- "@streamr/test-utils": "101.1.2",
41
+ "@streamr/test-utils": "102.0.0-beta.1",
39
42
  "@types/event-stream": "^4.0.5",
40
- "@types/lodash": "^4.17.7",
43
+ "@types/lodash": "^4.17.14",
41
44
  "@types/merge2": "^1.4.4",
45
+ "@types/semver": "^7.5.8",
42
46
  "merge2": "^1.4.1"
43
47
  }
44
48
  }
@@ -1,4 +1,4 @@
1
- import { StreamrClientConfig, StreamrClient } from '@streamr/sdk';
1
+ import { StreamrClient, StreamrClientConfig } from '@streamr/sdk';
2
2
  import { Options } from './command';
3
3
  export declare const getClientConfig: (commandOptions: Options, overridenOptions?: StreamrClientConfig) => StreamrClientConfig;
4
4
  export declare const createClient: (commandOptions: Options, overridenOptions?: StreamrClientConfig) => StreamrClient;
@@ -4,15 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createClient = exports.getClientConfig = void 0;
7
- const omit_1 = __importDefault(require("lodash/omit"));
8
- const merge_1 = __importDefault(require("lodash/merge"));
9
7
  const sdk_1 = require("@streamr/sdk");
8
+ const merge_1 = __importDefault(require("lodash/merge"));
10
9
  const config_1 = require("./config");
11
10
  const getClientConfig = (commandOptions, overridenOptions = {}) => {
12
- const environmentOptions = commandOptions.dev ? (0, omit_1.default)(sdk_1.CONFIG_TEST, 'auth') : undefined;
13
11
  const configFileJson = (0, config_1.getConfig)(commandOptions.config)?.client;
12
+ const environmentOptions = { environment: commandOptions.env };
14
13
  const authenticationOptions = (commandOptions.privateKey !== undefined) ? { auth: { privateKey: commandOptions.privateKey } } : undefined;
15
- return (0, merge_1.default)(environmentOptions, configFileJson, authenticationOptions, overridenOptions);
14
+ return (0, merge_1.default)(configFileJson, environmentOptions, authenticationOptions, overridenOptions);
16
15
  };
17
16
  exports.getClientConfig = getClientConfig;
18
17
  const addInterruptHandler = (client) => {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA8B;AAC9B,yDAAgC;AAChC,sCAA8E;AAE9E,qCAAoC;AAE7B,MAAM,eAAe,GAAG,CAAC,cAAuB,EAAE,mBAAwC,EAAE,EAAuB,EAAE;IACxH,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,cAAI,EAAC,iBAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrF,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAC/D,MAAM,qBAAqB,GAAG,CAAC,cAAc,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACzI,OAAO,IAAA,eAAK,EACR,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,CACnB,CAAA;AACL,CAAC,CAAA;AAVY,QAAA,eAAe,mBAU3B;AAED,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAE,EAAE;IAClD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,QAAQ;QACZ,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAEM,MAAM,YAAY,GAAG,CAAC,cAAuB,EAAE,mBAAwC,EAAE,EAAiB,EAAE;IAC/G,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,IAAI,mBAAa,CAAC,MAAM,CAAC,CAAA;IACxC,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AALY,QAAA,YAAY,gBAKxB"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;;;;AAAA,sCAAiE;AACjE,yDAAgC;AAEhC,qCAAoC;AAE7B,MAAM,eAAe,GAAG,CAAC,cAAuB,EAAE,mBAAwC,EAAE,EAAuB,EAAE;IACxH,MAAM,cAAc,GAAG,IAAA,kBAAS,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAC/D,MAAM,kBAAkB,GAAG,EAAE,WAAW,EAAE,cAAc,CAAC,GAAG,EAAE,CAAA;IAC9D,MAAM,qBAAqB,GAAG,CAAC,cAAc,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IACzI,OAAO,IAAA,eAAK,EACR,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,CACnB,CAAA;AACL,CAAC,CAAA;AAVY,QAAA,eAAe,mBAU3B;AAED,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAE,EAAE;IAClD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACL,QAAQ;QACZ,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;AACN,CAAC,CAAA;AAEM,MAAM,YAAY,GAAG,CAAC,cAAuB,EAAE,mBAAwC,EAAE,EAAiB,EAAE;IAC/G,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,IAAI,mBAAa,CAAC,MAAM,CAAC,CAAA;IACxC,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AALY,QAAA,YAAY,gBAKxB"}
@@ -1,9 +1,9 @@
1
- import commander, { Command } from 'commander';
2
- import { StreamrClientConfig } from '@streamr/sdk';
1
+ import { EnvironmentId, StreamrClientConfig } from '@streamr/sdk';
2
+ import commander from 'commander';
3
3
  export interface Options {
4
4
  privateKey?: string;
5
5
  config?: string;
6
- dev: boolean;
6
+ env?: EnvironmentId;
7
7
  }
8
8
  export declare const createCommand: () => commander.Command;
9
9
  export interface CommandOpts {
@@ -4,9 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createClientCommand = exports.createCommand = void 0;
7
+ const sdk_1 = require("@streamr/sdk");
7
8
  const commander_1 = require("commander");
8
9
  const package_json_1 = __importDefault(require("../package.json"));
9
10
  const client_1 = require("./client");
11
+ const common_1 = require("./common");
10
12
  const createCommand = () => {
11
13
  return new commander_1.Command()
12
14
  .version(package_json_1.default.version)
@@ -21,7 +23,7 @@ const createClientCommand = (action, opts = {
21
23
  return (0, exports.createCommand)()
22
24
  .option('--private-key <key>', 'use an Ethereum private key to authenticate')
23
25
  .option('--config <file>', 'read connection and authentication settings from a config file')
24
- .option('--dev', 'use pre-defined development environment', false)
26
+ .option('--env <environmentId>', `use pre-defined environment (${(0, common_1.formEnumArgValueDescription)(sdk_1.ENVIRONMENT_IDS, sdk_1.DEFAULT_ENVIRONMENT_ID)})`, (0, common_1.createFnParseEnum)('env', sdk_1.ENVIRONMENT_IDS))
25
27
  .action(async (...args) => {
26
28
  const commandOptions = args[args.length - 1].opts();
27
29
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/command.ts"],"names":[],"mappings":";;;;;;AAAA,yCAA8C;AAE9C,mEAAiC;AACjC,qCAAuC;AAQhC,MAAM,aAAa,GAAG,GAAsB,EAAE;IACjD,OAAO,IAAI,mBAAO,EAAE;SACf,OAAO,CAAC,sBAAG,CAAC,OAAO,CAAC;SACpB,kBAAkB,EAAE;SACpB,oBAAoB,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,aAAa,iBAKzB;AAOM,MAAM,mBAAmB,GAAG,CAC/B,MAA+C,EAC/C,OAAoB;IAChB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACnC,EACgB,EAAE;IACnB,OAAO,IAAA,qBAAa,GAAE;SACjB,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,OAAO,EAAE,yCAAyC,EAAE,KAAK,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,cAAc,EAAE,IAAI,CAAC,oBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;YACvF,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1C,CAAC;oBAAS,CAAC;gBACP,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC,CAAC,CAAA;AACV,CAAC,CAAA;AA3BY,QAAA,mBAAmB,uBA2B/B"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/command.ts"],"names":[],"mappings":";;;;;;AAAA,sCAA0G;AAC1G,yCAA8C;AAC9C,mEAAiC;AACjC,qCAAuC;AACvC,qCAAyE;AAQlE,MAAM,aAAa,GAAG,GAAsB,EAAE;IACjD,OAAO,IAAI,mBAAO,EAAE;SACf,OAAO,CAAC,sBAAG,CAAC,OAAO,CAAC;SACpB,kBAAkB,EAAE;SACpB,oBAAoB,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,aAAa,iBAKzB;AAOM,MAAM,mBAAmB,GAAG,CAC/B,MAA+C,EAC/C,OAAoB;IAChB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CACnC,EACgB,EAAE;IACnB,OAAO,IAAA,qBAAa,GAAE;SACjB,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,IAAA,oCAA2B,EAAC,qBAAe,EAAE,4BAAsB,CAAC,GAAG,EACpI,IAAA,0BAAiB,EAAC,KAAK,EAAE,qBAAe,CAAC,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,cAAc,EAAE,IAAI,CAAC,oBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;YACvF,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1C,CAAC;oBAAS,CAAC;gBACP,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;gBAC1B,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC,CAAC,CAAA;AACV,CAAC,CAAA;AA5BY,QAAA,mBAAmB,uBA4B/B"}
@@ -4,3 +4,6 @@ export declare enum OptionType {
4
4
  }
5
5
  export declare const getOptionType: (value: string | boolean) => OptionType | never;
6
6
  export declare function createFnParseInt(name: string): (s: string) => number;
7
+ export declare function createFnParseEnum(name: string, allowedValues: string[]): (s: string) => string;
8
+ export declare const formEnumArgValueDescription: (allowedValues: string[], defaultValue: string) => string;
9
+ export declare const wrapWithQuotes: (str: string) => string;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createFnParseInt = exports.getOptionType = exports.OptionType = void 0;
3
+ exports.wrapWithQuotes = exports.formEnumArgValueDescription = exports.getOptionType = exports.OptionType = void 0;
4
+ exports.createFnParseInt = createFnParseInt;
5
+ exports.createFnParseEnum = createFnParseEnum;
4
6
  var OptionType;
5
7
  (function (OptionType) {
6
8
  OptionType[OptionType["FLAG"] = 0] = "FLAG";
@@ -28,5 +30,21 @@ function createFnParseInt(name) {
28
30
  return n;
29
31
  };
30
32
  }
31
- exports.createFnParseInt = createFnParseInt;
33
+ function createFnParseEnum(name, allowedValues) {
34
+ return (value) => {
35
+ if (!allowedValues.includes(value)) {
36
+ console.error(`${name} must be one of: ${allowedValues.map((s) => (0, exports.wrapWithQuotes)(s)).join(', ')}`);
37
+ process.exit(1);
38
+ }
39
+ return value;
40
+ };
41
+ }
42
+ const formEnumArgValueDescription = (allowedValues, defaultValue) => {
43
+ return `one of: ${allowedValues.map(exports.wrapWithQuotes).join(', ')}, default: ${(0, exports.wrapWithQuotes)(defaultValue)}`;
44
+ };
45
+ exports.formEnumArgValueDescription = formEnumArgValueDescription;
46
+ const wrapWithQuotes = (str) => {
47
+ return `"${str}"`;
48
+ };
49
+ exports.wrapWithQuotes = wrapWithQuotes;
32
50
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,2CAAI,CAAA;IACJ,mDAAQ,CAAA,CAAE,8BAA8B;AAC5C,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAEM,MAAM,aAAa,GAAG,CAAC,KAAuB,EAAsB,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,QAAQ,CAAA;IAC9B,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;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,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,6BAA6B,GAAG,IAAI,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,CAAC,CAAA;IACZ,CAAC,CAAA;AACL,CAAC;AATD,4CASC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":";;;AAeA,4CASC;AAED,8CAQC;AAlCD,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,2CAAI,CAAA;IACJ,mDAAQ,CAAA,CAAE,8BAA8B;AAC5C,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAEM,MAAM,aAAa,GAAG,CAAC,KAAuB,EAAsB,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAA;IAC1B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,QAAQ,CAAA;IAC9B,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAA;IAC5D,CAAC;AACL,CAAC,CAAA;AARY,QAAA,aAAa,iBAQzB;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,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,6BAA6B,GAAG,IAAI,CAAC,CAAA;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,CAAC,CAAA;IACZ,CAAC,CAAA;AACL,CAAC;AAED,SAAgB,iBAAiB,CAAC,IAAY,EAAE,aAAuB;IACnE,OAAO,CAAC,KAAa,EAAE,EAAE;QACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,oBAAoB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC,CAAA;AACL,CAAC;AAEM,MAAM,2BAA2B,GAAG,CAAC,aAAuB,EAAE,YAAoB,EAAU,EAAE;IACjG,OAAO,WAAW,aAAa,CAAC,GAAG,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,IAAA,sBAAc,EAAC,YAAY,CAAC,EAAE,CAAA;AAC9G,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC;AAEM,MAAM,cAAc,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,OAAO,IAAI,GAAG,GAAG,CAAA;AACrB,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B"}
@@ -38,7 +38,7 @@ const runModifyPermissionsCommand = (modify, modification) => {
38
38
  else {
39
39
  assignment = {
40
40
  permissions,
41
- user
41
+ userId: user
42
42
  };
43
43
  }
44
44
  await modify(stream, assignment);
@@ -1 +1 @@
1
- {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/permission.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,sCAA4F;AAC5F,uCAA+C;AAE/C,MAAM,cAAc,GAAG,QAAQ,CAAA;AAElB,QAAA,WAAW,GAAG,IAAI,GAAG,CAA2B;IACzD,CAAC,WAAW,EAAE,sBAAgB,CAAC,SAAS,CAAC;IACzC,CAAC,SAAS,EAAE,sBAAgB,CAAC,OAAO,CAAC;IACrC,CAAC,MAAM,EAAE,sBAAgB,CAAC,IAAI,CAAC;IAC/B,CAAC,QAAQ,EAAE,sBAAgB,CAAC,MAAM,CAAC;IACnC,CAAC,OAAO,EAAE,sBAAgB,CAAC,KAAK,CAAC;CACpC,CAAC,CAAA;AAEK,MAAM,aAAa,GAAG,CAAC,EAAU,EAA4B,EAAE;IAClE,MAAM,MAAM,GAAG,mBAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,eAAe,GAAG,CAAC,UAA4B,EAAU,EAAE;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAE,CAAC,CAAC,CAAC,CAAA;AACrF,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAEM,MAAM,2BAA2B,GAAG,CACvC,MAA2E,EAC3E,YAAoB,EAChB,EAAE;IACN,IAAA,6BAAmB,EAAC,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAE,IAAY,EAAE,aAAuB,EAAE,EAAE;QACzG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAuB,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAA,qBAAa,EAAC,YAAY,CAAC,CAAC,CAAA;QACxG,IAAI,UAAgC,CAAA;QACpC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1B,UAAU,GAAG;gBACT,WAAW;gBACX,MAAM,EAAE,IAAI;aACf,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG;gBACT,WAAW;gBACX,IAAI;aACP,CAAA;QACL,CAAC;QACD,MAAM,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACpC,CAAC,CAAC;SACG,WAAW,CAAC,IAAI,oBAAQ,CAAC,YAAY,CAAC,CAAC;SACvC,WAAW,CAAC,IAAI,oBAAQ,CAAC,QAAQ,CAAC,CAAC;SACnC,WAAW,CAAC,IAAI,oBAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACrF,WAAW,CAAC,GAAG,YAAY,kDAAkD,YAAY,sBAAsB,CAAC;SAChH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AA1BY,QAAA,2BAA2B,+BA0BvC"}
1
+ {"version":3,"file":"permission.js","sourceRoot":"","sources":["../../src/permission.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,sCAA4F;AAC5F,uCAA+C;AAE/C,MAAM,cAAc,GAAG,QAAQ,CAAA;AAElB,QAAA,WAAW,GAAG,IAAI,GAAG,CAA2B;IACzD,CAAC,WAAW,EAAE,sBAAgB,CAAC,SAAS,CAAC;IACzC,CAAC,SAAS,EAAE,sBAAgB,CAAC,OAAO,CAAC;IACrC,CAAC,MAAM,EAAE,sBAAgB,CAAC,IAAI,CAAC;IAC/B,CAAC,QAAQ,EAAE,sBAAgB,CAAC,MAAM,CAAC;IACnC,CAAC,OAAO,EAAE,sBAAgB,CAAC,KAAK,CAAC;CACpC,CAAC,CAAA;AAEK,MAAM,aAAa,GAAG,CAAC,EAAU,EAA4B,EAAE;IAClE,MAAM,MAAM,GAAG,mBAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,eAAe,GAAG,CAAC,UAA4B,EAAU,EAAE;IACpE,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAW,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAE,CAAC,CAAC,CAAC,CAAA;AACrF,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAEM,MAAM,2BAA2B,GAAG,CACvC,MAA2E,EAC3E,YAAoB,EAChB,EAAE;IACN,IAAA,6BAAmB,EAAC,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAE,IAAY,EAAE,aAAuB,EAAE,EAAE;QACzG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAuB,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAA,qBAAa,EAAC,YAAY,CAAC,CAAC,CAAA;QACxG,IAAI,UAAgC,CAAA;QACpC,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1B,UAAU,GAAG;gBACT,WAAW;gBACX,MAAM,EAAE,IAAI;aACf,CAAA;QACL,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG;gBACT,WAAW;gBACX,MAAM,EAAE,IAAI;aACf,CAAA;QACL,CAAC;QACD,MAAM,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACpC,CAAC,CAAC;SACG,WAAW,CAAC,IAAI,oBAAQ,CAAC,YAAY,CAAC,CAAC;SACvC,WAAW,CAAC,IAAI,oBAAQ,CAAC,QAAQ,CAAC,CAAC;SACnC,WAAW,CAAC,IAAI,oBAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACrF,WAAW,CAAC,GAAG,YAAY,kDAAkD,YAAY,sBAAsB,CAAC;SAChH,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AA1BY,QAAA,2BAA2B,+BA0BvC"}
package/jest.config.ts ADDED
@@ -0,0 +1 @@
1
+ export { default } from '../../jest.config'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/cli-tools",
3
- "version": "101.1.2",
3
+ "version": "102.0.0-beta.1",
4
4
  "description": "Command line tools for Streamr",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,8 +11,8 @@
11
11
  "streamr": "dist/bin/streamr.js"
12
12
  },
13
13
  "scripts": {
14
- "build": "tsc -b tsconfig.json",
15
- "check": "tsc -p ./tsconfig.json --noEmit",
14
+ "build": "tsc -b tsconfig.node.json",
15
+ "check": "tsc -p ./tsconfig.jest.json",
16
16
  "clean": "jest --clearCache || true; rm -rf dist *.tsbuildinfo node_modules/.cache || true",
17
17
  "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'",
18
18
  "test": "npm run build && jest --bail --forceExit"
@@ -26,19 +26,23 @@
26
26
  "author": "Streamr Network AG <contact@streamr.com>",
27
27
  "license": "AGPL-3.0",
28
28
  "dependencies": {
29
- "@streamr/sdk": "101.1.2",
30
- "@streamr/utils": "101.1.2",
31
- "commander": "^12.1.0",
29
+ "@streamr/dht": "102.0.0-beta.1",
30
+ "@streamr/sdk": "102.0.0-beta.1",
31
+ "@streamr/trackerless-network": "102.0.0-beta.1",
32
+ "@streamr/utils": "102.0.0-beta.1",
33
+ "commander": "^13.1.0",
32
34
  "easy-table": "^1.1.1",
33
35
  "ethers": "^6.13.0",
34
36
  "event-stream": "^4.0.1",
35
- "lodash": "^4.17.21"
37
+ "lodash": "^4.17.21",
38
+ "semver": "^7.6.3"
36
39
  },
37
40
  "devDependencies": {
38
- "@streamr/test-utils": "101.1.2",
41
+ "@streamr/test-utils": "102.0.0-beta.1",
39
42
  "@types/event-stream": "^4.0.5",
40
- "@types/lodash": "^4.17.7",
43
+ "@types/lodash": "^4.17.14",
41
44
  "@types/merge2": "^1.4.4",
45
+ "@types/semver": "^7.5.8",
42
46
  "merge2": "^1.4.1"
43
47
  }
44
48
  }
package/src/client.ts CHANGED
@@ -1,16 +1,15 @@
1
- import omit from 'lodash/omit'
1
+ import { StreamrClient, StreamrClientConfig } from '@streamr/sdk'
2
2
  import merge from 'lodash/merge'
3
- import { StreamrClientConfig, StreamrClient, CONFIG_TEST } from '@streamr/sdk'
4
3
  import { Options } from './command'
5
4
  import { getConfig } from './config'
6
5
 
7
6
  export const getClientConfig = (commandOptions: Options, overridenOptions: StreamrClientConfig = {}): StreamrClientConfig => {
8
- const environmentOptions = commandOptions.dev ? omit(CONFIG_TEST, 'auth') : undefined
9
7
  const configFileJson = getConfig(commandOptions.config)?.client
8
+ const environmentOptions = { environment: commandOptions.env }
10
9
  const authenticationOptions = (commandOptions.privateKey !== undefined) ? { auth: { privateKey: commandOptions.privateKey } } : undefined
11
10
  return merge(
12
- environmentOptions,
13
11
  configFileJson,
12
+ environmentOptions,
14
13
  authenticationOptions,
15
14
  overridenOptions
16
15
  )
package/src/command.ts CHANGED
@@ -1,12 +1,13 @@
1
+ import { DEFAULT_ENVIRONMENT_ID, ENVIRONMENT_IDS, EnvironmentId, StreamrClientConfig } from '@streamr/sdk'
1
2
  import commander, { Command } from 'commander'
2
- import { StreamrClientConfig } from '@streamr/sdk'
3
3
  import pkg from '../package.json'
4
4
  import { createClient } from './client'
5
+ import { createFnParseEnum, formEnumArgValueDescription } from './common'
5
6
 
6
7
  export interface Options {
7
8
  privateKey?: string
8
9
  config?: string
9
- dev: boolean
10
+ env?: EnvironmentId
10
11
  }
11
12
 
12
13
  export const createCommand = (): commander.Command => {
@@ -31,7 +32,8 @@ export const createClientCommand = (
31
32
  return createCommand()
32
33
  .option('--private-key <key>', 'use an Ethereum private key to authenticate')
33
34
  .option('--config <file>', 'read connection and authentication settings from a config file')
34
- .option('--dev', 'use pre-defined development environment', false)
35
+ .option('--env <environmentId>', `use pre-defined environment (${formEnumArgValueDescription(ENVIRONMENT_IDS, DEFAULT_ENVIRONMENT_ID)})`,
36
+ createFnParseEnum('env', ENVIRONMENT_IDS))
35
37
  .action(async (...args: any[]) => {
36
38
  const commandOptions = args[args.length - 1].opts()
37
39
  try {
package/src/common.ts CHANGED
@@ -23,3 +23,21 @@ export function createFnParseInt(name: string): (s: string) => number {
23
23
  return n
24
24
  }
25
25
  }
26
+
27
+ export function createFnParseEnum(name: string, allowedValues: string[]): (s: string) => string {
28
+ return (value: string) => {
29
+ if (!allowedValues.includes(value)) {
30
+ console.error(`${name} must be one of: ${allowedValues.map((s) => wrapWithQuotes(s)).join(', ')}`)
31
+ process.exit(1)
32
+ }
33
+ return value
34
+ }
35
+ }
36
+
37
+ export const formEnumArgValueDescription = (allowedValues: string[], defaultValue: string): string => {
38
+ return `one of: ${allowedValues.map(wrapWithQuotes).join(', ')}, default: ${wrapWithQuotes(defaultValue)}`
39
+ }
40
+
41
+ export const wrapWithQuotes = (str: string): string => {
42
+ return `"${str}"`
43
+ }
package/src/permission.ts CHANGED
@@ -40,7 +40,7 @@ export const runModifyPermissionsCommand = (
40
40
  } else {
41
41
  assignment = {
42
42
  permissions,
43
- user
43
+ userId: user
44
44
  }
45
45
  }
46
46
  await modify(stream, assignment)
@@ -0,0 +1,32 @@
1
+ import { randomString } from '@streamr/utils'
2
+ import fs from 'fs/promises'
3
+ import { runCommand } from './utils'
4
+ import { StreamrClientConfig } from '@streamr/sdk'
5
+
6
+ const POLYGON_AMOY_CHAIN_ID = 80002
7
+
8
+ describe('env command line option', () => {
9
+
10
+ it('takes precedence over client.environment config', async () => {
11
+ const configFileName = `test-${randomString(10)}.json`
12
+ await fs.writeFile(configFileName, JSON.stringify({
13
+ client: {
14
+ environment: 'dev2'
15
+ }
16
+ }))
17
+ const outputLines = await runCommand(`internal show-sdk-config --env polygonAmoy --config ${configFileName}`, {
18
+ devEnvironment: false
19
+ })
20
+ const outputJson: StreamrClientConfig = JSON.parse(outputLines.join(''))
21
+ await fs.unlink(configFileName)
22
+ expect(outputJson.contracts!.ethereumNetwork!.chainId).toBe(POLYGON_AMOY_CHAIN_ID)
23
+ })
24
+
25
+ it('invalid value', async () => {
26
+ const outputLines = await runCommand('stream show foobar --env invalid-environment', {
27
+ devEnvironment: false
28
+ })
29
+ expect(outputLines).toHaveLength(1)
30
+ expect(outputLines[0]).toEqual('env must be one of: "polygon", "polygonAmoy", "dev2"')
31
+ }, 60 * 1000)
32
+ })
@@ -0,0 +1,57 @@
1
+ import { _operatorContractUtils } from '@streamr/sdk'
2
+ import { fetchPrivateKeyWithGas, generateWalletWithGasAndTokens } from '@streamr/test-utils'
3
+ import { createTestClient, runCommand } from './utils'
4
+ import { parseEther, Wallet } from 'ethers'
5
+ import { wait } from '@streamr/utils'
6
+
7
+ const DELEGATION_AMOUNT = '20000'
8
+ const STAKE_AMOUNT = '10000'
9
+ const SELF_DELEGATION_AMOUNT = '100000'
10
+ const MINIMUM_DELEGATION_SECONDS = 1 // the config value defined in StreamrEnvDeployer in network-contracts repo
11
+
12
+ describe('operator', () => {
13
+
14
+ it('happy path', async () => {
15
+ const client = createTestClient(await fetchPrivateKeyWithGas())
16
+ const stream = await client.createStream('/test')
17
+ const sponsorshipContract = await _operatorContractUtils.deploySponsorshipContract({
18
+ streamId: stream.id,
19
+ deployer: new Wallet(await fetchPrivateKeyWithGas()).connect(_operatorContractUtils.getProvider())
20
+ })
21
+ const sponsorshipAddress: string = await sponsorshipContract.getAddress()
22
+ const operator = await generateWalletWithGasAndTokens()
23
+ const operatorContract = await _operatorContractUtils.deployOperatorContract({
24
+ deployer: operator
25
+ })
26
+ await _operatorContractUtils.delegate(operator, await operatorContract.getAddress(), parseEther(SELF_DELEGATION_AMOUNT))
27
+ const delegator = await generateWalletWithGasAndTokens()
28
+ const operatorAddress: string = await operatorContract.getAddress()
29
+
30
+ // delegate
31
+ await runCommand(`internal operator-delegate ${operatorAddress} ${DELEGATION_AMOUNT}`, {
32
+ privateKey: delegator.privateKey
33
+ })
34
+ expect(await operatorContract.balanceInData(await delegator.getAddress())).toEqual(parseEther(DELEGATION_AMOUNT))
35
+
36
+ // stake
37
+ await runCommand(`internal operator-stake ${operatorAddress} ${sponsorshipAddress} ${STAKE_AMOUNT}`, {
38
+ privateKey: operator.privateKey
39
+ })
40
+ expect(await operatorContract.totalStakedIntoSponsorshipsWei()).toEqual(parseEther(STAKE_AMOUNT))
41
+
42
+ // unstake
43
+ await runCommand(`internal operator-unstake ${operatorAddress} ${sponsorshipAddress}`, {
44
+ privateKey: operator.privateKey
45
+ })
46
+ expect(await operatorContract.totalStakedIntoSponsorshipsWei()).toEqual(0n)
47
+
48
+ // undelegate
49
+ await wait(MINIMUM_DELEGATION_SECONDS)
50
+ await runCommand(`internal operator-undelegate ${operatorAddress} ${DELEGATION_AMOUNT}`, {
51
+ privateKey: delegator.privateKey
52
+ })
53
+ expect(await operatorContract.balanceInData(await delegator.getAddress())).toEqual(0n)
54
+
55
+ await client.destroy()
56
+ }, 30 * 1000)
57
+ })
@@ -0,0 +1,28 @@
1
+ import { _operatorContractUtils } from '@streamr/sdk'
2
+ import { fetchPrivateKeyWithGas, generateWalletWithGasAndTokens } from '@streamr/test-utils'
3
+ import { createTestClient, runCommand } from './utils'
4
+ import { parseEther, Wallet } from 'ethers'
5
+
6
+ const SPONSOR_AMOUNT = '12345'
7
+
8
+ describe('sponsorship-sponsor', () => {
9
+
10
+ it('happy path', async () => {
11
+ const client = createTestClient(await fetchPrivateKeyWithGas())
12
+ const stream = await client.createStream('/test')
13
+ const sponsorshipContract = await _operatorContractUtils.deploySponsorshipContract({
14
+ streamId: stream.id,
15
+ deployer: new Wallet(await fetchPrivateKeyWithGas()).connect(_operatorContractUtils.getProvider())
16
+ })
17
+
18
+ const sponsorer = await generateWalletWithGasAndTokens()
19
+ const sponsorshipAddress: string = await sponsorshipContract.getAddress()
20
+ await runCommand(`internal sponsorship-sponsor ${sponsorshipAddress} ${SPONSOR_AMOUNT}`, {
21
+ privateKey: sponsorer.privateKey
22
+ })
23
+
24
+ const remainingWei = await sponsorshipContract.connect(sponsorer, _operatorContractUtils.getProvider()).remainingWei()
25
+ expect(remainingWei).toEqual(parseEther(SPONSOR_AMOUNT))
26
+ await client.destroy()
27
+ })
28
+ })
@@ -16,4 +16,18 @@ describe('mock-data', () => {
16
16
  expect(json).toBeObject()
17
17
  })
18
18
 
19
+ it('generate binary', async () => {
20
+ const abortController = new AbortController()
21
+ const outputIterable = startCommand('mock-data generate --binary --min-length 32 --max-length 64', {
22
+ abortSignal: abortController.signal,
23
+ devEnvironment: false
24
+ })
25
+ const firstLine = (await collect(outputIterable, 1))[0]
26
+ abortController.abort()
27
+ expect(firstLine).toMatch(/^[0-9a-f]+$/)
28
+ const lengthInBytes = firstLine.length / 2
29
+ expect(lengthInBytes).toBeGreaterThanOrEqual(32)
30
+ expect(lengthInBytes).toBeLessThanOrEqual(64)
31
+ })
32
+
19
33
  })
@@ -2,7 +2,7 @@ import { fetchPrivateKeyWithGas } from '@streamr/test-utils'
2
2
  import 'jest-extended'
3
3
  import { StreamID } from '@streamr/sdk'
4
4
  import { DOCKER_DEV_STORAGE_NODE, createTestClient, runCommand } from './utils'
5
- import { waitForCondition } from '@streamr/utils'
5
+ import { until } from '@streamr/utils'
6
6
 
7
7
  const isStored = async (streamId: StreamID): Promise<boolean> => {
8
8
  const output = await runCommand(`storage-node list-streams ${DOCKER_DEV_STORAGE_NODE}`)
@@ -19,11 +19,11 @@ describe('storage node', () => {
19
19
  await runCommand(`storage-node add-stream ${DOCKER_DEV_STORAGE_NODE} ${stream.id}`, {
20
20
  privateKey
21
21
  })
22
- await waitForCondition(async () => await isStored(stream.id) === true, 15 * 1000, 1000)
22
+ await until(async () => await isStored(stream.id) === true, 15 * 1000, 1000)
23
23
  await runCommand(`storage-node remove-stream ${DOCKER_DEV_STORAGE_NODE} ${stream.id}`, {
24
24
  privateKey
25
25
  })
26
- await waitForCondition(async () => await isStored(stream.id) === false, 15 * 1000, 1000)
26
+ await until(async () => await isStored(stream.id) === false, 15 * 1000, 1000)
27
27
  }, 80 * 1000)
28
28
 
29
29
  it('list nodes', async () => {
@@ -19,7 +19,7 @@ describe('create stream', () => {
19
19
  })
20
20
  const client = createTestClient()
21
21
  const stream = await client.getStream(streamId)
22
- expect(stream.getMetadata().partitions).toBe(1)
22
+ expect(await stream.getPartitionCount()).toBe(1)
23
23
  await client.destroy()
24
24
  }, 20 * 1000)
25
25
 
@@ -1,4 +1,4 @@
1
- import { fetchPrivateKeyWithGas, randomEthereumAddress } from '@streamr/test-utils'
1
+ import { fetchPrivateKeyWithGas, randomUserId } from '@streamr/test-utils'
2
2
  import 'jest-extended'
3
3
  import { StreamPermission } from '@streamr/sdk'
4
4
  import { createTestClient, runCommand } from './utils'
@@ -9,9 +9,9 @@ describe('permission', () => {
9
9
  const privateKey = await fetchPrivateKeyWithGas()
10
10
  const client = createTestClient(privateKey)
11
11
  const stream = await client.createStream(`/${Date.now()}`)
12
- const otherUser = randomEthereumAddress()
12
+ const otherUser = randomUserId()
13
13
  const hasPermission = () => client.hasPermission({
14
- user: otherUser,
14
+ userId: otherUser,
15
15
  permission: StreamPermission.PUBLISH,
16
16
  streamId: stream.id,
17
17
  allowPublic: false
@@ -18,7 +18,7 @@ describe('publish and subscribe', () => {
18
18
  const client = createTestClient(publisherPrivateKey)
19
19
  const stream = await client.createStream(`/${Date.now()}`)
20
20
  await stream.grantPermissions({
21
- user: new Wallet(subscriberPrivateKey).address,
21
+ userId: new Wallet(subscriberPrivateKey).address,
22
22
  permissions: [StreamPermission.SUBSCRIBE]
23
23
  })
24
24
  streamId = stream.id
@@ -18,7 +18,7 @@ describe('resend stream', () => {
18
18
  privateKey = await fetchPrivateKeyWithGas()
19
19
  const client = createTestClient(privateKey)
20
20
  stream = await client.createStream(`/${Date.now()}`)
21
- await stream.addToStorageNode(DOCKER_DEV_STORAGE_NODE)
21
+ await stream.addToStorageNode(DOCKER_DEV_STORAGE_NODE, { wait: true })
22
22
  for (const msgId of range(10)) {
23
23
  await wait(10) // to prevent duplicate timestamps (to make test assertions simpler)
24
24
  const msg = await stream.publish({ msgId })
package/test/utils.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { collect, waitForCondition } from '@streamr/utils'
1
+ import { Stream, StreamrClient } from '@streamr/sdk'
2
+ import { collect, until } from '@streamr/utils'
2
3
  import { spawn } from 'child_process'
3
4
  import merge2 from 'merge2'
4
- import { CONFIG_TEST, Stream, StreamrClient } from '@streamr/sdk'
5
5
 
6
6
  export const DOCKER_DEV_STORAGE_NODE = '0xde1112f631486CfC759A50196853011528bC5FA0'
7
7
 
@@ -24,7 +24,7 @@ export async function* startCommand(commandLine: string, opts?: StartCommandOpti
24
24
  args.push('--private-key', opts.privateKey)
25
25
  }
26
26
  if (opts?.devEnvironment !== false) {
27
- args.push('--dev')
27
+ args.push('--env', 'dev2')
28
28
  }
29
29
  const executable = spawn(`node`, args, {
30
30
  signal: opts?.abortSignal,
@@ -69,13 +69,13 @@ async function* lines(src: AsyncIterable<Buffer>): AsyncGenerator<string, any, a
69
69
 
70
70
  export const createTestClient = (privateKey?: string): StreamrClient => {
71
71
  return new StreamrClient({
72
- ...CONFIG_TEST,
72
+ environment: 'dev2',
73
73
  auth: (privateKey !== undefined) ? { privateKey } : undefined
74
74
  })
75
75
  }
76
76
 
77
77
  export const waitForTheGraphToHaveIndexed = async (stream: Stream, client: StreamrClient): Promise<void> => {
78
- await waitForCondition(async () => {
78
+ await until(async () => {
79
79
  // eslint-disable-next-line no-underscore-dangle
80
80
  for await (const _msg of client.searchStreams(stream.id, undefined)) {
81
81
  return true
package/tsconfig.json CHANGED
@@ -1,16 +1,3 @@
1
1
  {
2
- "extends": "../../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": "../utils/tsconfig.node.json" },
14
- { "path": "../sdk/tsconfig.node.json" }
15
- ]
2
+ "extends": "./tsconfig.jest.json"
16
3
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "../../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": "../utils/tsconfig.node.json" },
14
+ { "path": "../sdk/tsconfig.node.json" }
15
+ ]
16
+ }
package/.eslintignore DELETED
@@ -1,2 +0,0 @@
1
- node_modules/**
2
- dist/**
package/.eslintrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "extends": "../../.eslintrc.js",
3
- "rules": {
4
- "no-console": "off"
5
- }
6
- }