Skip to content

Commit c0e5d83

Browse files
authored
Merge pull request #597 from streamich/simplify-deps
Simplify installed dependencies
2 parents 3a4bd9c + 1e879f4 commit c0e5d83

20 files changed

+648
-3435
lines changed

.github/workflows/pr.yml

+15-1
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,19 @@ jobs:
4444
- run: yarn test:cli:pack
4545
- run: yarn demo:json-patch
4646
- run: yarn demo:json-pointer
47+
typedoc:
48+
runs-on: ubuntu-latest
49+
strategy:
50+
matrix:
51+
node-version: [20.x]
52+
steps:
53+
- uses: actions/checkout@v3
54+
- name: Use Node.js ${{ matrix.node-version }}
55+
uses: actions/setup-node@v3
56+
with:
57+
node-version: ${{ matrix.node-version }}
58+
cache: yarn
59+
- run: yarn install --frozen-lockfile
4760
- run: yarn typedoc
48-
61+
62+

package.json

+45-49
Original file line numberDiff line numberDiff line change
@@ -76,41 +76,47 @@
7676
"lib/"
7777
],
7878
"scripts": {
79-
"prettier": "prettier --ignore-path .gitignore --write \"src/**/*.{ts,tsx,js,jsx}\"",
80-
"prettier:check": "prettier --ignore-path .gitignore --list-different 'src/**/*.{ts,tsx,js,jsx}'",
79+
"prettier": "npx prettier@3.2.5 --ignore-path .gitignore --write \"src/**/*.{ts,tsx,js,jsx}\"",
80+
"prettier:check": "npx prettier@3.2.5 --ignore-path .gitignore --list-different 'src/**/*.{ts,tsx,js,jsx}'",
8181
"lint": "yarn tslint",
8282
"lint:fix": "yarn tslint --fix",
8383
"tslint": "tslint 'src/**/*.{js,jsx,ts,tsx}' -t verbose --project .",
84-
"clean": "rimraf lib es6 es2019 es2020 esm typedocs coverage gh-pages yarn-error.log",
84+
"clean": "npx rimraf@5.0.5 lib es6 es2019 es2020 esm typedocs coverage gh-pages yarn-error.log src/**/__bench__/node_modules src/**/__bench__/yarn-error.log",
8585
"build:es2020": "tsc --project tsconfig.build.json --module commonjs --target es2020 --outDir lib",
86-
"build:all": "concurrently \"yarn build:es2020\"",
86+
"build:all": "npx concurrently@8.2.2 \"yarn build:es2020\"",
8787
"build": "yarn build:es2020",
88-
"jest": "node -r ts-node/register ./node_modules/.bin/jest",
88+
"jest": "jest",
8989
"test": "jest --maxWorkers 7",
9090
"test:all": "yarn lint && yarn test && yarn build:all && yarn test:cli:pointer && yarn test:cli:patch && yarn test:cli:pack && yarn demo:json-patch && yarn demo:json-pointer",
9191
"test:ci": "yarn jest --maxWorkers 3 --no-cache",
9292
"test:cli": "yarn test:cli:pointer && yarn test:cli:patch && yarn test:cli:pack",
9393
"test:cli:pointer": "./bin/json-pointer-test.js ./bin/json-pointer.js",
9494
"test:cli:patch": "./bin/json-patch-test.js ./bin/json-patch.js",
9595
"test:cli:pack": "./bin/json-pack-test.js ./bin/json-pack.js",
96-
"demo:json-patch": "ts-node src/json-patch/__demos__/json-patch.ts",
97-
"demo:json-pointer": "ts-node src/json-pointer/__demos__/json-pointer.ts",
96+
"demo:json-patch": "npx ts-node src/json-patch/__demos__/json-patch.ts",
97+
"demo:json-pointer": "npx ts-node src/json-pointer/__demos__/json-pointer.ts",
98+
"bench:json-crdt:traces:crdt-libs": "cd src/json-crdt/__bench__ && yarn && yarn bench:traces:crdt-libs",
99+
"bench:json-crdt:traces:non-crdt-libs": "cd src/json-crdt/__bench__ && yarn && yarn bench:traces:non-crdt-libs",
100+
"bench:json-crdt:concurrent-traces": "cd src/json-crdt/__bench__ && yarn && yarn bench:concurrent-traces",
101+
"bench:json-crdt:codecs:encoding": "cd src/json-crdt/__bench__ && yarn && yarn bench:codecs:encoding",
102+
"bench:json-crdt:codecs:decoding": "cd src/json-crdt/__bench__ && yarn && yarn bench:codecs:decoding",
103+
"bench:json-crdt:codecs:encoding:json": "cd src/json-crdt/__bench__ && yarn && yarn bench:codecs:encoding:json",
104+
"bench:json-crdt:codecs:encoding:libs": "cd src/json-crdt/__bench__ && yarn && yarn bench:codecs:encoding:libs",
105+
"bench:json-crdt:codecs:sizes": "cd src/json-crdt/__bench__ && yarn && yarn bench:codecs:sizes",
106+
"bench:json-ot:ot-string:apply": "cd src/json-ot/__bench__ && yarn && yarn bench:ot-string:apply",
107+
"bench:json-ot:ot-string:compose-and-transform": "yarn build && cd src/json-ot/__bench__ && yarn && yarn bench:ot-string:compose-and-transform",
98108
"coverage": "yarn test --collectCoverage",
99-
"typedoc": "typedoc",
100-
"build:pages": "rimraf gh-pages && mkdir -p gh-pages && cp -r typedocs/* gh-pages && cp -r coverage gh-pages/coverage",
109+
"typedoc": "npx typedoc@0.25.13 --tsconfig tsconfig.build.json",
110+
"build:pages": "npx rimraf@5.0.5 gh-pages && mkdir -p gh-pages && cp -r typedocs/* gh-pages && cp -r coverage gh-pages/coverage",
101111
"deploy:pages": "gh-pages -d gh-pages",
102112
"publish-coverage-and-typedocs": "yarn typedoc && yarn coverage && yarn build:pages && yarn deploy:pages",
103-
"jj": "ts-node src/json-cli/jj.ts"
113+
"jj": "npx ts-node src/json-cli/jj.ts"
104114
},
105115
"peerDependencies": {
106-
"quill-delta": "^5",
107116
"rxjs": "7",
108117
"tslib": "2"
109118
},
110119
"peerDependenciesMeta": {
111-
"quill-delta": {
112-
"optional": true
113-
},
114120
"rxjs": {
115121
"optional": true
116122
}
@@ -125,52 +131,21 @@
125131
"thingies": "^1.20.0"
126132
},
127133
"devDependencies": {
128-
"@automerge/automerge": "2.1.13",
129-
"@collabs/collabs": "0.13.4",
130-
"@exodus/schemasafe": "^1.0.0-rc.6",
131134
"@types/benchmark": "^2.1.2",
132135
"@types/jest": "^29.5.12",
133-
"@types/quill": "^2.0.14",
134-
"ajv": "^8.11.0",
135-
"app-root-path": "^3.1.0",
136-
"axios": "^1.3.5",
137136
"benchmark": "^2.1.4",
138-
"concurrently": "^8.0.1",
139-
"diamond-types-node": "1.0.2",
137+
"config-housekeeping": "https://github.com/streamich/housekeeping#3532d2abeac159315ddf403d70517859d079c801",
140138
"editing-traces": "https://github.com/streamich/editing-traces#6494020428530a6e382378b98d1d7e31334e2d7b",
141139
"fast-json-patch": "^3.0.0-1",
142-
"fork-ts-checker-webpack-plugin": "^8.0.0",
143-
"gh-pages": "^5.0.0",
144-
"html-webpack-plugin": "^5.5.1",
145-
"husky": "^8.0.3",
146-
"isomorphic-ws": "^5.0.0",
147140
"jest": "^29.7.0",
148141
"json-crdt-traces": "https://github.com/streamich/json-crdt-traces#ec825401dc05cbb74b9e0b3c4d6527399f54d54d",
149142
"json-logic-js": "^2.0.1",
150-
"loro-crdt": "^0.4.1",
151-
"nodemon": "^3.0.0",
152-
"ot-text": "^1.0.2",
153-
"ot-text-unicode": "^4.0.0",
154-
"p4-css": "^1.5.1",
155-
"prettier": "^3.2.5",
156-
"pretty-quick": "^3.1.3",
157-
"quill-delta": "^5.0.0",
158-
"rimraf": "^5.0.0",
159-
"rope.js": "0.1.0",
160-
"tinybench": "^2.4.0",
143+
"rxjs": "^7.8.1",
161144
"ts-jest": "^29.1.2",
162-
"ts-loader": "^9.5.1",
163-
"ts-node": "^10.9.2",
164145
"tslib": "^2.6.2",
165146
"tslint": "^6.1.3",
166147
"tslint-config-common": "^1.6.2",
167-
"typedoc": "^0.25.13",
168-
"typescript": "^5.4.4",
169-
"webpack": "^5.91.0",
170-
"webpack-cli": "^5.1.4",
171-
"webpack-dev-server": "^5.0.4",
172-
"yjs": "13.6.14",
173-
"ywasm": "0.16.10"
148+
"typescript": "^5.4.4"
174149
},
175150
"jest": {
176151
"verbose": true,
@@ -187,7 +162,9 @@
187162
"transform": {
188163
"^.+\\.ts$": "ts-jest"
189164
},
190-
"transformIgnorePatterns": [],
165+
"transformIgnorePatterns": [
166+
".*/node_modules/.*"
167+
],
191168
"testRegex": ".*/(__tests__|__jest__|demo)/.*\\.(test|spec)\\.ts$"
192169
},
193170
"prettier": {
@@ -230,5 +207,24 @@
230207
]
231208
}
232209
}
210+
},
211+
"release": {
212+
"branches": [
213+
"master",
214+
{
215+
"name": "next",
216+
"prerelease": true
217+
}
218+
],
219+
"prepare": [
220+
"@semantic-release/changelog",
221+
"@semantic-release/npm",
222+
"@semantic-release/git"
223+
],
224+
"verifyConditions": [
225+
"@semantic-release/changelog",
226+
"@semantic-release/npm",
227+
"@semantic-release/git"
228+
]
233229
}
234230
}

