Compare commits

..

2 Commits

Author SHA1 Message Date
Kevin Jahns
34b9343b2e
Merge pull request #702 from kapv89/patch-1
Update README.md to add https://github.com/kapv89/k_yrs_go to persistence providers
2025-03-26 12:57:27 +01:00
kapil verma
d5b5e7a9a1
Update README.md to add https://github.com/kapv89/k_yrs_go to persistence providers
Ref: https://x.com/kevin_jahns/status/1904252641124753641
2025-03-26 01:55:02 +05:30
14 changed files with 574 additions and 885 deletions

View File

@ -300,6 +300,10 @@ A database and connection provider for Yjs based on Firestore.
Provides persistent storage for a web server using PostgreSQL and
is easily compatible with y-websocket.
</dd>
<dt><a href="https://github.com/kapv89/k_yrs_go">k_yrs_go</a></dt>
<dd>
Golang database server for YJS CRDT using Postgres + Redis
</dd>
</dl>
### Tooling

748
package-lock.json generated
View File

@ -9,19 +9,21 @@
"version": "13.6.24",
"license": "MIT",
"dependencies": {
"lib0": "^0.2.101",
"y-protocols": "^1.0.5"
"lib0": "^0.2.99"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^24.0.1",
"@rollup/plugin-node-resolve": "^15.0.1",
"@types/node": "^18.15.5",
"concurrently": "^3.6.1",
"http-server": "^0.12.3",
"jsdoc": "^3.6.7",
"markdownlint-cli": "^0.41.0",
"rollup": "^4.37.0",
"rollup": "^3.20.0",
"standard": "^16.0.4",
"tui-jsdoc-template": "^1.2.2",
"typescript": "^4.9.5",
"yjs": "."
"y-protocols": "^1.0.5"
},
"engines": {
"node": ">=16.0.0",
@ -231,6 +233,12 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
"dev": true
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@ -241,292 +249,83 @@
"node": ">=14"
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.37.0.tgz",
"integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==",
"cpu": [
"arm"
],
"node_modules/@rollup/plugin-commonjs": {
"version": "24.1.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz",
"integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==",
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
"estree-walker": "^2.0.2",
"glob": "^8.0.3",
"is-reference": "1.2.1",
"magic-string": "^0.27.0"
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.37.0.tgz",
"integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
"engines": {
"node": ">=14.0.0"
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.37.0.tgz",
"integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
"peerDependencies": {
"rollup": "^2.68.0||^3.0.0"
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.37.0.tgz",
"integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.37.0.tgz",
"integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==",
"cpu": [
"arm64"
],
"node_modules/@rollup/plugin-node-resolve": {
"version": "15.2.3",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
"integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
"deepmerge": "^4.2.2",
"is-builtin-module": "^3.2.1",
"is-module": "^1.0.0",
"resolve": "^1.22.1"
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.37.0.tgz",
"integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
"engines": {
"node": ">=14.0.0"
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.37.0.tgz",
"integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
"peerDependencies": {
"rollup": "^2.78.0||^3.0.0||^4.0.0"
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.37.0.tgz",
"integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.37.0.tgz",
"integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==",
"cpu": [
"arm64"
],
"node_modules/@rollup/pluginutils": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
"integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^2.0.2",
"picomatch": "^2.3.1"
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.37.0.tgz",
"integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
"engines": {
"node": ">=14.0.0"
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.37.0.tgz",
"integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.37.0.tgz",
"integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.37.0.tgz",
"integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.37.0.tgz",
"integrity": "sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.37.0.tgz",
"integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.37.0.tgz",
"integrity": "sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.37.0.tgz",
"integrity": "sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.37.0.tgz",
"integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.37.0.tgz",
"integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.37.0.tgz",
"integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@types/estree": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
"dev": true,
"license": "MIT"
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true
},
"node_modules/@types/json5": {
"version": "0.0.29",
@ -565,6 +364,12 @@
"undici-types": "~5.26.4"
}
},
"node_modules/@types/resolve": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
"dev": true
},
"node_modules/acorn": {
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@ -740,6 +545,15 @@
"node": ">=8"
}
},
"node_modules/async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
"integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
"dev": true,
"dependencies": {
"lodash": "^4.17.14"
}
},
"node_modules/available-typed-arrays": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz",
@ -758,6 +572,15 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/basic-auth": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz",
"integrity": "sha512-CtGuTyWf3ig+sgRyC7uP6DM3N+5ur/p8L+FPfsd+BbIfIs74TFfCajZTHnCw6K5dqM0bZEbRIqRy1fAdiUJhTA==",
"dev": true,
"engines": {
"node": ">= 0.6"
}
},
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@ -779,6 +602,18 @@
"balanced-match": "^1.0.0"
}
},
"node_modules/builtin-modules": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true,
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/call-bind": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
@ -901,6 +736,15 @@
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
"node_modules/colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
"dev": true,
"engines": {
"node": ">=0.1.90"
}
},
"node_modules/commander": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
@ -910,6 +754,12 @@
"node": ">= 0.6.x"
}
},
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@ -940,6 +790,15 @@
"node": ">=4.0.0"
}
},
"node_modules/corser": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz",
"integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==",
"dev": true,
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@ -1005,6 +864,15 @@
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/define-data-property": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
@ -1096,6 +964,22 @@
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
"node_modules/ecstatic": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz",
"integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==",
"deprecated": "This package is unmaintained and deprecated. See the GH Issue 259.",
"dev": true,
"dependencies": {
"he": "^1.1.1",
"mime": "^1.6.0",
"minimist": "^1.1.0",
"url-join": "^2.0.5"
},
"bin": {
"ecstatic": "lib/ecstatic.js"
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@ -1877,6 +1761,12 @@
"node": ">=4.0"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@ -1886,6 +1776,12 @@
"node": ">=0.10.0"
}
},
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
"integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
"dev": true
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@ -1948,6 +1844,26 @@
"integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
"dev": true
},
"node_modules/follow-redirects": {
"version": "1.15.5",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
"dev": true,
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@ -1985,7 +1901,6 @@
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
@ -2084,6 +1999,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@ -2234,6 +2168,15 @@
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
"he": "bin/he"
}
},
"node_modules/hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
@ -2260,6 +2203,45 @@
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
"dev": true
},
"node_modules/http-proxy": {
"version": "1.18.1",
"resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"dev": true,
"dependencies": {
"eventemitter3": "^4.0.0",
"follow-redirects": "^1.0.0",
"requires-port": "^1.0.0"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/http-server": {
"version": "0.12.3",
"resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz",
"integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==",
"dev": true,
"dependencies": {
"basic-auth": "^1.0.3",
"colors": "^1.4.0",
"corser": "^2.0.1",
"ecstatic": "^3.3.2",
"http-proxy": "^1.18.0",
"minimist": "^1.2.5",
"opener": "^1.5.1",
"portfinder": "^1.0.25",
"secure-compare": "3.0.1",
"union": "~0.5.0"
},
"bin": {
"hs": "bin/http-server",
"http-server": "bin/http-server"
},
"engines": {
"node": ">=6"
}
},
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
@ -2383,6 +2365,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-builtin-module": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
"integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
"dev": true,
"dependencies": {
"builtin-modules": "^3.3.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@ -2452,6 +2449,12 @@
"node": ">=0.10.0"
}
},
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
"dev": true
},
"node_modules/is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@ -2479,6 +2482,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
"dev": true,
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@ -2773,10 +2785,9 @@
}
},
"node_modules/lib0": {
"version": "0.2.101",
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.101.tgz",
"integrity": "sha512-LljA6+Ehf0Z7YnxhgSAvspzWALjW4wlWdN/W4iGiqYc1KvXQgOVXWI0xwlwqozIL5WRdKeUW2gq0DLhFsY+Xlw==",
"license": "MIT",
"version": "0.2.99",
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.99.tgz",
"integrity": "sha512-vwztYuUf1uf/1zQxfzRfO5yzfNKhTtgOByCruuiQQxWQXnPb8Itaube5ylofcV0oM0aKal9Mv+S1s1Ky0UYP1w==",
"dependencies": {
"isomorphic.js": "^0.2.4"
},
@ -2938,6 +2949,18 @@
"node": ">=10"
}
},
"node_modules/magic-string": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
"engines": {
"node": ">=12"
}
},
"node_modules/markdown-it": {
"version": "12.3.2",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
@ -3141,6 +3164,30 @@
"integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
"dev": true
},
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"dev": true,
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/minimist": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
@ -3319,6 +3366,15 @@
"wrappy": "1"
}
},
"node_modules/opener": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
"dev": true,
"bin": {
"opener": "bin/opener-bin.js"
}
},
"node_modules/optionator": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
@ -3467,6 +3523,18 @@
"node": ">=4"
}
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@ -3596,6 +3664,32 @@
"node": ">=4"
}
},
"node_modules/portfinder": {
"version": "1.0.32",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
"integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
"dev": true,
"dependencies": {
"async": "^2.6.4",
"debug": "^3.2.7",
"mkdirp": "^0.5.6"
},
"engines": {
"node": ">= 0.12.0"
}
},
"node_modules/portfinder/node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dev": true,
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@ -3643,6 +3737,21 @@
"node": ">=6"
}
},
"node_modules/qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
"integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@ -3728,6 +3837,12 @@
"node": ">=0.10.0"
}
},
"node_modules/requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"dev": true
},
"node_modules/requizzle": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz",
@ -3821,42 +3936,18 @@
}
},
"node_modules/rollup": {
"version": "4.37.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.37.0.tgz",
"integrity": "sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==",
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.6"
},
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=18.0.0",
"node": ">=14.18.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.37.0",
"@rollup/rollup-android-arm64": "4.37.0",
"@rollup/rollup-darwin-arm64": "4.37.0",
"@rollup/rollup-darwin-x64": "4.37.0",
"@rollup/rollup-freebsd-arm64": "4.37.0",
"@rollup/rollup-freebsd-x64": "4.37.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.37.0",
"@rollup/rollup-linux-arm-musleabihf": "4.37.0",
"@rollup/rollup-linux-arm64-gnu": "4.37.0",
"@rollup/rollup-linux-arm64-musl": "4.37.0",
"@rollup/rollup-linux-loongarch64-gnu": "4.37.0",
"@rollup/rollup-linux-powerpc64le-gnu": "4.37.0",
"@rollup/rollup-linux-riscv64-gnu": "4.37.0",
"@rollup/rollup-linux-riscv64-musl": "4.37.0",
"@rollup/rollup-linux-s390x-gnu": "4.37.0",
"@rollup/rollup-linux-x64-gnu": "4.37.0",
"@rollup/rollup-linux-x64-musl": "4.37.0",
"@rollup/rollup-win32-arm64-msvc": "4.37.0",
"@rollup/rollup-win32-ia32-msvc": "4.37.0",
"@rollup/rollup-win32-x64-msvc": "4.37.0",
"fsevents": "~2.3.2"
}
},
@ -3936,6 +4027,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/secure-compare": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz",
"integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==",
"dev": true
},
"node_modules/semver": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
@ -4592,6 +4689,18 @@
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"dev": true
},
"node_modules/union": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz",
"integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==",
"dev": true,
"dependencies": {
"qs": "^6.4.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@ -4601,6 +4710,12 @@
"punycode": "^2.1.0"
}
},
"node_modules/url-join": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
"integrity": "sha512-c2H1fIgpUdwFRIru9HFno5DT73Ok8hg5oOb5AT3ayIgvCRfxgs2jyt5Slw8kEB7j3QUr6yJmMPDT/odjk7jXow==",
"dev": true
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@ -4828,6 +4943,7 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz",
"integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==",
"dev": true,
"dependencies": {
"lib0": "^0.2.85"
},
@ -4850,8 +4966,22 @@
"dev": true
},
"node_modules/yjs": {
"resolved": "",
"link": true
"version": "13.6.11",
"resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.11.tgz",
"integrity": "sha512-FvRRJKX9u270dOLkllGF/UDCWwmIv2Z+ucM4v1QO1TuxdmoiMnSUXH1HAcOKOrkBEhQtPTkxep7tD2DrQB+l0g==",
"dev": true,
"peer": true,
"dependencies": {
"lib0": "^0.2.86"
},
"engines": {
"node": ">=16.0.0",
"npm": ">=8.0.0"
},
"funding": {
"type": "GitHub Sponsors ❤",
"url": "https://github.com/sponsors/dmonad"
}
}
}
}

