Add TreeModel and HasSubtree implementation

This commit is contained in:
2022-08-20 16:21:06 -05:00
parent 3d836afa59
commit f63891ef99
22 changed files with 380 additions and 108 deletions

89
pnpm-lock.yaml generated
View File

@@ -1,4 +1,4 @@
lockfileVersion: 5.3
lockfileVersion: 5.4
specifiers:
'@atao60/fse-cli': ^0.1.6
@@ -50,7 +50,7 @@ specifiers:
typedoc: ^0.20.36
typedoc-plugin-pages-fork: ^0.0.1
typedoc-plugin-sourcefile-url: ^1.0.6
typescript: ^4.2.3
typescript: ^4.7.4
uuid: ^8.3.2
ws: ^8.8.0
wtfnode: ^0.9.1
@@ -92,11 +92,11 @@ dependencies:
reflect-metadata: 0.1.13
rimraf: 3.0.2
ssh2: 1.1.0
ts-node: 9.1.1_typescript@4.2.3
typedoc: 0.20.36_typescript@4.2.3
ts-node: 9.1.1_typescript@4.7.4
typedoc: 0.20.36_typescript@4.7.4
typedoc-plugin-pages-fork: 0.0.1
typedoc-plugin-sourcefile-url: 1.0.6_typedoc@0.20.36
typescript: 4.2.3
typescript: 4.7.4
uuid: 8.3.2
ws: 8.8.0
zod: 3.11.6
@@ -106,8 +106,8 @@ devDependencies:
'@types/mocha': 9.0.0
'@types/sinon': 10.0.6
'@types/wtfnode': 0.7.0
'@typescript-eslint/eslint-plugin': 4.26.0_942c48837be95e76bb4156c78358cdbe
'@typescript-eslint/parser': 4.26.0_eslint@7.27.0+typescript@4.2.3
'@typescript-eslint/eslint-plugin': 4.26.0_cgxss3zaaghocyaq4idsceujcy
'@typescript-eslint/parser': 4.26.0_4x6mfymjsyurtmri255xnln3g4
chai: 4.3.4
eslint: 7.27.0
mocha: 9.1.3
@@ -160,6 +160,8 @@ packages:
resolution: {integrity: sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
'@babel/types': 7.13.14
dev: false
/@babel/runtime/7.14.6:
@@ -216,8 +218,8 @@ packages:
dotenv: 10.0.0
mkdirp: 1.0.4
rimraf: 3.0.2
ts-node: 10.4.0_9033393ac6e1960c4e4feb229fa8feef
typescript: 4.5.2
ts-node: 10.4.0_7qobpvvcbeswdxz4g6mzc6lzhy
typescript: 4.7.4
uuid: 8.3.2
transitivePeerDependencies:
- '@swc/core'
@@ -465,7 +467,7 @@ packages:
resolution: {integrity: sha512-kdBHgE9+M1Os7UqWZtiLhKye5reFl8cPBYyCsP2fatwZRz7F7GdIxIHZ20Kkc0hYBfbXE+lzPOTUU1I0qgjtHA==}
dev: true
/@typescript-eslint/eslint-plugin/4.26.0_942c48837be95e76bb4156c78358cdbe:
/@typescript-eslint/eslint-plugin/4.26.0_cgxss3zaaghocyaq4idsceujcy:
resolution: {integrity: sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg==}
engines: {node: ^10.12.0 || >=12.0.0}
peerDependencies:
@@ -476,8 +478,8 @@ packages:
typescript:
optional: true
dependencies:
'@typescript-eslint/experimental-utils': 4.26.0_eslint@7.27.0+typescript@4.2.3
'@typescript-eslint/parser': 4.26.0_eslint@7.27.0+typescript@4.2.3
'@typescript-eslint/experimental-utils': 4.26.0_4x6mfymjsyurtmri255xnln3g4
'@typescript-eslint/parser': 4.26.0_4x6mfymjsyurtmri255xnln3g4
'@typescript-eslint/scope-manager': 4.26.0
debug: 4.3.1
eslint: 7.27.0
@@ -485,13 +487,13 @@ packages:
lodash: 4.17.21
regexpp: 3.1.0
semver: 7.3.5
tsutils: 3.21.0_typescript@4.2.3
typescript: 4.2.3
tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/experimental-utils/4.26.0_eslint@7.27.0+typescript@4.2.3:
/@typescript-eslint/experimental-utils/4.26.0_4x6mfymjsyurtmri255xnln3g4:
resolution: {integrity: sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw==}
engines: {node: ^10.12.0 || >=12.0.0}
peerDependencies:
@@ -500,7 +502,7 @@ packages:
'@types/json-schema': 7.0.7
'@typescript-eslint/scope-manager': 4.26.0
'@typescript-eslint/types': 4.26.0
'@typescript-eslint/typescript-estree': 4.26.0_typescript@4.2.3
'@typescript-eslint/typescript-estree': 4.26.0_typescript@4.7.4
eslint: 7.27.0
eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@7.27.0
@@ -509,7 +511,7 @@ packages:
- typescript
dev: true
/@typescript-eslint/parser/4.26.0_eslint@7.27.0+typescript@4.2.3:
/@typescript-eslint/parser/4.26.0_4x6mfymjsyurtmri255xnln3g4:
resolution: {integrity: sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg==}
engines: {node: ^10.12.0 || >=12.0.0}
peerDependencies:
@@ -521,10 +523,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 4.26.0
'@typescript-eslint/types': 4.26.0
'@typescript-eslint/typescript-estree': 4.26.0_typescript@4.2.3
'@typescript-eslint/typescript-estree': 4.26.0_typescript@4.7.4
debug: 4.3.1
eslint: 7.27.0
typescript: 4.2.3
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
@@ -542,7 +544,7 @@ packages:
engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
dev: true
/@typescript-eslint/typescript-estree/4.26.0_typescript@4.2.3:
/@typescript-eslint/typescript-estree/4.26.0_typescript@4.7.4:
resolution: {integrity: sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg==}
engines: {node: ^10.12.0 || >=12.0.0}
peerDependencies:
@@ -557,8 +559,8 @@ packages:
globby: 11.0.3
is-glob: 4.0.1
semver: 7.3.5
tsutils: 3.21.0_typescript@4.2.3
typescript: 4.2.3
tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.4
transitivePeerDependencies:
- supports-color
dev: true
@@ -1024,7 +1026,7 @@ packages:
engines: {node: '>=8.0.0'}
requiresBuild: true
dependencies:
nan: 2.14.2
nan: 2.16.0
dev: false
optional: true
@@ -1550,7 +1552,7 @@ packages:
source-map: 0.6.1
wordwrap: 1.0.0
optionalDependencies:
uglify-js: 3.13.8
uglify-js: 3.17.0
dev: false
/has-flag/3.0.0:
@@ -2061,8 +2063,8 @@ packages:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
dev: false
/nan/2.14.2:
resolution: {integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==}
/nan/2.16.0:
resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==}
dev: false
optional: true
@@ -2720,7 +2722,7 @@ packages:
bcrypt-pbkdf: 1.0.2
optionalDependencies:
cpu-features: 0.0.2
nan: 2.14.2
nan: 2.16.0
dev: false
/standard-as-callback/2.1.0:
@@ -2870,7 +2872,7 @@ packages:
resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=}
dev: false
/ts-node/10.4.0_9033393ac6e1960c4e4feb229fa8feef:
/ts-node/10.4.0_7qobpvvcbeswdxz4g6mzc6lzhy:
resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==}
hasBin: true
peerDependencies:
@@ -2896,11 +2898,11 @@ packages:
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 4.5.2
typescript: 4.7.4
yn: 3.1.1
dev: false
/ts-node/9.1.1_typescript@4.2.3:
/ts-node/9.1.1_typescript@4.7.4:
resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==}
engines: {node: '>=10.0.0'}
hasBin: true
@@ -2912,7 +2914,7 @@ packages:
diff: 4.0.2
make-error: 1.3.6
source-map-support: 0.5.19
typescript: 4.2.3
typescript: 4.7.4
yn: 3.1.1
dev: false
@@ -2923,14 +2925,14 @@ packages:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
dev: false
/tsutils/3.21.0_typescript@4.2.3:
/tsutils/3.21.0_typescript@4.7.4:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
typescript: 4.2.3
typescript: 4.7.4
dev: true
/tweetnacl/0.14.5:
@@ -2993,10 +2995,10 @@ packages:
peerDependencies:
typedoc: '>=0.16.0'
dependencies:
typedoc: 0.20.36_typescript@4.2.3
typedoc: 0.20.36_typescript@4.7.4
dev: false
/typedoc/0.20.36_typescript@4.2.3:
/typedoc/0.20.36_typescript@4.7.4:
resolution: {integrity: sha512-qFU+DWMV/hifQ9ZAlTjdFO9wbUIHuUBpNXzv68ZyURAP9pInjZiO4+jCPeAzHVcaBCHER9WL/+YzzTt6ZlN/Nw==}
engines: {node: '>= 10.8.0'}
hasBin: true
@@ -3014,23 +3016,16 @@ packages:
shelljs: 0.8.4
shiki: 0.9.3
typedoc-default-themes: 0.12.10
typescript: 4.2.3
typescript: 4.7.4
dev: false
/typescript/4.2.3:
resolution: {integrity: sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==}
/typescript/4.7.4:
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: false
/typescript/4.5.2:
resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: false
/uglify-js/3.13.8:
resolution: {integrity: sha512-PvFLMFIQHfIjFFlvAch69U2IvIxK9TNzNWt1SxZGp9JZ/v70yvqIQuiJeVPPtUMOzoNt+aNRDk4wgxb34wvEqA==}
/uglify-js/3.17.0:
resolution: {integrity: sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==}
engines: {node: '>=0.8.0'}
hasBin: true
requiresBuild: true