src/json-crdt/__bench__/bench.json.encoding.ts renamed to src/json-crdt/__bench__/bench.codecs.encoding.json.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// npx ts-node src/json-crdt/__bench__/bench.json.encoding.ts
1+
// npx ts-node src/json-crdt/__bench__/bench.codecs.encoding.json.ts
22

33
import {payloads} from '../../__bench__/payloads';
44
import {IBenchmark, runBenchmarkAndSave} from '../../__bench__/runBenchmark';

src/json-crdt/__bench__/bench.json.libs.encoding.ts renamed to src/json-crdt/__bench__/bench.codecs.encoding.libs.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// npx ts-node src/json-crdt/__bench__/bench.json.libs.encoding.ts
1+
// npx ts-node src/json-crdt/__bench__/bench.codecs.encoding.libs.ts
22

33
import {payloads} from '../../__bench__/payloads';
44
import {IBenchmark, runBenchmarkAndSave} from '../../__bench__/runBenchmark';

src/json-crdt/__bench__/bench.sizes.ts renamed to src/json-crdt/__bench__/bench.codecs.sizes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* tslint:disable no-console */
2-
// npx ts-node src/json-crdt/__bench__/bench.sizes.ts
2+
// npx ts-node src/json-crdt/__bench__/bench.codecs.sizes.ts
33