View File

@ -13,38 +13,28 @@
},
"scripts": {
"clean": "rm -rf dist docs",
"test": "NODE_ENV=development node ./tests/index.js --repetition-time 50",
"test-extensive": "node ./tests/index.js --production --repetition-time 10000",
"test": "npm run dist && NODE_ENV=development node ./dist/tests.cjs --repetition-time 50",
"test-extensive": "npm run lint && npm run dist && node ./dist/tests.cjs --production --repetition-time 10000",
"dist": "npm run clean && rollup -c && tsc",
"watch": "rollup -wc",
"lint": "markdownlint README.md && standard && tsc",
"docs": "rm -rf docs; jsdoc --configure ./.jsdoc.json --verbose --readme ./README.md --package ./package.json || true",
"serve-docs": "npm run docs && 0serve ./docs/",
"preversion": "npm run lint && PRODUCTION=1 npm run dist && npm run docs && node ./tests/index.js --repetition-time 1000 && test -e dist/src/index.d.ts && test -e dist/yjs.cjs && test -e dist/yjs.cjs",
"debug": "npm run gentesthtml && 0serve -o test.html",
"trace-deopt": "clear && node --trace-deopt ./tests/index.js",
"trace-opt": "clear && node --trace-opt ./tests/index.js",
"gentesthtml": "0gentesthtml --script ./tests/index.js > test.html"
"serve-docs": "npm run docs && http-server ./docs/",
"preversion": "npm run lint && PRODUCTION=1 npm run dist && npm run docs && node ./dist/tests.cjs --repetition-time 1000 && test -e dist/src/index.d.ts && test -e dist/yjs.cjs && test -e dist/yjs.cjs",
"debug": "concurrently 'http-server -o test.html' 'npm run watch'",
"trace-deopt": "clear && rollup -c && node --trace-deopt dist/test.cjs",
"trace-opt": "clear && rollup -c && node --trace-opt dist/test.cjs"
},
"exports": {
".": {
"types": "./dist/src/index.d.ts",
"module": "./dist/yjs.mjs",
"require": "./dist/yjs.cjs",
"import": "./src/index.js"
},
"./internals": {
"types": "./dist/src/internals.d.ts",
"module": "./dist/internals.mjs",
"require": "./dist/internals.cjs",
"import": "./src/internals.js"
},
"./testHelper": {
"types": "./dist/testHelper.d.ts",
"module": "./dist/testHelper.mjs",
"require": "./dist/testHelper.cjs",
"import": "./tests/testHelper.js"
"import": "./dist/yjs.mjs",
"require": "./dist/yjs.cjs"
},
"./src/index.js": "./src/index.js",
"./tests/testHelper.js": "./tests/testHelper.js",
"./testHelper": "./dist/testHelper.mjs",
"./package.json": "./package.json"
},
"files": [
@ -86,19 +76,21 @@
},
"homepage": "https://docs.yjs.dev",
"dependencies": {
"lib0": "^0.2.101",
"y-protocols": "^1.0.5"
"lib0": "^0.2.99"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^24.0.1",
"@rollup/plugin-node-resolve": "^15.0.1",
"@types/node": "^18.15.5",
"concurrently": "^3.6.1",
"http-server": "^0.12.3",
"jsdoc": "^3.6.7",
"markdownlint-cli": "^0.41.0",
"rollup": "^4.37.0",
"rollup": "^3.20.0",
"standard": "^16.0.4",
"tui-jsdoc-template": "^1.2.2",
"typescript": "^4.9.5",
"yjs": "."
"y-protocols": "^1.0.5"
},
"engines": {
"npm": ">=8.0.0",

View File

@ -1,44 +1,106 @@
const resolver = {
import nodeResolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
const localImports = process.env.LOCALIMPORTS
const customModules = new Set([
'y-websocket',
'y-codemirror',
'y-ace',
'y-textarea',
'y-quill',
'y-dom',
'y-prosemirror'
])
/**
* @type {Set<any>}
*/
const customLibModules = new Set([
'lib0',
'y-protocols'
])
const debugResolve = {
resolveId (importee) {
return
if (importee === 'yjs') {
return `${process.cwd()}/src/index.js`
}
if (localImports) {
if (customModules.has(importee.split('/')[0])) {
return `${process.cwd()}/../${importee}/src/${importee}.js`
}
if (customLibModules.has(importee.split('/')[0])) {
return `${process.cwd()}/../${importee}`
}
}
return null
}
}
export default [{
// cjs output
input: {
yjs: './src/index.js',
testHelper: './tests/testHelper.js',
internals: './src/internals.js'
},
input: './src/index.js',
output: {
dir: 'dist',
name: 'Y',
file: 'dist/yjs.cjs',
format: 'cjs',
entryFileNames : '[name].cjs',
sourcemap: true
},
plugins: [
resolver
],
external: id => /^(lib0|y-protocols)\//.test(id)
external: id => /^lib0\//.test(id)
}, {
// esm output
input: {
yjs: './src/index.js',
testHelper: './tests/testHelper.js',
internals: './src/internals.js'
},
input: './src/index.js',
output: {
dir: 'dist',
name: 'Y',
file: 'dist/yjs.mjs',
format: 'esm',
entryFileNames : '[name].mjs',
sourcemap: true
},
external: id => /^lib0\//.test(id)
}, {
input: './tests/testHelper.js',
output: {
name: 'Y',
file: 'dist/testHelper.mjs',
format: 'esm',
sourcemap: true
},
external: id => /^lib0\//.test(id) || id === 'yjs',
plugins: [{
resolveId (importee) {
if (importee === '../src/index.js') {
return 'yjs'
}
return null
}
}]
}, {
input: './tests/index.js',
output: {
name: 'test',
file: 'dist/tests.js',
format: 'iife',
sourcemap: true
},
plugins: [
resolver
debugResolve,
nodeResolve({
mainFields: ['browser', 'module', 'main']
}),
commonjs()
]
}, {
input: './tests/index.js',
output: {
name: 'test',
file: 'dist/tests.cjs',
format: 'cjs',
sourcemap: true
},
plugins: [
debugResolve,
nodeResolve({
mainFields: ['node', 'module', 'main'],
exportConditions: ['node', 'module', 'import', 'default']
}),
commonjs()
],
external: id => /^(lib0|y-protocols)\//.test(id)
external: id => /^lib0\//.test(id)
}]

View File

@ -1,177 +0,0 @@
import * as object from 'lib0/object'
import * as array from 'lib0/array'
/**
* @typedef {InsertOp|RetainOp|DeleteOp} DeltaOp
*/
/**
* @typedef {{ [key: string]: any }} FormattingAttributes
*/
/**
* @typedef {Object} Attribution
* @property {boolean} [Attribution.isDeleted]
* @property {boolean} [Attribution.isAdded]
* @property {string} [Attribution.creator]
* @property {number} [Attribution.timestamp]
*/
export class InsertOp {
/**
* @param {string} insert
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
*/
constructor (insert, attributes, attribution) {
this.insert = insert
this.attributes = attributes
this.attribution = attribution
}
toJSON () {
return object.assign({ insert: this.insert }, this.attributes ? { attributes: this.attributes } : {}, this.attribution ? { attribution: this.attribution } : {})
}
}
class DeleteOp {
/**
* @param {number} len
*/
constructor (len) {
this.delete = len
}
toJSON () {
return { delete: this.delete }
}
}
class RetainOp {
/**
* @param {number} retain
* @param {FormattingAttributes|null} attributes
* @param {Attribution|null} attribution
*/
constructor (retain, attributes, attribution) {
this.retain = retain
this.attributes = attributes
this.attribution = attribution
}
toJSON () {
return object.assign({ retain: this.retain }, this.attributes ? { attributes: this.attributes } : {}, this.attribution ? { attribution: this.attribution } : {})
}
}
export class Delta {
constructor () {
/**
* @type {Array<DeltaOp>}
*/
this.ops = []
}
toJSON () {
return { ops: this.ops.map(o => o.toJSON()) }
}
}
/**
* Helper function to merge attribution and attributes. The latter input "wins".
*
* @template {{ [key: string]: any }} T
* @param {T | null} a
* @param {T | null} b
*/
const mergeAttrs = (a, b) => a == null ? b : (b == null ? a : object.assign({}, a, b))
export class DeltaBuilder extends Delta {
constructor () {
super()
/**
* @private
* @type {FormattingAttributes?}
*/
this._useAttributes = null
/**
* @private
* @type {Attribution?}
*/
this._useAttribution = null
/**
* @private
* @type {DeltaOp?}
*/
this._lastOp = null
}
/**
* @param {FormattingAttributes} attributes
* @return {this}
*/
useAttributes (attributes) {
if (this._useAttributes === attributes) return this
this._useAttributes = object.assign({}, attributes)
if (this._lastOp?.constructor !== DeleteOp) this._lastOp = null
return this
}
/**
* @param {Attribution} attribution
*/
useAttribution (attribution) {
if (this._useAttribution === attribution) return this
this._useAttribution = object.assign({}, attribution)
if (this._lastOp?.constructor !== DeleteOp) this._lastOp = null
return this
}
/**
* @param {string} insert
* @param {FormattingAttributes?} attributes
* @param {Attribution?} attribution
* @return {this}
*/
insert (insert, attributes = null, attribution = null) {
if (attributes === null && attribution === null && this._lastOp instanceof InsertOp) {
this._lastOp.insert += insert
} else {
this.ops.push(this._lastOp = new InsertOp(insert, mergeAttrs(this.useAttributes, attributes), mergeAttrs(this._useAttribution, attribution)))
}
return this
}
/**
* @param {number} retain
* @param {FormattingAttributes?} attributes
* @param {Attribution?} attribution
* @return {this}
*/
retain (retain, attributes = null, attribution = null) {
if (attributes === null && attribution === null && this._lastOp instanceof RetainOp) {
this._lastOp.retain += retain
} else {
this.ops.push(this._lastOp = new RetainOp(retain, mergeAttrs(this.useAttributes, attributes), mergeAttrs(this._useAttribution, attribution)))
}
return this
}
/**
* @param {number} len
* @return {this}
*/
delete (len) {
if (this._lastOp instanceof DeleteOp) {
this._lastOp.delete += len
} else {
this.ops.push(this._lastOp = new DeleteOp(len))
}
return this
}
/**
* @return {Delta}
*/
done () {
return this
}
}
export const create = () => new DeltaBuilder()

322
test.html
View File

@ -1,327 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<title>Testing yjs</title>
<script type="importmap">
{
"imports": {
"yjs": "./src/index.js",
"yjs/internals": "./src/internals.js",
"yjs/testHelper": "./tests/testHelper.js",
"yjs/package.json": "./package.json",
"lib0/package.json": "./node_modules/lib0/package.json",
"lib0": "./node_modules/lib0/index.js",
"lib0/array.js": "./node_modules/lib0/array.js",
"lib0/dist/array.cjs": "./node_modules/lib0/dist/array.cjs",
"lib0/array": "./node_modules/lib0/array.js",
"lib0/binary.js": "./node_modules/lib0/binary.js",
"lib0/dist/binary.cjs": "./node_modules/lib0/dist/binary.cjs",
"lib0/binary": "./node_modules/lib0/binary.js",
"lib0/broadcastchannel.js": "./node_modules/lib0/broadcastchannel.js",
"lib0/dist/broadcastchannel.cjs": "./node_modules/lib0/dist/broadcastchannel.cjs",
"lib0/broadcastchannel": "./node_modules/lib0/broadcastchannel.js",
"lib0/buffer.js": "./node_modules/lib0/buffer.js",
"lib0/dist/buffer.cjs": "./node_modules/lib0/dist/buffer.cjs",
"lib0/buffer": "./node_modules/lib0/buffer.js",
"lib0/cache.js": "./node_modules/lib0/cache.js",
"lib0/dist/cache.cjs": "./node_modules/lib0/dist/cache.cjs",
"lib0/cache": "./node_modules/lib0/cache.js",
"lib0/component.js": "./node_modules/lib0/component.js",
"lib0/dist/component.cjs": "./node_modules/lib0/dist/component.cjs",
"lib0/component": "./node_modules/lib0/component.js",
"lib0/conditions.js": "./node_modules/lib0/conditions.js",
"lib0/dist/conditions.cjs": "./node_modules/lib0/dist/conditions.cjs",
"lib0/conditions": "./node_modules/lib0/conditions.js",
"lib0/crypto/jwt": "./node_modules/lib0/crypto/jwt.js",
"lib0/crypto/aes-gcm": "./node_modules/lib0/crypto/aes-gcm.js",
"lib0/crypto/ecdsa": "./node_modules/lib0/crypto/ecdsa.js",
"lib0/crypto/rsa-oaep": "./node_modules/lib0/crypto/rsa-oaep.js",
"lib0/hash/rabin": "./node_modules/lib0/hash/rabin.js",
"lib0/hash/sha256": "./node_modules/lib0/hash/sha256.js",
"lib0/decoding.js": "./node_modules/lib0/decoding.js",
"lib0/dist/decoding.cjs": "./node_modules/lib0/dist/decoding.cjs",
"lib0/decoding": "./node_modules/lib0/decoding.js",
"lib0/diff.js": "./node_modules/lib0/diff.js",
"lib0/dist/diff.cjs": "./node_modules/lib0/dist/diff.cjs",
"lib0/diff": "./node_modules/lib0/diff.js",
"lib0/dom.js": "./node_modules/lib0/dom.js",
"lib0/dist/dom.cjs": "./node_modules/lib0/dist/dom.cjs",
"lib0/dom": "./node_modules/lib0/dom.js",
"lib0/encoding.js": "./node_modules/lib0/encoding.js",
"lib0/dist/encoding.cjs": "./node_modules/lib0/dist/encoding.cjs",
"lib0/encoding": "./node_modules/lib0/encoding.js",
"lib0/environment.js": "./node_modules/lib0/environment.js",
"lib0/dist/environment.cjs": "./node_modules/lib0/dist/environment.cjs",
"lib0/environment": "./node_modules/lib0/environment.js",
"lib0/error.js": "./node_modules/lib0/error.js",
"lib0/dist/error.cjs": "./node_modules/lib0/dist/error.cjs",
"lib0/error": "./node_modules/lib0/error.js",
"lib0/eventloop.js": "./node_modules/lib0/eventloop.js",
"lib0/dist/eventloop.cjs": "./node_modules/lib0/dist/eventloop.cjs",
"lib0/eventloop": "./node_modules/lib0/eventloop.js",
"lib0/function.js": "./node_modules/lib0/function.js",
"lib0/dist/function.cjs": "./node_modules/lib0/dist/function.cjs",
"lib0/function": "./node_modules/lib0/function.js",
"lib0/indexeddb.js": "./node_modules/lib0/indexeddb.js",
"lib0/dist/indexeddb.cjs": "./node_modules/lib0/dist/indexeddb.cjs",
"lib0/indexeddb": "./node_modules/lib0/indexeddb.js",
"lib0/isomorphic.js": "./node_modules/lib0/isomorphic.js",
"lib0/dist/isomorphic.cjs": "./node_modules/lib0/dist/isomorphic.cjs",
"lib0/isomorphic": "./node_modules/lib0/isomorphic.js",
"lib0/iterator.js": "./node_modules/lib0/iterator.js",
"lib0/dist/iterator.cjs": "./node_modules/lib0/dist/iterator.cjs",
"lib0/iterator": "./node_modules/lib0/iterator.js",
"lib0/json.js": "./node_modules/lib0/json.js",
"lib0/dist/json.cjs": "./node_modules/lib0/dist/json.cjs",
"lib0/json": "./node_modules/lib0/json.js",
"lib0/list.js": "./node_modules/lib0/list.js",
"lib0/dist/list.cjs": "./node_modules/lib0/dist/list.cjs",
"lib0/list": "./node_modules/lib0/list.js",
"lib0/logging.js": "./node_modules/lib0/logging.js",
"lib0/dist/logging.cjs": "./node_modules/lib0/dist/logging.node.cjs",
"lib0/logging": "./node_modules/lib0/logging.js",
"lib0/map.js": "./node_modules/lib0/map.js",
"lib0/dist/map.cjs": "./node_modules/lib0/dist/map.cjs",
"lib0/map": "./node_modules/lib0/map.js",
"lib0/math.js": "./node_modules/lib0/math.js",
"lib0/dist/math.cjs": "./node_modules/lib0/dist/math.cjs",
"lib0/math": "./node_modules/lib0/math.js",
"lib0/metric.js": "./node_modules/lib0/metric.js",
"lib0/dist/metric.cjs": "./node_modules/lib0/dist/metric.cjs",
"lib0/metric": "./node_modules/lib0/metric.js",
"lib0/mutex.js": "./node_modules/lib0/mutex.js",
"lib0/dist/mutex.cjs": "./node_modules/lib0/dist/mutex.cjs",
"lib0/mutex": "./node_modules/lib0/mutex.js",
"lib0/number.js": "./node_modules/lib0/number.js",
"lib0/dist/number.cjs": "./node_modules/lib0/dist/number.cjs",
"lib0/number": "./node_modules/lib0/number.js",
"lib0/object.js": "./node_modules/lib0/object.js",
"lib0/dist/object.cjs": "./node_modules/lib0/dist/object.cjs",
"lib0/object": "./node_modules/lib0/object.js",
"lib0/observable.js": "./node_modules/lib0/observable.js",
"lib0/dist/observable.cjs": "./node_modules/lib0/dist/observable.cjs",
"lib0/observable": "./node_modules/lib0/observable.js",
"lib0/pair.js": "./node_modules/lib0/pair.js",
"lib0/dist/pair.cjs": "./node_modules/lib0/dist/pair.cjs",
"lib0/pair": "./node_modules/lib0/pair.js",
"lib0/prng.js": "./node_modules/lib0/prng.js",
"lib0/dist/prng.cjs": "./node_modules/lib0/dist/prng.cjs",
"lib0/prng": "./node_modules/lib0/prng.js",
"lib0/promise.js": "./node_modules/lib0/promise.js",
"lib0/dist/promise.cjs": "./node_modules/lib0/dist/promise.cjs",
"lib0/promise": "./node_modules/lib0/promise.js",
"lib0/queue.js": "./node_modules/lib0/queue.js",
"lib0/dist/queue.cjs": "./node_modules/lib0/dist/queue.cjs",
"lib0/queue": "./node_modules/lib0/queue.js",
"lib0/random.js": "./node_modules/lib0/random.js",
"lib0/dist/random.cjs": "./node_modules/lib0/dist/random.cjs",
"lib0/random": "./node_modules/lib0/random.js",
"lib0/set.js": "./node_modules/lib0/set.js",
"lib0/dist/set.cjs": "./node_modules/lib0/dist/set.cjs",
"lib0/set": "./node_modules/lib0/set.js",
"lib0/sort.js": "./node_modules/lib0/sort.js",
"lib0/dist/sort.cjs": "./node_modules/lib0/dist/sort.cjs",
"lib0/sort": "./node_modules/lib0/sort.js",
"lib0/statistics.js": "./node_modules/lib0/statistics.js",
"lib0/dist/statistics.cjs": "./node_modules/lib0/dist/statistics.cjs",
"lib0/statistics": "./node_modules/lib0/statistics.js",
"lib0/storage.js": "./node_modules/lib0/storage.js",
"lib0/dist/storage.cjs": "./node_modules/lib0/dist/storage.cjs",
"lib0/storage": "./node_modules/lib0/storage.js",
"lib0/string.js": "./node_modules/lib0/string.js",
"lib0/dist/string.cjs": "./node_modules/lib0/dist/string.cjs",
"lib0/string": "./node_modules/lib0/string.js",
"lib0/symbol.js": "./node_modules/lib0/symbol.js",
"lib0/dist/symbol.cjs": "./node_modules/lib0/dist/symbol.cjs",
"lib0/symbol": "./node_modules/lib0/symbol.js",
"lib0/testing.js": "./node_modules/lib0/testing.js",
"lib0/dist/testing.cjs": "./node_modules/lib0/dist/testing.cjs",
"lib0/testing": "./node_modules/lib0/testing.js",
"lib0/time.js": "./node_modules/lib0/time.js",
"lib0/dist/time.cjs": "./node_modules/lib0/dist/time.cjs",
"lib0/time": "./node_modules/lib0/time.js",
"lib0/tree.js": "./node_modules/lib0/tree.js",
"lib0/dist/tree.cjs": "./node_modules/lib0/dist/tree.cjs",
"lib0/tree": "./node_modules/lib0/tree.js",
"lib0/url.js": "./node_modules/lib0/url.js",
"lib0/dist/url.cjs": "./node_modules/lib0/dist/url.cjs",
"lib0/url": "./node_modules/lib0/url.js",
"lib0/websocket.js": "./node_modules/lib0/websocket.js",
"lib0/dist/websocket.cjs": "./node_modules/lib0/dist/websocket.cjs",
"lib0/websocket": "./node_modules/lib0/websocket.js",
"lib0/webcrypto": "./node_modules/lib0/webcrypto.js",
"lib0/performance.js": "./node_modules/lib0/performance.js",
"lib0/dist/performance.cjs": "./node_modules/lib0/dist/performance.node.cjs",
"lib0/performance": "./node_modules/lib0/performance.js",
"y-protocols/package.json": "./node_modules/y-protocols/package.json",
"y-protocols/sync.js": "./node_modules/y-protocols/sync.js",
"y-protocols/dist/sync.cjs": "./node_modules/y-protocols/dist/sync.cjs",
"y-protocols/sync": "./node_modules/y-protocols/sync.js",
"y-protocols/awareness.js": "./node_modules/y-protocols/awareness.js",
"y-protocols/dist/awareness.cjs": "./node_modules/y-protocols/dist/awareness.cjs",
"y-protocols/awareness": "./node_modules/y-protocols/awareness.js",
"y-protocols/auth.js": "./node_modules/y-protocols/auth.js",
"y-protocols/dist/auth.cjs": "./node_modules/y-protocols/dist/auth.cjs",
"y-protocols/auth": "./node_modules/y-protocols/auth.js"
},
"scopes": {
"./node_modules/lib0/": {
"isomorphic.js": "./node_modules/isomorphic.js/browser.mjs",
"isomorphic.js/package.json": "./node_modules/isomorphic.js/package.json"
},
"./node_modules/y-protocols/": {
"lib0/package.json": "./node_modules/lib0/package.json",
"lib0": "./node_modules/lib0/index.js",
"lib0/array.js": "./node_modules/lib0/array.js",
"lib0/dist/array.cjs": "./node_modules/lib0/dist/array.cjs",
"lib0/array": "./node_modules/lib0/array.js",
"lib0/binary.js": "./node_modules/lib0/binary.js",
"lib0/dist/binary.cjs": "./node_modules/lib0/dist/binary.cjs",
"lib0/binary": "./node_modules/lib0/binary.js",
"lib0/broadcastchannel.js": "./node_modules/lib0/broadcastchannel.js",
"lib0/dist/broadcastchannel.cjs": "./node_modules/lib0/dist/broadcastchannel.cjs",
"lib0/broadcastchannel": "./node_modules/lib0/broadcastchannel.js",
"lib0/buffer.js": "./node_modules/lib0/buffer.js",
"lib0/dist/buffer.cjs": "./node_modules/lib0/dist/buffer.cjs",
"lib0/buffer": "./node_modules/lib0/buffer.js",
"lib0/cache.js": "./node_modules/lib0/cache.js",
"lib0/dist/cache.cjs": "./node_modules/lib0/dist/cache.cjs",
"lib0/cache": "./node_modules/lib0/cache.js",
"lib0/component.js": "./node_modules/lib0/component.js",
"lib0/dist/component.cjs": "./node_modules/lib0/dist/component.cjs",
"lib0/component": "./node_modules/lib0/component.js",
"lib0/conditions.js": "./node_modules/lib0/conditions.js",
"lib0/dist/conditions.cjs": "./node_modules/lib0/dist/conditions.cjs",
"lib0/conditions": "./node_modules/lib0/conditions.js",
"lib0/crypto/jwt": "./node_modules/lib0/crypto/jwt.js",
"lib0/crypto/aes-gcm": "./node_modules/lib0/crypto/aes-gcm.js",
"lib0/crypto/ecdsa": "./node_modules/lib0/crypto/ecdsa.js",
"lib0/crypto/rsa-oaep": "./node_modules/lib0/crypto/rsa-oaep.js",
"lib0/hash/rabin": "./node_modules/lib0/hash/rabin.js",
"lib0/hash/sha256": "./node_modules/lib0/hash/sha256.js",
"lib0/decoding.js": "./node_modules/lib0/decoding.js",
"lib0/dist/decoding.cjs": "./node_modules/lib0/dist/decoding.cjs",
"lib0/decoding": "./node_modules/lib0/decoding.js",
"lib0/diff.js": "./node_modules/lib0/diff.js",
"lib0/dist/diff.cjs": "./node_modules/lib0/dist/diff.cjs",
"lib0/diff": "./node_modules/lib0/diff.js",
"lib0/dom.js": "./node_modules/lib0/dom.js",
"lib0/dist/dom.cjs": "./node_modules/lib0/dist/dom.cjs",
"lib0/dom": "./node_modules/lib0/dom.js",
"lib0/encoding.js": "./node_modules/lib0/encoding.js",
"lib0/dist/encoding.cjs": "./node_modules/lib0/dist/encoding.cjs",
"lib0/encoding": "./node_modules/lib0/encoding.js",
"lib0/environment.js": "./node_modules/lib0/environment.js",
"lib0/dist/environment.cjs": "./node_modules/lib0/dist/environment.cjs",
"lib0/environment": "./node_modules/lib0/environment.js",
"lib0/error.js": "./node_modules/lib0/error.js",
"lib0/dist/error.cjs": "./node_modules/lib0/dist/error.cjs",
"lib0/error": "./node_modules/lib0/error.js",
"lib0/eventloop.js": "./node_modules/lib0/eventloop.js",
"lib0/dist/eventloop.cjs": "./node_modules/lib0/dist/eventloop.cjs",
"lib0/eventloop": "./node_modules/lib0/eventloop.js",
"lib0/function.js": "./node_modules/lib0/function.js",
"lib0/dist/function.cjs": "./node_modules/lib0/dist/function.cjs",
"lib0/function": "./node_modules/lib0/function.js",
"lib0/indexeddb.js": "./node_modules/lib0/indexeddb.js",
"lib0/dist/indexeddb.cjs": "./node_modules/lib0/dist/indexeddb.cjs",
"lib0/indexeddb": "./node_modules/lib0/indexeddb.js",
"lib0/isomorphic.js": "./node_modules/lib0/isomorphic.js",
"lib0/dist/isomorphic.cjs": "./node_modules/lib0/dist/isomorphic.cjs",
"lib0/isomorphic": "./node_modules/lib0/isomorphic.js",
"lib0/iterator.js": "./node_modules/lib0/iterator.js",
"lib0/dist/iterator.cjs": "./node_modules/lib0/dist/iterator.cjs",
"lib0/iterator": "./node_modules/lib0/iterator.js",
"lib0/json.js": "./node_modules/lib0/json.js",
"lib0/dist/json.cjs": "./node_modules/lib0/dist/json.cjs",
"lib0/json": "./node_modules/lib0/json.js",
"lib0/list.js": "./node_modules/lib0/list.js",
"lib0/dist/list.cjs": "./node_modules/lib0/dist/list.cjs",
"lib0/list": "./node_modules/lib0/list.js",
"lib0/logging.js": "./node_modules/lib0/logging.js",
"lib0/dist/logging.cjs": "./node_modules/lib0/dist/logging.node.cjs",
"lib0/logging": "./node_modules/lib0/logging.js",
"lib0/map.js": "./node_modules/lib0/map.js",
"lib0/dist/map.cjs": "./node_modules/lib0/dist/map.cjs",
"lib0/map": "./node_modules/lib0/map.js",
"lib0/math.js": "./node_modules/lib0/math.js",
"lib0/dist/math.cjs": "./node_modules/lib0/dist/math.cjs",
"lib0/math": "./node_modules/lib0/math.js",
"lib0/metric.js": "./node_modules/lib0/metric.js",
"lib0/dist/metric.cjs": "./node_modules/lib0/dist/metric.cjs",
"lib0/metric": "./node_modules/lib0/metric.js",
"lib0/mutex.js": "./node_modules/lib0/mutex.js",
"lib0/dist/mutex.cjs": "./node_modules/lib0/dist/mutex.cjs",
"lib0/mutex": "./node_modules/lib0/mutex.js",
"lib0/number.js": "./node_modules/lib0/number.js",
"lib0/dist/number.cjs": "./node_modules/lib0/dist/number.cjs",
"lib0/number": "./node_modules/lib0/number.js",
"lib0/object.js": "./node_modules/lib0/object.js",
"lib0/dist/object.cjs": "./node_modules/lib0/dist/object.cjs",
"lib0/object": "./node_modules/lib0/object.js",
"lib0/observable.js": "./node_modules/lib0/observable.js",
"lib0/dist/observable.cjs": "./node_modules/lib0/dist/observable.cjs",
"lib0/observable": "./node_modules/lib0/observable.js",
"lib0/pair.js": "./node_modules/lib0/pair.js",
"lib0/dist/pair.cjs": "./node_modules/lib0/dist/pair.cjs",
"lib0/pair": "./node_modules/lib0/pair.js",
"lib0/prng.js": "./node_modules/lib0/prng.js",
"lib0/dist/prng.cjs": "./node_modules/lib0/dist/prng.cjs",
"lib0/prng": "./node_modules/lib0/prng.js",
"lib0/promise.js": "./node_modules/lib0/promise.js",
"lib0/dist/promise.cjs": "./node_modules/lib0/dist/promise.cjs",
"lib0/promise": "./node_modules/lib0/promise.js",
"lib0/queue.js": "./node_modules/lib0/queue.js",
"lib0/dist/queue.cjs": "./node_modules/lib0/dist/queue.cjs",
"lib0/queue": "./node_modules/lib0/queue.js",
"lib0/random.js": "./node_modules/lib0/random.js",
"lib0/dist/random.cjs": "./node_modules/lib0/dist/random.cjs",
"lib0/random": "./node_modules/lib0/random.js",
"lib0/set.js": "./node_modules/lib0/set.js",
"lib0/dist/set.cjs": "./node_modules/lib0/dist/set.cjs",
"lib0/set": "./node_modules/lib0/set.js",
"lib0/sort.js": "./node_modules/lib0/sort.js",
"lib0/dist/sort.cjs": "./node_modules/lib0/dist/sort.cjs",
"lib0/sort": "./node_modules/lib0/sort.js",
"lib0/statistics.js": "./node_modules/lib0/statistics.js",
"lib0/dist/statistics.cjs": "./node_modules/lib0/dist/statistics.cjs",
"lib0/statistics": "./node_modules/lib0/statistics.js",
"lib0/storage.js": "./node_modules/lib0/storage.js",
"lib0/dist/storage.cjs": "./node_modules/lib0/dist/storage.cjs",
"lib0/storage": "./node_modules/lib0/storage.js",
"lib0/string.js": "./node_modules/lib0/string.js",
"lib0/dist/string.cjs": "./node_modules/lib0/dist/string.cjs",
"lib0/string": "./node_modules/lib0/string.js",
"lib0/symbol.js": "./node_modules/lib0/symbol.js",
"lib0/dist/symbol.cjs": "./node_modules/lib0/dist/symbol.cjs",
"lib0/symbol": "./node_modules/lib0/symbol.js",
"lib0/testing.js": "./node_modules/lib0/testing.js",
"lib0/dist/testing.cjs": "./node_modules/lib0/dist/testing.cjs",
"lib0/testing": "./node_modules/lib0/testing.js",
"lib0/time.js": "./node_modules/lib0/time.js",
"lib0/dist/time.cjs": "./node_modules/lib0/dist/time.cjs",
"lib0/time": "./node_modules/lib0/time.js",
"lib0/tree.js": "./node_modules/lib0/tree.js",
"lib0/dist/tree.cjs": "./node_modules/lib0/dist/tree.cjs",
"lib0/tree": "./node_modules/lib0/tree.js",
"lib0/url.js": "./node_modules/lib0/url.js",
"lib0/dist/url.cjs": "./node_modules/lib0/dist/url.cjs",
"lib0/url": "./node_modules/lib0/url.js",
"lib0/websocket.js": "./node_modules/lib0/websocket.js",
"lib0/dist/websocket.cjs": "./node_modules/lib0/dist/websocket.cjs",
"lib0/websocket": "./node_modules/lib0/websocket.js",
"lib0/webcrypto": "./node_modules/lib0/webcrypto.js",
"lib0/performance.js": "./node_modules/lib0/performance.js",
"lib0/dist/performance.cjs": "./node_modules/lib0/dist/performance.node.cjs",
"lib0/performance": "./node_modules/lib0/performance.js"
}
}
}
</script>
<title>Testing Yjs</title>
</head>
<body>
<script type="module" src="./tests/index.js"></script>
<script type="module" src="./dist/tests.js"></script>
</body>
</html>

View File

@ -1,11 +0,0 @@
import * as t from 'lib0/testing'
import * as delta from '../src/utils/Delta.js'
/**
* @param {t.TestCase} _tc
*/
export const testDelta = _tc => {
const d = delta.create().insert('hello').insert(' ').useAttributes({ bold: true }).insert('world').useAttribution({ creator: 'tester' }).insert('!').done()
t.compare(d.toJSON().ops, [{ insert: 'hello' }, { insert: ' world', attributes: { bold: true } }, { insert: '!', attributes: { bold: true }, attribution: { creator: 'tester' } }])
}

View File

@ -11,11 +11,11 @@ import * as doc from './doc.tests.js'
import * as snapshot from './snapshot.tests.js'
import * as updates from './updates.tests.js'
import * as relativePositions from './relativePositions.tests.js'
// import * as delta from './delta.tests.js'
import { runTests } from 'lib0/testing'
import { isBrowser, isNode } from 'lib0/environment'
import * as log from 'lib0/logging'
import { environment } from 'lib0'
if (isBrowser) {
log.createVConsole(document.body)
@ -25,10 +25,14 @@ if (isBrowser) {
* @type {any}
*/
const tests = {
doc, map, array, text, xml, encoding, undoredo, compatibility, snapshot, updates, relativePositions, delta
doc, map, array, text, xml, encoding, undoredo, compatibility, snapshot, updates, relativePositions
}
const run = async () => {
if (environment.isNode) {
// tests.nodejs = await import('./node.tests.js')
}
const success = await runTests(tests)
/* istanbul ignore next */
if (isNode) {

View File

@ -1,5 +1,6 @@
import * as Y from '../src/index.js'
import { init } from './testHelper.js' // eslint-disable-line
import * as Y from '../src/index.js'
import * as t from 'lib0/testing'
export const testInconsistentFormat = () => {

View File

@ -1,6 +1,6 @@
import * as t from 'lib0/testing'
import * as Y from '../src/index.js'
import { init, compare } from './testHelper.js' // eslint-disable-line
import * as Y from '../src/index.js'
import { readClientsStructRefs, readDeleteSet, UpdateDecoderV2, UpdateEncoderV2, writeDeleteSet } from '../src/internals.js'
import * as encoding from 'lib0/encoding'
import * as decoding from 'lib0/decoding'

View File

@ -1,4 +1,5 @@
import { init, compare, applyRandomTests, Doc } from './testHelper.js' // eslint-disable-line
import * as Y from '../src/index.js'
import * as t from 'lib0/testing'
import * as prng from 'lib0/prng'

View File

@ -1,8 +1,10 @@
import * as Y from '../src/index.js'
import { init, compare, applyRandomTests, Doc } from './testHelper.js' // eslint-disable-line
import {
compareIDs
} from '../src/internals.js'
import * as Y from '../src/index.js'
import * as t from 'lib0/testing'
import * as prng from 'lib0/prng'

View File

@ -1,5 +1,6 @@
import * as Y from '../src/index.js'
import { init, compare } from './testHelper.js'
import * as Y from '../src/index.js'
import * as t from 'lib0/testing'
export const testCustomTypings = () => {

View File

@ -14,9 +14,7 @@
"noImplicitAny": true,
"moduleResolution": "nodenext",
"paths": {
"yjs": ["./src/index.js"],
"yjs/internals": ["./src/internals.js"],
"yjs/testHelper": ["./tests/testHelper.js"]
"yjs": ["./src/index.js"]
}
},
"include": ["./src/**/*.js", "./tests/**/*.js"]