Skip to content

Commit

Permalink
Merge 61d9baa into 461ac1d
Browse files Browse the repository at this point in the history
  • Loading branch information
albertleigh committed Mar 7, 2021
2 parents 461ac1d + 61d9baa commit 0912c48
Show file tree
Hide file tree
Showing 17 changed files with 189 additions and 110 deletions.
2 changes: 1 addition & 1 deletion examples/ng-sample-app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions examples/ng-sample-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ng-sample-app",
"version": "0.0.8",
"version": "0.0.9",
"scripts": {
"ng": "ng",
"start": "ng serve",
Expand All @@ -22,11 +22,11 @@
"@angular/platform-browser-dynamic": "~10.2.0",
"@angular/router": "~10.2.0",
"redux": "^4.0.5",
"redux-anno": "^0.0.8",
"redux-anno-utils": "^0.0.8",
"redux-anno": "^0.0.9",
"redux-anno-utils": "^0.0.9",
"redux-saga": "^1.1.3",
"rxjs": "~6.6.0",
"sample-shared-models": "^0.0.8",
"sample-shared-models": "^0.0.9",
"tslib": "^2.0.0",
"zone.js": "~0.10.2"
},
Expand Down
2 changes: 1 addition & 1 deletion examples/react-sample-app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions examples/react-sample-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-sample-app",
"version": "0.0.8",
"version": "0.0.9",
"private": true,
"homepage": ".",
"dependencies": {
Expand All @@ -22,10 +22,10 @@
"react-redux": "^7.2.2",
"react-scripts": "^4.0.2",
"redux": "^4.0.5",
"redux-anno": "^0.0.8",
"redux-anno-utils": "^0.0.8",
"redux-anno": "^0.0.9",
"redux-anno-utils": "^0.0.9",
"redux-saga": "^1.1.3",
"sample-shared-models": "^0.0.8",
"sample-shared-models": "^0.0.9",
"typescript": "^4.1.5"
},
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion examples/sample-shared-models/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions examples/sample-shared-models/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "sample-shared-models",
"private": true,
"version": "0.0.8",
"version": "0.0.9",
"description": "",
"type": "module",
"main": "lib/index.js",
"dependencies": {
"redux-anno": "^0.0.8",
"redux-anno-utils": "^0.0.8",
"redux-anno": "^0.0.9",
"redux-anno-utils": "^0.0.9",
"redux-saga": "^1.1.3",
"typescript": "^4.0.3"
},
Expand Down
2 changes: 1 addition & 1 deletion examples/vue-sample-app/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions examples/vue-sample-app/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-sample-app",
"version": "0.0.8",
"version": "0.0.9",
"private": true,
"scripts": {
"start": "vue-cli-service serve",
Expand All @@ -11,11 +11,11 @@
"ant-design-vue": "^2.0.0-beta.10",
"core-js": "^3.6.5",
"redux": "^4.0.5",
"redux-anno": "^0.0.8",
"redux-anno-utils": "^0.0.8",
"redux-anno": "^0.0.9",
"redux-anno-utils": "^0.0.9",
"redux-saga": "^1.1.3",
"redux-vuex": "^3.0.0-beta.2",
"sample-shared-models": "^0.0.8",
"sample-shared-models": "^0.0.9",
"vue": "^3.0.0",
"vue-class-component": "^8.0.0-0"
},
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "0.0.8",
"version": "0.0.9",
"packages": [
"packages/*",
"examples/*"
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "redux-anno",
"version": "0.0.8",
"version": "0.0.9",
"description": "A middleware leverages certain boilerplate while using redux",
"scripts": {
"clean": "node ./scripts/clean.js",
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions packages/utils/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "redux-anno-utils",
"version": "0.0.8",
"version": "0.0.9",
"description": "Utils package for redux-anno",
"keywords": [
"redux-anno"
Expand All @@ -23,7 +23,7 @@
"author": "Wentao LI",
"license": "MIT",
"dependencies": {
"redux-anno": "^0.0.8"
"redux-anno": "^0.0.9"
},
"optionalDependencies": {
"react": "^16.13.1"
Expand Down
46 changes: 32 additions & 14 deletions packages/utils/src/sdk-helpers/__tests__/DelegatorsAndClients.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,31 +72,38 @@ describe('DelegatorsAndClients', () => {
});

it('delegator close', async () => {
const currentClientId = 'test01 delegator close';

const defaultCtx = getContext();
const counterInst = defaultCtx.getOneInstance(Counter);
await counterInst.count.dispatch(0);

const unsubscribe = jest.fn();

let delegatedListener: (data: string) => void;
let delegatedListener: (data: string, clientId: string) => void;
let clientListener: (data: string) => void;
const deleMsgs: string[] = [];
const specificDeleMsgs: string[] = [];
const cltMsgs: string[] = [];

const delegator = createDelegator({
contextName: counterInst.contextName,
modelName: counterInst.modelName,
modelKey: counterInst.modelKey,
onMessage(listener: (data: string) => void) {
onMessage(listener: (data: string, client: string) => void) {
delegatedListener = listener;
},
postMessage(data: string) {
postMessage(data: string, clientId) {
deleMsgs.push(data);
clientListener && clientListener(data);
},
unsubscribe,
});

delegator.registerClient(currentClientId, (data) => {
specificDeleMsgs.push(data);
clientListener && clientListener(data);
});

expect(delegator.health.value).toBe(HealthStatus.INIT);

const client = createClient<Counter>({
Expand All @@ -108,7 +115,7 @@ describe('DelegatorsAndClients', () => {
},
postMessage(data: string) {
cltMsgs.push(data);
delegatedListener && delegatedListener(data);
delegatedListener && delegatedListener(data, currentClientId);
},
unsubscribe,
});
Expand Down Expand Up @@ -162,21 +169,26 @@ describe('DelegatorsAndClients', () => {

expect(unsubscribe).toHaveBeenCalledTimes(2);

expect(deleMsgs.length).toEqual(cltMsgs.length);
expect(deleMsgs.length).toBeLessThan(specificDeleMsgs.length);
expect(deleMsgs.length).toBeLessThan(cltMsgs.length);
expect(specificDeleMsgs.length).toEqual(cltMsgs.length);
});

it('client close w/ repeater', async () => {
const currentClientId = 'test02 client close w/ repeater';

const defaultCtx = getContext();
const counterInst = defaultCtx.getOneInstance(Counter);
await counterInst.count.dispatch(0);

const unsubscribe = jest.fn();

let delegatedListener: (data: string) => void;
let delegatedListener: (data: string, clientId: string) => void;
let clientListener: (data: string) => void;
let repeaterUpListener: (data: string) => void;
let repeaterDownListener: (data: string) => void;
const deleMsgs: string[] = [];
const specificDeleMsgs: string[] = [];
const cltMsgs: string[] = [];
const rpUpMsgs: string[] = [];
const rpDownMsgs: string[] = [];
Expand All @@ -185,22 +197,26 @@ describe('DelegatorsAndClients', () => {
contextName: counterInst.contextName,
modelName: counterInst.modelName,
modelKey: counterInst.modelKey,
onMessage(listener: (data: string) => void) {
onMessage(listener: (data: string, clientId: string) => void) {
delegatedListener = listener;
},
postMessage(data: string) {
deleMsgs.push(data);
repeaterUpListener && repeaterUpListener(data);
},
unsubscribe,
});

delegator.registerClient(currentClientId, (data) => {
specificDeleMsgs.push(data);
repeaterUpListener && repeaterUpListener(data);
});

expect(delegator.health.value).toBe(HealthStatus.INIT);

const repeater = createRepeater({
postUpStreamMessage(data: string) {
rpUpMsgs.push(data);
delegatedListener && delegatedListener(data);
delegatedListener && delegatedListener(data, currentClientId);
},
onUpStreamMessage(listener: (data: string) => void) {
repeaterUpListener = listener;
Expand Down Expand Up @@ -272,20 +288,22 @@ describe('DelegatorsAndClients', () => {

jest.runAllTimers();

client.close();
client.disconnect();
// delegator.close();

expect(delegator.health.value).toBe(HealthStatus.DEAD);
expect(delegator.health.value).toBe(HealthStatus.LIVE);
expect(repeater.health.value).toBe(HealthStatus.LIVE);
expect(client.health.value).toBe(HealthStatus.DEAD);

repeater.close();

expect(repeater.health.value).toBe(HealthStatus.DEAD);

expect(unsubscribe).toHaveBeenCalledTimes(2);
expect(unsubscribe).toHaveBeenCalledTimes(1);

expect(deleMsgs.length).toEqual(cltMsgs.length);
expect(deleMsgs.length).toBeLessThan(specificDeleMsgs.length);
expect(deleMsgs.length).toBeLessThan(cltMsgs.length);
expect(specificDeleMsgs.length).toEqual(cltMsgs.length);
expect(rpUpMsgs.length).toEqual(rpDownMsgs.length);
});
});
34 changes: 32 additions & 2 deletions packages/utils/src/sdk-helpers/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,21 @@ export const MSG_PREFIX = '__anno_sdk_helper_msg:';

export const UNDEFINED_SYMBOL = '__anno_sdk_helper_undefined';

export type MessageListener = (data: string) => void;

export interface ClientDelegatorBaseOption {
contextName: string;
modelName: string;
modelKey: string | undefined;
// model
}

export interface DelegatorOption extends ClientDelegatorBaseOption {
onMessage(listener: (data: string, clientId: string) => void): void;
postMessage?(data: string, clientId?: string): void;
unsubscribe?(listener: (data: string, clientId: string) => void): void;
}

export interface ClientOption extends ClientDelegatorBaseOption {
onMessage(listener: (data: string) => void): void;
postMessage(data: string): void;
unsubscribe?(listener: (data: string) => void): void;
Expand All @@ -25,11 +35,23 @@ export type SdkMessage =
| UpdateMessage
| TriggerMessage
| ReturnMessage
| DisconnectMessage
| DisconnectedMessage
| CloseMessage
| FinMessage;

export interface BaseMessage {
readonly channel: 'INIT' | 'READY' | 'UPDATE' | 'ACK' | 'TRIGGER' | 'RETURN' | 'CLOSE' | 'FIN';
readonly channel:
| 'INIT'
| 'READY'
| 'UPDATE'
| 'ACK'
| 'TRIGGER'
| 'RETURN'
| 'DISCONNECT'
| 'DISCONNECTED'
| 'CLOSE'
| 'FIN';
readonly sequence: number;
readonly contextName: string;
readonly modelName: string;
Expand Down Expand Up @@ -67,6 +89,14 @@ export interface ReturnMessage extends BaseMessage {
readonly error?: any | undefined;
}

export interface DisconnectMessage extends BaseMessage {
readonly channel: 'DISCONNECT';
}

export interface DisconnectedMessage extends BaseMessage {
readonly channel: 'DISCONNECTED';
}

export interface CloseMessage extends BaseMessage {
readonly channel: 'CLOSE';
}
Expand Down

0 comments on commit 0912c48

Please sign in to comment.