Skip to content

Commit 5c2808d

Browse files
committed
initial subscribe package code
1 parent 9c3c0d8 commit 5c2808d

File tree

10 files changed

+119
-14
lines changed

10 files changed

+119
-14
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"license": "Apache-2.0",
88
"scripts": {
99
"bootstrap": "lerna bootstrap",
10+
"build": "yarn build:packages",
11+
"build:packages": "lerna run build",
1012
"test:packages": "lerna run test"
1113
},
1214
"devDependencies": {

packages/aws/package.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"name": "@teitei-tk/bravia-aws-package",
3-
"version": "1.0.0",
4-
"main": "lib/index.ts",
3+
"version": "0.0.1",
4+
"main": "./build/index.js",
5+
"types": "./build/index.d.ts",
56
"license": "Apache-2.0",
67
"scripts": {
78
"build": "tsc",
@@ -18,7 +19,11 @@
1819
"typescript": "^3.0.1"
1920
},
2021
"jest": {
21-
"moduleFileExtensions": [ "js", "ts", "tsx" ],
22+
"moduleFileExtensions": [
23+
"js",
24+
"ts",
25+
"tsx"
26+
],
2227
"transform": {
2328
"^.+\\.(ts|tsx)$": "ts-jest"
2429
},
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import * as events from "events";
2+
import { Subscriber, SubscriberInterface } from "../lib/subscriber";
3+
4+
const testTopicName = "topic/1";
5+
6+
class TestSubscriberClient implements SubscriberInterface {
7+
subscribe(subscribeName, options): Promise<{ result: boolean }> {
8+
return Promise.resolve({ result: true });
9+
}
10+
11+
connect(): Promise<{ result: boolean }> {
12+
return Promise.resolve({ result: true });
13+
}
14+
15+
message(): Promise<{ topic: string; payload: Buffer }> {
16+
return Promise.resolve({
17+
topic: testTopicName,
18+
payload: new Buffer("1")
19+
});
20+
}
21+
}
22+
23+
describe("@teitei-tk/bravia-subscriber", () => {
24+
describe("Subscriber", () => {
25+
let subscriber: Subscriber;
26+
beforeAll(() => {
27+
subscriber = new Subscriber(new TestSubscriberClient());
28+
});
29+
30+
it("connect", async () => {
31+
const r = await subscriber.client.connect();
32+
expect(r).toBeTruthy();
33+
});
34+
35+
it("message", async () => {
36+
const r = await subscriber.client.message();
37+
expect(r.topic).toBe(testTopicName);
38+
expect(r.payload.toString()).toBe("1");
39+
});
40+
});
41+
});

packages/subscribe/lib/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
import { Core } from "@bravia/core";
2-
3-
console.log(Core);
1+
import { Subscriber } from "./subscriber";
2+
export { Subscriber };

packages/subscribe/lib/option.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// TODO: implements AWS Thing Shadow Class Option here
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
export interface QOS {
2+
qos: 0 | 1;
3+
}
4+
5+
export interface SubscriberInterface {
6+
subscribe(subscribeName: string, options: QOS): Promise<{ result: boolean }>;
7+
connect(): Promise<{ result: boolean }>;
8+
message(): Promise<{ topic: string; payload: Buffer }>;
9+
}
10+
11+
export class Subscriber {
12+
client: SubscriberInterface;
13+
14+
constructor(client?: SubscriberInterface | null) {
15+
this.client = client;
16+
}
17+
18+
async subscribe() {
19+
const result = await this.client.connect();
20+
if (!result) {
21+
throw new Error("cannot connect subscibe client.");
22+
}
23+
const message = await this.client.message();
24+
console.log(message);
25+
}
26+
}

packages/subscribe/package.json

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,35 @@
11
{
2-
"name": "@bravia/subscribe",
3-
"version": "1.0.0",
4-
"main": "lib/index.ts",
5-
"license": "MIT",
2+
"name": "@teitei-tk/bravia-subscribe",
3+
"version": "0.0.1",
4+
"main": "./build/index.js",
5+
"types": "./build/index.d.ts",
6+
"license": "Apache-2.0",
7+
"scripts": {
8+
"build": "tsc",
9+
"test": "jest"
10+
},
611
"devDependencies": {
712
"@bravia/core": "^1.0.0",
813
"@types/jest": "^23.3.1",
914
"@types/node": "^10.5.7",
1015
"jest": "^23.5.0",
1116
"ts-jest": "^23.1.3",
1217
"typescript": "^3.0.1"
18+
},
19+
"dependencies": {
20+
"@teitei-tk/bravia-aws-package": "^0.0.1"
21+
},
22+
"jest": {
23+
"moduleFileExtensions": [
24+
"js",
25+
"ts",
26+
"tsx"
27+
],
28+
"transform": {
29+
"^.+\\.(ts|tsx)$": "ts-jest"
30+
},
31+
"testMatch": [
32+
"**/__tests__/*.+(ts|tsx|js)"
33+
]
1334
}
1435
}

packages/subscribe/tsconfig.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
11
{
2-
"extends": "../../tsconfig.json"
2+
"extends": "../../tsconfig.json",
3+
"compilerOptions": {
4+
"outDir": "./build"
5+
},
6+
"include": [
7+
"./lib/**/*.ts"
8+
],
9+
"exclude": [
10+
"node_modules/",
11+
]
12+
313
}

tsconfig.base.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
{
22
"compilerOptions": {
33
"module": "commonjs",
4-
"lib": [ "es5", "es2015.promise", "esnext" ],
5-
"target": "es5",
4+
"target": "es2015",
65
"noImplicitAny": true,
76
"removeComments": true,
87
"preserveConstEnums": true,

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"baseUrl": "./packages",
55
"paths": {
66
"@teitei-tk/*": ["./*/lib", "./*/__tests__"]
7-
}
7+
},
8+
"lib": [ "esnext" ]
89
}
910
}

0 commit comments

Comments
 (0)