{"_id":"parsegraph","_rev":"40-57155a7e336251082a60581eb4300a6b","name":"parsegraph","dist-tags":{"latest":"6.2.0","dev":"3.0.1"},"versions":{"1.0.0":{"name":"parsegraph","version":"1.0.0","description":"The Parsegraph API can be used to render a user-navigable 2D environment of connected blocks, slots, scenes, sliders, and buds. The JavaScript implementation is contained in an HTML5 canvas and uses a WebGLRenderingContext. The C implementation contains a","main":"demo.js","scripts":{"test":"nyc mocha src","demo":"node demo.js","autobuild":"webpack --watch --config webpack.config.js","build":"webpack --config webpack.config.js"},"nyc":{"include":["src/**/*.js","src/**/*.ts","src/**/*.tsx"],"extension":[".js",".ts",".tsx"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true},"repository":{"type":"git","url":"git+https://github.com/parsegraph/graph-js.git"},"keywords":[],"author":{"name":"Rainback, Inc."},"license":"MIT","bugs":{"url":"https://github.com/parsegraph/graph-js/issues"},"homepage":"https://github.com/parsegraph/graph-js#readme","devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/preset-env":"^7.11.0","@babel/preset-typescript":"^7.10.4","@types/expect":"^24.3.0","@types/mocha":"^8.0.4","@typescript-eslint/eslint-plugin":"^4.8.0","@typescript-eslint/parser":"^4.8.0","eslint":"^7.13.0","eslint-config-google":"^0.14.0","mocha":"^8.2.1","nyc":"^15.1.0","prettier":"2.1.2","source-map-loader":"^1.0.2","source-map-support":"^0.5.19","ts-node":"^9.0.0","ts-shader-loader":"^1.0.6","typescript":"^4.0.2","webpack":"^4.44.1","webpack-cli":"^3.3.12"},"dependencies":{"@babel/polyfill":"^7.10.4","babel-loader":"^8.1.0","core-js":"^3.6.5","esdoc":"^1.1.0","esdoc-standard-plugin":"^1.0.0","esdoc-typescript-plugin":"^1.0.1","express":"^4.17.1","glslify-loader":"^2.0.0","openssl":"^1.1.0","parsegraph-extent":"^1.4.1","parsegraph-generateid":"^1.4.0","parsegraph-pagingbuffer":"^1.4.7","parsegraph-testsuite":"^1.4.1","parsegraph-timing":"^1.4.0","raw-loader":"^4.0.1","ts-mocha":"^8.0.0"},"_resolved":"","_integrity":"","_from":"file:parsegraph.tar.gz","_id":"parsegraph@1.0.0","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-6fkNSpo25CJmtLVQfTKgmwOW8Pf/aHf96Sz/0XWtfLmVIuK0OTJUy6DHkw1sxXC3xseLgR6pCX4zV6OKg6BhtA==","shasum":"40e6b937af3374dc8f9c65a5857aff4310f14802","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-1.0.0.tgz","fileCount":123,"unpackedSize":6971048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0eWwCRA9TVsSAnZWagAAZNwP/17NFzZQYd3GARuOWuzO\nfejZclFe5P9tZi/IdzVlomEdmV0WVrDExIQpuIuw7C/1PxhWCSHSRAtaFJiU\nTSGsBjdMhVbeYrvdAnuFNnoBO0D7ZowWMsNgvIFflIKpo06vBRTKKYM9Ka09\nt4SqiOhhml9tbOnIHNR2zF4gUXDfa4pBVV4ezghTMtQPiWuI07MCrzWy+wcG\nihmlC0FTeUicNomXi9g59cWv8e6ycHbIZi8l4JfK/lU+rwHlSpTVGVLI8uez\n8zgH+mBngTXnN3nchcqSRh+4d1r5jqadgU9vXUqhLn1+NxGU5QFjhuXSHhKf\n6GzRelKNa7r57oAMOkaeIA8ckoqgQJVvh6w6uNflPu4gcPVypIrTwyoC1G1I\nHGTJTSQBWbvwRJrVFL0sTbnuUp32vtMT/xEVgz9halP5HJqRQS6ZcCJC+GZV\nCZ6X/dCOk372EAyym7/acScA/UlwFEO4crtP+oq2MmJth1riPUhYKQgaM+5Q\nmZ4dwO3Jkif9F88/nWNRqX8EFycg3ncOEqrbdZsSw8+SLZ/kDEdDxqO0zsJ4\njJj4huhupVGk1vnRb2X6ZoU2TLTPyTv+KbAvcbp6nlnwkA3tnFkbAiAErBxI\nyrRtfZCKyk6pS0DvIA8g1Iiwlru25qjkz2MC5Fmcc6OWQc70hASGqKLhJDRM\neMyX\r\n=IFzk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWs6uvD/joztYrcyoR3VwEJ7krcPGITUR6WP+1dRNtygIgSWIB/CeH5tWlRk8BEckX7EPlLdHZPT4pWPB9D3pPvu0="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_1.0.0_1607591344458_0.8278462835985236"},"_hasShrinkwrap":false},"2.0.1":{"name":"parsegraph","version":"2.0.1","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish":"./scripts/publish","publish:prod":"./scripts/publish-prod"},"licenseText":"MIT License\n\nCopyright (c) 2023 Rainback, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"parsegraph@2.0.1","dist":{"shasum":"c6e842a35c42cb0c6e6a7a355b6d2029672712ca","integrity":"sha512-VDW2nEGs9Qb7+Q06g1b7399CAt30KT9Q2dZovjKHHV2LO/GV5GyD9H5cFIvmUy0Becooa9utfNaavWOwsOJX/Q==","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.1.tgz","fileCount":79,"unpackedSize":526467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC9vA4H+ohSW3k+z0aGSjUt1UhtJChuW91r4TjB1/+yQAiB+SRNZ62gAX+XvzEpveDX4CVRB+/rF5nIAu1xWa5JicQ=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.1_1696026343033_0.572223733621168"},"_hasShrinkwrap":false},"2.0.0":{"name":"parsegraph","version":"2.0.0","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph"},"licenseText":"MIT License\n\nCopyright (c) 2023 Rainback, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"parsegraph@2.0.0","dist":{"shasum":"df4109831a3301ba76f7284602c916cbe52a1cae","integrity":"sha512-mUd6H3iEliFYREVPUgJqCHN/BzR7m+mHm9SDhVzp0hdInE5YowOtgAoQZmpReQ/0dVC55/28JynAtZqICddB9w==","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.0.tgz","fileCount":79,"unpackedSize":526366,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+aIRy1ltc3R40ET4Zq9U9tqcwA//MEyqMof66Nsh5QAIgOFwIi3uZ6cSql/S6/CMfu19djeia39t35iVRSIogV4Y="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.0_1696026426424_0.9574666037175446"},"_hasShrinkwrap":false},"2.0.2":{"name":"parsegraph","version":"2.0.2","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish":"./scripts/publish","publish:prod":"./scripts/publish-prod"},"_id":"parsegraph@2.0.2","gitHead":"ae2d051d8fedd297307f1788cf999eb26c4bd524","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-fD3kU53yHtvrMxTbtN3PiBHdiYI4cQyz9lVzk8Clbe8LqN3yQqnRjPALSFN8Oc7VA5YvjT1gsRbPDpL68IFnig==","shasum":"e144156b9ef27487009ea31956df07a7e30ac32f","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.2.tgz","fileCount":136,"unpackedSize":964115,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZRlXYrv0sm4VmzQqIGKE3zjWeIk3br7P/Nvn6MMTEvwIgUEgCye53RnpeASMpr3DCk7S8pwOxRsA3md3qrCSag10="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.2_1696028254757_0.6001092996183774"},"_hasShrinkwrap":false},"2.0.3":{"name":"parsegraph","version":"2.0.3","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish":"./scripts/publish","publish:prod":"./scripts/publish-prod"},"_id":"parsegraph@2.0.3","gitHead":"ae2d051d8fedd297307f1788cf999eb26c4bd524","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-HD+awYN4r9lI3dfJFXAetcBdf3w9oAQ/qNyZvc7ZfXe9Jg8dW8qqt9xtzaSiajpyqWUsBui2eT95qKOGhk/Fqg==","shasum":"67ac445c6e564147a185b902751eb7d97136ed5c","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.3.tgz","fileCount":136,"unpackedSize":964115,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICX27PwmkhuYUpgKHyyfROWMst5ls5RPwBPjvtrmbNmmAiEAhh/nwItlEJXtbq4F+VDSFv4yJQEhoOK+Xwe8cWWdU3E="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.3_1696028496974_0.9886482141455362"},"_hasShrinkwrap":false},"2.0.5":{"name":"parsegraph","version":"2.0.5","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish":"./scripts/publish","publish:prod":"./scripts/publish-prod"},"licenseText":"MIT License\n\nCopyright (c) 2023 Rainback, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"parsegraph@2.0.5","dist":{"shasum":"cd653041c54e81928af33cdb446cacf231126994","integrity":"sha512-UTil4Tae9PglblgG9a6dEI0Vv1Q6hGewmzaMR7/MWoOF+oFmH8iLKCD9dnkQuYar5nyWKHm4uxPzx1qFwFHgJQ==","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.5.tgz","fileCount":80,"unpackedSize":856301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA5xBjtwmFLX293oC1F7R643l038168gxt5V/uTkuM1UAiEA/ojrcWr5aNKl+TjkUiiPDsxvBfq4yxLvgep32bMduzE="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.5_1696028510009_0.9080809580662759"},"_hasShrinkwrap":false},"2.0.6":{"name":"parsegraph","version":"2.0.6","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish":"./scripts/publish","publish:prod":"./scripts/publish-prod"},"licenseText":"MIT License\n\nCopyright (c) 2023 Rainback, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"parsegraph@2.0.6","dist":{"shasum":"f4096d7feeb7f4d0d9e9b22edf8f49a2a96eb766","integrity":"sha512-Rpzd7rWjyCQdmIINkPW44+E2yyxaR1L1LR2gyq08D46cS7XXK0QP/YPLbsu1/BRt+Y4q1BqPvV7OqhpPtR2O+g==","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.6.tgz","fileCount":80,"unpackedSize":856296,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRsjAwUi4Uvq/6i/7oJF5kd8y7fRCZsgSWqTihXrQ7qwIhAIDLoDSbMsX6z3JjruHcmwdr8GnBi/tAyoJT1MFE/Cpv"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.6_1696028535293_0.19190543166344498"},"_hasShrinkwrap":false},"2.0.7":{"name":"parsegraph","version":"2.0.7","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish:prod":"./scripts/publish-prod"},"licenseText":"MIT License\n\nCopyright (c) 2023 Rainback, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"parsegraph@2.0.7","dist":{"shasum":"71ff8d0a00e5a5cea917534ff95bf465ebe6d2c2","integrity":"sha512-62tthN1EcWF/wSCs6/qvpFlVSHAlOZ++XW0+9nLyOotVtkUr96uw6hi/xRBRiLOIN6IUsINJxJcpY3HQttP3Ag==","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.7.tgz","fileCount":80,"unpackedSize":856260,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID9E2uKoz1Tx1Yqoqqmnr6ix5ijbc4iI0WW7tjnTcx8KAiAn7Y2eYadKLTDEJRj/MRGxA4UeMd6awH+7agrqWKHuww=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.7_1696028554102_0.8956965736662359"},"_hasShrinkwrap":false},"2.0.15":{"name":"parsegraph","version":"2.0.15","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","publish:prod":"./scripts/publish-prod"},"gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_id":"parsegraph@2.0.15","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-nbIbXFtZGjW8t0a9pcWtGuLRXc4KtbQkPfErZfnkX3PqIB6q+QnTo4wvYZBHVK6QNljuq5u5esZ2kBQa2NyjAA==","shasum":"1a526497d216b589d629a26fe44c496d88351441","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.15.tgz","fileCount":136,"unpackedSize":964075,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCz78ykF6k6SAOFTQcd9kWXU07Q7ufFprgB6kaT2frhTQIhAMDGwPahC8ABiWuM+SBClBEjS6bfxOlvNVXIPFZ92kAC"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.15_1696029096185_0.0852339243455198"},"_hasShrinkwrap":false},"2.0.16":{"name":"parsegraph","version":"2.0.16","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_id":"parsegraph@2.0.16","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-oWiDA0pfI2J6TLtTc0Ib3aGFBSwVxQTko8QGXsydDUdNsUPw2XUX6zT2CH3cz5Cs3RpskF7qOBZkf4CVAmO8MQ==","shasum":"aa4253a74fdd436c632f7b808906795eb1242c5a","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.16.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNXMqmpjcDpDIVy3T4PktQ5CH/O5IdEbmUy9CJKSRpdQIgabTyWWazX9M2Q0uQGfLQHrY1IhTn8Mi+buX0H5fP+Nw="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.16_1696029331988_0.8434141177612002"},"_hasShrinkwrap":false},"2.0.17":{"name":"parsegraph","version":"2.0.17","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.17","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-zmhnYBe/VBMBf0ng0CHMfJSNSmQMelGD1omDnbbOp0w9AW6+RaFQryEKFfoip8bTXf2XQwad8eGs+40e1sIFog==","shasum":"b388866951f115800038f8a13a90872443d23622","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.17.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGh0E/IeOQpifx+cBqTTJAJBbYgENA2NgCq4rICHuBCVAiEAoHzNjKKDcqvribJ/BCWQT7TVB5XffnMXa51X3oA3NUk="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.17_1696029515882_0.9551546967174112"},"_hasShrinkwrap":false},"2.0.18":{"name":"parsegraph","version":"2.0.18","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.18","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-6jUheSKQEo3CLktdJuGORop/TpVtZ672kVu7alGPlBfoe/jklzp6tQw48stm8oLNKMv1XWMqWvCbmdrC1JJPkg==","shasum":"a03afd5220f4a520ea132093812bc05e3bd79310","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.18.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+shBMoU3dQ/k3eUBpdaeieM+iLDhrh1FE7nE7PTWxXgIgWlvOdgWHHifVWVyy2GrQKcSRY9j/y5Gr57Ry16coY0E="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.18_1696029691840_0.21416853792325363"},"_hasShrinkwrap":false},"2.0.19":{"name":"parsegraph","version":"2.0.19","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.19","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-r2Vb/Z3x/66gBP+vvR9L0JtLpujf6PpUobtvmQoA2V7V6mzg00FVQr5sfjD/XGeYtl4OiVXHstZejClaDT1sXw==","shasum":"6872984ad0012f613cb7b2c587e9301c2c078fd3","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.19.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCD1kwYLuLfzggXvBsNz8zdSRmchzFFs1a25sM4GvvDLgIgVr/VKAK/veBGYM1BIJCgPyZAyJ6xaJn7lrnXOkGoRWU="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.19_1696029776819_0.5625680632070116"},"_hasShrinkwrap":false},"2.0.20":{"name":"parsegraph","version":"2.0.20","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.20","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-yhKJLAU5uXGqxA4QqhndviPCKMyHVZA55n4FHtb/MsHhAN2JSPWDIPp8rFccyZlVoPlWD0EV5wYq/w7rKLVtqQ==","shasum":"c0761db9f1b702e3eb0782ee259ab75fc4f4539e","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.20.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNiSNcN8976hhFEXLHN/GUJ1dTJSGUHBUYs3/nqgPIHgIgJOwUcyZfH+6ErXeg+KlO1NPK9l3qyuS7pykQRTdvQ0k="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.20_1696030064775_0.8942431219009188"},"_hasShrinkwrap":false},"2.0.21":{"name":"parsegraph","version":"2.0.21","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.21","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-xXroQTGYvColz8lNHBDkKSsqn3OzS4AMXAfGoXAaSIxCMCyBaViVz4Wi7Szxe9Gp7G2sAe+hbbWAmMmrYyKz4w==","shasum":"e4db2a3b1fad1fe3007255d4f0044a692ddc41d7","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.21.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmKWvHjfInlx6cWIeO2JdmJiEt+MrqtcoERLNU8IpPcgIgaSr6hDwlUGhTwpO6w2r7/3tFrPybSJcYoR3RjEQNVd4="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.21_1696030387884_0.7107060913926702"},"_hasShrinkwrap":false},"2.0.22":{"name":"parsegraph","version":"2.0.22","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.22","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"dac7ba5d81ec3ea197985abe65d5bb71948464df","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-oxz/slfoei22nYScUYsdV7ngCqujZjImBG6c3TsJOOx9q6pijaB8+BHzaIulD97H2MCTFeI4SUIve4sXkl5KXw==","shasum":"4ceb4fb2372932685ca42e842625b3320f57eb38","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.22.tgz","fileCount":77,"unpackedSize":678467,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIERwixOZUfExAXVSY53ooKFKT95VjOnM5PBVpdD3xWDdAiEAvrL1XgrpV0YbiZxkVQYBZyD3Aj/Ha9w0MTi4z6+kKGg="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.22_1696030473964_0.7990922062060137"},"_hasShrinkwrap":false},"2.0.23":{"name":"parsegraph","version":"2.0.23","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.23","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"4ed63f9f4c9d28528a45648a126d33cf5c7beaf6","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-delXtY7TXVXTq6eayEEH6hbzWd8twsMZcHvAxDSbvn5uWzRTuZ+TPgFqfpSCJqhU1+nJYoYTwHSc7f8dsJotxw==","shasum":"6d4c43c5bb33feb56bda92de617684d03fc9ef37","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.23.tgz","fileCount":3,"unpackedSize":3692,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZGQwTWAI3E9APb2/fry8R4GbhC4w8amrFWzny3zNRiAiEAhqjyXXUWI7I1jFjO9xeZjo85IyadxdJRkYBjsbO8nLg="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.23_1696047301163_0.5180797773559254"},"_hasShrinkwrap":false},"2.0.24":{"name":"parsegraph","version":"2.0.24","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.24","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"4ed63f9f4c9d28528a45648a126d33cf5c7beaf6","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-XAAj9jp08x3A/IKBbO0UB3dNKSUfIiiaBvL9SzdEGOeGDwNDSoAsv27MVqkoHcdu3Ko0VZi8NS1splNueCumeQ==","shasum":"a06ff201f388f0ff86c4b316eb0a14c7c1880b14","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.24.tgz","fileCount":79,"unpackedSize":659223,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLZhHlhz1/1xIvu5qv8265DyGAd+u/HZ53DjDlGbeSCgIgU4/unOU2T05oNmpUMOFTsdjAnHYI27iVNcOt00YD4/I="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.24_1696047415067_0.46548670483454213"},"_hasShrinkwrap":false},"2.0.25":{"name":"parsegraph","version":"2.0.25","description":"DirectionNode and CommitLayoutData","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.0.25","readme":"# parsegraph-layout\n\nThis project contains LayoutNode and LayoutCaret, which represent\nthe non-graphical Parsegraph API.\n","readmeFilename":"README.md","gitHead":"86fbd1bf5bfb0dba91b265caf66fad3224e7df1a","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-RvxoJvlUsG4raekrQCqsQfl5wagE6sMeDY4jUV9RomE2UN30rcTJ9Vnhx3LxLvGlywbZRBjEy8FvoMC3udrqTQ==","shasum":"5e26caf3593fac890dfa4b1e657ae7d01a0cfe83","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.0.25.tgz","fileCount":79,"unpackedSize":659223,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG2QmzIzO7v1Uq6BT8Zv2lqPXIhnElAtQQ6SUKhW6lyrAiA2q03+zjP+BPcEv5zBv7OoWvpcMEYUfQMKN17Sa4E+Vw=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.0.25_1696048677990_0.6795524758461913"},"_hasShrinkwrap":false},"2.1.0":{"name":"parsegraph","version":"2.1.0","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.1.0","readme":"# Code example:\n\n```\nimport { \n  CommitLayout,\n  DirectionNode,\n  paintNodeBounds,\n  Size,\n} from \"parsegraph\";\n\nconst buildGraph = () => {\n  // TODO Build a graph.\n  return new DirectionNode(\"Hello, world\");\n};\n\nconst rootNode = buildGraph();\n\nconst cld = new CommitLayout(rootNode, {\n  size: (node: DirectionNode, size: Size) => {\n    // TODO Provide the size of the node to the size object.\n    // This will be called for every DirectionNode.\n    size.setWidth(24);\n    size.setHeight(80);\n  },\n  getSeparation: () => {\n    // TODO return the minimum separation between two DirectionNodes.\n    // The same value can be called for every neighbor.\n    return 0;\n  },\n  paint: (pg: DirectionNode): boolean => {\n    // TODO pre-render content as necessary\n    // This is optional.\n    return false;\n  }\n});\n\n// Paint the graph and build the scene.\nwhile (cld.crank());\n\n// Render the graph.\nrootNode.paintGroup().forEach((pg: DirectionNode) => {\n  pg.forEachNode(node => {\n    paintNodeLines(node, (x, y, w, h) => {\n      // TODO Draw lines from node to neighbor.\n    });\n    paintNodeBounds(node, (x, y, w, h) => {\n      // TODO Draw node.\n    });\n  });\n});\n\n```\n\n# What is parsegraph?\n\nParsegraph is a platform-independent library to paint a graph of connected\nvalues in up to five directions.\n\n# What is DirectionNode?\n\nA DirectionNode is a class that can have DirectionNode \"neighbors\" in up to five\ndirections:\n\n- inward\n- upward\n- downward\n- forward\n- backward\n\nA DirectionNode can also hold a value, optionally of a given type.\n\nA DirectionNode maintains a Morris traversal between its neighbors and their\nneighbors and so on. This is called a DirectionNode's \"siblings\".\n\nThe connection between two DirectionNodes is parent-child, so there always is a\nroot DirectionNode for a given DirectionNode. Each neighbor keeps a reference\nto its parent DirectionNode.\n\nA DirectionNode also maintains a connection to a parent \"paint group\" which\nallows traversal to other paint groups in a larger graph.\n\n# What is commit layout?\n\nCommitLayout is the algorithm that computes and populates the Layout for a\ngiven DirectionNode and its neighbors.\n\n### Axis\n\nIt does this by laying out an axis of two DirectionNodes neighbors that are\nacross from each other, relative to a parent DirectionNode.\n\n* Z axis (inward)\n* Vertical axis (upward and downward)\n* Horizontal axis (backward and forward)\n\n### PreferredAxis\n\nThe Z axis axis is always laid out before vertical and horizontal axes.\n\nThe vertical and horizontal axes are laid out according to the NeighborNode's\nPreferredAxis property. The first axis is separated with two neighbors between\nonly the parent. The second axis is separated - perpendicular to the first axis\n- with two neighbors between the combination of the parent and the two\nfirst-axis neighbors. So naturally the second axis will be further from the\nparent than the first axis.\n\nThe \"pull\" API on carets and nodes lets the caller specify a direction and\nhave it converted into the right PreferredAxis.\n\nWhen pulling in a Direction, that Direction is converted to an Axis. Then, if\nthe DirectionNode has a parent, then that Axis is compared with the parent axis\nto choose between PARENT (the same axis as the parent direction) or\nPERPENDICULAR. If the DirectionNode is a root node, either VERTICAL or\nHORIZONTAL is used.\n\nWhen a DirectionNode is disconnected from its parent, and it is using PARENT or\nPERPENDICULAR, then that PreferredAxis is converted to VERTICAL or HORIZONTAL\nbased on what the DirectionNode last was.\n\n* `PreferredAxis.VERTICAL`\n* `PreferredAxis.HORIZONTAL`\n* `PreferredAxis.PARENT`\n* `PreferredAxis.PERPENDICULAR`\n\n###\n\nThe layout takes these actions for each axis:\n\n1. It aligns each neighbors relative to each other.\n2. It computes a minimum separation distance between each DirectionNode neighbor.\n3. It positions each neighbor relative to their parent.\n4. It combines the layout of the neighbors and the layout of the parent into a\ncommon group layout.\n\nThis is done iteratively for the entire graph, starting with the deepest nodes\nfirst. Every separation and combination is always taking place with fully laid\nout descendents, until finally the root and thus the entire graph is laid out.\n\n# Performance\n\nA sufficiently large graph of DirectionNodes will take intolerably long to\nimmediately render per frame.\n\n## Use PaintGroups\n\nOften it is rare that the entire graph is on-screen at one time, so the graph\ncan be split into two or more pieces. Since each DirectionNode keeps track of\nthe size of its content, its easy to see at render time if a DirectionNode or\nany of its descendents would be on-screen. If they wouldn't be, then they can\nbe skipped altogether.\n\nSometimes many sections of the graph are not changing. In these cases, paint\ngroups that did not change are not repainted and the paint() callback is not\ncalled when the CommitLayout algorithm is run.\n\n* `DirectionNode.crease` - make the current node a PaintGroup\n* `DirectionNode.uncrease` - merge the current node into the parent's paint group\n\n\n## Use simpler rendering at extreme scales\n\nAt render-time, the scale of each paint group can also be used to determine if\nor how it is rendered.\n\nYou can hook into the CommitLayout's LayoutPainter paint(pg: DirectionNode)\ncallback and render the every node in the paint group into a single render call\nusing their group position. Then, at render time, you pass a world matrix to\nyour render call that is the absolute position of that paint group. Both the\ngroup and the absolute position are computed using the CommitLayout\nalgorithm.\n","readmeFilename":"README.md","gitHead":"f30e46d46b332949a6edd7eacc835f0705a5230f","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-1Ce0+nE4oonvjIlp525T0mhXhuYYkdcxKXuy5zCBvizMB2s9WmObBgYdtJH2NGr5aXT7BQUTeHt+W533GMh+Bw==","shasum":"de03541117dca0bda1b97c88610600fbbb43ccab","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.1.0.tgz","fileCount":277,"unpackedSize":6446637,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/4tOkNVqY78aFgkPkAI309bt5gta+S/27aV9ayj68cAiA/JfRjHRtRw0zCShD4MPGP0bPi6gidbIenA07f/BWdEA=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.1.0_1696148190572_0.6215062175657948"},"_hasShrinkwrap":false},"2.2.0":{"name":"parsegraph","version":"2.2.0","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@2.2.0","readme":"# Code example:\n\n```\nimport { \n  CommitLayout,\n  DirectionNode,\n  paintNodeBounds,\n  Size,\n} from \"parsegraph\";\n\nconst buildGraph = () => {\n  // TODO Build a graph.\n  return new DirectionNode(\"Hello, world\");\n};\n\nconst rootNode = buildGraph();\n\nconst cld = new CommitLayout(rootNode, {\n  size: (node: DirectionNode, size: Size) => {\n    // TODO Provide the size of the node to the size object.\n    // This will be called for every DirectionNode.\n    size.setWidth(24);\n    size.setHeight(80);\n  },\n  getSeparation: () => {\n    // TODO return the minimum separation between two DirectionNodes.\n    // The same value can be called for every neighbor.\n    return 0;\n  },\n  paint: (pg: DirectionNode): boolean => {\n    // TODO pre-render content as necessary\n    // This is optional.\n    return false;\n  }\n});\n\n// Paint the graph and build the scene.\nwhile (cld.crank());\n\n// Render the graph.\nrootNode.paintGroup().forEach((pg: DirectionNode) => {\n  pg.forEachNode(node => {\n    paintNodeLines(node, (x, y, w, h) => {\n      // TODO Draw lines from node to neighbor.\n    });\n    paintNodeBounds(node, (x, y, w, h) => {\n      // TODO Draw node.\n    });\n  });\n});\n\n```\n\n# What is parsegraph?\n\nParsegraph is a platform-independent library to paint a graph of connected\nvalues in up to five directions.\n\n# What is DirectionNode?\n\nA DirectionNode is a class that can have DirectionNode \"neighbors\" in up to five\ndirections:\n\n- inward\n- upward\n- downward\n- forward\n- backward\n\nA DirectionNode can also hold a value, optionally of a given type.\n\nA DirectionNode maintains a Morris traversal between its neighbors and their\nneighbors and so on. This is called a DirectionNode's \"siblings\".\n\nThe connection between two DirectionNodes is parent-child, so there always is a\nroot DirectionNode for a given DirectionNode. Each neighbor keeps a reference\nto its parent DirectionNode.\n\nA DirectionNode also maintains a connection to a parent \"paint group\" which\nallows traversal to other paint groups in a larger graph.\n\n# What is commit layout?\n\nCommitLayout is the algorithm that computes and populates the Layout for a\ngiven DirectionNode and its neighbors.\n\n### Axis\n\nIt does this by laying out an axis of two DirectionNodes neighbors that are\nacross from each other, relative to a parent DirectionNode.\n\n* Z axis (inward)\n* Vertical axis (upward and downward)\n* Horizontal axis (backward and forward)\n\n### PreferredAxis\n\nThe Z axis axis is always laid out before vertical and horizontal axes.\n\nThe vertical and horizontal axes are laid out according to the NeighborNode's\nPreferredAxis property. The first axis is separated with two neighbors between\nonly the parent. The second axis is separated - perpendicular to the first axis\n- with two neighbors between the combination of the parent and the two\nfirst-axis neighbors. So naturally the second axis will be further from the\nparent than the first axis.\n\nThe \"pull\" API on carets and nodes lets the caller specify a direction and\nhave it converted into the right PreferredAxis.\n\nWhen pulling in a Direction, that Direction is converted to an Axis. Then, if\nthe DirectionNode has a parent, then that Axis is compared with the parent axis\nto choose between PARENT (the same axis as the parent direction) or\nPERPENDICULAR. If the DirectionNode is a root node, either VERTICAL or\nHORIZONTAL is used.\n\nWhen a DirectionNode is disconnected from its parent, and it is using PARENT or\nPERPENDICULAR, then that PreferredAxis is converted to VERTICAL or HORIZONTAL\nbased on what the DirectionNode last was.\n\n* `PreferredAxis.VERTICAL`\n* `PreferredAxis.HORIZONTAL`\n* `PreferredAxis.PARENT`\n* `PreferredAxis.PERPENDICULAR`\n\n###\n\nThe layout takes these actions for each axis:\n\n1. It aligns each neighbors relative to each other.\n2. It computes a minimum separation distance between each DirectionNode neighbor.\n3. It positions each neighbor relative to their parent.\n4. It combines the layout of the neighbors and the layout of the parent into a\ncommon group layout.\n\nThis is done iteratively for the entire graph, starting with the deepest nodes\nfirst. Every separation and combination is always taking place with fully laid\nout descendents, until finally the root and thus the entire graph is laid out.\n\n# Performance\n\nA sufficiently large graph of DirectionNodes will take intolerably long to\nimmediately render per frame.\n\n## Use PaintGroups\n\nOften it is rare that the entire graph is on-screen at one time, so the graph\ncan be split into two or more pieces. Since each DirectionNode keeps track of\nthe size of its content, its easy to see at render time if a DirectionNode or\nany of its descendents would be on-screen. If they wouldn't be, then they can\nbe skipped altogether.\n\nSometimes many sections of the graph are not changing. In these cases, paint\ngroups that did not change are not repainted and the paint() callback is not\ncalled when the CommitLayout algorithm is run.\n\n* `DirectionNode.crease` - make the current node a PaintGroup\n* `DirectionNode.uncrease` - merge the current node into the parent's paint group\n\n\n## Use simpler rendering at extreme scales\n\nAt render-time, the scale of each paint group can also be used to determine if\nor how it is rendered.\n\nYou can hook into the CommitLayout's LayoutPainter paint(pg: DirectionNode)\ncallback and render the every node in the paint group into a single render call\nusing their group position. Then, at render time, you pass a world matrix to\nyour render call that is the absolute position of that paint group. Both the\ngroup and the absolute position are computed using the CommitLayout\nalgorithm.\n","readmeFilename":"README.md","gitHead":"c998047408af21af11607802b4bed4de45cf071c","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-/7uVFDrVjFSpSyZSTz/499CGbt/hAh7oI28vTmd5HLGJbZ9KXwawga/zoyYvcwur90OD/U8NF0DdZuaOvI1AtQ==","shasum":"947da7a81ff5a5d2964d7bec30e2db04a13cd507","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-2.2.0.tgz","fileCount":277,"unpackedSize":6452771,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPkGWBIUQbQErjs0/ESSE3fjwdLDxG2pwb2W88+ZY1cgIhAI60NdIXHrR0alFM955cA4ChK746Jx8aimuWxvwxbdmn"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_2.2.0_1696148808167_0.9421557560108389"},"_hasShrinkwrap":false},"3.0.1":{"name":"parsegraph","version":"3.0.1","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src test","lint":"yarn prettier && npx eslint --fix 'src/**' 'test/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@3.0.1","readme":"# Code example:\n\n```\nimport { \n  CommitLayout,\n  DirectionNode,\n  paintNodeBounds,\n  Size,\n} from \"parsegraph\";\n\nconst buildGraph = () => {\n  // TODO Build a graph.\n  return new DirectionNode(\"Hello, world\");\n};\n\nconst rootNode = buildGraph();\n\nconst cld = new CommitLayout(rootNode, {\n  size: (node: DirectionNode, size: Size) => {\n    // TODO Provide the size of the node to the size object.\n    // This will be called for every DirectionNode.\n    size.setWidth(24);\n    size.setHeight(80);\n  }\n});\n\n// Paint the graph and build the scene.\nwhile (cld.crank());\n\n// Render the graph.\nrootNode.paintGroup().forEach((pg: DirectionNode) => {\n  pg.forEachNode(node => {\n    paintNodeLines(node, (x, y, w, h) => {\n      // TODO Draw lines from node to neighbor.\n    });\n    paintNodeBounds(node, (x, y, w, h) => {\n      // TODO Draw node.\n    });\n  });\n});\n\n```\n\n# What is parsegraph?\n\nParsegraph is a platform-independent library to paint a graph of connected\nvalues in up to five directions.\n\n# What is DirectionNode?\n\nA DirectionNode is a class that can have DirectionNode \"neighbors\" in up to five\ndirections:\n\n- inward\n- upward\n- downward\n- forward\n- backward\n\nA DirectionNode can also hold a value, optionally of a given type.\n\nA DirectionNode maintains a Morris traversal between its neighbors and their\nneighbors and so on. This is called a DirectionNode's \"siblings\".\n\nThe connection between two DirectionNodes is parent-child, so there always is a\nroot DirectionNode for a given DirectionNode. Each neighbor keeps a reference\nto its parent DirectionNode.\n\nA DirectionNode also maintains a connection to a parent \"paint group\" which\nallows traversal to other paint groups in a larger graph.\n\n# What is commit layout?\n\nCommitLayout is the algorithm that computes and populates the Layout for a\ngiven DirectionNode and its neighbors.\n\n### Axis\n\nIt does this by laying out an axis of two DirectionNodes neighbors that are\nacross from each other, relative to a parent DirectionNode.\n\n* Z axis (inward)\n* Vertical axis (upward and downward)\n* Horizontal axis (backward and forward)\n\n### PreferredAxis\n\nThe Z axis axis is always laid out before vertical and horizontal axes.\n\nThe vertical and horizontal axes are laid out according to the NeighborNode's\nPreferredAxis property. The first axis is separated with two neighbors between\nonly the parent. The second axis is separated - perpendicular to the first axis\n- with two neighbors between the combination of the parent and the two\nfirst-axis neighbors. So naturally the second axis will be further from the\nparent than the first axis.\n\nThe \"pull\" API on carets and nodes lets the caller specify a direction and\nhave it converted into the right PreferredAxis.\n\nWhen pulling in a Direction, that Direction is converted to an Axis. Then, if\nthe DirectionNode has a parent, then that Axis is compared with the parent axis\nto choose between PARENT (the same axis as the parent direction) or\nPERPENDICULAR. If the DirectionNode is a root node, either VERTICAL or\nHORIZONTAL is used.\n\nWhen a DirectionNode is disconnected from its parent, and it is using PARENT or\nPERPENDICULAR, then that PreferredAxis is converted to VERTICAL or HORIZONTAL\nbased on what the DirectionNode last was.\n\n* `PreferredAxis.VERTICAL`\n* `PreferredAxis.HORIZONTAL`\n* `PreferredAxis.PARENT`\n* `PreferredAxis.PERPENDICULAR`\n\n###\n\nThe layout takes these actions for each axis:\n\n1. It aligns each neighbors relative to each other.\n2. It computes a minimum separation distance between each DirectionNode neighbor.\n3. It positions each neighbor relative to their parent.\n4. It combines the layout of the neighbors and the layout of the parent into a\ncommon group layout.\n\nThis is done iteratively for the entire graph, starting with the deepest nodes\nfirst. Every separation and combination is always taking place with fully laid\nout descendents, until finally the root and thus the entire graph is laid out.\n\n# Performance\n\nA sufficiently large graph of DirectionNodes will take intolerably long to\nimmediately render per frame.\n\n## Use PaintGroups\n\nOften it is rare that the entire graph is on-screen at one time, so the graph\ncan be split into two or more pieces. Since each DirectionNode keeps track of\nthe size of its content, its easy to see at render time if a DirectionNode or\nany of its descendents would be on-screen. If they wouldn't be, then they can\nbe skipped altogether.\n\nSometimes many sections of the graph are not changing. In these cases, paint\ngroups that did not change are not repainted and the paint() callback is not\ncalled when the CommitLayout algorithm is run.\n\n* `DirectionNode.crease` - make the current node a PaintGroup\n* `DirectionNode.uncrease` - merge the current node into the parent's paint group\n\n\n## Use simpler rendering at extreme scales\n\nAt render-time, the scale of each paint group can also be used to determine if\nor how it is rendered.\n\nYou can hook into the CommitLayout's LayoutPainter paint(pg: DirectionNode)\ncallback and render the every node in the paint group into a single render call\nusing their group position. Then, at render time, you pass a world matrix to\nyour render call that is the absolute position of that paint group. Both the\ngroup and the absolute position are computed using the CommitLayout\nalgorithm.\n","readmeFilename":"README.md","gitHead":"fd32eaccf52882ce2f88d4e935e053c0cc39fd3e","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-A7ltdVL52usn79J1l9EcvYop2liprfSfB38ztvGh2h1zKvnJJq4p8RdmkGlN1mkLOz+wC4xmteOqDc9h5rBn1A==","shasum":"ac924ee66739e078912e156e9dc5a8c83e5e6f25","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-3.0.1.tgz","fileCount":329,"unpackedSize":7147161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqxL6ZcqMJmGHdMJvvlcRvY8ifjwi8i0hs4fDbEwhX/AIhAN10UxXSor9uDfQtmYX0R/EDMWn7Vn8jpb9ZAb+pXL/8"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_3.0.1_1696164196330_0.048064670675244114"},"_hasShrinkwrap":false},"3.0.2":{"name":"parsegraph","version":"3.0.2","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@3.0.2","gitHead":"ee6ae16b6020c19d7ae5275134829641957e1273","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-Tahsx7PuaF7bz3x4fuAXLj4lDouSrsVgQZvCGkFjdFeN84L0ZTwe75hYYYFJfib0+cK2fcjQpl0IrqfD8OAWxQ==","shasum":"86b16cc244d8f40a6feff9b755b82d9098c5736e","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-3.0.2.tgz","fileCount":223,"unpackedSize":2438691,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeiKyXKZ+0r+2+wAW+zXmyPmk3F8+NR0mLZMeTeK9/vAiBb75Jd3gqS+96ZXUagjU0jH9t/sz9HP0H/wJP8GQz6Qg=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_3.0.2_1696203732245_0.8032530592799185"},"_hasShrinkwrap":false},"3.0.3":{"name":"parsegraph","version":"3.0.3","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@3.0.3","gitHead":"2aa0d945114ab51e1065d387f93b4202cecc689d","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-5iMh0XN4EVKZH0S3j6Chs7M5swvYALBTAFHSz4G/M23o9n21xfTtJTSmoTjuIQ450J94JVDlIUw8c+2QB4E8uQ==","shasum":"ca2c3bd0c22b0d7985ffb15f5e4494e7e0dad056","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-3.0.3.tgz","fileCount":223,"unpackedSize":2438691,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICFZquTJjC9WDztCHYHFPcAl0t3k5+qkeSGIQVk8yGfOAiAn72Wrd6cK40YuDsEtxIKWhBelmChFtC85DSWdvbhmaA=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_3.0.3_1696203836945_0.3981304171613229"},"_hasShrinkwrap":false},"3.0.4":{"name":"parsegraph","version":"3.0.4","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@3.0.4","gitHead":"cd194183cb481a15826bfe6c6de02d62989b8623","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-bF09p5rB9mk8NS3IBv+3mm2nP0byDFL7Nkkb6syR40GJhmChEYEel4x2qvoR+wvrHEcWk7cK9bHk1FV7Y7PFAA==","shasum":"438eef0143298fb424c90ec0ec5827247e6ff54e","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-3.0.4.tgz","fileCount":145,"unpackedSize":724236,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXam8rC7SLAyyiKYf6liec2VLVd4ju7QpvOk/YI4vcDAIhAK+P1+O4WgMQII5sZ6mTJJuNSelzvzXsdi+JCRMRqb0G"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_3.0.4_1696204006887_0.4908921336891099"},"_hasShrinkwrap":false},"4.0.0":{"name":"parsegraph","version":"4.0.0","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@4.0.0","gitHead":"12b59e9cdb689ecd20523884cfee454633786ffa","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-leXmDB2ZgRYu8veTJ4/wZdHeSNKKHn1n1v8k8hJjOtuLQG0HgrQLzMWy0MF0vhCIFMwPp2kOTQ18v2FYRJFAdA==","shasum":"31b220ac410ec33ba813c97cc947c295092423a4","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-4.0.0.tgz","fileCount":141,"unpackedSize":678273,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAU08eMMco4r15X32ukdwWlu36SBAK1Vo5YWk8yhUR9aAiEA8EuhghXAj7NYRDMHQcqQRgLxyvxt+f1ACMjJ+Eqlfec="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_4.0.0_1696379100618_0.46629226644600896"},"_hasShrinkwrap":false},"5.0.0":{"name":"parsegraph","version":"5.0.0","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@5.0.0","gitHead":"294a967650a9efe2825432a7a99610bd3dbf861d","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-IIEV3io7WqcllnFPSsOLOYpOsngjX1/KvjPF/VcbzZDrg+wAe9HnX6ZFqkyROgfIWyf2oW1RodtTmK8mQQaSpQ==","shasum":"c4df5baabb719262b9c683787434544e0fc8a89a","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-5.0.0.tgz","fileCount":143,"unpackedSize":678654,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICirsCkez7Yx+7yIqyhFqwT1cFMWnqWUtGuVCahiNzXMAiEA53LMauTqUmZsIUYgSMUu8Ln5bjoGxQ+oFz7XD1dQtcM="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_5.0.0_1696418324483_0.019720804808706083"},"_hasShrinkwrap":false},"5.0.1":{"name":"parsegraph","version":"5.0.1","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@5.0.1","gitHead":"44c8ebdc6a13f8c1bd9c7b1cfc2eaf264a7b32dc","_nodeVersion":"20.8.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-dC8U3E7NfsUpSLgJA+SzfzV77yb9gNdn68HYc3Ef8YwAju0RIQ5NLw64GSPQ0gETmTzBh9C7C+nvKugJbQ8NLA==","shasum":"de0c0c1afb2f0de7edef2bb987306947a23dd0ce","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-5.0.1.tgz","fileCount":143,"unpackedSize":676915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYkuJxZXeje/tVOP/VrgwmqTj8oOI6YuiLzwZtm64u8AIhAKQZQmcgn4asu472SCP964S43sPoOM7PEl69NaW9LYbL"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_5.0.1_1696933887222_0.3959241766262813"},"_hasShrinkwrap":false},"6.0.1":{"name":"parsegraph","version":"6.0.1","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint":"yarn prettier && npx eslint --fix 'src/**'","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.0.1","gitHead":"d00d04afd282446e38ec93ec1e0d71896d117732","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-xBz2apfAWh0C9vR9+BuV1olx3TLYzEH/94mhDtncxK6ETWFw6qek0bcQ79nju7jBjPx5W5cSr3YDY9rRUCSoeg==","shasum":"59c67bf83f8ebe0a2829fd6b39f3f4d1fb3479e9","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.0.1.tgz","fileCount":151,"unpackedSize":693856,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGljWNe65HgWHSGHb0NKPMSGaF7EZH3YMw+6Jl0bkSfMAiBmSlwTq5eJMNzR9lWdM+j1NAd1S6Q2tLNXIY5AfevELw=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.0.1_1708483674503_0.3183882870468777"},"_hasShrinkwrap":false},"6.1.0":{"name":"parsegraph","version":"6.1.0","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.0","gitHead":"b0fdffc336bf9b7b05ea66ebd257f00dd756d24a","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-ZwVYLOl4T4qSQvoSpvNei+SAfShNEKiYug+37q3DjqJAAk8I7CaU/2RvyU1SuFdyFMzIvqeI0snwlIyHnNep+Q==","shasum":"4bf3a2884029e38299434c718eb3f21378d9f70a","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.0.tgz","fileCount":151,"unpackedSize":694315,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdpTrnGUuXfjb5UCheal60agbJV3mlyrOqxnMEwlxIaAIhAKJ8oK/TJtYx2FWN3aR5JHBTKcjRwZ7xvIPmjRPI4vdb"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.0_1708667471315_0.05406770536375727"},"_hasShrinkwrap":false},"6.1.1":{"name":"parsegraph","version":"6.1.1","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.1","gitHead":"0904f7d210962d8dd734e618bcb44efc2022ca06","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-qIuMt/9WPhwsJ/emb/jthLRo0bdNY/OqNzTSNSPQPvH/s3/nQZMemaxxVvaAUfWrSy1l7WiOJphRf67RdALc/Q==","shasum":"ffe37cf6700c396987a94e9d085a6bec23d326e7","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.1.tgz","fileCount":151,"unpackedSize":694661,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMsLEo1BAzXwqkVmEYwSoAY0rgUAqgbHxeC+7yAT4g/QIhAPAYnGr/zMRKUHyp6zpikmNWiOcV4Qfkkjk7LmjnaItk"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.1_1708676698073_0.019197345535177934"},"_hasShrinkwrap":false},"6.1.2":{"name":"parsegraph","version":"6.1.2","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.2","gitHead":"f94737fd5b20522ad3ca238c96db6f8241a98c21","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-qGIL69AglJ8vTOvhW42arlXDcvWP0Ah1SavHdEWY+4ieZbyU3/5+7vyKa/iT9nqA1+XuVdxsYHzh9CN5mk8XyQ==","shasum":"73bd7c6b7b5f51ccafe3de352bd7bd210d359f0f","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.2.tgz","fileCount":151,"unpackedSize":694883,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICA4VqnEjwZB83p3ynPEx5HLOClZjBoqEi6wVQKPeur2AiEA7/0av9mqf4ft5JSHXOwkhLtM9jfcWFXsz77Z45KW8n0="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.2_1708752525361_0.08948269611390813"},"_hasShrinkwrap":false},"6.1.3":{"name":"parsegraph","version":"6.1.3","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.3","gitHead":"d4d55c92f68c8577e83d18bd1f7539102fd29b01","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-yfLQ46se5gLTFJ072IZayYotxIND7098crh6kZZoJeKKiVGybZiT5Z7itMFkZc5GtEuFY2pboyK+ebBMIC5Sdg==","shasum":"eaae9aadcda0f812afcd366910dcd0d9cfcd358b","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.3.tgz","fileCount":151,"unpackedSize":694970,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDCzWzftjcODFViRXeMEH37cYgS9JG35q09pdyPQRGtRQIgcOX1sMtU1qCtwa8OzEpo1iQxcSwPUYQ5xQRJTKMGYYQ="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.3_1708832114027_0.7656999705096317"},"_hasShrinkwrap":false},"6.1.4":{"name":"parsegraph","version":"6.1.4","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.4","gitHead":"92dd8b38e92d3516f530128a534ce1d3f35d1697","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-MFyh4+WzOyWpLWcc/XoOoE+tN4cuBTwQLvOpQRRYK9KRUcE0xvYArGR6CipZXCjHCKOpVA0R+vtes9QWDCE6Dw==","shasum":"bc709b034d21d27a75fc567f3a786c024b46fb72","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.4.tgz","fileCount":151,"unpackedSize":692700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAw2O3HHf4i8wQ8cMJk/B81UqFq/RkXLaxRQfCb/6v67AiBGB7yLL81RzfPJpyseziWdTahFslY92yOXMQfVnegJMA=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.4_1709438357900_0.5136351224885929"},"_hasShrinkwrap":false},"6.1.5":{"name":"parsegraph","version":"6.1.5","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.5","gitHead":"00fce5a1ec8d57f592cbffd677e242999fd32d4d","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-sfvfJAH9spNzltPMKwq2mUtLZE9h7VaQvknIgBbX8U1Q9SLN6KLlSy+lYDlDpI5qvGb7g8Yk2k6baIvcQn68Tw==","shasum":"d158d1b7476748c36fce9036a93951fd398c2cb5","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.5.tgz","fileCount":151,"unpackedSize":692583,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdwY7d0kx3V6ZEjVSRhe+g9Q5HevMjkKuEspFUk+bnnAiEA1TyiSDV2us3lYusYLf/eEbzqRESJRXbFZLkJkLk+ioc="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.5_1709444742700_0.4237767644366939"},"_hasShrinkwrap":false},"6.1.6":{"name":"parsegraph","version":"6.1.6","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.6","gitHead":"8a3b6ee2b33e4147315af328694e3cc36f047166","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-AcYjXN8x8xSCFU4JQgJgbkefur1GdvAbKq30gjTPhkY9WPHqj+ZfyxwVsqMpt73O8GF6vhp0O8TTHl63fgzZ7w==","shasum":"c438cbc38fe75b58a7c6d11efae496e64043a36a","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.6.tgz","fileCount":153,"unpackedSize":699154,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWxLCm0sx8d8pcWuxk7Ovpa0MEizDhbn4jggLEcaemsAIhALqnEwLV8445/V7SdDofETSeq9qXpTM+GrV7LrtsspaS"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.6_1709607911771_0.1913883581413922"},"_hasShrinkwrap":false},"6.1.7":{"name":"parsegraph","version":"6.1.7","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.7","gitHead":"74299edee39ebdf5215ea3fb1272741249918142","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-7BLaCNGjkhcdH7PvYeCTSMQqGVYE6DJHwjghYn69/JzYGx/9FiZ1LUHTZZysdKPLGKLmbwa+IcSjVtycVNPpdA==","shasum":"ed04a5e17515405a7ba006f50013e5dfa271ebbc","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.7.tgz","fileCount":155,"unpackedSize":702309,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDtWTxOmZzpP1yjfBW9ytsOy44b1AaJWajznG+ou8zOgIhAKiakpj3H/gKgR09Mv05+4/+wXB8DOGmAZmXdu8h3Lhx"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.7_1709627230572_0.033778563296494424"},"_hasShrinkwrap":false},"6.1.8":{"name":"parsegraph","version":"6.1.8","description":"DirectionNode and CommitLayout","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Aaron Faanes"},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://github.com/dafrito/parsegraph#readme","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.8","gitHead":"7ded48ca3a89f1988aa0fd333667d6d4f4408cf3","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-ckIFLHLDHKkm0RNyvwCRpeQUAD9JZ/VesgCXai2y0Gl0iIW5TdCCkBSTNkzAL1b02QA008yyqGXBdyBVZtoD2A==","shasum":"3af7ba8e345cbfacc9a6ef04656bf7f7a51b07df","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.8.tgz","fileCount":155,"unpackedSize":702296,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHhwH3QlLODfSHUt4Q1GSzGD2GPjgbQ5BNd8oOv7sSaoAiAV6FLJUz7kygtUM/sP7JHZC2JIQdrokAoeUtKaJA7YIA=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.8_1709714946530_0.05556375543184866"},"_hasShrinkwrap":false},"6.1.9":{"name":"parsegraph","version":"6.1.9","description":"Parsegraph layout algorithm for graphs","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Rainback, Inc."},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://parsegraph.com","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.1.9","gitHead":"af840853cac9cf2fb7f5e2c0de03493a1c1b7e33","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-ri6KnCiN21qUBnqzpeqso17n9llTODeRq2KRFOSxqhLJQ02CPCbn9RKy/v/BxTqTO5k+pzGV8wWbZvWuGxRPfw==","shasum":"0b80c4c2c67bed4769faed049fdba1c21686681d","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.1.9.tgz","fileCount":155,"unpackedSize":702284,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCf6JW2ds0QUJOwJSWV/UpHerdRF3t6xPaNwjrTtxXRswIhAK82tL6AITyTehnEHb4GV80ZRl6wVyQZG6IacI75CixF"}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.1.9_1709719584608_0.04191019156670772"},"_hasShrinkwrap":false},"6.2.0":{"name":"parsegraph","version":"6.2.0","description":"Parsegraph layout algorithm for graphs","main":"dist/src/index.js","types":"dist/src/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Rainback, Inc."},"license":"MIT","bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"homepage":"https://parsegraph.com","devDependencies":{"@babel/cli":"^7.20.7","@babel/core":"^7.20.12","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-proposal-private-property-in-object":"^7.20.5","@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.18.6","@babel/register":"^7.18.9","@types/chai":"^4.3.4","@types/jest":"^29.4.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.50.0","@typescript-eslint/parser":"^5.50.0","babel-jest":"^29.4.1","babel-loader":"^9.1.2","chai":"^4.3.7","eslint":"^8.33.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.6.0","jest":"^29.4.1","jest-environment-jsdom":"^29.4.1","jsdom":"^21.1.0","jsdom-global":"^3.0.2","prettier":"^2.8.3","raw-loader":"^4.0.2","source-map-loader":"^4.0.1","source-map-support":"^0.5.21","ts-loader":"^9.4.2","ts-node":"^10.9.1","typedoc":"^0.23.24","typescript":"^4.9.5","webpack":"^5.75.0","webpack-cli":"^5.0.1"},"scripts":{"all":"yarn lint && yarn test:cov && yarn build && yarn doc","build":"webpack --mode development --config config/webpack.config.js","build:watch":"yarn build --watch","build:prod":"NODE_ENV=production webpack --mode production --config config/webpack.prod.js","build:prod:watch":"NODE_ENV=production yarn build:prod --watch","dependencygraph":"ts_dependency_graph --start src/index.ts --graph_folder | dot -T svg > dependencygraph.svg","test":"jest --env=jsdom --no-cache","test:watch":"yarn test --watch","test:cov":"yarn test --coverage --coverageDirectory=dist/coverage","prettier":"prettier --write src","lint:ci":"yarn prettier && npx eslint --fix 'src/**' --ignore-pattern '*.spec.js' --ignore-pattern '*.spec.ts'","lint":"yarn prettier && npx eslint --fix ./src/** --ignore-pattern *.spec.js --ignore-pattern *.spec.ts","doc":"typedoc --tsconfig config/tsconfig.browser.json src/index.ts --out ./dist/docs","clean":"./scripts/clean","tar":"./scripts/tar-dev parsegraph","tar:prod":"./scripts/tar-prod parsegraph","deploy":"./scripts/deploy","deploy:prod":"./scripts/deploy-prod"},"_id":"parsegraph@6.2.0","gitHead":"73c51e12bcec1963e0fa8a0a73ddbcfbf1cf3221","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-FS6noNlu4bkwf4lg+0Dt4h2vsJGOcwgbcHmKjwcu1SusYJ0nWrCZMJ3GbZDIOj+j0Bt3VM+7Gb8hCQtW+An9Yw==","shasum":"d177d84c1f0f3277628be88442916df665ea8838","tarball":"https://registry.npmjs.org/parsegraph/-/parsegraph-6.2.0.tgz","fileCount":155,"unpackedSize":702789,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGk1EH5/amue7iIkrUh56rB+2xN2HbSWvrcZcP74vXguAiBpHg7v/THq3nyZlYRs//R7pYL7Eu0ZUzzHv9sVXrYJgA=="}]},"_npmUser":{"name":"dafrito","email":"dafrito@gmail.com"},"directories":{},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/parsegraph_6.2.0_1709861932830_0.41217871008151574"},"_hasShrinkwrap":false}},"time":{"created":"2020-12-10T09:09:04.458Z","1.0.0":"2020-12-10T09:09:04.695Z","modified":"2024-03-08T01:38:53.651Z","2.0.1":"2023-09-29T22:25:43.248Z","2.0.0":"2023-09-29T22:27:06.594Z","2.0.2":"2023-09-29T22:57:35.012Z","2.0.3":"2023-09-29T23:01:37.224Z","2.0.5":"2023-09-29T23:01:50.336Z","2.0.6":"2023-09-29T23:02:15.550Z","2.0.7":"2023-09-29T23:02:34.380Z","2.0.15":"2023-09-29T23:11:36.418Z","2.0.16":"2023-09-29T23:15:32.222Z","2.0.17":"2023-09-29T23:18:36.071Z","2.0.18":"2023-09-29T23:21:32.021Z","2.0.19":"2023-09-29T23:22:57.276Z","2.0.20":"2023-09-29T23:27:45.122Z","2.0.21":"2023-09-29T23:33:08.236Z","2.0.22":"2023-09-29T23:34:34.157Z","2.0.23":"2023-09-30T04:15:01.399Z","2.0.24":"2023-09-30T04:16:55.325Z","2.0.25":"2023-09-30T04:37:58.243Z","2.1.0":"2023-10-01T08:16:30.855Z","2.2.0":"2023-10-01T08:26:48.637Z","3.0.1":"2023-10-01T12:43:16.640Z","3.0.2":"2023-10-01T23:42:12.555Z","3.0.3":"2023-10-01T23:43:57.247Z","3.0.4":"2023-10-01T23:46:47.125Z","4.0.0":"2023-10-04T00:25:00.860Z","5.0.0":"2023-10-04T11:18:44.742Z","5.0.1":"2023-10-10T10:31:27.492Z","6.0.1":"2024-02-21T02:47:54.794Z","6.1.0":"2024-02-23T05:51:11.539Z","6.1.1":"2024-02-23T08:24:58.263Z","6.1.2":"2024-02-24T05:28:45.630Z","6.1.3":"2024-02-25T03:35:14.295Z","6.1.4":"2024-03-03T03:59:18.065Z","6.1.5":"2024-03-03T05:45:42.880Z","6.1.6":"2024-03-05T03:05:11.983Z","6.1.7":"2024-03-05T08:27:10.766Z","6.1.8":"2024-03-06T08:49:06.759Z","6.1.9":"2024-03-06T10:06:24.858Z","6.2.0":"2024-03-08T01:38:53.010Z"},"maintainers":[{"name":"dafrito","email":"dafrito@gmail.com"}],"description":"Parsegraph layout algorithm for graphs","homepage":"https://parsegraph.com","repository":{"type":"git","url":"git+ssh://git@github.com/dafrito/parsegraph.git"},"author":{"name":"Rainback, Inc."},"bugs":{"url":"https://github.com/dafrito/parsegraph/issues"},"license":"MIT","readme":"# Code example:\n\n```\nimport { \n  CommitLayout,\n  DirectionNode,\n  paintNodeBounds,\n  paintNodeLines,\n} from \"parsegraph\";\n\n// TODO Build a graph.\nconst rootNode = new DirectionNode(\"Hello, world\");\n\nconst layout = new CommitLayout(rootNode, {\n  size: (node: DirectionNode, size: number[]) => {\n    // TODO Provide the size of the node to the size object.\n    // This will be called for every DirectionNode.\n    size[0] = 24;\n    size[1] = 80;\n  }\n});\n\n// Commit the layout.\nwhile (layout.crank());\n\n// Render the graph.\nrootNode.paintGroup().forEach((pg: DirectionNode) => {\n  pg.siblings().forEach(node => {\n    paintNodeLines(node, 1, (x, y, w, h) => {\n      // TODO Draw lines from node to neighbor.\n    });\n    paintNodeBounds(node, (x, y, w, h) => {\n      // TODO Draw node.\n    });\n  });\n});\n\n```\n\n# What is parsegraph?\n\nParsegraph is a graphics-independent library to lay out a graph of connected\nDirectionNodes in up to five directions:\n\n- forward\n- backward\n- upward\n- downward\n- inward\n\n# What is DirectionNode?\n\nA DirectionNode is a class that can have DirectionNode \"neighbors\" in up to five\ndirections:\n\nA DirectionNode can also hold a value, optionally of a given type.\n\nA DirectionNode maintains a Morris traversal between its neighbors and their\nneighbors and so on. This is called a DirectionNode's \"siblings\".\n\nThe connection between two DirectionNodes is parent-child, so there always is a\nroot DirectionNode for a given DirectionNode. Each neighbor keeps a reference\nto its parent DirectionNode.\n\nA DirectionNode also maintains a connection to a parent \"paint group\" which\nallows traversal to other paint groups in a larger graph.\n\n# What is commit layout?\n\nCommitLayout is the algorithm that computes and populates the Layout for a\ngiven DirectionNode and its neighbors.\n\n### Axis\n\nIt does this by laying out an axis of two DirectionNodes neighbors that are\nacross from each other, relative to a parent DirectionNode.\n\n* Z axis (inward)\n* Vertical axis (upward and downward)\n* Horizontal axis (backward and forward)\n\n### PreferredAxis\n\nThe Z axis axis is always laid out before vertical and horizontal axes.\n\nThe vertical and horizontal axes are laid out according to the NeighborNode's\nPreferredAxis property. The first axis is separated with two neighbors between\nonly the parent. The second axis is separated - perpendicular to the first axis\n- with two neighbors between the combination of the parent and the two\nfirst-axis neighbors. So naturally the second axis will be further from the\nparent than the first axis.\n\nThe \"pull\" API on carets and nodes lets the caller specify a direction and\nhave it converted into the right PreferredAxis.\n\nWhen pulling in a Direction, that Direction is converted to an Axis. Then, if\nthe DirectionNode has a parent, then that Axis is compared with the parent axis\nto choose between PARENT (the same axis as the parent direction) or\nPERPENDICULAR. If the DirectionNode is a root node, either VERTICAL or\nHORIZONTAL is used.\n\nWhen a DirectionNode is disconnected from its parent, and it is using PARENT or\nPERPENDICULAR, then that PreferredAxis is converted to VERTICAL or HORIZONTAL\nbased on what the DirectionNode last was.\n\n* `PreferredAxis.VERTICAL`\n* `PreferredAxis.HORIZONTAL`\n* `PreferredAxis.PARENT`\n* `PreferredAxis.PERPENDICULAR`\n\n###\n\nThe layout takes these actions for each axis:\n\n1. It aligns each neighbors relative to each other.\n2. It computes a minimum separation distance between each DirectionNode neighbor.\n3. It positions each neighbor relative to their parent.\n4. It combines the layout of the neighbors and the layout of the parent into a\ncommon group layout.\n\nThis is done iteratively for the entire graph, starting with the deepest nodes\nfirst. Every separation and combination is always taking place with fully laid\nout descendents, until finally the root and thus the entire graph is laid out.\n\n# Performance\n\nA sufficiently large graph of DirectionNodes will take intolerably long to\nimmediately render per frame.\n\n## Use PaintGroups\n\nOften it is rare that the entire graph is on-screen at one time, so the graph\ncan be split into two or more pieces. Since each DirectionNode keeps track of\nthe size of its content, its easy to see at render time if a DirectionNode or\nany of its descendents would be on-screen. If they wouldn't be, then they can\nbe skipped altogether.\n\nSometimes many sections of the graph are not changing. In these cases, paint\ngroups that did not change are not repainted and the paint() callback is not\ncalled when the CommitLayout algorithm is run.\n\n* `DirectionNode.crease` - make the current node a PaintGroup\n* `DirectionNode.uncrease` - merge the current node into the parent's paint group\n\n\n## Use simpler rendering at extreme scales\n\nAt render-time, the scale of each paint group can also be used to determine if\nor how it is rendered.\n\nYou can hook into the CommitLayout's LayoutPainter paint(pg: DirectionNode)\ncallback and render the every node in the paint group into a single render call\nusing their group position. Then, at render time, you pass a world matrix to\nyour render call that is the absolute position of that paint group. Both the\ngroup and the absolute position are computed using the CommitLayout\nalgorithm.\n","readmeFilename":"README.md"}