Skip to content

Commit b09bbcf

Browse files
authored
Merge pull request #9 from SmartParksOrg/dev
~Stable V1.1.1
2 parents 0baa22f + b61b39d commit b09bbcf

File tree

22 files changed

+16700
-2331
lines changed

22 files changed

+16700
-2331
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ jobs:
1111
node-version: [12.x]
1212

1313
steps:
14-
- uses: actions/checkout@v2.2.0
14+
- uses: actions/checkout@v2.3.4
1515
- name: Setup Node.js ${{ matrix.node-version }} environment
16-
uses: actions/setup-node@v1.4.2
16+
uses: actions/setup-node@v2.1.2
1717
with:
1818
node-version: ${{ matrix.node-version }}
1919

package-lock.json

Lines changed: 16438 additions & 2291 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@smartparks/node-red-contrib-chirpstack",
3-
"version": "1.0.0",
3+
"version": "1.1.1",
44
"description": "An adapter for node-red to easily connect to the ChirpStack gRPC API.",
55
"keywords": [
66
"node-red",
@@ -35,41 +35,43 @@
3535
"chirpstack-application-management": "./dist/nodes/chirpstack-application-management/chirpstack-application-management.js",
3636
"chirpstack-gateway-management": "./dist/nodes/chirpstack-gateway-management/chirpstack-gateway-management.js",
3737
"chirpstack-organization-management": "./dist/nodes/chirpstack-organization-management/chirpstack-organization-management.js",
38-
"chirpstack-device-profile-management": "./dist/nodes/chirpstack-device-profile-management/chirpstack-device-profile-management.js"
38+
"chirpstack-device-profile-management": "./dist/nodes/chirpstack-device-profile-management/chirpstack-device-profile-management.js",
39+
"chirpstack-network-server": "./dist/nodes/chirpstack-network-server/chirpstack-network-server.js"
3940
}
4041
},
4142
"dependencies": {
4243
"@chirpstack/chirpstack-api": "^3.8.1",
43-
"grpc": "^1.24.3"
44+
"grpc": "^1.24.4",
45+
"tslib": "^2.0.3"
4446
},
4547
"devDependencies": {
46-
"@rollup/plugin-typescript": "^6.0.0",
47-
"@types/express": "^4.17.7",
48+
"@rollup/plugin-typescript": "^8.0.0",
49+
"@types/express": "^4.17.9",
4850
"@types/jest": "^26.0.15",
49-
"@types/node": "^14.14.3",
51+
"@types/node": "^14.14.10",
5052
"@types/node-red": "^1.1.1",
5153
"@types/node-red-node-test-helper": "^0.2.1",
52-
"@types/sinon": "^9.0.8",
54+
"@types/sinon": "^9.0.9",
5355
"@types/supertest": "^2.0.10",
54-
"@typescript-eslint/eslint-plugin": "^4.5.0",
55-
"@typescript-eslint/parser": "^4.5.0",
56+
"@typescript-eslint/eslint-plugin": "^4.9.0",
57+
"@typescript-eslint/parser": "^4.9.0",
5658
"colorette": "^1.2.1",
5759
"concurrently": "^5.3.0",
58-
"copyfiles": "^2.4.0",
59-
"eslint": "^7.12.0",
60-
"eslint-config-prettier": "^6.14.0",
61-
"eslint-plugin-jest": "^24.1.0",
60+
"copyfiles": "^2.4.1",
61+
"eslint": "^7.14.0",
62+
"eslint-config-prettier": "^6.15.0",
63+
"eslint-plugin-jest": "^24.1.3",
6264
"eslint-plugin-prettier": "^3.1.4",
6365
"glob": "^7.1.6",
64-
"jest": "^26.6.1",
66+
"jest": "^26.6.3",
6567
"mustache": "^4.0.1",
66-
"node-red": "^1.2.2",
68+
"node-red": "^1.2.6",
6769
"node-red-node-test-helper": "^0.2.5",
6870
"onchange": "^7.1.0",
69-
"prettier": "^2.0.5",
70-
"rollup": "^2.32.1",
71-
"ts-jest": "^26.4.2",
72-
"typescript": "^4.0.3"
71+
"prettier": "^2.2.1",
72+
"rollup": "^2.34.0",
73+
"ts-jest": "^26.4.4",
74+
"typescript": "^4.1.2"
7375
},
7476
"jest": {
7577
"testEnvironment": "node",
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import testHelper, { TestFlowsItem } from "node-red-node-test-helper";
2+
import chirpstackNetworkServerNode from "../nodes/chirpstack-network-server/chirpstack-network-server";
3+
import { ChirpstackNetworkServerNodeDef } from "../nodes/chirpstack-network-server/modules/types";
4+
5+
type FlowsItem = TestFlowsItem<ChirpstackNetworkServerNodeDef>;
6+
type Flows = Array<FlowsItem>;
7+
8+
describe("chirpstack-network-server node", () => {
9+
beforeEach((done) => {
10+
testHelper.startServer(done);
11+
});
12+
13+
afterEach((done) => {
14+
testHelper.unload().then(() => {
15+
testHelper.stopServer(done);
16+
});
17+
});
18+
19+
it("should be loaded", (done) => {
20+
const flows: Flows = [
21+
{
22+
id: "n1",
23+
type: "chirpstack-network-server",
24+
name: "chirpstack-network-server",
25+
},
26+
];
27+
testHelper.load(chirpstackNetworkServerNode, flows, () => {
28+
const n1 = testHelper.getNode("n1");
29+
expect(n1).toBeTruthy();
30+
expect(n1.name).toEqual("chirpstack-network-server");
31+
done();
32+
});
33+
});
34+
});

src/nodes/chirpstack-application-management/chirpstack-application-management.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const nodeInit: NodeInitializer = (RED): void => {
2424
): void {
2525
RED.nodes.createNode(this, config);
2626
this.chirpstackConnection = setConnection(this, config, RED);
27+
this.on("input", () => {
28+
this.chirpstackConnection = setConnection(this, config, RED);
29+
});
2730

2831
switch (config.action) {
2932
case "list":

src/nodes/chirpstack-connection/chirpstack-connection.ts

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,38 @@ const nodeInit: NodeInitializer = (RED): void => {
3737
loginRequest.setEmail(this.username);
3838
loginRequest.setPassword(this.password);
3939
// Send the login request
40-
internalServiceClient.login(loginRequest, (error, response) => {
41-
// Build a gRPC metadata object, setting the authorization key to the JWT we
42-
// got back from logging in.
43-
if (error) {
44-
this.error(
45-
"Error on connection for Chirpstack application " +
46-
this.host +
47-
": " +
48-
error
49-
);
50-
throw error;
51-
}
52-
if (!response) {
53-
this.error("Received empty response from Chirpstack");
54-
throw new Error("emptyResponse");
55-
}
56-
this.grpcMetadata = new grpc.Metadata();
57-
this.grpcMetadata.set("authorization", "Bearer " + response.getJwt());
40+
new Promise((resolve) => {
41+
internalServiceClient.login(loginRequest, (error, response) => {
42+
// Build a gRPC metadata object, setting the authorization key to the JWT we
43+
// got back from logging in.
44+
if (error) {
45+
this.error(
46+
"Error on connection for Chirpstack application " +
47+
this.host +
48+
": " +
49+
error
50+
);
51+
this.throwError = error.code + " : " + error.message;
52+
return resolve;
53+
// throw error;
54+
} else {
55+
if (!response) {
56+
this.error("Received empty response from Chirpstack");
57+
this.throwError = "Received empty response from Chirpstack";
58+
// throw new Error("emptyResponse");
59+
return resolve;
60+
} else {
61+
this.grpcMetadata = new grpc.Metadata();
62+
this.grpcMetadata.set(
63+
"authorization",
64+
"Bearer " + response.getJwt()
65+
);
66+
return resolve;
67+
}
68+
}
69+
});
70+
}).then(() => {
71+
return;
5872
});
5973
}
6074

src/nodes/chirpstack-connection/modules/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface ChirpstackConnectionNode
1111
ChirpstackConnectionOptions {
1212
fullAddress: string;
1313
grpcMetadata: grpc.Metadata;
14+
throwError: string;
1415
}
1516

1617
// export type ChirpstackConnectionNode = Node;

src/nodes/chirpstack-device-management/chirpstack-device-management.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const nodeInit: NodeInitializer = (RED): void => {
2424
): void {
2525
RED.nodes.createNode(this, config);
2626
this.chirpstackConnection = setConnection(this, config, RED);
27+
this.on("input", () => {
28+
this.chirpstackConnection = setConnection(this, config, RED);
29+
});
2730

2831
switch (config.action) {
2932
case "list":

src/nodes/chirpstack-device-profile-management/chirpstack-device-profile-management.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const nodeInit: NodeInitializer = (RED): void => {
2424
): void {
2525
RED.nodes.createNode(this, config);
2626
this.chirpstackConnection = setConnection(this, config, RED);
27+
this.on("input", () => {
28+
this.chirpstackConnection = setConnection(this, config, RED);
29+
});
2730

2831
switch (config.action) {
2932
case "list":

src/nodes/chirpstack-gateway-management/chirpstack-gateway-management.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ const nodeInit: NodeInitializer = (RED): void => {
2424
): void {
2525
RED.nodes.createNode(this, config);
2626
this.chirpstackConnection = setConnection(this, config, RED);
27+
this.on("input", () => {
28+
this.chirpstackConnection = setConnection(this, config, RED);
29+
});
2730

2831
switch (config.action) {
2932
case "list":

0 commit comments

Comments
 (0)