Skip to content

Commit b96d1ca

Browse files
authored
Merge pull request #11 from jsonjoy-com/ops
Ops
2 parents 8e04672 + 3de07b7 commit b96d1ca

File tree

7 files changed

+635
-34
lines changed

7 files changed

+635
-34
lines changed

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"prettier:check": "prettier --ignore-path .gitignore --list-different 'src/**/*.{ts,tsx,js,jsx}'",
4444
"lint": "yarn tslint",
4545
"tslint": "tslint 'src/**/*.{js,jsx,ts,tsx}' -t verbose --project .",
46-
"clean": "rimraf lib typedocs coverage gh-pages yarn-error.log db",
46+
"clean": "rimraf lib typedocs coverage gh-pages yarn-error.log db dist",
4747
"build": "tsc --project tsconfig.build.json --module commonjs --target es2020 --outDir lib",
4848
"jest": "node -r ts-node/register ./node_modules/.bin/jest",
4949
"test": "jest --maxWorkers 7",
@@ -55,6 +55,7 @@
5555
"demo:e2e:sample-api:uws": "ts-node src/__demos__/sample-api/main-uws.ts",
5656
"demo:e2e:json-crdt-server:http1": "ts-node src/__demos__/json-crdt-server/main-http1.ts",
5757
"demo:e2e:json-crdt-server:uws": "ts-node src/__demos__/json-crdt-server/main-uws.ts",
58+
"start:json-crdt-server:http1": "NODE_ENV=production PORT=80 JSON_CRDT_STORE=level pm2 start lib/__demos__/json-crdt-server/main-http1.js",
5859
"coverage": "yarn test --collectCoverage",
5960
"typedoc": "typedoc",
6061
"build:pages": "rimraf gh-pages && mkdir -p gh-pages && cp -r typedocs/* gh-pages && cp -r coverage gh-pages/coverage",
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
// Run: npx ts-node src/json-crdt-server/main-http1.ts
22
// curl localhost:9999/rpc -H 'Content-Type: rpc.rx.compact.json' -d '[1,1,"util.ping"]'
33

4-
import {createCaller} from './routes';
5-
import {Services} from './services/Services';
4+
import {createCaller, createServices} from './routes';
65
import {RpcServer} from '../../server/http1/RpcServer';
76

87
export type JsonJoyDemoRpcCaller = ReturnType<typeof createCaller>['caller'];
98

10-
const server = RpcServer.startWithDefaults({
11-
port: +(process.env.PORT || 9999),
12-
caller: createCaller(new Services()).caller,
13-
logger: console,
14-
});
9+
const main = async () => {
10+
const services = await createServices();
11+
const server = RpcServer.startWithDefaults({
12+
port: +(process.env.PORT || 9999),
13+
caller: createCaller(services).caller,
14+
logger: console,
15+
});
1516

16-
// tslint:disable-next-line:no-console
17-
console.log(server + '');
17+
// tslint:disable-next-line:no-console
18+
console.log(server + '');
19+
};
20+
21+
// tslint:disable-next-line no-console
22+
main().catch(console.error);

src/__demos__/json-crdt-server/main-uws.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,23 @@
33

44
import {App} from 'uWebSockets.js';
55
import {RpcApp} from '../../server/uws/RpcApp';
6-
import {createCaller} from './routes';
7-
import {Services} from './services/Services';
6+
import {createCaller, createServices} from './routes';
87
import type {MyCtx} from './services/types';
98

109
export type JsonJoyDemoRpcCaller = ReturnType<typeof createCaller>['caller'];
1110

12-
const app = new RpcApp<MyCtx>({
13-
uws: App({}),
14-
caller: createCaller(new Services()).caller,
15-
port: +(process.env.PORT || 9999),
16-
});
17-
app.startWithDefaults();
11+
const main = async () => {
12+
const services = await createServices();
13+
const app = new RpcApp<MyCtx>({
14+
uws: App({}),
15+
caller: createCaller(services).caller,
16+
port: +(process.env.PORT || 9999),
17+
});
18+
app.startWithDefaults();
1819

19-
// tslint:disable-next-line:no-console
20-
console.log(app + '');
20+
// tslint:disable-next-line:no-console
21+
console.log(app + '');
22+
};
23+
24+
// tslint:disable-next-line no-console
25+
main().catch(console.error);

src/__demos__/json-crdt-server/routes/index.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import {ObjectValueCaller} from '../../../common/rpc/caller/ObjectValueCaller';
55
import {system} from './system';
66
import {ObjectValue} from 'json-joy/lib/json-type-value/ObjectValue';
77
import {Services} from '../services/Services';
8+
import {MemoryStore} from '../services/blocks/store/MemoryStore';
9+
import {LevelStore} from '../services/blocks/store/level/LevelStore';
10+
import {ClassicLevel} from 'classic-level';
11+
import {Store} from '../services/blocks/store/types';
812
import type {RouteDeps} from './types';
913

1014
export const createRouter = (services: Services) => {
@@ -32,3 +36,16 @@ export const createCaller = (services: Services = new Services()) => {
3236
});
3337
return {router, caller, services};
3438
};
39+
40+
export const createServices = async () => {
41+
let store: Store = new MemoryStore();
42+
if (process.env.JSON_CRDT_STORE === 'level') {
43+
const path = process.env.JSON_CRDT_STORE_PATH || './db';
44+
const kv = new ClassicLevel<string, Uint8Array>(path, {valueEncoding: 'view'});
45+
await kv.open();
46+
store = new LevelStore(<any>kv);
47+
await kv.close();
48+
}
49+
const services = new Services({store});
50+
return services;
51+
};

src/__tests__/e2e/clients.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export const setupRpcPersistentClient = (codec: RpcCodec) => {
1919
client.start();
2020
const call = client.call.bind(client);
2121
const call$ = client.call$.bind(client);
22-
const stop = async () => void client.stop.bind(client);
22+
const stop = async () => void client.stop();
2323
return {client, call, call$, stop};
2424
};
2525

@@ -34,7 +34,7 @@ export const setupFetchRpcClient = (codec: RpcCodec) => {
3434
});
3535
const call = client.call.bind(client);
3636
const call$ = client.call$.bind(client);
37-
const stop = async () => void client.stop.bind(client);
37+
const stop = async () => void client.stop();
3838
return {client, call, call$, stop};
3939
};
4040

@@ -68,6 +68,6 @@ export const setupStreamingRpcClient = (codec: RpcCodec) => {
6868
});
6969
const call = client.call.bind(client);
7070
const call$ = client.call$.bind(client);
71-
const stop = async () => void client.stop.bind(client);
71+
const stop = async () => void client.stop();
7272
return {client, call, call$, stop};
7373
};

src/__tests__/e2e/json-crdt-server/clients.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {ApiTestSetup, ApiTestSetupResult} from '../../../common/rpc/__tests__/runApiTests';
1+
import {ApiTestSetup} from '../../../common/rpc/__tests__/runApiTests';
22
import {runUtilTests} from '../../json-crdt-server/util';
33
import {runPubsubTests} from '../../json-crdt-server/pubsub';
44
import {runPresenceTests} from '../../json-crdt-server/presence';

0 commit comments

Comments
 (0)