@awarevue/agent-tester-cli 2.0.54

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 (69) hide show
  1. package/bin/agent-tester.js +3 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/app.module.d.ts +5 -0
  4. package/dist/app.module.js +36 -0
  5. package/dist/app.module.js.map +1 -0
  6. package/dist/cli-options.d.ts +12 -0
  7. package/dist/cli-options.js +5 -0
  8. package/dist/cli-options.js.map +1 -0
  9. package/dist/helpers/device-state-store.d.ts +19 -0
  10. package/dist/helpers/device-state-store.js +79 -0
  11. package/dist/helpers/device-state-store.js.map +1 -0
  12. package/dist/hub.service.d.ts +24 -0
  13. package/dist/hub.service.js +111 -0
  14. package/dist/hub.service.js.map +1 -0
  15. package/dist/index.d.ts +3 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/loader.d.ts +3 -0
  19. package/dist/loader.js +43 -0
  20. package/dist/loader.js.map +1 -0
  21. package/dist/main.d.ts +1 -0
  22. package/dist/main.js +230 -0
  23. package/dist/main.js.map +1 -0
  24. package/dist/reporter.d.ts +11 -0
  25. package/dist/reporter.js +94 -0
  26. package/dist/reporter.js.map +1 -0
  27. package/dist/runner.service.d.ts +11 -0
  28. package/dist/runner.service.js +180 -0
  29. package/dist/runner.service.js.map +1 -0
  30. package/dist/scenario.types.d.ts +42 -0
  31. package/dist/scenario.types.js +14 -0
  32. package/dist/scenario.types.js.map +1 -0
  33. package/dist/scenarios/access/_utils.d.ts +6 -0
  34. package/dist/scenarios/access/_utils.js +52 -0
  35. package/dist/scenarios/access/_utils.js.map +1 -0
  36. package/dist/scenarios/access/communicates-bad-references.scenario.d.ts +3 -0
  37. package/dist/scenarios/access/communicates-bad-references.scenario.js +81 -0
  38. package/dist/scenarios/access/communicates-bad-references.scenario.js.map +1 -0
  39. package/dist/scenarios/access/communicates-not-found.scenario.d.ts +3 -0
  40. package/dist/scenarios/access/communicates-not-found.scenario.js +76 -0
  41. package/dist/scenarios/access/communicates-not-found.scenario.js.map +1 -0
  42. package/dist/scenarios/access/merges-access-objects.scenario.d.ts +3 -0
  43. package/dist/scenarios/access/merges-access-objects.scenario.js +187 -0
  44. package/dist/scenarios/access/merges-access-objects.scenario.js.map +1 -0
  45. package/dist/scenarios/access/people.scenario.d.ts +3 -0
  46. package/dist/scenarios/access/people.scenario.js +140 -0
  47. package/dist/scenarios/access/people.scenario.js.map +1 -0
  48. package/dist/scenarios/device-discovery.scenario.d.ts +3 -0
  49. package/dist/scenarios/device-discovery.scenario.js +43 -0
  50. package/dist/scenarios/device-discovery.scenario.js.map +1 -0
  51. package/dist/scenarios/doors/communicates-init-door-states.scenario.d.ts +3 -0
  52. package/dist/scenarios/doors/communicates-init-door-states.scenario.js +31 -0
  53. package/dist/scenarios/doors/communicates-init-door-states.scenario.js.map +1 -0
  54. package/dist/scenarios/doors/door-lock-unlock.scenario.d.ts +3 -0
  55. package/dist/scenarios/doors/door-lock-unlock.scenario.js +59 -0
  56. package/dist/scenarios/doors/door-lock-unlock.scenario.js.map +1 -0
  57. package/dist/scenarios/doors/door-release.scenario.d.ts +3 -0
  58. package/dist/scenarios/doors/door-release.scenario.js +52 -0
  59. package/dist/scenarios/doors/door-release.scenario.js.map +1 -0
  60. package/dist/scenarios/register.scenario.d.ts +3 -0
  61. package/dist/scenarios/register.scenario.js +32 -0
  62. package/dist/scenarios/register.scenario.js.map +1 -0
  63. package/dist/scenarios/start-stop.scenario.d.ts +3 -0
  64. package/dist/scenarios/start-stop.scenario.js +39 -0
  65. package/dist/scenarios/start-stop.scenario.js.map +1 -0
  66. package/dist/ws-server-transport.d.ts +17 -0
  67. package/dist/ws-server-transport.js +73 -0
  68. package/dist/ws-server-transport.js.map +1 -0
  69. package/package.json +60 -0
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const scenario_types_1 = require("../scenario.types");
4
+ const scenario = {
5
+ name: "start-stop",
6
+ description: "Sends start and stop to the agent and validates responses",
7
+ tags: ["core", "lifecycle"],
8
+ async run(ctx) {
9
+ const { provider, config } = ctx;
10
+ ctx.log(`Starting provider '${provider}'...`);
11
+ try {
12
+ await ctx.getReply({
13
+ kind: "start",
14
+ provider,
15
+ config,
16
+ lastEventForeignRef: null,
17
+ lastEventTimestamp: null,
18
+ });
19
+ }
20
+ catch (err) {
21
+ return (0, scenario_types_1.scenarioFail)(`Failed to start provider '${provider}': ${err.message}`);
22
+ }
23
+ ctx.log("start-rs received");
24
+ ctx.log(`Stopping provider '${provider}'...`);
25
+ try {
26
+ await ctx.getReply({
27
+ kind: "stop",
28
+ provider,
29
+ });
30
+ }
31
+ catch (err) {
32
+ return (0, scenario_types_1.scenarioFail)(`Failed to stop provider '${provider}': ${err.message}`);
33
+ }
34
+ ctx.log("stop-rs received");
35
+ return (0, scenario_types_1.scenarioPass)();
36
+ },
37
+ };
38
+ exports.default = scenario;
39
+ //# sourceMappingURL=start-stop.scenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-stop.scenario.js","sourceRoot":"","sources":["../../src/scenarios/start-stop.scenario.ts"],"names":[],"mappings":";;AAAA,sDAAyE;AAOzE,MAAM,QAAQ,GAAa;IACzB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,2DAA2D;IACxE,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAE3B,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAGjC,GAAG,CAAC,GAAG,CAAC,sBAAsB,QAAQ,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,QAAQ,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,QAAQ;gBACR,MAAM;gBACN,mBAAmB,EAAE,IAAI;gBACzB,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,6BAAY,EACjB,6BAA6B,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CACpE,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAG7B,GAAG,CAAC,GAAG,CAAC,sBAAsB,QAAQ,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,QAAQ,CAAC;gBACjB,IAAI,EAAE,MAAM;gBACZ,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAA,6BAAY,EACjB,4BAA4B,QAAQ,MAAO,GAAa,CAAC,OAAO,EAAE,CACnE,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAE5B,OAAO,IAAA,6BAAY,GAAE,CAAC;IACxB,CAAC;CACF,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { WebSocket } from "ws";
2
+ import { Observable } from "rxjs";
3
+ import { DuplexTransport } from "@awarevue/agent-sdk";
4
+ export declare class WsServerDuplexTransport<TIn, TOut> implements DuplexTransport<TIn, TOut> {
5
+ private readonly ws;
6
+ readonly connected$: Observable<boolean>;
7
+ readonly messages$: Observable<TIn>;
8
+ private readonly _connected$;
9
+ private readonly _messages$;
10
+ private closed;
11
+ private defaultDeserializer;
12
+ private defaultSerializer;
13
+ constructor(ws: WebSocket);
14
+ send(msg: TOut): void;
15
+ close(): void;
16
+ private cleanup;
17
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WsServerDuplexTransport = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ class WsServerDuplexTransport {
6
+ constructor(ws) {
7
+ this.ws = ws;
8
+ this._connected$ = new rxjs_1.BehaviorSubject(true);
9
+ this._messages$ = new rxjs_1.Subject();
10
+ this.closed = false;
11
+ this.defaultDeserializer = (raw) => {
12
+ const env = JSON.parse(raw);
13
+ return {
14
+ kind: env.event,
15
+ ...env.data,
16
+ };
17
+ };
18
+ this.defaultSerializer = (msg) => {
19
+ if (typeof msg === "object" && "kind" in (msg || {})) {
20
+ const { kind, ...data } = msg;
21
+ return JSON.stringify({ event: kind, data });
22
+ }
23
+ return JSON.stringify(msg);
24
+ };
25
+ this.connected$ = this._connected$.asObservable();
26
+ this.messages$ = this._messages$.asObservable();
27
+ ws.on("message", (data) => {
28
+ try {
29
+ const msg = this.defaultDeserializer(data.toString());
30
+ this._messages$.next(msg);
31
+ }
32
+ catch {
33
+ }
34
+ });
35
+ ws.on("close", () => {
36
+ this._connected$.next(false);
37
+ this.cleanup();
38
+ });
39
+ ws.on("error", () => {
40
+ this._connected$.next(false);
41
+ this.cleanup();
42
+ });
43
+ }
44
+ send(msg) {
45
+ if (this.closed)
46
+ return;
47
+ this.ws.send(this.defaultSerializer(msg));
48
+ }
49
+ close() {
50
+ if (this.closed)
51
+ return;
52
+ this.closed = true;
53
+ try {
54
+ this.ws.close();
55
+ }
56
+ catch { }
57
+ setTimeout(() => {
58
+ try {
59
+ this.ws.terminate();
60
+ }
61
+ catch { }
62
+ }, 250).unref?.();
63
+ this._connected$.next(false);
64
+ this.cleanup();
65
+ }
66
+ cleanup() {
67
+ this.closed = true;
68
+ this._connected$.complete();
69
+ this._messages$.complete();
70
+ }
71
+ }
72
+ exports.WsServerDuplexTransport = WsServerDuplexTransport;
73
+ //# sourceMappingURL=ws-server-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-server-transport.js","sourceRoot":"","sources":["../src/ws-server-transport.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@awarevue/agent-tester-cli",
3
+ "version": "2.0.54",
4
+ "description": "CLI tool for running Aware agent protocol conformance tests",
5
+ "author": "",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "agent-tester": "./bin/agent-tester.js"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "files": [
13
+ "dist",
14
+ "bin"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public",
18
+ "registry": "https://registry.npmjs.org/"
19
+ },
20
+ "scripts": {
21
+ "build": "nest build",
22
+ "start": "nest start",
23
+ "start:dev": "nest start",
24
+ "start:debug": "nest start --debug --watch",
25
+ "start:prod": "node dist/main",
26
+ "lint": "eslint \"src/**/*.ts\"",
27
+ "test": "jest",
28
+ "test:watch": "jest --watch",
29
+ "test:cov": "jest --coverage"
30
+ },
31
+ "dependencies": {
32
+ "@awarevue/agent-sdk": "2.0.54",
33
+ "@awarevue/api-types": "2.0.54",
34
+ "@nestjs/common": "^11.0.0",
35
+ "@nestjs/core": "^11.0.0",
36
+ "@nestjs/platform-express": "^11.0.0",
37
+ "reflect-metadata": "^0.2.2",
38
+ "rxjs": "^7.8.2",
39
+ "uuid": "^13.0.0",
40
+ "ws": "^8.0.0",
41
+ "yargs": "^17.7.0"
42
+ },
43
+ "devDependencies": {
44
+ "@nestjs/cli": "^11.0.0",
45
+ "@nestjs/schematics": "^11.0.0",
46
+ "@nestjs/testing": "^11.0.0",
47
+ "@types/express": "^5.0.0",
48
+ "@types/node": "^20.12.7",
49
+ "@types/ws": "^8.18.0",
50
+ "@types/yargs": "^17.0.0",
51
+ "@typescript-eslint/eslint-plugin": "^8.31.1",
52
+ "@typescript-eslint/parser": "^8.31.1",
53
+ "eslint": "^9.26.0",
54
+ "jest": "^29.7.0",
55
+ "ts-jest": "^29.2.0",
56
+ "ts-loader": "^9.5.0",
57
+ "ts-node": "^10.9.0",
58
+ "typescript": "^5.8.3"
59
+ }
60
+ }