44
import {payloads} from '../../__bench__/payloads';
55
import {StructuralEditors, structuralEditors} from './util/structural-editors';

src/json-crdt/__bench__/package.json

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"scripts": {
3+
"bench:traces:crdt-libs": "npx ts-node bench.traces.crdt-libs.ts",
4+
"bench:traces:non-crdt-libs": "npx ts-node bench.traces.non-crdt-libs.ts",
5+
"bench:concurrent-traces": "npx ts-node bench.concurrent-traces.ts",
6+
"bench:codecs:encoding": "npx ts-node bench.codecs.encoding.ts",
7+
"bench:codecs:decoding": "npx ts-node bench.codecs.decoding.ts",
8+
"bench:codecs:encoding:json": "npx ts-node bench.codecs.encoding.json.ts",
9+
"bench:codecs:encoding:libs": "npx ts-node bench.codecs.encoding.libs.ts",
10+
"bench:codecs:sizes": "npx ts-node bench.codecs.sizes.ts"
11+
},
12+
"devDependencies": {
13+
"@automerge/automerge": "2.1.13",
14+
"@collabs/collabs": "0.13.4",
15+
"diamond-types-node": "1.0.2",
16+
"loro-crdt": "^0.4.1",
17+
"rope.js": "0.1.0",
18+
"yjs": "13.6.14",
19+
"ywasm": "0.16.10"
20+
}
21+
}

src/json-crdt/__bench__/util/editors.ts renamed to src/json-crdt/__bench__/util/editors/index.ts

+2-45
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,13 @@
1-
import {Timestamp} from '../../../json-crdt-patch/clock';
2-
import {StrNode} from '../../nodes';
3-
import {Model} from '../../model';
1+
import {editorJsonJoy, editorStrNode} from './json-joy';
42
import {Doc} from 'diamond-types-node';
53
import * as Y from 'yjs';
64
import Yrs from 'ywasm';
75
import * as Automerge from '@automerge/automerge';
86
import {CRuntime, CText} from '@collabs/collabs';
97
import {Loro} from 'loro-crdt';
10-
import type {SequentialTraceEditor} from './types';
8+
import type {SequentialTraceEditor} from '../types';
119
const Rope = require('rope.js');
1210

13-
const editorStrNode: SequentialTraceEditor = {
14-
name: 'StrNode (json-joy)',
15-
factory: () => {
16-
let time = 0;
17-
const rga = new StrNode(new Timestamp(1, time++));
18-
return {
19-
ins: (pos: number, insert: string) => {
20-
rga.insAt(pos, new Timestamp(1, time), insert);
21-
time += insert.length;
22-
},
23-
del: (pos: number, len: number) => {
24-
rga.delete(rga.findInterval(pos, len));
25-
},
26-
get: () => rga.view(),
27-
len: () => rga.length(),
28-
chunks: () => rga.size(),
29-
};
30-
},
31-
};
32-
33-
const editorJsonJoy: SequentialTraceEditor = {
34-
name: 'json-joy',
35-
factory: () => {
36-
const model = Model.withLogicalClock();
37-
model.api.root('');
38-
const str = model.api.str([]);
39-
return {
40-
ins: (pos: number, insert: string) => {
41-
str.ins(pos, insert);
42-
},
43-
del: (pos: number, len: number) => {
44-
str.del(pos, len);
45-
},
46-
get: () => str.view(),
47-
len: () => str.view().length,
48-
chunks: () => str.node.size(),
49-
toBlob: () => model.toBinary(),
50-
};
51-
},
52-
};
53-
5411
const editorYjs: SequentialTraceEditor = {
5512
name: 'Y.js',
5613
factory: () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import {Timestamp} from '../../../../json-crdt-patch/clock';
2+
import {StrNode} from '../../../nodes';
3+
import {Model} from '../../../model';
4+
import type {SequentialTraceEditor} from '../types';
5+
6+
export const editorStrNode: SequentialTraceEditor = {
7+
name: 'StrNode (json-joy)',
8+
factory: () => {
9+
let time = 0;
10+
const rga = new StrNode(new Timestamp(1, time++));
11+
return {
12+
ins: (pos: number, insert: string) => {
13+
rga.insAt(pos, new Timestamp(1, time), insert);
14+
time += insert.length;
15+
},
16+
del: (pos: number, len: number) => {
17+
rga.delete(rga.findInterval(pos, len));
18+
},
19+
get: () => rga.view(),
20+
len: () => rga.length(),
21+
chunks: () => rga.size(),
22+
};
23+
},
24+
};
25+
26+
export const editorJsonJoy: SequentialTraceEditor = {
27+
name: 'json-joy',
28+
factory: () => {
29+
const model = Model.withLogicalClock();
30+
model.api.root('');
31+
const str = model.api.str([]);
32+
return {
33+
ins: (pos: number, insert: string) => {
34+
str.ins(pos, insert);
35+
},
36+
del: (pos: number, len: number) => {
37+
str.del(pos, len);
38+
},
39+
get: () => str.view(),
40+
len: () => str.view().length,
41+
chunks: () => str.node.size(),
42+
toBlob: () => model.toBinary(),
43+
};
44+
},
45+
};

src/json-crdt/__bench__/util/execute.ts renamed to src/json-crdt/__bench__/util/execute/index.ts

+4-24
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,15 @@
11
import * as os from 'os';
2-
import {traces} from './traces';
3-
import type {SequentialTrace, SequentialTraceEditor, SequentialTraceName} from './types';
4-
import {editors, type SequentialEditorName} from './editors';
2+
import {traces} from '../traces';
3+
import {editors, type SequentialEditorName} from '../editors';
4+
import {runTrace} from './runTrace';
5+
import type {SequentialTraceName} from '../types';
56

67
/* tslint:disable no-console */
78

89
function numberWithCommas(x: number) {
910
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
1011
}
1112

12-
export const runTrace = (trace: SequentialTrace, editor: SequentialTraceEditor) => {
13-
const txns = trace.txns;
14-
const txnsLength = txns.length;
15-
const editorInstance = editor.factory();
16-
if (trace.startContent) editorInstance.ins(0, trace.startContent);
17-
for (let i = 0; i < txnsLength; i++) {
18-
const transaction = txns[i];
19-
const patches = transaction.patches;
20-
const length = patches.length;
21-
for (let j = 0; j < length; j++) {
22-
const patch = patches[j];
23-
const pos = patch[0];
24-
const del = patch[1];
25-
const insert = patch[2];
26-
if (del) editorInstance.del(pos, del);
27-
if (insert) editorInstance.ins(pos, insert);
28-
}
29-
}
30-
return editorInstance;
31-
};
32-
3313
export const runTraceWithEditor = (
3414
traceName: SequentialTraceName,
3515
editorName: SequentialEditorName,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import type {SequentialTrace, SequentialTraceEditor} from '../types';
2+
3+
/* tslint:disable no-console */
4+
5+
export const runTrace = (trace: SequentialTrace, editor: SequentialTraceEditor) => {
6+
const txns = trace.txns;
7+
const txnsLength = txns.length;
8+
const editorInstance = editor.factory();
9+
if (trace.startContent) editorInstance.ins(0, trace.startContent);
10+
for (let i = 0; i < txnsLength; i++) {
11+
const transaction = txns[i];
12+
const patches = transaction.patches;
13+
const length = patches.length;
14+
for (let j = 0; j < length; j++) {
15+
const patch = patches[j];
16+
const pos = patch[0];
17+
const del = patch[1];
18+
const insert = patch[2];
19+
if (del) editorInstance.del(pos, del);
20+
if (insert) editorInstance.ins(pos, insert);
21+
}
22+
}
23+
return editorInstance;
24+
};

0 commit comments

Comments
 (0)